文档详情

第九章嵌入式DMA

大米
实名认证
店铺
PPT
1.14MB
约64页
文档ID:592357419
第九章嵌入式DMA_第1页
1/64

第9章 DMA控制接口 第第9 9章章 DMADMA控制接口控制接口n n教学重点教学重点n n￿￿8237A的工作方式的工作方式n n￿￿￿￿8237A寄存器组的作用寄存器组的作用n n￿￿￿￿8237A寄存器组的编程寄存器组的编程 9.1.19.1.1直接存取概述直接存取概述n n内存与外设间有内存与外设间有大量数据大量数据交换时,采用中断交换时,采用中断方式,每传送一次数据,就必须经历中断处方式,每传送一次数据,就必须经历中断处理的全部步骤,而且一般需要理的全部步骤,而且一般需要借助借助CPUCPU内部内部的寄存器作为中介的寄存器作为中介nDMADMA方式:方式:不用不用CPUCPU的寄存器作传数中介的寄存器作传数中介, , 完完成存储器和外设间的直接传数,成存储器和外设间的直接传数,CPUCPU必须将必须将系统总线的控制权让给系统总线的控制权让给DMAC DMAC 9.1.2DMA方式原理方框图方式原理方框图           DB             HOLD      CPU          HLDA           AB DMAC MEM I/O请求响应 DMA的工作流程的工作流程 DMAC发存储器地址发存储器地址在总线上传送数据在总线上传送数据传送结束?传送结束?修改地址指针修改地址指针DMA结束,交还总线权结束,交还总线权CPU允许释放总线,向允许释放总线,向DMAC发出总线应答信号发出总线应答信号HLDADMAC向向CPU发总线申请发总线申请HOLDYN 9.2 可编程可编程DMA控制器控制器8237An n每个8237A芯片有4个DMA通道,就是有4个DMA控制器n n每个DMA通道具有不同的优先权n n每个DMA通道可以分别允许和禁止n n每个DMA通道有4种工作方式n n一次传送的最大长度可达64KBn n多个8237A芯片可以级连,扩展通道数 9.2.1 8237A的内部结构和引脚的内部结构和引脚n n内部结构和外部引脚都相对比较复杂n n应用观点,内部主要由两类寄存器组成n n通道寄存器通道寄存器n n控制和状态寄存器控制和状态寄存器 1. 请求与响应信号请求与响应信号n nDREQDREQ0 0~~DREQDREQ3 3::DMADMA通道请求。

当外设需通道请求当外设需要请求要请求DMADMA服务时,将服务时,将DREQDREQ信号置成有效电信号置成有效电平,并要保持到产生响应信号平,并要保持到产生响应信号n nHRQHRQ::总线请求总线请求8237A8237A输出有效的输出有效的HRQHRQ高电高电平,向平,向CPUCPU申请使用系统总线申请使用系统总线n nHLDAHLDA::总线响应总线响应8237A8237A接受来自接受来自CPUCPU的响的响应信号应信号HLDAHLDA,取得了总线的控制权取得了总线的控制权n nDACKDACK0 0~~DACKDACK3 3::DMADMA通道响应通道响应8237A8237A使使请求服务的通道产生相应的请求服务的通道产生相应的DMADMA响应信号响应信号 2. DMA传送控制信号传送控制信号n nA A0 0~~A A7 7:地址线输出低:地址线输出低8 8位存储器地址位存储器地址n nDBDB0 0~~DBDB7 7:数据线输出高:数据线输出高8 8位存储器地址;位存储器地址;存贮器与存贮器的传送期间,用于数据传送存贮器与存贮器的传送期间,用于数据传送n nADSTBADSTB::地址选通。

