第8章——DMA控制器

DMA控制器概要

DMA控制器可以像CPU那样得到总线控制权、用DMA方式实现外设和存储器之间的数据高速传输。为了实现DMA传输,DMA控制器必须将内存地址送到地址总线上,并且能够发送和接收联络型号。
DMA控制器内部包括控制寄存器、状态寄存器、地址寄存器和字节计数器。当DMA控制器包括多个通道时,控制寄存器和状态寄存器为多个通道所公用,但地址寄存器和计数器则为每个通道所独立配备。
在这里插入图片描述
DMA控制器的初始化:
1.将数据传输缓冲区的起始地址或结束地址送到地址寄存器中
2.将传输的字节数、字数或双字数送到计数器中

DMA方式下外设往内存传输1个字节数据的过程:
1.当一个接口中有数据要输入时,就往DMA控制器发一个DMA请求;
2.DMA控制器接到请求之后,便往控制总线上发一个总线请求,如果CPU允许让出总线,则发一个总线响应信号;
3.DMA控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA响应信号,并发一个I/O读信号和一个内存写信号;
4.接口接到DMA响应信号后,将数据送到数据总线上,并撤除DMA请求信号;
5.内存接收到数据后,往DMA控制器回送一个准备好信号,DMA控制器的地址寄存器内容加1或减1,计数器的值减1,且撤除总线请求信号;
6.下一次当接口中又准备好数据时,便可进行一次新的传输,当计数器的值为0时,DMA传输过程便结束。

基址寄存器(16位)用来存放本通道DMA传输时的地址初值,这个初值是在编程时写入的,初值也同时被写入当前地址寄存器(16位),当前地址寄存器的值在每次DMA传输后自动加1或减1。
基本字节计数器存放DMA传输时字节数的初值,初值比实际传输的字节数少1,初值也被同时写入当前字节计数器,每次进行完DMA传输后,当前字节计数器自动减1,当其由0减到FFFF时,产生计数结束信号。

主模式与从模式

从模式:
当CPU把数据写入8237A的寄存器或从8237A的寄存器读出时,8237A就如同I/O接口一样作为总线的从模块工作。
主模式:
8237A提供要访问的内存地址,必要的读写信号进行DMA传输。

8237A的工作模式

1.单字节传输模式
每传完1个字节后,8237A就会释放系统总线,CPU至少得到1个总线周期,若又有DMA请求,则8237A又立即发出总线请求。
2.块传输模式
可连续进行多个字节的传输,只有当字节计数器减为0,8237A才释放总线。
3.请求传输模式
每传完1个字节,8237A都对DREQ端进行测试,如检测到DERQ端变为无效电平,则马上暂停传输,当DERQ变成有效电平时,就在原来的基础上继续传输。
4.级联传输模式
级联:从片的HRQ和主片的DREQ相连,从片的HLDA和主片的DACK相连,而主片的HRQ和HLDA连接系统总线。
级联时,主片通过软件在模式寄存器中设置为级联传输模式,从片不需要设置级联方式。

8237A的模式寄存器

在这里插入图片描述

8237A的控制寄存器和状态寄存器

在这里插入图片描述
在这里插入图片描述

8237A的请求寄存器和屏蔽寄存器

软件发出DMA请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8237A各寄存器对应的端口地址

8237A共有16个端口地址,有A3 - A0提供
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值