《微机原理与接口》第11章DMA接口.ppt

上传人:牧羊曲112 文档编号:6527381 上传时间:2023-11-09 格式:PPT 页数:77 大小:1.13MB
返回 下载 相关 举报
《微机原理与接口》第11章DMA接口.ppt_第1页
第1页 / 共77页
《微机原理与接口》第11章DMA接口.ppt_第2页
第2页 / 共77页
《微机原理与接口》第11章DMA接口.ppt_第3页
第3页 / 共77页
《微机原理与接口》第11章DMA接口.ppt_第4页
第4页 / 共77页
《微机原理与接口》第11章DMA接口.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《《微机原理与接口》第11章DMA接口.ppt》由会员分享,可在线阅读,更多相关《《微机原理与接口》第11章DMA接口.ppt(77页珍藏版)》请在三一办公上搜索。

1、微机原理与接口技术辅助教学电子课件易凡,第十一章DMA接口,第11章 DMA控制接口,教学重点8237A的工作方式8237A寄存器组的作用8237A寄存器组的编程,11.1 DMA控制器8237A,每个8237A芯片有4个DMA通道,就是有4个DMA控制器每个DMA通道具有不同的优先权每个DMA通道可以分别允许和禁止每个DMA通道有4种工作方式一次传送的最大长度可达64KB多个8237A芯片可以级连,扩展通道数,11.1.1 8237A的内部结构和引脚,内部结构和外部引脚都相对比较复杂内部主要由两类寄存器组成通道寄存器控制和状态寄存器,1.请求与响应信号,DREQ0DREQ3:DMA通道请求。

2、当外设需要请求DMA服务时,将DREQ信号置成有效电平,并要保持到产生响应信号。HRQ:总线请求。8237A输出有效的HRQ高电平,向CPU申请使用系统总线。HLDA:总线响应。8237A接受来自CPU的响应信号HLDA,取得了总线的控制权。DACK0DACK3:DMA通道响应。8237A使请求服务的通道产生相应的DMA响应信号。,2.DMA传送控制信号,A0A7:地址线。输出低8位存储器地址DB0DB7:数据线。输出高8位存储器地址;存贮器与存贮器的传送期间,用于数据传送。ADSTB:地址选通。DMA传送开始时,输出高有效,把在DB0DB7上输出的高8位地址锁存在外部锁存器中。AEN:地址允

3、许。输出高有效,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址。,2.DMA传送控制信号(续),MEMR*:存储器读。有效将数据从存储器读出MEMW*:存储器写。有效将数据写入存储器IOR*:I/O读。有效将数据从外设读出IOW*:I/O。有效将数据写入外设READY:准备好。DMA传送的S3下降沿检测到为低时,插入等待状态Sw,直到READY为高才进入第4个时钟周期S4。EOP*:过程结束。DMA传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结DMA传送。,3.处理器接口信号,DB0DB7:数据线。用于8237A与微处理器进行数据交换。A0A3:地

4、址线。用以选择芯片内部寄存器。CS*:片选。低有效时,微处理器与8237A通过数据线通信,主要完成对8237A的编程。,3.处理器接口信号(续),IOR*:I/O读。读取8237A内部寄存器。IOW*:I/O写。写入8237A内部寄存器。CLK:时钟。控制芯片内部操作和数据传输。RESET:复位。使8237A处于初始状态。,4.8237A的两种工作状态,8237A具有两种工作状态空闲周期:作为接口电路,受CPU控制的工作状态有效周期:作为DMAC控制DMA传送的工作状态,于是,引脚分成两种作用,8237A引脚的两种作用,11.1.2 8237A的工作时序空闲周期,8237A的任一通道都没有DM