地址选通DMADMA传送开始时,输出高传送开始时,输出高有效,把在有效,把在DBDB0 0~~DBDB7 7上输出的高上输出的高8 8位地址锁存位地址锁存在外部锁存器中在外部锁存器中n nAENAEN::地址允许输出高有效,将锁存的高地址允许输出高有效,将锁存的高8 8位位地址送入系统总线,与芯片此时输出的低地址送入系统总线,与芯片此时输出的低8 8位地位地址组成址组成1616位存储器地址位存储器地址 2. DMA传送控制信号传送控制信号(续)(续)n nMEMR*MEMR*:存储器读有效将数据从存储器读出:存储器读有效将数据从存储器读出n nMEMW*MEMW*::存储器写有效将数据写入存储器存储器写有效将数据写入存储器n nIOR*IOR*::I/OI/O读有效将数据从外设读出读有效将数据从外设读出n nIOW*IOW*::I/OI/O有效将数据写入外设有效将数据写入外设n nREADYREADY::准备好DMADMA传送的传送的S S3 3下降沿检测下降沿检测到为低时,插入等待状态到为低时,插入等待状态SwSw,直到,直到READYREADY为高为高才进入第才进入第4 4个时钟周期个时钟周期S S4 4。

n nEOP*EOP*:过程结束过程结束DMADMA传送过程结束,输出一传送过程结束,输出一个低有效脉冲外部输入低脉冲信号,则终结个低有效脉冲外部输入低脉冲信号,则终结DMADMA传送￿ ￿ 3. 处理器接口信号处理器接口信号n nDB0DB0~~DB7DB7:数据线用于:数据线用于8237A8237A与微处理器与微处理器进行数据交换进行数据交换n nA0A0~~A3A3:地址线用以选择芯片内部寄存器用以选择芯片内部寄存器n nCS*CS*:片选低有效时,微处理器与:片选低有效时,微处理器与8237A8237A通通过数据线通信,主要完成对过数据线通信,主要完成对8237A8237A的编程n nIOR*IOR*::I/OI/O读读取8237A8237A内部寄存器内部寄存器n nIOW*IOW*::I/OI/O写写入8237A8237A内部寄存器内部寄存器n nCLKCLK::时钟控制芯片内部操作和数据传输控制芯片内部操作和数据传输n nRESETRESET::复位使8237A8237A处于初始状态处于初始状态 8237A的两种工作状态的两种工作状态n n8237A具有两种工作状态n n空闲周期:作为接口电路,受CPU控制的工作状态n n有效周期:作为DMAC控制DMA传送的工作状态 8237A引脚的两种作用引脚的两种作用与与CPUCPU连接连接(空闲周期)的引脚(空闲周期)的引脚与外设连接与外设连接(有效周期)的引脚(有效周期)的引脚CLKCLK、、RESETRESETA A0 0~~A A3 3、、CS*CS*、、DBDB0 0~~DBDB7 7IOR*IOR*、、IOW*IOW*HRQHRQ、、HLDAHLDAAENAEN、、ADSTBADSTB、、READYREADY、、EOP*EOP*A A0 0~~A A7 7、、DBDB0 0~~DBDB7 7IOR*IOR*、、IOW*IOW*、、MEMR*MEMR*、、MEMW*MEMW*DREQDREQ0 0~~DREQDREQ3 3、、DACKDACK0 0~~DACKDACK3 3 9.2.2 8237A的工作时序的工作时序·空闲周期空闲周期n n8237A8237A的任一通道都没有的任一通道都没有DMADMA请求时请求时n n8237A8237A由微处理器控制作为一个接口芯片由微处理器控制作为一个接口芯片n nCPUCPU可可对对8237A8237A编程,或从编程,或从8237A8237A读取状态读取状态n n8237A8237A采样采样CS*CS*选片信号,该信号有效,选片信号,该信号有效,CPUCPU就就要对要对8237A8237A进行读进行读/ /写操作写操作n n8237A8237A还还采样通道的请求输入信号采样通道的请求输入信号DREQDREQ,该,该信号有效,就进入有效周期信号有效,就进入有效周期 9.2.2 8237A的工作时序的工作时序·有效周期有效周期n n8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期n n8237A作为系统的主控芯片,控制DMA传送操作n nDMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期 DMA传送时序传送时序DB0~~DB7DACKADSTBHRQDREQCLKS1S0S0SiSiS3S2S4S3S2SiSiS4HLDAAENA0~~A7 MEMR((IOR))IOW((MEMW)) DMA传送时序传送时序n nS1状态——输出16位存储器地址n nAEN输出高电平,表示DMA传送n nS2状态——输出DMA响应信号和控制信号n nDMA读:MEMR*和IOW*有效n nDMA写:IOR*和MEMW*有效n nS3和Sw状态——检测数据传送是否能够完成,决定是否插入等待状态Swn nS4状态——完成数据传送 9.2.3 8237A的工作方式的工作方式n nDMA传送方式· · 单字节传送方式单字节传送方式· · 数据块传送方式数据块传送方式· · 请求传送方式请求传送方式· · 级连方式级连方式n nDMA传送类型· · DMADMA读读· · DMADMA写写· · DMA DMA检验检验n n存储器到存储器的传送 1. DMA传送-单字节方式传送-单字节方式n n每次每次DMADMA传送时仅传送一个字节传送时仅传送一个字节n n传送一个字节之后,字节数寄存器减传送一个字节之后,字节数寄存器减1 1,地址,地址寄存器加寄存器加1 1或减或减1 1,,HRQHRQ变为无效变为无效n n8237A8237A释放系统总线,将控制权还给释放系统总线,将控制权还给CPUCPUn n若传送后使字节数从若传送后使字节数从0 0减到减到FFFFHFFFFH,则终结,则终结DMADMA传送或重新初始化传送或重新初始化n n特点:特点:n n一次传送一个字节,效率略低一次传送一个字节,效率略低n nDMADMA传送之间传送之间CPUCPU有机会重新获取总线控制权有机会重新获取总线控制权 1. DMA传送-数据块方式传送-数据块方式n n由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送n nDREQ只需维持有效到DACK有效n n特点:n n一次请求传送一个数据块,效率高一次请求传送一个数据块,效率高n n整个整个DMADMA传送期间传送期间CPUCPU长时间无法控制总长时间无法控制总线(无法响应其他线(无法响应其他DMADMA请求、无法处理中断请求、无法处理中断等)等) 1. DMA传送-请求方式传送-请求方式n nDREQDREQ信号有效就连续传送数据信号有效就连续传送数据n nDREQDREQ信号无效,信号无效,DMADMA传送被暂时中止,传送被暂时中止,8237A8237A释放总线,释放总线,CPUCPU可继续操作可继续操作n nDMADMA通道的地址和字节数的中间值仍被保持通道的地址和字节数的中间值仍被保持n nDREQDREQ信号再次有效,信号再次有效,DMADMA传送就继续进行传送就继续进行n n如果字节数寄存器从如果字节数寄存器从0 0减到减到FFFFHFFFFH,或者由外,或者由外部送来一个有效的信号,将终止计数部送来一个有效的信号,将终止计数n n特点:特点:n nDMADMA操作可由外设利用操作可由外设利用DREQDREQ信号控制传送的过程信号控制传送的过程 DMA传送-级连方式传送-级连方式n n用于通过多个8237A级连以扩展通道n n第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上n n第二级芯片的优先权等级与所连通道的优先权相对应n n第一级只起优先权网络的作用,实际的操作由第二级芯片完成n n还可由第二级扩展到第三级等 2. DMA传送类型传送类型n nDMADMA读读————把数据由存储器传送到外设把数据由存储器传送到外设n n由由MEMR*MEMR*有效从存储器读出数据,由有效从存储器读出数据,由IOW*IOW*有效把有效把这一数据写入外设这一数据写入外设n nDMADMA写写————把外设输入的数据写入存储器把外设输入的数据写入存储器n n由由IOR*IOR*有效从外设输入数据,由有效从外设输入数据,由MEMW*MEMW*有效把这有效把这一数据写入存储器。

