版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程DMA控制器8237A
1、利用DMA方式传送数据时,数据的传送过程完全由硬件控制,这种电路称为DMA控制器(DMAC)。
2、需要数据传送时,DMAC向CPU提出申请,CPU让出总线控制权,由DMAC直接控制地址总线、数据总线和控制总线,让存储器与高速的外部设备直接交换数据,CPU不再干预,这样大大减少了中间过程,提高了数据传送速度。
8237A的结构和功能引脚信号
内部结构8237A有4个独立的DMA通道,24个内部寄存器。
内部寄存器基址寄存器和当前地址寄存器基字节计数寄存器和当前字节计数寄存器暂时地址寄存器状态寄存器命令寄存器暂存寄存器方式寄存器屏蔽寄存器请求寄存器
8237A的先/后触发器此触发器保证16位寄存器的读写操作,以先低字节后高字节的顺序操作。
8237A的工作方式单字节传送方式
DMA传送时,仅传送一个字节。
块传送方式块传送方式由一个DMA请求启动传送整个一个数据块,在整个数据传送期间,系统总线一直被DMAC所控制,每传送一个数据,计数寄存器的值减1。
请求传送方式在请求传送方式下8237A被编程为连续传送,直至遇到T/C或外部来的为止,或者直到DREQ不再有效为止。级联方式
多个8237A进行级联时,将其中一个DMAC作为主片,其他作为从片。8237A初始化编程设置方式寄存器
PC机BIOS在初始化时,将方式寄存器初始化为单字节传送方式、地址递增、通道0为读传送、自动预置(方式字为58H)、通道1、2、3为校验传送、禁止自动预置,其方式字为41H、42H、43H。设置命令寄存器初始化必须设置命令寄存器,以确定其工作时序、优先级方式、DREQ和DACK的有效电平及是否允许工作等。清除先/后触发器先/后触发器是一个指针,当它为0时,对低字节进行操作,当它为1时,对高字节进行操作。
设置地址和字节计数器
8237A每个通道有四个16位的寄存器。这四个寄存器是基地址寄存器和当前地址寄存器以及基本字节计数寄存器和当前字节计数寄存器。清除屏蔽寄存器屏蔽寄存器是一个4位寄存器,每一位代表一个通道。当它为1时,向该通道的DMA请求被禁止;为0时,则允许。7.5DMA控制器8237A7.5.1DMA8237A-5的结构和特性图7.5DMA8237方框图图7.5.1DMA8237引脚图1.时序与控制逻辑块2.优先级编码逻辑图7.5.2循环优先级示意图3.命令控制逻辑表7.5.1控制和状态寄存器寻址信号
4.内部寄存器组
8237A-5内部寄存器组分成两大类:一类是通道寄存器,即每个通道都有的当前地址寄存器、当前字节数寄存器和基地址及基字节数寄存器;另一类是控制和状态寄存器。这些寄存器的寻址是由最低4位地址A3~A0以及读写命令来区分的。这两类寄存器共占用16个端口,记作DMA+00H~DMA+0FH地址,可供CPU访问。
5.数据及地址缓冲器组缓冲器组包含以下3部分:
(1)A3~A0:最低4位地址线,是三态双向信号端。在芯片空闲周期(非DMA工作周期),CPU对芯片输出的低4位地址线。
(2)A7~A4:高4位地址线。此信号仅用于DMA服务时提供高4位地址。
(3)DB7~DB0:8位双向数据线。在芯片空闲周期,CPU在读操作时(IOR有效),将内部寄存器的值送到系统总线上;在写操作时(IOW有效),由CPU对芯片内部寄存器编程。在DMA工作周期,高8位的地址信息经数据缓冲器,经DB7~DB0在ADSTB选通信号作用下锁存到外部地址锁存器中,再与A7~A0(低8位地址信息)组成DMA传送的16位地址信息。在DMA的存储器到存储器的传送方式下,存储器读出的数据经数据总线送入数据缓冲器,然后在存储器写周期里,此数据经数据总线装入到所指定的存储器单元中。DMA8237芯片能提供16位地址信息,故对存储器的寻址范围为68KB。如要进一步扩大寻址范围,可在DMA系统中为每一个通道配置一个页面寄存器。如PC/XT的DMA系统中由于增加页面寄存器,每个通道的地址线为20条(A0~A19),可寻址的范围达1MB。PC/AT的DMA系统可扩大至24条(A0~A23)每通道可寻址的范围为1.6MB。7.5.2DMA的工作方式、操作类型及时序
1.8237DMA的工作方式及传输操作类型
(1)8237的4种工作方式。①单字节传送方式。在这种方式下,每次仅传送一个字节数据。传送后,字节数寄存器减1,地址寄存器加1或减1(由初始化编程决定)。HRQ变为无效,8237释放系统总线,控制权返回给CPU。当前字节数寄存器从初始值减到0,还要再传输一个字节,又从0减到0FFFFH时,才发出有效EOP信号,结束DMA传输过程。通常,在DACK成为有效之前,DREQ必须保持有效。每次传送后,DMA控制器把总线让给CPU至少一个总线周期,且立即开始检测DREQ输入,一旦DREQ为有效,再进行下一个字节的传送。②数据块传送方式。在这种方式下,一旦8237控制总线就将始终占用总线,连续地传送字节数据直到字节数寄存器减到零再减至0FFFFH时产生EOP信号为止。若需提前结束DMA传送也可由外部输入低电平有效的EOP信号来强迫终止DMA传送,总线控制才交还给CPU。这种方式最大能传送64KB的数据块,而且送DREQ只需维持到DACK有效,在传送期间就不再检测DREQ引脚信号。当数据块传送结束,则终止操作或者是重新初始化。③请求传送方式。这种传送方式类似于数据块传送方式,所不同之处在于每传送一个字节之后,8237都将采样检测DREQ信号是否有效。若DREQ变为无效状态则放弃传输,一直到DREQ变为有效后又可开始从放弃的那一点开始DMA传输。当由于外设提供的DREQ信号变为无效而放弃DMA传送时,8237释放总线,CPU可以接着操作。在此种方式下,因为DMA放弃传送时,8237的工作现场的地址及字节数计数值会保存在当前地址寄存器及当前字节数寄存器中。这样,当进行DMA的外部设备新的数据块准备好后,可再次向8237发出DREQ有效信号,8237接着原来的地址和字节计数值继续进行传输,直到字节数寄存器减到0,又减至0FFFFH计数结束或外输入EOP信号,才停止传送,退出DMA。④级联方式。图7.5.3两级DMA的级联方式(2)DMA传送的类型。图7.5.4DMA的读/写总线周期(a)DMA读操作;(b)DMA写操作图7.5.5DMA的读/写总线周期(a)DMA读操作;(b)DMA写操作(3)8237几个特殊操作的说明。图7.5.68237A-5正常时序与压缩时序(a)正常时序;(b)压缩时序2.8237DMA工作时序图7.5.78237A状态变化流程图7.5.3内部寄存器的功能及端口寻址
8237A-5DMA芯片有16个端口地址(以地址符DMA+0、+1、+2、……+0AH+……+0FH表示)代表了8种寄存器以可编程方法实现四个通道的DMA传输。其寄存器种类功用及端口地址分别说明如下:
1.8237内部寄存器的功用
(1)地址寄存器(DMA+0、+2、+4、+6)。每个通道各有一对16位的基地址寄存器和当前地址寄存器。在对芯片初始化编程时,由CPU同时写入相同的16位地址。若地址任意(字节边界),则可寻址64KB,否则以偶地址(字边界)可寻址128KB。基地址寄存器预置后不再改变,且不能被读出。每个通道有一个16位的当前地址寄存器,它保存着在DMA传输地址值。每次传送后,地址自动加1或减1(取决于方式字寄存器D5位),且随时可被CPU读出。若通道选择为自动预置操作(取决于方式字寄存器D4位),则在结束成批数据传输后产生有效EOP信号时,当前寄存器恢复到与基地址寄存器同值。CPU预置16位地址值时,按8位分两次写入地址寄存器,先写低8位,再写高8位。读操作也是分两次进行。
(2)字节寄存器(DMA+1、+3、+5、+7)。每个通道各有一对16位基字节寄存器和当前字节寄存器。在芯片初始化时,由CPU同时写入相同的初始值,但此初始值应比实际传输的字节数少1,最多传输64KB;若某通道的地址寄存器以字边界编程,则字节寄存器也应用字节数预置初始值,此时最多可传输64KB,即128KB。故字节寄存器也称字计数寄存器。基字节寄存器预置不再改变,且不能被读出。当前字节计数器在每次DMA传输后,计数值自动减1,当该寄存器值由0减到FFFFH,产生有效的EOP信号,DMA传输结束。若通道选择为自动预置操作,则在EOP有效的同时,当前字节寄存器恢复到与基字节寄存器预置的初始值。同样,CPU按8位分两次读出或写入该寄存器。(3)方式字寄存器(DMA+0BH)。图7.5.8工作方式控制字格式
(4)暂存寄存器(DMA+0DH)。当芯片编程选择操作方式为存储器到存储器传输时,通道0和通道1交换的数据保存在暂存寄存器(8位),待传输全部完成后,最后一个传输数据被CPU编程读出,在DMA复位时被清除。
(5)命令寄存器(DMA+8)。命令寄存器为8位,用于存放编程的命令字,以选择8237的操作方式。其各位的意义如图8.62所示。图7.5.9命令字格式(6)请求寄存器(DMA+9)。图7.5.10请求字格式
(7)屏蔽寄存器(DMA+0AH#,+0EH#,+0FH)。8237有3个作用不同,占有3个端口地址的屏蔽寄存器。①写单个通道屏蔽寄存器(DMA+0AH)。芯片内有一个4位屏蔽寄存器,每一个对应一个通道的屏蔽位。当屏蔽位置位时,该通道就禁止接受DREQ的DMA请求信号。反之,屏蔽位复位则允许DREQ的请求。当某一通道进行DMA传输后,产生EOP信号,则这一通道在禁止自动预置工作条件下的屏蔽位置“1”。必须再次编程,使该通道屏蔽位复位,才能进行下一次的DMA传输。图7.5.11单个通道屏蔽字格式②清主屏蔽寄存器(DMA+0EH)。图7.5.12主屏蔽寄存器格式③写主屏蔽寄存器(DMA+0FH)。主屏蔽寄存器若采用DMA+0FH端口地址号,可用写入一条主屏蔽命令分别对4个通道相应位进行复位(允许)及置位(禁止)DMA请求。应注意,当系统RESET复位或用软件置位(主清除命令DMA+0DH)时,主屏蔽寄存器各位均被置位,即禁止所有通道接受DMA请求。如果采用上述3个端口(DMA+0AH、+0EH、+0FH)之一对某一通道复位屏蔽位后,即可响应DMA请求。然而,只要该通道不采用自动预置操作,那么当本次DMA传输结束,产生一个有效的EOP信号后,其通道屏蔽位又被自动置位。所以,若要进行下一次DMA传输,必须再次初始化编程,使通道屏蔽位复位,才能允许下一次DMA传输。(8)状态寄存器(DMA+8)。图7.5.13状态字格式2.端口地址表7.5.28237A-5端口地址、读/写操作区分表表7.5.3通道寄存器寻址信号表表7.5.3通道寄存器寻址信号表7.5.48237A-5在系统中的应用图7.5.14PC/ATDMA系统逻辑结构示意图(a)PC/ATDMA系统硬件逻辑结构示意图;(b)PC/ATDMA系统逻辑示意图
图7.5.15PC/ATDMA系统逻辑结构示意图(a)PC/ATDMA系统硬件逻辑结构示意图;(b)PC/ATDMA系统逻辑示意图
一个完整的DMA传输过程必须经过4个阶段,PC/ATDMA系统也是如此:
(1)DMA请求。DMA控制器(8237)接受由I/O接口发来的DMA请求信号DREQ,并经判优后向总线裁决逻辑提出总线请求HRQ信号。
(2)DMA响应。由总线裁决逻辑对总线请求进行裁决。如CPU不再对DMA初始编程,则当CPU完成当前总线周期后予以响应,允许进行DMA传输。CPU放弃对总线的控制权,向8237DMA控制器发出总线应答信号HLDA。
(3)DMA传输。由DMA控制器控制总线,发出相应的地址与控制信息,按要传输的字节数直接控制I/O接口与RAM的数据交换。
(4)DMA传输结束。当DMA传输结束时,DMA控制器产生计数终止信号EOP,并通过接口向CPU提出中断请求,以使CPU进行DMA传输正确性检查并重新获得对总线的控制权。在PC/ATDMA系统可支持7个通道DMA传输。除通道2为软盘驱动器的接口和通道0留作SDLC通信适配器应用外,其余通道3、5、6、7均留作扩充使用。
表7.5.4PC/ATDMA通道的使用从DMA芯片的4个通道(0~3通道)仍按8位数据最大传输64KB设计外,主DMA芯片的5、6、7号通道都是按16位数据最大传输64K字(即128KB)设计的。同时,两者都有寻址16MB空间的能力。
CPU对0#8237A-5从DMA芯片编程端口地址为00H~0FH,即DMA+0H~DMA+15(设DMAEQU0)或DMA+0~0FH。对应通道0、1、2、3的页面寄存器端口地址分别为87H、83H、81H、82H。
1#8237A-5主DMA芯片使用字边界,故CPU对此芯片编程端口也应使用字边界,其起始端口定义为C0H。每个端口地址间隔为2,故端口地址号为DMA1+2~DMA1+30(设DMA1EQUC0H),或DMA1+0H~DMA1+1EH。对应通道5、6、7页面寄存器端口地址分别为8BH、89H、8AH。DMA刷新页面寄存器端口地址为8FH。表8.12列出了PC/AT中DMA芯片端口地址数,表8.13给出了DMA系统涉及的I/O端口地址。表7.5.5PC/AT中DMA芯片端口地址表7.5.6PC/ATDMA和页面寄存器I/O地址7.6.18237A-5的初始化编程
(1)对通道方式字寄存器置入工作方式字;
(2)将存储器中传输数据的起始地址分成两部为:先将低16位地址分低、高8位两次送入该通道的基地址/当前地址寄存器,再将高4位(A16~A19)或高8位(A16~A23)地址送入对应于该通道的页面寄存器中;
(3)将本次DMA传送的字节数的值减1,然后分低8位、高8位置入该通道的基字节/当前字节寄存器中;
(4)开放该通道,由该通道的DREQ启动DMA传送过程。下面,以PC/AT中软盘的DMA传输为例,给出系统上电自举时,ROM-BIOS对通道2初始化编程程序。;初始化DMA通道2;输入:;AL=DMA方式字节。; 46H—通道2,DMA写,单一传输(读软盘)。; 4AH—通道2,DMA读,单一传输(写软盘)。; 42H—通道2,DMA校验,单一传输(软盘校验)。; DH=要传输的扇区数。; ES:BX=RAM缓冲区首地区(段地址:偏移量)。;返回:;AX被破坏。;CY=1,初始化不成功。;CY=0,初始化成功。;程序中使用符号的定义。DMAEQU 0;DMA通道起始端口地址。DMA-SETUPPROCNEAR;DMA初始化过程。
PUSHCX;保存寄存器。
CLI;关中断。
OUTDMA+12,AL;清除先/后触发器。
JMP$+2;为满足CPU对8237A-5连续写时序要求。;设备方式字寄存器。
OUTDMA+11,AL;写入方式字寄存器。
MOVAX,ES;取RAM段地址。
MOVCL,4;循环左移4位。
ROLAX,CLMOVCH,AL ;最高4位保存在CH。
ANDAL,0F0H ;获取低16位地址。
ADDAX,BXJNCJ33INCCH ;进位加到高4位地址。;预置地址寄存器和页面寄存器。J33:
PUSHAX ;保存低16位地址。
OUTDMA+4,AL ;预置通道2地址寄存器。
JMP$+2MOVAL,AHOUTDMA+4,AL ;先低字节,后高字节。
MOVAL,CH ;取最高4位地址。
JMP$+2ANDAL,0FHOUT081H,AL ;预置通道2对应的页面寄存器。;预置字节计数器。
MOVAH,DH ;取传输扇区数。
SUBAL,AL ;乘以256(AL=0)。
SHRAX,1 ;右移,即变成乘以128。
PUSHAX ;保存“扇区数与128的乘积”。
MOVBX,6 ;设置GET-PARM入口参数。
CALLGET-PARM ;调用取基数子过程。
MOVCL,AH ;返回到AH为基数N,保存在CL。
POP AX ;取出乘积值。
SHL AX,CL ;右移返回值次数。
DEC AX ;传输字节值减1。
PUAH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人咨询合作合同书范本(专业版)
- 2024技术开发服务合同范文
- 16大家一起来合作(说课稿)统编版道德与法治一年级下册
- 专用酒店家具上漆协议范例
- 个人二零二四年度汽车租赁合同6篇
- 职业学院车辆准停准行办理申请表
- 福建省南平市武夷山上梅中学2021-2022学年高三物理测试题含解析
- 2024年货车司机雇佣合同文本
- 商务礼仪助力销售
- 品质之路:时尚生活探索
- 2024年土石方工程合同模板(三篇)
- 专业微信小程序开发协议范例版
- 港口液体危化品装卸管理人员理论考试题库-上(单选题)
- 2024年新北师大版一年级上册数学教学课件 总复习(1) 数与代数
- 2024年人教版小学六年级英语(上册)期末考卷及答案
- 小学二年级数学100以内加减法竖式计算单元练习习题
- 《文化研究导论》全套教学课件
- 苏教版五年级上册数学计算题大全1000道带答案
- 劳保用品发放记录
- 检验试剂实施方案范文
- JT-T-1078-2016道路运输车辆卫星定位系统视频通信协议
评论
0/150
提交评论