5、A请求时8237A由微处理器控制作为一个接口芯片CPU可对8237A编程,或从8237A读取状态8237A采样CS*选片信号,该信号有效,CPU就要对8237A进行读/写操作8237A同时还采样通道的请求输入信号DREQ,若该信号有效,就进入有效周期,11.1.2 8237A的工作时序有效周期,8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期8237A作为系统的主控芯片,控制DMA传送操作DMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期,DMA传送时序,S1状态输出16位存储器地址AEN输出高电平,表示DMA传送S2状态输出DMA响应信号和控制信号DMA读:ME

6、MR*和IOW*有效DMA写:IOR*和MEMW*有效S3和Sw状态检测数据传送是否能够完成,决定是否插入等待状态SwS4状态完成数据传送,11.1.3 8237A的工作方式,DMA传送方式 单字节传送方式 数据块传送方式 请求传送方式 级连方式DMA传送类型 DMA读 DMA写 DMA检验存储器到存储器的传送,1.DMA传送单字节方式,每次DMA传送时仅传送一个字节传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效8237A释放系统总线,将控制权还给CPU若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化特点:一次传送一个字节,效率略低DMA传送之间CPU

7、有机会重新获取总线控制权,1.DMA传送数据块方式,由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送DREQ只需维持有效到DACK有效特点:一次请求传送一个数据块,效率高整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等),1.DMA传送请求方式,DREQ信号有效就连续传送数据DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作DMA通道的地址和字节数的中间值仍被保持DREQ信号再次有效,DMA传送就继续进行如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终

8、止计数特点:DMA操作可由外设利用DREQ信号控制传送的过程,1.DMA传送级连方式,用于通过多个8237A级连以扩展通道第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上第二级芯片的优先权等级与所连通道的优先权相对应第一级只起优先权网络的作用,实际的操作由第二级芯片完成还可由第二级扩展到第三级等,2.DMA传送类型,DMA读:把数据由存储器传送到外设由MEMR*有效从存储器读出数据,由IOW*有效把这一数据写入外设DMA写:把外设输入的数据写入存储器由IOR*有效从外设输入数据,由MEMW*有效把这一数据写入存储器。DMA检验:空操作8237A不进行任何检验外设可以进行DM

9、A校验存储器和I/O控制线保持无效,不进行传送,3.存储器到存储器的传送,固定使用通道0和通道1通道0的地址寄存器存源区地址通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数传送由设置通道0的软件请求启动每传送一字节需用8个时钟周期前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区,4.DMA通道的优先权方式,固定优先权方式优先权固定通道0优先权最高,通道1其次,通道2再次,通道3最低循环优先权方式优先权循环变化最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权

10、,DMA传送不存在嵌套,5.自动初始化方式,每当DMA过程结束信号EOP*产生时(不论是内部终止计数还是外部输入该信号),用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许DMA请求这样就作好了下一次DMA传送的准备,11.1.4 8237A的寄存器,8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令8237A的“软件命令”不需要通过数据总线写入控制字直接由地址和控制信号译码实现,全部都用地址A0A3区分,1.基地址寄存器与现行地址寄存器(16位),基地址寄存器(DMA0,2,4,6)存放DMA传送的内存起始地址传送过程其内容保持不变现

11、行地址寄存器(DMA0,2,4,6)保持DMA传送的当前地址值每次传送后该寄存器的值自动加1或减1这个寄存器的值可由CPU写入和读出,2.基字节数寄存器和现行字节数寄存器(16位),基字节数寄存器(DMA1,3,5,7)存放初始值传送过程其内容保持不变现行字节数寄存器(DMA1,3,5,7)保持DMA传送的剩余字节数每次传送后,该寄存器的值减1这个寄存器的值可由CPU写入和读出该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数,传送N个字节,初始值为N1,3.对通道寄存器的读写操作,CPU与8237A之间通过8位数据总线交换信息,8237A的通道寄存器均为16位需要两次读写操作才能实