一数据写入存储器n nDMADMA检验检验————空操作空操作n n8237A8237A不进行任何检验不进行任何检验n n外设可以进行外设可以进行DMADMA校验校验n n存储器和存储器和I/OI/O控制线保持无效,不进行传送控制线保持无效,不进行传送 3. 存储器到存储器的传送存储器到存储器的传送n n固定使用通道固定使用通道0 0和通道和通道1 1n n通道通道0 0的地址寄存器存源区地址的地址寄存器存源区地址n n通道通道1 1的地址寄存器存目的区地址,通道的地址寄存器存目的区地址,通道1 1的字的字节数寄存器存传送的字节数节数寄存器存传送的字节数n n传送由设置通道传送由设置通道0 0的软件请求启动的软件请求启动n n每传送一字节需用每传送一字节需用8 8个时钟周期个时钟周期n n前前4 4个时钟周期用通道个时钟周期用通道0 0地址寄存器的地址从源区读地址寄存器的地址从源区读数据送入数据送入8237A8237A的临时寄存器的临时寄存器n n后后4 4个时钟周期用通道个时钟周期用通道1 1地址寄存器的地址把临时寄地址寄存器的地址把临时寄存器中的数据写入目的区存器中的数据写入目的区 4. DMA通道的优先权方式通道的优先权方式n n固定优先权方式——优先权固定n n通道通道0 0优先权最高,通道优先权最高,通道1 1其次,通道其次,通道2 2再次,再次,通道通道3 3最低最低n n循环优先权方式——优先权循环变化n n最近一次服务的通道在下次循环中变成最低最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权优先权,其他通道依次轮流相应的优先权 5. 自动初始化方式自动初始化方式n n每当DMA过程结束信号EOP*产生时(不论是内部终止计数还是外部输入该信号)n n用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许DMA请求n n这样就作好了下一次DMA传送的准备 9.2.4 8237A的寄存器的寄存器n n8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令n n8237A的“软件命令”n n不需要通过数据总线写入控制字不需要通过数据总线写入控制字n n直接由地址和控制信号译码实现直接由地址和控制信号译码实现 1. 现行地址寄存器现行地址寄存器n n保持DMA传送的当前地址值n n每次传送后该寄存器的值自动加1或减1n n这个寄存器的值可由CPU写入和读出 2. 现行字节数寄存器现行字节数寄存器n n保持DMA传送的剩余字节数n n每次传送后,该寄存器的值减1n n这个寄存器的值可由CPU写入和读出n n该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数 读写通道寄存器读写通道寄存器n nCPU与8237A之间通过8位数据总线交换信息,8237A的通道寄存器均为16位n n需要两次读写操作才能实现CPU与8237A之间的一个完整数据的交换n n8237A内含一个高/低触发器,用来控制读写通道寄存器的高、低字节 高高/低触发器低触发器n n该触发器为0,控制读写低字节n n该触发器为1,控制读写高字节n n软、硬件复位后,触发器为0n n每次读写通道寄存器,自动改变触发器状态。

