
微机原理 汇编语言与接口技术 韩晓茹ch09 DMA控制接口.ppt
79页第 9 章 DMA控制接口,教学重点,DMA传输原理 8237A的工作方式 8237A寄存器组的作用 8237A寄存器组的编程,直接存储器传送 (Direct Memory Access—DMA),将外设的数据不经过CPU直接送入内存储器,或者,从内存储器不经过CPU直接送往外部设备,一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期),因而能够满足高速外设数据传输的需要9.1 DMA传输原理,9.1.1 DMA传送过程,DMA传送直接由DMA控制器(DMAC)控制实现传送过程分4个阶段: DMA请求 DMA响应 DMA传送 DMA结束处理,DMA传送过程示意图,,DMAC双重身份,总线从模块: 在CPU掌管总线时,CPU对DMAC进行初始化,也就是向DMAC写入内存传送区的首地址、传送字节数和控制字时,DMAC相当于一个外设接口,称为总线从模块总线主模块: 在DMAC接管总线时,CPU暂停对系统总线的控制,DMAC取得了对总线的控制权,进行DMA传输,这时的DMAC称为总线主模块9.1.2 DMA控制器的功能,DMA控制器的功能,(1)接受外设发出的DMA请求,并向CPU提出总线申请; (2)接受CPU发出的总线响应信号后,接管总线控制权,进入DMA响应周期,并向外设发出DMA应答信号; (3)确定主存缓冲区或数据单元的首地址及传送长度,能寻址存储器; (4)规定数据在主存和外设之间的传送方向,发出相应读/写或其它控制信号,控制数据传送; (5)能自动修改主存地址值和传送长度计数值,并判断DMA传送是否结束; (6)DMA传送结束后,释放总线控制权,并发出DMA结束信号向CPU申请中断报告DMA传送结束。
4二选一数据选择器,DMA控制信号的产生电路,DMA控制信号的产生组合,,,地址寄存器:存放DMA传输时存储单元地址; 字节计数器:存放DMA传输的字节数; 控制寄存器:存放由CPU设定的DMA传输方式, 控制命令等; 状态寄存器:存放DMAC当前的状态,包括有无 DMA请求,是否结束等DMAC内部的寄存器,9.2 DMA控制器8237A,每个8237A芯片有4个DMA通道,就是有4个DMA控制器 每个DMA通道具有不同的优先权 每个DMA通道可以分别允许和禁止 每个DMA通道有4种工作方式 一次传送的最大长度可达64KB 多个8237A芯片可以级连,扩展通道数,9.2.1 8237A的内部结构和引脚,内部结构和外部引脚都相对比较复杂 应用观点,内部主要由两类寄存器组成 通道寄存器 控制和状态寄存器,首先分类展开外部引脚,内部结构和外部连接,1. 处理器接口信号,DB0~DB7:数据线用于8237A与微处理器进行数据交换 A0~A3:地址线用以选择芯片内部寄存器 CS*:片选低有效时,微处理器与8237A通过数据线通信,主要完成对8237A的编程 IOR*:I/O读读取8237A内部寄存器。
IOW*:I/O写写入8237A内部寄存器 CLK:时钟控制芯片内部操作和数据传输 RESET:复位使8237A处于初始状态2. DMA传送控制信号,A0~A7:地址线输出低8位存储器地址 DB0~DB7:数据线输出高8位存储器地址;存贮器与存贮器的传送期间,用于数据传送 ADSTB:地址选通DMA传送开始时,输出高有效,把在DB0~DB7上输出的高8位地址锁存在外部锁存器中 AEN:地址允许输出高有效,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址2. DMA传送控制信号(续),MEMR*:存储器读有效将数据从存储器读出 MEMW*:存储器写有效将数据写入存储器 IOR*:I/O读有效将数据从外设读出 IOW*:I/O有效将数据写入外设 READY:准备好DMA传送的S3下降沿检测到为低时,插入等待状态Sw,直到READY为高才进入第4个时钟周期S4 EOP*:过程结束DMA传送过程结束,输出一个低有效脉冲外部输入低脉冲信号,则终结DMA传送3. 请求与响应信号,DREQ0~DREQ3:DMA通道请求当外设需要请求DMA服务时,将DREQ信号置成有效电平,并要保持到产生响应信号。
HRQ:总线请求8237A输出有效的HRQ高电平,向CPU申请使用系统总线 HLDA:总线响应8237A接受来自CPU的响应信号HLDA,取得了总线的控制权 DACK0~DACK3:DMA通道响应8237A使请求服务的通道产生相应的DMA响应信号8237A的两种工作状态,8237A具有两种工作状态 空闲周期: 作为接口电路,受CPU控制的工作状态 有效周期: 作为DMAC控制DMA传送的工作状态,于是,引脚分成两种作用,8237A引脚的两种作用,9.2.2 8237A的工作方式,DMA传送类型 · DMA读 · DMA写 · DMA检验 存储器到存储器的传送 DMA传送方式 · 单字节传送方式 · 数据块传送方式 · 请求传送方式 · 级连方式,1. DMA传送类型,DMA读——把数据由存储器传送到外设 由MEMR*有效从存储器读出数据,由IOW*有效把这一数据写入外设 DMA写——把外设输入的数据写入存储器 由IOR*有效从外设输入数据,由MEMW*有效把这一数据写入存储器 DMA检验——空操作 8237A不进行任何检验 外设可以进行DMA校验 存储器和I/O控制线保持无效,不进行传送,2. DMA传送方式-单字节方式,每次DMA传送时仅传送一个字节 传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效 8237A释放系统总线,将控制权还给CPU 若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化 特点: 一次传送一个字节,效率略低 DMA传送之间CPU有机会重新获取总线控制权,2.DMA传送方式-数据块方式,由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送 DREQ只需维持有效到DACK有效 特点: 一次请求传送一个数据块,效率高 整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等),2. DMA传送方式-请求方式,DREQ信号有效就连续传送数据 DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作 DMA通道的地址和字节数的中间值仍被保持 DREQ信号再次有效,DMA传送就继续进行 如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终止计数 特点: DMA操作可由外设利用DREQ信号控制传送的过程,2. DMA传送方式-级连方式,用于通过多个8237A级连以扩展通道 第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上 第二级芯片的优先权等级与所连通道的优先权相对应 第一级只起优先权网络的作用,实际的操作由第二级芯片完成 还可由第二级扩展到第三级等,3. 存储器到存储器的传送,固定使用通道0和通道1 通道0的地址寄存器存源区地址 通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数 传送由设置通道0的软件请求启动 每传送一字节需用8个时钟周期 前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器 后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区,4. DMA通道的优先权方式,固定优先权方式——优先权固定 通道0优先权最高,通道1其次,通道2再次,通道3最低 循环优先权方式——优先权循环变化 最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权,DMA传送不存在嵌套,5. 自动初始化方式,每当DMA过程结束信号EOP*产生时(不论是内部终止计数还是外部输入该信号) 用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许DMA请求 这样就作好了下一次DMA传送的准备,9.2.3 8237A的工作时序·空闲周期,8237A的任一通道都没有DMA请求时 8237A由微处理器控制作为一个接口芯片 CPU可对8237A编程,或从8237A读取状态 8237A采样CS*选片信号,该信号有效,CPU就要对8237A进行读/写操作 8237A还采样通道的请求输入信号DREQ,该信号有效,就进入有效周期,进入有效周期,9.2.2 8237A的工作时序·有效周期,8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期 8237A作为系统的主控芯片,控制DMA传送操作 DMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期,进入DMA传送时序,DMA传送时序,S0--等待周期 8237A接到外设的DREQ请求,向CPU发出了HRQ,等待CPU让出总线控制权。
得到来自CPU的HLDA响应后,结束S0状态 S1—地址周期 8237用DB0~DB7送出高8位地址A8~A15 用ADSTB将高8位地址送入锁存器 使AEN有效 传输一段连续的数据时,存储器地址是相邻的,高8位地址往往是不变的此时,S1可以省略有效周期(由S0~S4五种周期组成),有效周期,S2—数据读出周期: 向外设送出DACK信号,启动外设工作 送出数据读控制信号 DMA读操作--送出MEMR# DMA写操作--送出IOR# S3—数据写入周期: 送出写操作所需的控制信号: DMA读操作--送出IOW# DMA写操作--送出MEMW# S3状态结束时: READY无效,插入SW周期 READY有效,进入S4周期 S4—结束周期: 结束本次一个字节传输,写控制信号一般在S3开始有效; 采用扩展写方式,写信号在S2就开始变得有效,这种做法可以增加有效的写操作时间,满足某些设备的需要扩展写---增加写的时间,正常时序中,S1用于锁定高8位地址 高8位地址不变时,S1是可以省略的 S3是一个延长周期,用来保证可靠的读写操作 在追求高速传输,且器件的读写速度又可以跟得上时,S3也是可以省略的。
省略S3之后的时序称为压缩时序 压缩时序下,一个字节的传输最少只要两个时钟周期(S2,S4)就可完成压缩时序,9.2.4 8237A的寄存器,8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令 8237A的“软件命令” 不需要通过数据总线写入控制字 直接由地址和控制信号译码实现,全部都用地址A0~A3区分,,,1. 地址寄存器和字节数寄存器,保持DMA传送的当前地址值 每次传送后该寄存器的值自动加1或减1 这个寄存器的值可由CPU写入和读出,基地址寄存器 存放初始值,(1)当前地址寄存器,(2) 当前字节数寄存器,保持DMA传送的剩余字节数 每次传送后,该寄存器的值减1 这个寄存器的值可由CPU写入和读出 该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数,基字节数寄存器 存放初始值,传送N个字节,初始值为N-1,读写通道寄存器,CPU与8237A之间通过8位数据总线交换信息,8237A的通道寄存器均为16位 需要两次读写操作才能实现CPU与8237A之间的一个完整数据的交换 8237A内含一个高/低触发器,用来控制读写通道寄存器的高、低字节,高/低触发器,该触发器为0,控制读写低字节 该触发器为1,控制读写高字节 软、硬件复位后,触发器为0 每次读写通道寄存器,自动改变触发器状态。
如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器 清除高/低触发器软件命令(A3A2A1A0=1100)将使高/低触发器清零,2. 控制寄存器和状态寄存器,A3=1选择控制寄存器或状态寄存器 有5个控制寄存器和3个软件命令寄存器 一个状态寄存器,(1)工作方式字(0BH端口),存放相应通道的方式控制字 选择某个DMA通道的工作方式 其中用最低2位选择哪个DMA通道,请看方式字的格式,(1)工作方式字格式,00 。