12、现CPU与8237A之间的一个完整数据的交换8237A内含一个高/低触发器,用来控制读写通道寄存器的高、低字节,4.高/低触发器,该触发器为0,控制读写低字节该触发器为1,控制读写高字节软、硬件复位后,触发器为0每次读写通道寄存器,自动改变触发器状态。如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器清除高/低触发器软件命令(A3A2A1A01100)将使高/低触发器清零,3个软件命令,清除高/低触发器软件命令A3A2A1A01100,使高/低触发器清零主清除命令A3A2A1A01101,使高/低触发器清零还使命令、状态、请求、临时寄存器清零使屏蔽寄存器置为全1(禁止DMA请求)

13、主清除命令与硬件的RESET信号具有相同的功能清屏蔽寄存器命令A3A2A1A01110,使4个屏蔽位都清零(允许DMA请求),5.模式寄存器(DMA11),存放相应通道的方式控制字选择某个DMA通道的工作方式其中用最低2位选择哪个DMA通道,方式字格式(DMA11),00 请求模式01 单字节模式10 数据块模式11 级联模式,0 地址增量(加1)1 地址减量(减1),0 禁止自动初始化1 允许自动初始化,00DMA校验01DMA写10DMA读11非法若D7D611,00 通道001 通道110 通道211 通道3,示例 PC系列软盘读写操作选择DMA通道2,单字节传送,地址增1,不用自动预置

14、,其读/写操作的方式字如下,读盘(DMA写)01000110B46H写盘(DMA读)01001010B4AH校验盘(DMA校验)01000010B42H,6.命令寄存器(DMA8),存放8237A的命令字设置8237A芯片的操作方式影响每个DMA通道复位时使命令寄存器清零设置D21才使8237A可以作为DMA控制器,命令字格式(DMA8),示例 PC机系列中的8237A按如下要求工作:禁止存储器到存储器传送,按正常时序,滞后写,固定优先级,允许8237A工作,DREQ高电平有效,DACK低电平有效,写命令字。,MOVAL,00HOUTDMA+8,AL,7.请求寄存器(DMA9),存放软件DMA

15、请求状态除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求若是存贮器到存贮器传送,则必须由软件请求启动通道0,请求字格式(DMA9),8.屏蔽寄存器(DMA10,15),控制外设硬件DMA请求是否被响应(为0允许),各个通道互相独立。3种方法:单通道屏蔽字只对一个DMA通道屏蔽位进行设置主屏蔽字对4个DMA通道屏蔽位同时进行设置清屏蔽寄存器命令使4个屏蔽位都清零(允许)复位使4个通道全置于屏蔽状态当一个通道的DMA过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次DMA传送,单通道屏蔽字格式(DMA10),主屏蔽字格式(DMA

16、15),Di0 清通道i屏蔽位Di1 置通道i屏蔽位,示例 为了在每次软盘读写操作时,进行DMA初始化,都必须开放通道2,可用以下方法实现。,使用单通道屏蔽字moval,00000010boutdma+10,al 使用主屏蔽字moval,00001011boutdma+15,al 使用清屏蔽寄存器命令(软命令)moval,0cch;al为任意值outdma+14,al,9.状态寄存器(DMA8),可由CPU读取低4位反映读命令这个瞬间每个通道是否产生TC(为1,表示该通道传送结束)高4位反映每个通道的DMA请求情况(为1,表示该通道有请求)状态位在复位或被读出后,均被清零,状态字格式(DMA8

17、),D71:通道0有DMA请求D61:通道1有DMA请求D51:通道2有DMA请求D41:通道3有DMA请求,D01:通道0计数结束D11:通道1计数结束D21:通道2计数结束D31:通道3计数结束,10.临时寄存器(DMA+13),在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元传送完成,临时寄存器只会保留最后一个字节,可由CPU读出复位使临时寄存器内容为零,11.8237A的端口地址,8237A占有16个端口可供CPU访问16个端口记为:DMA0 DMA15其中每个通道有两个专用地址其余8个地址由各通道公用在IBMPC机中,8237A占用的I