如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器n n清除高/低触发器软件命令(A3A2A1A0=1100)将使高/低触发器清零 3个个软件命令软件命令n n清除高清除高/ /低触发器软件命令低触发器软件命令n nA A3 3A A2 2A A1 1A A0 0==11001100,使高,使高/ /低触发器清零低触发器清零n n主清除命令主清除命令n nA A3 3A A2 2A A1 1A A0 0==11011101,,使高使高/ /低触发器清零低触发器清零n n还使命令、状态、请求、临时寄存器清零还使命令、状态、请求、临时寄存器清零n n使屏蔽寄存器置为全使屏蔽寄存器置为全1 1(禁止(禁止DMADMA请求)请求)n n主清除命令与硬件的主清除命令与硬件的RESETRESET信号具有相同的功能信号具有相同的功能n n清屏蔽寄存器命令清屏蔽寄存器命令n nA A3 3A A2 2A A1 1A A0 0==11101110,,使使4 4个屏蔽位都清零(允许个屏蔽位都清零(允许DMADMA请求)请求) 5. 模式寄存器模式寄存器n n存放相应通道的方式控制字n n选择某个DMA通道的工作方式n n其中用最低2位选择哪个DMA通道 方式字格式方式字格式D D7  7  D D6 6D D5 5D D4 4D D3  3  D D2 2D D1  1  D D0 000 请求模式请求模式01 单字节模式单字节模式10 数据块模式数据块模式11 级联模式级联模式0 地地址址增增量量((加加1))1 地地址址减减量量((减减1))0 禁止自动初始化禁止自动初始化1 允许自动初始化允许自动初始化00DMA校验校验01DMA写写10DMA读读11非法非法××若若D7D6==1100 通道通道001 通道通道110 通道通道211 通道通道3 6. 命令寄存器命令寄存器n n存放存放8237A8237A的命令字的命令字n n设置设置8237A8237A芯片的操作方式芯片的操作方式n n影响每个影响每个DMADMA通道通道n n复位时使命令寄存器清零复位时使命令寄存器清零n n设置设置D D2 2==1 1才使才使8237A8237A可以作为可以作为DMADMA控制器控制器 命令字格式命令字格式D D7 7D D6 6D D5 5D D4 4D D3 3D D2 2D D1 1D D0 00 DACK低有效低有效1 DACK高有效高有效0 DREQ高有效高有效1 DREQ低有效低有效0 滞后写滞后写1 扩展写扩展写× 若若D3==10 固定优先权固定优先权1 循环优先权循环优先权0 正常时序正常时序1 压缩时序压缩时序× 若若D0==10 允许允许DMAC工作工作1 禁止禁止DMAC工作工作0 允许通道允许通道0地址改变地址改变1 禁止通道禁止通道0地址改变地址改变× 若若D0==00 禁止存储器之间传送禁止存储器之间传送1 允许存储器之间传送允许存储器之间传送 7. 请求寄存器请求寄存器n n存放软件DMA请求状态n n除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求n n若是存贮器到存贮器传送,则必须由软件请求启动通道0 请求字格式请求字格式D D7  7  D D6  6  D D5  5  D D4  4  D D3 3D D2 2D D1  1  D D0 0任意任意0 复位复位1 置位置位00 通道通道001 通道通道110 通道通道211 通道通道3 8. 屏蔽寄存器屏蔽寄存器n n控制外设硬件控制外设硬件DMADMA请求是否被响应(为请求是否被响应(为0 0允许),允许),各个通道互相独立。

