PC结构之DMA寄存器及相关用途

 

1.    DMA控制器(82C37A)                                                                                  

1.1      端口地址及寄存器说明

端口

通道号

I/O端口地址

寄存器

读(IOR)

写(IOW)

DMA+0

0

00

通道0的当前地址寄存器

通道0的基址寄存器

DMA+1

0

01

通道0的当前字节计数寄存器

通道0的基字节计数

DMA+2

1

02

通道1的当前地址寄存器

通道1的基址寄存器

DMA+3

1

03

通道1的当前字节计数寄存器

通道1的基字节计数

DMA+4

2

04

通道2的当前地址寄存器

通道2的基址寄存器

DMA+5

2

05

通道2的当前字节计数寄存器

通道2的基字节计数

DMA+6

3

06

通道3的当前地址寄存器

通道3的基址寄存器

DMA+7

3

07

通道3的当前字节计数寄存器

通道3的基字节计数

DMA+8

 

 

 

公用

08

状态寄存器

命令寄存器

DMA+9

09

NA

请求寄存器

DMA+10

0A

NA

单个通道屏蔽寄存器

DMA+11

0B

临时寄存器

工作方式寄存器

DMA+12

0C

NA

清除先/后触发器命令

DMA+13

0D

暂存寄存器

总清命令

DMA+14

0E

NA

清四个通道屏蔽寄存器命令

DMA+15

0F

NA

置四个通道屏蔽寄存器

 

一般PC上都级联两个8237 DMA控制器,分别称为DMA1、DMA2,上面的端口地址指的是DMA1的,DMA2的值分别是0C0 ~ 0DE,偶数有效。这样共组成了8个通道,但只有7个通道可供使用,DMA2的第四个通道用在级联。        

1.2      关键寄存器说明

A、命令寄存器(0x08)

D7

D6

D5

D4

D3

D2

D1

D0

D0:0:禁止存储器到存储器的传输;1:允许

D1:存储器到存储器的传输时,0:源地址不保持;1:源地址保持,这样可以将同一个源地址单元传输到一组目标单元中去。如果D0=0,D1无效。在PC中,D0=0,所以,D1没有什么作用。

D2:1:允许8237工作;0:禁止。

D3:0:正常时序;1:压缩时序。如果是压缩时序,在大部分的读写数据的时序中,可以节省一个始终周期S3。在PC中,默认为正常时序。

D4:0:固定优先级;1:循环优先级。在PC中,使用固定优先级,即优先级的大小从DREQ0 ~ DREQ7。

D5:0:不扩展写信号;1:扩展写信号。如果扩展写信号,则在发出读信号的同时发出写信号,这样读写信号同为2个周期。在PC中,默认为不扩展。

D6:0:DREQ高电平有效;1:DREQ低电平有效。

D7:0:DACK低电平有效;1:DACK高电平有效。PC中,默认DREQ高电平有效,DACK低电平有效。

PC默认为0x00。

B、 请求寄存器(0x09)

D7

D6

D5

D4

D3

D2

D1

D0

D1D0:组成四个通道的名称(00:通道0; 01:通道1; ….)

D2:0:不请求传输;1:请求传输。

此寄存器用于软件请求,硬件请求不需要此寄存器。

C、 单个通道屏蔽寄存器(0x0A)

D7

D6

D5

D4

D3

D2

D1

D0

D1D0:组成四个通道的名称(00:通道0; 01:通道1; ….)

D2:0:允许;1:屏蔽。

D、           工作方式寄存器(0x0B)

D7

D6

D5

D4

D3

D2

D1

D0

D1D0:通道选择(00:通道0; 01:通道1; ….)

D3D2:传输类型(00:校验; 01:DMA写; 02:DMA读; 03:NA)

D4:自动预置功能。需要传输的数据结束后,将基地址重新放入当前寄存器中。

D5:地址增长方式,0:地址加1;1:地址减1。

D7D6:通道传输方式(00:询问方式; 01:单字节方式; 02:数据块方式; 03:级联方式)

E、 清除先/后触发器命令(0x0C)

写入任意值,保证传输地址和计数值时,第一次传输的是低8位,后面传输的是高8位。

F、  总清命令(0x0D)

写入任意值,与硬件RESET信号类似,初始化所有寄存器。

G、           清四个通道屏蔽寄存器命令(0x0E)

写入任意值,四个通道屏蔽位均清0,这样,4个DMA通道都可以接受DMA请求。

H、           置四个通道屏蔽寄存器(0x0F)

D7

D6

D5

D4

D3

D2

D1

D0

D0:0:允许;1:屏蔽。

D1:0:允许;1:屏蔽。

D2:0:允许;1:屏蔽。

D3:0:允许;1:屏蔽。

I、    (读)状态寄存器(0x08)

D7

D6

D5

D4

D3

D2

D1

D0

D0:0:通道0计数未结束;1:通道0计数结束。

D1:0:通道1计数未结束;1:通道1计数结束。

D2:0:通道2计数未结束;1:通道2计数结束。

D3:0:通道3计数未结束;1:通道3计数结束。

D4:0:通道0无DMA请求;1:通道0有DMA请求。

D5:0:通道1无DMA请求;1:通道1有DMA请求。

D6:0:通道2无DMA请求;1:通道2有DMA请求。

D7:0:通道3无DMA请求;1:通道3有DMA请求。

J、   通道N的基址寄存器和计数值的初始化

分两次向对应的寄存器中写入16位数值,一次8个字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值