首页 理论教育 微机原理及接口技术:8237内部寄存器

微机原理及接口技术:8237内部寄存器

时间:2023-11-16 理论教育 版权反馈
【摘要】:8237有4个独立的DMA通道,有许多内部寄存器。在8237进行DMA数据传送的工作过程中,其内容不发生变化,只是在自动预置时,其内容可被重新写到当前地址寄存器中去。8237方式寄存器各位的定义如图8-7所示。D2位是允许或禁止8237芯片工作的控制位。图8-8 8237的命令寄存器命令字各位的功能8.请求寄存器用于在软件控制下产生一个DMA请求,就如同外部DREQ请求一样。图8-12 8237的状态寄存器的格式11.暂存寄存器用于存储器到存储器传送过程中对数据的暂时存放。

微机原理及接口技术:8237内部寄存器

8237有4个独立的DMA通道,有许多内部寄存器。前面表8-1已经给出了这些寄存器的名称、长度和数量,下面来详细介绍各个寄存器的功能和作用。

1.基地址寄存器

用以存放16位地址,只可写入而不能读出。在编程时,它与当前地址寄存器被同时写入某一起始地址,可用作内存区域的首地址或末地址。在8237进行DMA数据传送的工作过程中,其内容不发生变化,只是在自动预置时,其内容可被重新写到当前地址寄存器中去。

2.基字节数寄存器

用以存放相应通道需要传送数据的字节数,只可写入而不能读出。在编程时它与当前字节数寄存器被同时写入要传送数据的字节数。在8237进行DMA数据传送的工作过程中,其内容保持不变,只是在自动预置时,其内容可以被重新写到当前字节数寄存器中去。

3.当前地址寄存器

存放DMA传送期间的地址值。每次传送后自动加1或减1。CPU可以对其进行读/写操作。在选择自动预置时,每当字节计数值减为0或外部978-7-111-42233-4-Chapter08-34.jpg有效后,就会自动将基地址寄存器的内容写入当前地址寄存器中,恢复其初始值。

4.当前字节数寄存器

存放当前的字节数。每传送一个字节,该寄存器的内容减1。当计数值减为0或接收到来自外部的978-7-111-42233-4-Chapter08-35.jpg信号时,会自动将基字节数寄存器的内容写入该寄存器,恢复其初始计数值,即为自动预置。

5.地址暂存寄存器和字节数暂存寄存器

这两个16位的寄存器和CPU不直接发生关系,不必对其进行读/写操作,因而对如何使用8237没有影响。

6.方式寄存器

每个通道有一个8位的方式寄存器,但是它们占用同一个端口地址,用来存放方式字,依靠方式控制字本身的特征位来区分写入不同的通道,用来规定通道的工作方式。8237方式寄存器各位的定义如图8-7所示。

978-7-111-42233-4-Chapter08-36.jpg

图8-7 8237方式寄存器各位的定义

自动预置就是当某一通道按要求将数据传送完后,又能自动预置初始地址和传送的字节数,而后重复前面已进行过的过程。 校验传送就是实际上并不进行传送,只产生地址并响应978-7-111-42233-4-Chapter08-37.jpg信号,不产生读/写控制信号,用以校验8237的功能是否正常。

7.命令寄存器

8237的命令寄存器存放编程的命令字,命令字各位的功能如图8-8所示。

D0位用以规定是否允许采用存储器到存储器的传送方式。若允许这样做,则利用通道0和通道1来实现。

D1位用以规定通道0的地址是否保持不变。如前所述,在存储器到存储器传送中,源地址由通道0提供,读出数据到暂存寄存器,而后,由通道l送出目的地址,将数据写入目的区域;若命令字中D1=0,则在整个数据块传送中(块长由通道1决定)保持内存源区域地址不变,因此,就会把同一个数据写入到整个目的存储器区域中。

D2位是允许或禁止8237芯片工作的控制位。

D3位用于选择总线周期中写信号的定时。例如,PC中对动态存储器的写操作是由写信号的上升沿启动的。若在DMA周期中写信号来得太早,可能造成错误,所以PC选择D3=0。

D5位用于选择是否扩展写信号。在D3=0(正常时序)时,如果外设速度较慢,有些外设是用8237A送出的978-7-111-42233-4-Chapter08-38.jpg978-7-111-42233-4-Chapter08-39.jpg信号的下降沿来产生的READY信号的。为提高传送速度,能够使READY信号早些到来,需将978-7-111-42233-4-Chapter08-40.jpg978-7-111-42233-4-Chapter08-41.jpg信号加宽,以使它们提前到来。因此,可以通过令D5=1使978-7-111-42233-4-Chapter08-42.jpg978-7-111-42233-4-Chapter08-43.jpg信号扩展2个时钟周期提前到来。

命令字的其他位容易理解,不再说明。

978-7-111-42233-4-Chapter08-44.jpg(www.xing528.com)

图8-8 8237的命令寄存器命令字各位的功能

8.请求寄存器

用于在软件控制下产生一个DMA请求,就如同外部DREQ请求一样。图8-9所示为请求字的格式,D0D1的不同编码用来表示向不同通道发出DMA请求。在软件编程时,这些请求是不可屏蔽的,利用命令字即可实现使8237按照命令字的D0D1所指的通道,完成D2所规定的操作,这种软件请求只用于通道工作在数据块传送方式之下。

9.屏蔽寄存器

8237的屏蔽字有两种形式:

(1)单个通道屏蔽字

这种屏蔽字的格式如图8-10所示。利用这个屏蔽字,每次只能选择一个通道。其中,D0D1的编码指示所选的通道,D2=l表示禁止该通道接收DREQ请求,当D2=0时允许DREQ请求。

978-7-111-42233-4-Chapter08-45.jpg

图8-9 8237请求寄存器

978-7-111-42233-4-Chapter08-46.jpg

图8-10 8237的单通道屏蔽寄存器

(2)4通道屏蔽字

可以利用这个屏蔽字同时对8237的4个通道的屏蔽字进行操作,故又称为主屏蔽字。该屏蔽字的格式如图8-11所示。它与单通道屏蔽字占用不同的I/O接口地址,以此加以区分。

978-7-111-42233-4-Chapter08-47.jpg

图8-11 82374通道屏蔽寄存器

10.状态寄存器

状态寄存器存放各通道的状态,CPU读出其内容后,可得知8237的工作状况。主要有:哪个通道计数已达到计数终点——对应位为l;哪个通道的DMA请求尚未处理——对应位为l。8237的状态寄存器的格式如图8-12所示。

978-7-111-42233-4-Chapter08-48.jpg

图8-12 8237的状态寄存器的格式

11.暂存寄存器

用于存储器到存储器传送过程中对数据的暂时存放。

12.高/低触发器

高/低触发器是一个特殊的触发器,又称为字节指针触发器,用于对前述各16位寄存器的高字节和低字节的寻址。由于8237的数据线仅8位,所以对16位寄存器的读/写要分高低字节连续操作两次。由于前述各16位寄存器的读或写必须分两次进行,先低字节后高字节。为此,要利用高/低触发器。当高/低触发器状态为0时,进行低字节操作,一旦低字节读/写操作完成后,高/低触发器会自动翻转一次变成1状态,下次再进行读/写就针对高字节进行操作,而且高/低触发器又翻转成0状态,如此自动重复。利用这种机制,就可以进行双字节读/写操作,这样16位寄存器仅占用一个外设端口地址,高、低字节共用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