各个通道互相独立3 3种方法:种方法:n n单通道屏蔽字只对一个单通道屏蔽字只对一个DMADMA通道屏蔽位进行设置通道屏蔽位进行设置n n主屏蔽字对主屏蔽字对4 4个个DMADMA通道屏蔽位同时进行设置通道屏蔽位同时进行设置n n清屏蔽寄存器命令使清屏蔽寄存器命令使4 4个屏蔽位都清零(允许)个屏蔽位都清零(允许)n n复位使复位使4 4个通道全置于屏蔽状态个通道全置于屏蔽状态n n当一个通道的当一个通道的DMADMA过程结束,如果不是工作在过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次必须再次编程为允许,才能进行下次DMADMA传送传送 单通道屏蔽字格式单通道屏蔽字格式D D7  7  D D6  6  D D5  5  D D4  4  D D3 3D D2 2D D1  1  D D0 0任意任意0 清屏蔽位清屏蔽位1 置屏蔽位置屏蔽位00 通道通道001 通道通道110 通道通道211 通道通道3 主屏蔽字格式主屏蔽字格式D D7  7  D D6  6  D D5  5  D D4 4D D3 3D D2 2D D1 1D D0 0任意任意Di==0 清通道清通道I屏蔽位屏蔽位Di==1 置通道置通道I屏蔽位屏蔽位 9. 状态寄存器状态寄存器n n可由CPU读取n n低4位反映读命令这个瞬间每个通道是否为1,表示该通道传送结束)n n高4位反映每个通道的DMA请求情况(为1,表示该通道有请求)n n状态位在复位或被读出后,均被清零 10. 临时寄存器临时寄存器n n在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元n n传送完成,临时寄存器只会保留最后一个字节,可由CPU读出n n复位使临时寄存器内容为零 9.2.5 8237A的编程的编程n n8327A芯片的初始化编程:只要写入命令寄存器n n可先输出主清除命令,进行软件复位可先输出主清除命令,进行软件复位n n然后写入命令字然后写入命令字n n命令字影响所有4个通道的操作 9.2.5 8237A的编程(续的编程(续1))n nDMADMA通道的通道的DMADMA传送编程:传送编程:n n将存储器起始地址写入地址寄存器(如果采用将存储器起始地址写入地址寄存器(如果采用地址减量工作,则是结尾地址)地址减量工作,则是结尾地址)n n将本次将本次DMADMA传送的数据个数写入字节数寄存器传送的数据个数写入字节数寄存器(个数要减(个数要减1 1))n n确定通道的工作方式,写入方式寄存器确定通道的工作方式,写入方式寄存器n n写入屏蔽寄存器复位通道屏蔽位,允许写入屏蔽寄存器复位通道屏蔽位,允许DMADMA请请求求 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的字节数寄存器高字节的字节数寄存器高字节mov al,58h out 0bh,al;通道通道0模式字模式字mov al,0out 0ah,al;通道通道0屏蔽字屏蔽字IBM PC/XT 9.2.5 8237A的编程(续的编程(续2))n n两种方法反映DMA过程结束(即终止计数、发生TC):n n状态寄存器的低状态寄存器的低4 4位位n n信号(需配合信号(需配合DACKDACK响应信号确定通道)响应信号确定通道)n n应用程序处理DMA传送过程结束:n n采用软件查询状态字采用软件查询状态字n n采用硬件中断在中断服务程序处理采用硬件中断在中断服务程序处理 9.3 8237A的应用的应用n n8237A在PC系列机的使用情况n nDMA写传送n nDMA设定子程序 9.3.1 8237A在在IBM PC系列机上的应用系列机上的应用n nIBM PC/XT机使用一片8237An n通道通道0 0::动态存贮器动态存贮器DRAMDRAM刷新刷新n n通道通道1 1::用户使用或用户使用或SDLCSDLC卡卡n n通道通道2 2::内存与软盘的高速数据交换内存与软盘的高速数据交换n n通道通道3 3::内存与硬盘的高速数据交换内存与硬盘的高速数据交换n nIBM PC/AT机采用两片8237An nDMAC1DMAC1包含通道包含通道0 0~~3 3,,支持支持8 8位数据传送位数据传送n nDMAC2DMAC2组成组成通道通道4 4~~7 7,,通道通道5 5~~7 7支持支持1616位位数据传送,通道数据传送,通道4 4用于级连用于级连 1. 8237A的初始化的初始化n n8237A8237A初始化写入命令字为初始化写入命令字为0 0,确定了:,确定了:n nDREQDREQ高电平有效、高电平有效、DACKDACK低电平有效,固定优先低电平有效,固定优先权(依次为通道权(依次为通道0 0、、1 1…………7 7))n n不进行存储器到存储器的数据传输不进行存储器到存储器的数据传输n nPCPC机用机用DMADMA控制电路进行刷新,所以控制电路进行刷新,所以DMADMA传送不传送不能长时间占用总线(不应超过能长时间占用总线(不应超过1515 s s),一般只能),一般只能使用单字节传送方式使用单字节传送方式n n在在PCPC系列机上,用户如果使用系列机上,用户如果使用DMADMA通道,要通道,要注意遵从上述系统要求。

