第8章 DMA接口技术8237.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模式寄存器的格式 8.3 8237编程及应用 D4:若允许自动初始化,则在DMA操作结束时,分别将基地址和基本字计数寄存器的内容重新装入当前地址和当前计数寄存器内。 ◆I/O地址A3-A0=1011,初始化由CPU写入,分别设置通道0—通道3的工作方式 控制寄存器的格式和有关问题 ◆I/O地址A3-A0=1000,初始化由CPU写入, RESET或清除命令清除 在存储器之间传送数据时,由通道0和通道1进行操作。 由通道0从源地址单元中读出数据存放到暂存寄存器中,再由通道1从暂存寄存器中读出数据写入目的单元中,当通道1的当前字节计数器减为0时,产生EOP信号,结束DMA传送。 D1:当D0=1时是可以使源地址内的同一个数据传送到一组目的存储单元中去。当D0=0时,才有意义。 内存到内存的传输 8237A的典型时序 8237A的工作时序 DMA的每一个时钟周期称为一个S状态。 1、SI状态:空闲状态。 2、S0状态:等待HLDA。 3、S1状态:先产生AEN信号,使CPU连接的地址总线无效,产生ADSTB信号,从当前地址锁存器中读出的A15~A8经DB7~DB0锁存在外部锁存器中。 4、S2状态产生DACK给I/O接口,代替CPU的片选信号,使该I/O接口被选中,A15~A0确定要访问的存储器单元。 5、S3状态产生MEMR或IOR读信号,使DB7~DB0上的数据至S4状态,稳定写入目的地。 6、S4状态产生MEMW或IOW写信号,将数据写入目的单元。块传送,则回到S2(或S1),继续。若单字节或传送完毕,则发EOP,撤消HRQ,结束DMA过程。 ◆压缩读方式:块传送时,只有S2和S4两个时钟,读信号和写信号均在S4状态时产生,适用于高速电路。 ◆扩展写(超前写):S2、S3、S4三个状态,但写信号在S3时即产生,目的是用其下降沿触发READY信号,使低速I/O在普通时序仍不能完成读写时,插入等待状态SW。 以上两种方式均可在方式控制字中进行设定。 8237A的工作时序 状态寄存器的格式 D3D2D1D0:对应表示通道3、2、1、0的终止计数状态。当某通道终止计数(计数达“0”)或外部EOP有效,则相应位置1;复位或CPU读后被清除。 D7D6D5D4:对应表示通道3、2、1、0的请求信号DREQ输入是否有效。 1:对应通道有请求 ◆I/O地址A3-A0=1000,CPU读出即为各端口的状态 DMA请求寄存器 ◆I/O地址A3-A0=1001,初始化由CPU写入,分别设置通道0—通道3的DMA请求触发器,可以通过DREQ有效或软件(设置请求触发器)使该触发器置1,表示有DMA请求发生。 在执行存储器到存储器DMA传送时,由通道0读出数据,由通道1将数据写入目的单元,此时启动DMA过程不是由外部的DREQ请求实现的,而是由内部软件DMA 请求实现的。即对通道0的请求寄存器写入DMA请求04H,通过产生软件DREQ请求使8237A产生总线请求信号HRQ,启动DMA传送。 屏蔽寄存器 每一个通道有一个屏蔽触发器,当该触发器为1时,屏蔽该通道的DMA请求,屏蔽位可用下列三种命令字来置位或清除. ◆单通道屏蔽字:I/O地址A3-A0=1010 8237A综合屏蔽命令的格式 I/O地址A3-A0=1111 D3D2D1D0分别对应通道3、2、1、0的屏蔽位标志,若为1,禁止DMA请求;若为0,允许DMA请求。 ◆清除屏蔽寄存器: 屏蔽寄存器的I/O地址中A3-A0=1110,对其进行一次写0操作即可开放所有通道的屏蔽位 清除命令 主清除命令: 向A3-A0=1101的I/O地址执行一次写操作即可实现复位功能,除屏蔽寄存器各位置1外,其余寄存器的内容均为0 清除先/后触发器: 向A3-A0=1100的I/O地址执行一次写操作,使先/后触发器为0 先/后触发器:用来控制读写16位寄存器的高字节还是低字节 清除屏蔽触发器: 如前所述,向A3-A0=1110的I/O地址执行一次写0操作即可 * 在8237A复位之后,所有的屏蔽位都被置“1”,即禁止所有的DMA请求。在非自动预置方式下,一旦某通道的DMA传送结束,该通道的屏蔽位也被置“1”。 在DMA通道初始化时,为了开放通道的DMA请求,必须清除屏蔽位。即对端口地址A3~A0=1110,(指屏蔽寄存器)进行一次写“0”操作,即可清除4个通道的屏蔽位,开放全部通道的DMA请求。例如,设8237A的端口地址为00H~0FH,可用下列指令清除屏蔽寄存器。 MOV AL,0 ;清除四通道的屏蔽位

文档评论(0)

a888118a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档