18、/O端口地址为00H0FH,表11.1 PC/XT的8237A寄存器口地址,表11.1 PC/XT的8237A寄存器口地址(续),11.1.5 8237A的编程,8327A芯片的初始化编程:只要写入命令寄存器可先输出主清除命令,进行软件复位然后写入命令字命令字影响所有4个通道的操作,11.1.5 8237A的编程(续1),DMA通道的DMA传送编程:将存储器起始地址写入地址寄存器(如果采用地址减量工作,则是结尾地址)将本次DMA传送的数据个数写入字节数寄存器(个数要减1)确定通道的工作方式,写入方式寄存器写入屏蔽寄存器复位通道屏蔽位,允许DMA请求,8237A的编程的一般过程小结,发主清除命令

19、 写命令字,设置8237A的工作方式 写方式字,设置使用通道的工作方式 清除高/低触发器 写入内存储器起始地址(先写低位,后写高位)写入传送字节数1(先写低位,后写高位)清除该通道的屏蔽位 启动外部设备,若是内存到输出设备,用指令设置第一次DMA请求。,例11.1 IBM PC/XT的 DMA通道0的刷新编程,out 0dh,al;DMAC主清除命令mov al,0out 08,al;DMAC命令字mov al,0out 00,al;通道0的地址寄存器低字节out 00,al;通道0的地址寄存器高字节mov al,0ffhout 01,al;通道0的字节数寄存器低字节out 01,al;通道0

20、的字节数寄存器高字节mov al,58h out 0bh,al;通道0模式字mov al,0out 0ah,al;通道0屏蔽字,11.1.5 8237A的编程(续2),两种方法反映DMA过程结束(即终止计数、发生TC):状态寄存器的低4位信号(需配合DACK响应信号确定通道)应用程序处理DMA传送过程结束:采用软件查询状态字采用硬件中断在中断服务程序处理,例12.2 用DMA方式从网络接收数据包存入内存缓冲区。使用8237A的通道1,8237A的端口地址:00H0FH,页面寄存器地址:83H。内存缓冲区地址为:2100:0030H,数据块以1AH为结束标志,总长度不超过300B。编程如下:,;

21、8237A初始化out0dh,al;DMAC主清除命令moval,0out08,al;DMAC命令字moval,00000101b;写屏蔽字,屏蔽通道1out0ah,almoval,00000101b;通道1模式字,请求传送out0bh,al;地址增加,非自动预置,写传输,moval,02hout83h,al;页面地址02hout0ch,al;清先/后触发器moval,30hout02,al;通道1的地址寄存器低字节(30h)moval,10hout02,al;通道1的地址寄存器高字节(10h)movax,299;传输字节数out03,al;通道1的字节数寄存器低字节moval,ahout03

22、,al;通道1的字节数寄存器高字节,;传输moval,00000001b;写屏蔽字,清除通道1屏蔽out0ah,alcall;对网络设备进行设置pushdsmovax,2103h;ds置初值,缓冲区首地址movds,ax;ds:0000hwt:out0ch,al;清先/后触发器inal,03h;查询传输剩余字节数(低字节),movbl,alinal,03h;查询传输剩余字节数(高字节)movbh,al;未传输字节数送bxsubbx,3001negbx;bx中为已传输字节数cmpbyte ptr bx,1ah;传输完否?jnzwt;未完则继续等moval,00000101bout0ah,al;完