除了要禁止注意遵从上述系统要求除了要禁止8237A8237A工工作,用户通常不必操作命令寄存器作,用户通常不必操作命令寄存器 2. 高位地址的形成高位地址的形成n nDMADMA传送时的高位地址由传送时的高位地址由“ “页面寄存器页面寄存器” ”提供提供n n页面寄存器由页面寄存器由CPUCPU的输出指令实现写入的输出指令实现写入n nDMAC1DMAC1的通道的通道0 0~通道~通道3 3::8237A8237A提供系统提供系统A A0 0~~A A1515低低1616位地址,页面寄存器输出系统位地址,页面寄存器输出系统A A1616~~A A2323高高8 8位地址位地址n nDMAC2DMAC2的通道的通道5 5~通道~通道7 7::8237A8237A提供系统提供系统A A1 1~~A A1616的的1616位地址,而系统位地址,而系统A A0 0被强迫为逻辑被强迫为逻辑0 0,页面寄存器仅输出高,页面寄存器仅输出高7 7位地址位地址A A1717~~A A2323 9.3.2 DMA写传送写传送CLKDCLK D0~~D7Q +5V外设数据外设数据外设外设DMA请求请求74LS37474LS74RESETDRQ1 DACK1IOROERS 通道1工作方式mov al,45h;通道通道1方式字:方式字:;单字节写传送,地址增量,非自动初始化单字节写传送,地址增量,非自动初始化out 0bh,alnop;延时延时nopout 0ch,al;清高清高/低触发器命令低触发器命令DMA写传送 通道1起始地址mov al,0out 02h,al;写入低写入低8位地址到地址寄存器位地址到地址寄存器mov al,50hout 02h,al;写入中写入中8位地址到地址寄存器位地址到地址寄存器mov al,04hout 83h,al;写入高写入高8位地址到页面寄存器位地址到页面寄存器DMA写传送 通道1传送字节数mov ax,2048-1;AX←传送字节数减传送字节数减1out 03h,al;送字节数低送字节数低8位到字节数寄存器位到字节数寄存器mov al,ahout 03h,al;送字节数高送字节数高8位到字节数寄存器位到字节数寄存器mov al,01out 0ah,al;单通道屏蔽字:允许通道单通道屏蔽字:允许通道1的的DMA请求请求……;其他工作其他工作DMA写传送 通道1传送结束判断dmalp:in al,08h;读状态寄存器读状态寄存器and al,02h;判断通道判断通道1是否传送结束是否传送结束jz dmalp;没有结束,则循环等待没有结束,则循环等待……;传送结束,处理转换数据传送结束,处理转换数据DMA写传送 9.3.3 DMA设定子程序设定子程序n n系统ROM-BIOS的DMA设定子程序:DMA通道2传送编程n n软盘的读写利用DMA通道2传送数据n n被读软盘、写软盘和软盘检验等软盘I/O功能程序调用 通道2工作方式push cx;保存保存CXcli;关中断关中断out 0ch,al;清高清高/低触发器命令低触发器命令push ax;延时延时pop axout 0bh,al;将将AL中的方式字写入通道中的方式字写入通道2DMA设定子程序 形成物理地址mov ax,esmov cl,4rol ax,cl;段地址左移段地址左移4位位mov ch,al;高位存入高位存入CHand al,0f0hadd ax,bx;加段内偏移地址加段内偏移地址jnc j33inc ch;物理地址形成物理地址形成j33:push ax;保存保存AXDMA设定子程序 通道2起始地址out 04h,al;写入地址寄存器写入地址寄存器mov al,ahout 04h,almov al,chand al,0fhout 81h,al;写入页面寄存器写入页面寄存器DMA设定子程序 计算传送字节数mov ah,dh;取扇区数,计算传送的字节数取扇区数,计算传送的字节数sub al,al;AX为扇区数乘为扇区数乘256shr ax,1;AX为扇区数乘为扇区数乘128push ax;暂存暂存AXmov bx,6call GET-PARM ;调用参数子程序调用参数子程序mov cl,ah;出口参数:出口参数:AH==0/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设定子程序 第第9章教学要求章教学要求1. 了解8237A引脚特点和工作时序2. 掌握8237A的各种工作方式3. 理解8237A内部寄存器的作用和编程4. 了解8237A在IBM PC系列机上的应用情况 。

下载提示
相似文档
正为您匹配相似的精品文档