- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 DMA控制器2
第十八讲:DMA控制器Intel8237;1、基地址寄存器
用以存放16位地址,只可写入而不能读出。在编程时,与当前地址寄存器同时写入某一地址,在8237进行DMA数据传送的工作过程中,内容不发生变化,只是在自动预置时,重新将初始地址写到当前地址寄存器中去。
2、基字节数寄存器
用以存放相应通道需要传送数据的字节数,只可写入而不能读出。编程时与当前字节数寄存器同时写入要传送数据的字节数。在8237进行DMA数据传送的工作过程中,内容保持不变,在自动预置时,将初始字节数重新写到当前字节数寄存器中去。;3、当前地址寄存器
存放DMA传送期间的地址值。每次传送后自动加l或减l。CPU可以对其进行读写操作。选择自动预置时,每当字节计数值减为0或外部有效后,自动将基地址寄存器的内容写入当前地址寄存器中,恢复其初始值。
4、当前字节数寄存器
存放当前的字节数。每传送一个字节,该寄存器的内容减1。当计数值减为0或接收到来自外部的信号时,会自动将基字节数寄存器的内容写入该寄存器,恢复其初始计数值,即为自动预置。;5、地址暂存寄存器和字节数暂存寄存器
这两个16位的寄存器和CPU不直接发生关系,我们也不必要对其进行读/写操作,因而对如何使用8237没有影响。
6、方式寄存器
每个通道有一个8位的方式寄存器,但是它们占用同一个端口地址,用来存放方式字,依靠方式控制字本身的特征位来区分写入不同的通道,用来规定通道的工作方式,各位的作用如下;;7.命令寄存器;8.请求寄存器;9.屏蔽寄存器
8237的屏蔽字有两种形式:
①单个通道屏蔽字。这种屏蔽字的格式如图6-9所示。利用这个屏蔽字,每次只能选择一个通道。其中D0D1的编码指示所选的通道,D2=l表示禁止该通道接收DREQ请求,当D2=0时允许DREQ请求。
②四通道屏蔽字。可以利用这个屏蔽字同时对8237的4个通道的屏蔽字进行操作,故又称为主屏蔽字。该屏蔽字的格式如图6-10所示。它与单通道屏蔽字占用不同的I/O接口地址,以此加以区分。;;10.状态寄存器;11.暂存寄存器
存储器到存储器传送过程中数据的暂存。
12.字节指针触发器
一个特殊的触发器,用于各16位寄存器的读或写低、高字节。此触发器状态为0时,进行低字节操作。低字节读/写完成后,字节指针触发器会自动置1,再操作一次清零。利用这种机制,可进行双字节读写操作,16位寄存器可仅占用一个外设端口地址,高、低字节共用。; 二、8237的编程及应用
1.8237的寻址及连接
8237 4个通道中的寄存器及其它各种寄存器的寻址编码如表所示。从表中可以看到,各通道的寄存器通过CS*和地址线A3~A0规定不同的地址,高低字节再由字节指针触发器来决定。其中有的寄存器是可读可写的,而有的寄存器是只写的。
利用CS*和A3~A0规定寄存器的地址,再利用IOR*或IOW*控制对其进行读或写操作。注意,方式寄存器每通道一个,仅分配一个端口地址,由方式控制字的D1和D0位来区分不同通道。;CS*A3 A2A1A0IOR*IOW* 功 能
0 1 0 0 0 0 1 读状态寄存器
0 1 0 0 0 1 0 写命令寄存器
0 1 0 0 1 1 0 写请求寄存器
0 1 0 1 0 1 0 写单通道屏蔽寄存器
0 1 0 1 1 1 0 写方式寄存器
0 1 1 0 0 1 0 字节指针触发器清
0 1 1 0 1 0 1 读暂存寄存器
0 1 1 0 1 1 0 总清
0 1 1 1 0 1 0 清屏蔽寄存器
0 1 1 1 1 1 0 写4通道屏蔽寄存器;;;2.8237在系统中的典型连接
注意到8237只能输出A15~A0十六位地址信号,在8086/88系统中,系统的寻址范围是1MB,地址线有20条,即A19~A0。为了能在8086/88系统中使用8237来实现DMA,需用硬件提供一组4位的页地址寄存器。通道0、1、2、3各有一个4位的页寄存器。在进行DMA传送之前,页寄存器可利用I/O地址来装入和读出。当进行DMA传送时,DMAC将A15~A0放在系统总线上,同时页寄存器把A19~A16也放在系统总线上,形成A19~A0这20位地址信号实现DMA传送。 ;选择 页寄存器; PC机中8237的连
文档评论(0)