DMA控制器微型计算机技术.ppt_第1页
DMA控制器微型计算机技术.ppt_第2页
DMA控制器微型计算机技术.ppt_第3页
DMA控制器微型计算机技术.ppt_第4页
DMA控制器微型计算机技术.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第 8 8 章章 DMA控制接口 教学重点 n 8237A的工作方式 n 8237A寄存器组的作用 n 8237A寄存器组的编程 8.1 DMA控制器的一般结构和概要 一、 DMA概述 n为了提高数据传送的速率,人们提出了直接 存储器存取(DMA)的数据传送控制方式,即 在一定时间段内,由DMA控制器取代CPU, 获得总线控制权,来实现内存与外设或者内 存的不同区域之间大量数据的快速传送。 二、 DMA数据传送的工作过程 外设向DMAC发出DMA传送请求。 DMAC通过连接到CPU的HOLD信号向CPU提出 DMA请求。 CPU在完成当前总线操作后会立即对DMA请求做 出响应。CPU的响应包括两个方面: n一方面,CPU将控制总线、数据总线和地址总线浮 空,即放弃对这些总线的控制权; n另一方面,CPU将有效的HLDA信号加到DMAC上 ,用此来通知DMAC,CPU已经放弃了总线的控制 权。 二、 DMA数据传送的工作过程(续) 待CPU将总线浮空,即放弃了总线控制权后,由 DMAC接管系统总线的控制权,并向外设送出DMA 的应答信号。 由DMAC送出地址信号和控制信号,实现外设与内 存或内存不同区域之间大量数据的快速传送。 DMAC将规定的数据字节传送完之后,通过向CPU 发HOLD信号,撤消对CPU的DMA请求。CPU收到 此信号,一方面使HLDA无效,另一方面又重新开 始控制总线,实现正常取指令、分析指令、执行指 令的操作。 需要注意的是,在内存与外 设之间进行DMA传送期间 ,DMAC控制器只是输出地 址及控制信号,而数据传送 是直接在内存和外设端口之 间进行的,并不经过DMAC ;对于内存不同区域之间的 DMA传送,则应先用一个 DMA存储器读周期将数据 从内存的源区域读出,存入 到DMAC的内部数据暂存器 中,再利用一个DMA存储 器写周期将该数据写到内存 的目的区域中去。 二、 DMA数据传送的工作过程(续) 8.2 DMA控制器8237A的原理 控制寄存器 状态寄存器 模式寄存器 当前地址寄存器 当前字节寄存器 基本地址寄存器 基本字节寄存器 通道0 通道1 通道2 通道3 请求触发器 屏蔽触发器 一、 DMA控制器8237A的编程结构 n含有4个相互独立的通道,每个通道有独立的 地址寄存器和字节数寄存器,而控制寄存器、 状态寄存器为四个通道所共用。 n每个DMA通道具有不同的优先权 n每个DMA通道可以分别允许和禁止 n每个DMA通道有4种工作方式,分别为:单字 节传送、数据块传送、请求传送、级连方式。 n通道中地址寄存器的长度为16位,一次传送的 最大长度可达64KB n多个8237A芯片可以级连,扩展通道数 二、8237A的内部组成和结构 1四个独立的DMA通道 n每个通道都有一个16位的基地址寄 存器,一个16位的基字节数计数器 ,一个16位的当前地址寄存器和一 个16位的当前字节数计数器及一个8 位的方式寄存器,方式寄存器接收 并保存来自于CPU的方式控制字, 使本通道能够工作于不同的方式下 ; 2定时及控制逻辑电路 n对在DMA请求服务之前,CPU编程 对给定的命令字和方式控制字进行 译码,以确定DMA的工作方式,并 控制产生所需要的定时信号; 3优先级编码逻辑 n对通道进行优先级编码,确定在同 时接收到不同通道的DMA请求时, 能够确定相应的先后次序。通道的 优先级可以通过编程确定为是固定 的或者是旋转的。 4共用寄存器 n除了每个通道中的寄存器之外,整 个芯片还有一些共用的的寄存器: 1个16位的地址暂存寄存器 1个16位的字节数暂存寄存器 1个8位的状态寄存器 1个8位的命令寄存器 1个8位的暂存寄存器, 1个4位的屏蔽寄存器 1个4位的请求寄存器 寄存器名 长度( Bit) 数量寄存器名 长度(Bit ) 数 量 基地址寄存器 基字节数寄存器 当前地址寄存器 当前字节数寄存 器 地址暂存寄存器 字节数暂存寄存 器 16 16 16 16 16 16 4 4 4 4 1 1 状态寄存器 命令寄存器 暂存寄存器 方式寄存器 屏蔽寄存器 请求寄存器 8 8 8 6 4 4 1 1 1 4 1 1 8237的内部寄存器 58237的三态缓冲器 n8237的数据引线,地址引线都有三 态缓冲器,因而可以接也可以释放 总线。 三、8237的外部结构 n8237是具有40个引脚的双列直插式 集成电路芯片 首先分类展开外部引脚 1. 请求与响应信号 nDREQ0DREQ3:DMA通道请求。当外设需 要请求DMA服务时,将DREQ信号置成有效电 平,并要保持到产生响应信号。对应于四个独 立的通道,DREQ的有效电平可以通过编程来 加以确定,优先级可以固定,也可以旋转。 nHRQ:总线请求。8237A输出有效的HRQ高 电平,向CPU申请使用系统总线。 nHLDA:总线响应。8237A接受来自CPU的响 应信号HLDA,取得了总线的控制权。 nDACK0DACK3:DMA通道响应。8237A使 请求服务的通道产生相应的DMA响应信号。 2. DMA传送控制信号 nA0A7:地址线。输出低8位存储器地址。 nDB0DB7:数据线。输出高8位存储器地址; 存贮器与存贮器的传送期间,用于数据传送。 nADSTB:地址选通。DMA传送开始时,输出高 有效,把在DB0DB7上输出的高8位地址锁存 在外部锁存器中。 nAEN:地址允许。输出高有效,将锁存的高8位 地址送入系统总线,与芯片此时输出的低8位地 址组成16位存储器地址。 2. DMA传送控制信号(续) nMEMR:存储器读。有效将数据从存储器读出 nMEMW:存储器写。有效将数据写入存储器 nIOR:I/O读。有效将数据从外设读出 nIOW:I/O写。有效将数据写入外设 nREADY:准备好。DMA传送的S3下降沿检测 到为低时,插入等待状态Sw,直到READY为 高才进入第4个时钟周期S4。 nEOP:过程结束。DMA传送过程结束,输出一 个低有效脉冲。外部输入低脉冲信号,则终结 DMA传送。 3. 处理器接口信号 nCS:片选。低有效时,微处理器与8237A通 过数据线通信,主要完成对8237A的编程。 nIOR:I/O读。读取8237A内部寄存器低电平 有效的双向三态信号引脚。在空闲周期,它是 一条输入控制信号,CPU利用这个信号读取 8237内部状态寄存器的内容;而在DMA传送 时,它是读端口控制信号输出引脚,与相配合 ,使数据由外设传送到内存。 nIOW:I/O写。写入8237A内部寄存器。低电 平有效的双向三态信号引脚,其功能与相对应 。 3. 处理器接口信号(续1) nDB0DB7: 8条双向数据线。用于8237A与 微处理器进行数据交换。在CPU控制系统总线 时,可以通过DB0DB7对8237编程或读出8237 的内部状态寄存器的内容;在DMA操作期间 ,由DB0DB7输出高8位地址信号A8A15,并 利用ADSTB信号锁存该地址信号。 在进行内存不同区域之间的DMA传送时, 除了送出A8A15地址信号外,还分时输入从存 储器源区域读出的数据,送入8237的暂存寄存 器中,等到存储器写周期时,再将这些数据通 过这8个引脚,由8237的暂存寄存器送到系统 数据总线上,然后写入到规定的存储单元中去 。 3. 处理器接口信号(续2) nA3A0:4条双向三态的低位地址信号引脚。在 空闲周期,接收来自于CPU的四位地址信号,用 以寻址8237内部的不同的寄存器(组);在DMA传 送时,输出要访问的存储单元或者I/O端口地址 的低4位。 nA7A4 :4条三态地址信号输出引脚。在DMA 传送时,输出要访问的存储单元或者I/O端口地 址的中4位。 3. 处理器接口信号(续3) nCLK:时钟信号输入引脚,对于标准的8237,其 输入时钟频率为3MHz,对于8237-2,其输入时钟 频率可达5MHz。 nRESET:复位信号,输入引脚,用来清除8237中 的命令、状态请求和临时寄存器,且使字节指针 触发器复位并置位屏蔽触发器的所有位(即使所 有通道工作在屏蔽状态),在复位之后,8237工 作于空闲周期SI。 四、8237A的两种工作状态 n作为从模块工作时(空闲周期): 当CPU把数据送到8237A的寄存器或 者从8237A的寄存器取出时,8237如同接 口一样作为总线的从模块工作,受CPU 控制的工作状态。 这时,8237A接收16位地址,用较 高的12位地址产生片选信号,用底4位地 址来选择内部寄存器。 四、8237A的两种工作状态(续) n作为主模块工作时(有效周期): 当8237A作为主模块工作时,它会往总线 上提供要访问的内存地址,地址的低8位放在 A7A0,而地址的高8位放在D7D0。 作为主模块工作时,8237A还必须输出必 要的读写信号,IOR、IOW、MEMR、 MEMW。 8237A引脚的两种作用 与CPU连接 (从模块)的引脚 与外设连接 (主模块)的引脚 CLK、RESET A0A3、CS*、DB0DB7 IOR*、IOW* HRQ、HLDA AEN、ADSTB、READY、EOP* A0A7、DB0DB7 IOR*、IOW*、MEMR*、MEMW* DREQ0DREQ3、DACK0DACK3 五、 8237的工作周期 空闲周期 n当8237的任一通道都无DMA请求时,则其处 于空闲周期或称为SI状态,空闲周期由一系 列的时钟周期组成,在空闲周期中的每一个 时钟周期,8237只做两项工作: 8237A采样CS片选信号,该信号有效,CPU 就要对8237A进行读/写操作 8237A还采样通道的请求输入信号DREQ, 该信号有效,就进入有效周期 进入有效周期 n8237A采样到外设有DMA请求,就脱 离空闲周期进入有效周期 n8237A作为系统的主控芯片,控制 DMA传送操作 nDMA传送借用系统总线完成,其控制信 号以及工作时序类似CPU总线周期 进入DMA传送时序 五、 8237的工作周期 有效周期 DMA传送时序 DB0DB7 DACK ADSTB HRQ DREQ CLK S1S0S0SiSiS3S2S4S3S2SiSiS4 HLDA AEN A0A7 MEMR(IOR) IOW(MEMW) S1状态输出16位存储器地址 AEN输出高电平,表示DMA传送 S2状态输出DMA响应信号和控制信号 DMA读:MEMR*和IOW*有效 DMA写:IOR*和MEMW*有效 S3和Sw状态检测数据传送是否能够完 成,决定是否插入等待状态Sw S4状态完成数据传送 六、8237A的工作方式 nDMA传送方式 单字节传送方式 数据块传送方式 请求传送方式 级连方式 nDMA传送类型 DMA读 DMA写 DMA检验 n存储器到存储器的传送 1. DMA传送单字节方式 n每次DMA传送时仅传送一个字节 n传送一个字节之后,当前字节数寄存器减1, 当前地址寄存器加1或减1,HRQ变为无效 n每传送完这一个字节, 8237A释放系统总线 , DMAC就将总线控制权交回CPU。 n若传送后使字节数从0减到FFFFH,则终结 DMA传送或重新初始化 n特点: n一次传送一个字节,效率略低 nDMA传送之间CPU有机会重新获取总线控制权 1. DMA传送数据块方式 n在这种传送方式下,DMAC一旦获得总线控制权,便开始 连续传送数据。每传送一个字节,自动修改当前地址及 当前字节数寄存器的内容,直到字节数寄存器从0减到 FFFFH终止计数,或由外部输入EOP有效信号终结DMA传 送,将总线控制权交给CPU。 n一次所传送数据块的最大长度可达64KB,数据块传送结 束后可自动初始化。 nDREQ只需维持有效到DACK有效 n特点: n一次请求传送一个数据块,效率高 n整个DMA传送期间CPU长时间无法控制总线(无法响 应其他DMA请求、无法处理中断等) 1. DMA传送请求方式 nDREQ信号有效就连续传送数据 nDREQ信号无效,DMA传送被暂时中止, 8237A释放总线,CPU可继续操作 nDMA通道的地址和字节数的中间值仍被保持 nDREQ信号再次有效,DMA传送就继续进行 n如果字节数寄存器从0减到FFFFH,或者由外 部送来一个EOP有效的信号,将终止计数 n特点: nDMA操作可由外设利用DREQ信号控制传送的过程 1. DMA传送级连方式 n用于通过多个8237A级连以扩展通道 n第二级的HRQ和HLDA信号连到第一级 某个通道的DREQ和DACK上 n第二级芯片的优先权等级与所连通道的 优先权相对应 n第一级只起优先权网络的作用,实际的 操作由第二级芯片完成 n还可由第二级扩展到第三级等 1. DMA传送级连方式 2. DMA传输类型 nDMA读把数据由存储器传送到外设 n由MEMR有效从存储器读出数据,由IOW有效把 这一数据写入外设 nDMA写把外设输入的数据写入存储器 n由IOR有效从外设输入数据,由MEMW有效把这 一数据写入存储器。 nDMA检验空操作 n8237A不进行任何检验 n外设可以进行DMA校验 n存储器和I/O控制线保持无效,不进行传送 3. 存储器到存储器的传送 n固定使用通道0和通道1 n通道0的地址寄存器存源区地址 n通道1的地址寄存器存目的区地址,通道1的字 节数寄存器存传送的字节数 n传送由设置通道0的软件请求启动 n每传送一字节需用8个时钟周期 n前4个时钟周期用通道0地址寄存器的地址从源区读 数据送入8237A的临时寄存器 n后4个时钟周期用通道1地址寄存器的地址把临时寄 存器中的数据写入目的区 4. DMA通道的优先权方式 n固定优先权方式优先权固定 n通道0优先权最高,通道1其次,通道2再次 ,通道3最低 n循环优先权方式优先权循环变化 n最近一次服务的通道在下次循环中变成最低 优先权,其他通道依次轮流相应的优先权 DMA传送不存在嵌套 5. 自动初始化方式 n每当DMA过程结束信号EOP产生时(不 论是内部终止计数还是外部输入该信号) n用基地址寄存器和基字节数寄存器的内容 ,使相应的现行寄存器恢复为初始值,包 括恢复屏蔽位、允许DMA请求 n这样就作好了下一次DMA传送的准备 1什么叫DMA传送方式?试说明DMA方式传送 数据的主要步骤。 2试比较DMA传输、查询式传输及中断方式传 输之间的优缺点和适用场合? 3DMA控制器芯片Intel8237有哪几种工作方 式?各有什么特点? 4Intel8237支持哪几种DMA传输类型? 习题与思考 8.5 8237A的寄存器 n8237A共有10种内部寄存器,对它们的 操作有时需要配合3个软件命令 n8237A的“软件命令” n不需要通过数据总线写入控制字 n直接由地址和控制信号译码实现 全部都用地址A0A3区分 1基地址寄存器 n用以存放16位地址,只可写入而不能读出。 n在编程时,它与当前地址寄存器被同时写入 某一起始地址,可用作内存区域的首地址或 末地址。 n在8237进行DMA数据传送的工作过程中, 其内容不发生变化,只是在自动预置时,其 内容可被重新写到当前地址寄存器中去。 2基字节数寄存器 n用以存放相应通道需要传送数据的字节数, 只可写入而不能读出。 n在编程时它与当前字节数寄存器被同时写入 要传送数据的字节数。 n在8237进行DMA数据传送的工作过程中,其 内容保持不变,只是在自动预置时,其内容 可以被重新写到当前字节数寄存器中去。 3当前地址寄存器 n保持DMA传送的当前地址值 n每次传送后该寄存器的值自动加1或减1 nCPU可以对其进行读写操作。 n在选择自动预置时,每当字节计数值减 为0或外部有效后,就会自动将基地址寄 存器的内容写入当前地址寄存器中,恢 复其初始值。 基地址寄存器 存放初始值 4当前字节数寄存器 n保持DMA传送的剩余字节数 n每次传送后,该寄存器的值减1 n这个寄存器的值可由CPU写入和读出 n该寄存器的值减至0,再减1(从0减到 FFFFH)时,终止计数 基字节数寄存器 存放初始值 传送N个字节,初始值为N1 5地址暂存寄存器和字节数暂存寄存器 n这两个16位的寄存器和CPU不直接发生 关系,我们也不必要对其进行读/写操作 ,因而对如何使用8237没有影响。 6模式寄存器 n每个通道有一个8位的模式寄存器,但是 它们占用同一个端口地址,用来存放方 式字,依靠方式控制字本身的特征位来 区分写入不同的通道,用来规定通道的 工作方式,各位的作用如下: 请看方式字的格式 方式字格式 D7 D6D5D4D3 D2D1 D0 00 请求模式 01 单字节模式 10 数据块模式 11 级联模式 0 地址增量(加1 ) 1 地址减量(减1 ) 0 禁止自动初始化 1 允许自动初始化 00DMA校验 01DMA写 10DMA读 11非法 若D7D611 00 通道0 01 通道1 10 通道2 11 通道3 D7D6D5D4D1D3D2D0 00 通道0 01 通道1 10 通道2 11 通道3 00 请求传输方式 01 单字节传输方式 10 块传输方式 11 级联传输方式 00 校验传输 01 写传输 10 读传输 11 无意义 通道选择 方式选择 传输类型选择 自动预置功能选择:0禁止;1允许。 地址增/减1选择:0增1;1减1。 方式字格式 自动预置就是当某一通道按要求将数据传送完后,又能自动预置初始地址和传送的字节数,而后 重复进行前面已进行过的过程。 校验传送就是实际并不进行传送,只产生地址并响应EOP信号,不产生读写控制信号,用以校验 8237的功能是否正常。 7控制寄存器 n存放8237A的命令字 n设置8237A芯片的操作方式 n影响每个DMA通道 n复位时使命令寄存器清零 n设置D21才使8237A可以作为DMA控制器 请看命令字的格式 命令字格式 D7D6D5D4D3D2D1D0 0 DACK低有效 1 DACK高有效 0 DREQ高有效 1 DREQ低有效 0 滞后写 1 扩展写 若D31 0 固定优先权 1 循环优先权 0 正常时序 1 压缩时序 若D01 0 允许DMAC工作 1 禁止DMAC工作 0 允许通道0地址改变 1 禁止通道0地址改变 若D00 0 禁止存储器之间传送 1 允许存储器之间传送 D7D6D5D4D1D3D2D0 0 DACK低电平有效 1 DACK高电平有效 0 禁止存储器到存储器传输 1 允许存储器到存储器传输 0 DREQ高电平有效 1 DREQ低电平有效 0 禁止通道0地址保持 1 允许通道0地址保持。D0=0时无意义 0 不扩展写入 1 扩展写入 0 启动8237工作 1 停止8237的工作 0 固定优先权 1 旋转优先权 0 正常时序 1 压缩时序 命令字格式 命令字说明 nD0位用以规定是否允许采用存储器到存储器的传 送方式。若允许这样做,则利用通道0和通道1来 实现。 nD1位用以规定通道0的地址是否保持不变。如前所 述,在存储器到存储器传送中,源地址由通道0提 供,读出数据到暂存寄存器,而后,由通道l送出 目的地址,将数据写入目的区域;若命令字中D1 0,则在整个数据块传送中(块长由通道1决定)保 持内存源区域地址不变,因此,就会把同一个数 据写入到整个目的存储器区域中。 命令字说明(续) nD2位是允许或禁止8237芯片工作的控制位。 nD3位用于选择总线周期中写信号的定时。例如 ,PC机中动态存储器写是由写信号的上升沿启 动的。若在DMA周期中写信号来得太早,可能 造成错误,所以PC机选择D30。 nD5位用于选择是否扩展写信号。在D3=0(正常 时序)时,如果外设速度较慢,有些外设是用 8237A送出的和信号的下降沿来产生的READY 信号的。为提高传送速度,能够使READY信号 早些到来,须将和信号加宽,以使它们提前到 来。因此,可以通过令D5=1使和信号扩展2个时 钟周期提前到来。 8请求寄存器 n用于在软件控制下产生一个DMA请求 n除硬件DMA请求外,当工作在数据块传 送方式时也可以通过软件发出DMA请求 n若是存贮器到存贮器传送,则必须由软 件请求启动通道0 请看请求字的格式 请求字格式 D7 D6 D5 D4 D3D2D1 D0 任意 0 复位 1 置位 00 通道0 01 通道1 10 通道2 11 通道3 9. 屏蔽寄存器 n控制外设硬件DMA请求是否被响应(为0允许 ),各个通道互相独立。3种方法: n单通道屏蔽字只对一个DMA通道屏蔽位进行设置 n主屏蔽字对4个DMA通道屏蔽位同时进行设置 n清屏蔽寄存器命令使4个屏蔽位都清零(允许) n复位使4个通道全置于屏蔽状态 n当一个通道的DMA过程结束,如果不是工作在 自动初始化方式,则这一通道的屏蔽位置位, 必须再次编程为允许,才能进行下次DMA传送 请看屏蔽字的格式 单通道屏蔽字格式 D7 D6 D5 D4 D3D2D1 D0 任意 0 清屏蔽位 1 置屏蔽位 00 通道0 01 通道1 10 通道2 11 通道3 主屏蔽字格式 D7 D6 D5 D4D3D2D1D0 任意 Di0 清通道I屏蔽位 Di1 置通道I屏蔽位 10. 状态寄存器 n可由CPU读取 n低4位反映读命令这个瞬间每个通道是否 产生TC(为1,表示该通道传送结束) n高4位反映每个通道的DMA请求情况( 为1,表示该通道有请求) n状态位在复位或被读出后,均被清零 D7D6D5D4D1D3D2D0 D7=1 通道3请求 D0=1 通道0已终止计数 D1=1 通道1已终止计数 D2=1 通道2已终止计数 D4=1 通道0请求 D6=1 通道2请求 D5=1 通道1请求 D3=1 通道3已终止计数 8237的状态寄存器 11. 临时寄存器 n在存储器到存储器的传送方式下,临时 寄存器保存从源存储单元读出的数据, 该数据又被写入到目的存储单元 n传送完成,临时寄存器只会保留最后一 个字节,可由CPU读出 n复位使临时寄存器内容为零 8.7 8237A的编程 n8327A芯片的初始化编程:只要写入命 令寄存器 n可先输出主清除命令,进行软件复位 n然后写入命令字 n命令字影响所有4个通道的操作 8.7 8237A的编程(续1) nDMA通道的DMA传送编程: n将存储器起始地址写入地址寄存器(如果采用地 址减量工作,则是结尾地址) n将本次DMA传送的数据个数写入字节数寄存器( 个数要减1) n确定通道的工作方式,写入方式寄存器 n写入屏蔽寄存器复位通道屏蔽位,允许DMA请求 请看实例 DMA通道0的刷新编程 out 0dh,al;DMAC主清除命令 mov al,0 out 08,al;DMAC命令字 mov al,0 out 00,al;通道0的地址寄存器低字节 out 00,al;通道0的地址寄存器高字节 mov al,0ffh out 01,al;通道0的字节数寄存器低字节 out 01,al;通道0的字节数寄存器高字节 mov al,58h out 0bh,al;通道0模式字 mov al,0 out 0ah,al;通道0屏蔽字 IBM PC/XT 8237A的编程(续2) n两种方法反映DMA过程结束(即终止 计数、发生TC): n状态寄存器的低4位 n信号(需配合DACK响应信号确定通道) n应用程序处理DMA传送过程结束: n采用软件查询状态字 n采用硬件中断在中断服务程序处理 8237A的应用 n8237A在PC系列机的使用情况 nDMA写传送 nDMA设定子程序 8237A在IBM PC系列机上的应用 nIBM PC/XT机使用一片8237A n通道0:动态存贮器DRAM刷新 n通道1:用户使用或SDLC卡 n通道2:内存与软盘的高速数据交换 n通道3:内存与硬盘的高速数据交换 nIBM PC/AT机采用两片8237A nDMAC1包含通道03,支持8位数据传送 nDMAC2组成通道47,通道57支持16 位数据传送,通道4用于级连 1. 8237A的初始化 n8237A初始化写入命令字为0,确定了: nDREQ高电平有效、DACK低电平有效,固定优先 权(依次为通道0、17) n不进行存储器到存储器的数据传输 nPC机用DMA控制电路进行刷新,所以DMA传送不 能长时间占用总线(不应超过15s),一般只能使 用单字节传送方式 n在PC系列机上,用户如果使用DMA通道,要 注意遵从上述系统要求。除了要禁止8237A工 作,用户通常不必操作命令寄存器 2. 高位地址的形成 nDMA传送时的高位地址由“页面寄存器”提供 n页面寄存器由CPU的输出指令实现写入 nDMAC1的通道0通道3:8237A提供系统A0 A15低16位地址,页面寄存器输出系统A16 A23高8位地址 nDMAC2的通道5通道7:8237A提供系统A1 A16的16位地址,而系统A0被强迫为逻辑0 ,页面寄存器仅输出高7位地址A17A23 页面寄存器不会自动增减量 高位地址在DMA传送过程中不改变 DMA写传送 CLK D CLK D0D7 Q +5V 外设数据 外设DMA请求 74LS374 74LS74 RESET DRQ1 DACK1 IOR OE R S 通道1工作方式 mov al,45h;通道1方式字: ;单字节写传送,地址增量,非自动初始化 out 0bh,al nop;延时 nop out 0ch,al;清高/低触发器命令 DMA写传送 通道1起始地址 mov al,0 out 02h,al;写入低8位地址到地址寄存器 mov al,50h out 02h,al;写入中8位地址到地址寄存器 mov al,04h out 83h,al;写入高8位地址到页面寄存器 DMA写传送 通道1传送字节数 mov ax,2048-1;AX传送字节数减1 out 03h,al;送字节数低8位到字节数寄存器 mov al,ah out 03h,al;送字节数高8位到字节数寄存器 mov al,01 out 0ah,al ;单通道屏蔽字:允许通道1的DMA请求 ;其他工作 DMA写传送 通道1传送结束判断 dmalp:in al,08h;读状态寄存器 and al,02h;判断通道1是否传送结束 jz dmalp;没有结束,则循环等待 ;传送结束,处理转换数据 DMA写传送 DMA传送过程结束的判断: 软件查询方式 DMA设定子程序 n系统ROM-BIOS的DMA设定子程序: DMA通道2传送编程 n软盘的读写利用DMA通道2传送数据 n被读软盘、写软盘和软盘检验等软盘 I/O功能程序调用 通道2工作方式 push cx;保存CX cli;关中断 out 0ch,al;清高/低触发器命令 push ax;延时 pop ax out 0bh,al;将AL中的方式字写入通道2 DMA设定子程序 形成物理地址 mov ax,es mov cl,4 rol ax,cl;段地址左移4位 mov ch,al;高位存入CH and al,0f0h add ax,bx;加段内偏移地址 jnc j33 inc ch;物理地址形成 j33:push ax;保存AX DMA设定子程序 通道2起始地址 out 04h,al;写入地址寄存器 mov al,ah out 04h,al mov al,ch and al,0fh out 81h,al;写入页面寄存器 DMA设定子程序 计算传送字节数 mov ah,dh;取扇区数,计算传送的字节数 sub al,al;AX为扇区数乘256 shr ax,1;AX为扇区数乘128 push ax;暂存AX mov bx,6 call GET-PARM;调用参数子程序 mov cl,ah;出口参数:AH0/1/2/3 pop ax;恢复AX shl ax,cl;AX为DMA传送的字节数 DMA设定子程序 通道2传送字节数 dec ax;字节数减1 push ax;保存 out 05h,al;写入字节数寄存器 mov al,ah out 05h,al sti;开中断 DMA设定子程序 设置出口参数 pop cx;弹出传送的字节数 pop ax;弹出物理地址的低16位地址 add ax,cx;相加,根据结果建立标志CF pop cx;恢复CX mov al,02h;允许通道2进行DMA响应 out 0ah,al ret;返回 DMA设定子程序 DMA传送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论