23、成后屏蔽通道1popds.,11.2 8237A的应用,8237A在PC系列机的使用情况DMA写传送DMA设定子程序,11.2.1 8237A在IBM PC系列机上的应用,IBM PC/XT机使用一片8237A通道0:动态存贮器DRAM刷新通道1:用户使用或SDLC卡通道2:内存与软盘的高速数据交换通道3:内存与硬盘的高速数据交换IBM PC/AT机采用两片8237ADMAC1包含通道03,支持8位数据传送DMAC2组成通道47,通道57支持16位数据传送,通道4用于级连,1.8237A的初始化,8237A初始化写入命令字为0,确定了:DREQ高电平有效、DACK低电平有效,固定优先权(依次为

24、通道0、17)不进行存储器到存储器的数据传输PC机用DMA控制电路进行刷新,所以DMA传送不能长时间占用总线(不应超过15s),一般只能使用单字节传送方式在PC系列机上,用户如果使用DMA通道,要注意遵从上述系统要求。除了要禁止8237A工作,用户通常不必操作命令寄存器,2.高位地址的形成,DMA传送时的高位地址由“页面寄存器”提供页面寄存器由CPU的输出指令实现写入DMAC1的通道0通道3:8237A提供系统A0A15低16位地址,页面寄存器输出系统A16A23高8位地址DMAC2的通道5通道7:8237A提供系统A1A16的16位地址,而系统A0被强迫为逻辑0,页面寄存器仅输出高7位地址A

25、17A23,页面寄存器不会自动增减量高位地址在DMA传送过程中不改变,11.2.2 DMA写传送,通道1工作方式设定,mov al,45h;通道1方式字:;单字节写传送,地址增量,非自动初始化out 0bh,alnop;延时nopout 0ch,al;清高/低触发器命令,例11.2 DMA写传送程序段,设通道1起始地址,mov al,0out 02h,al;写入低8位地址到地址寄存器mov al,50hout 02h,al;写入中8位地址到地址寄存器mov al,04hout 83h,al;写入高8位地址到页面寄存器,通道1传送字节数,mov ax,2048-1;AX传送字节数减1out 03

26、h,al;送字节数低8位到字节数寄存器mov al,ahout 03h,al;送字节数高8位到字节数寄存器mov al,01out 0ah,al;单通道屏蔽字:允许通道1的DMA请求;其他工作,通道1传送结束判断,dmalp:in al,08h;读状态寄存器and al,02h;判断通道1是否传送结束jz dmalp;没有结束,则循环等待;传送结束,处理转换数据,DMA传送过程结束的判断:软件查询方式,11.2.3 DMA设定子程序,系统ROM-BIOS的DMA设定子程序:DMA通道2传送编程软盘的读写利用DMA通道2传送数据被读软盘、写软盘和软盘检验等软盘I/O功能程序调用,设定通道2工作方

27、式,push cx;保存CXcli;关中断out 0ch,al;清高/低触发器命令push ax;延时pop axout 0bh,al;将AL中的方式字写入通道2,例11.4 DMA设定子程序,DMA设定子程序,形成物理地址,mov ax,esmov cl,4rol ax,cl;段地址左移4位mov ch,al;高位存入CHand al,0f0hadd ax,bx;加段内偏移地址jnc j33inc ch;物理地址形成j33:push ax;保存AX,DMA设定子程序,设定通道2起始地址,out 04h,al;写入地址寄存器mov al,ahout 04h,almov al,chand al,

28、0fhout 83h,al;写入页面寄存器,DMA设定子程序,计算传送字节数,mov ah,dh;取扇区数,计算传送的字节数sub al,al;AX为扇区数乘256shr ax,1;AX为扇区数乘128push ax;暂存AXmov bx,6call GET-PARM;调用参数子程序mov cl,ah;出口参数:AH0/1/2/3pop ax;恢复AXshl ax,cl;AX为DMA传送的字节数,DMA设定子程序,通道2传送字节数,dec ax;字节数减1push ax;保存out 05h,al;写入字节数寄存器mov al,ahout 05h,alsti;开中断,DMA设定子程序,设置出口参数,pop cx;弹出传送的字节数pop ax;弹出物理地址的低16位地址add ax,cx;相加,根据结果建立标志CFpop cx;恢复CXmov al,02h;允许通道2进行DMA响应out 0ah,alret;返回,DMA设定子程序,DMA传送过程结束的判断:硬件中断方式,跨越物理段示例,返回,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号