您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机接口技术 课件第6章
第六章DMA技术微型机接口技术§6.1概述一、DMA方式的应用场合1)硬盘和软盘的I/O接口;2)通信信道的I/O接口;3)多处理机和多任务系统;4)CRT扫描操作;5)快速数据采集;数据高速传送的场合二、DMA控制器的功能要求1、具备总线控制功能2)CPU响应后,能够控制总线,并发出DMA控制信号;1)能向CPU发出总线请求;3)DMA传送结束后,能够释放总线控制权;2、能够提供交换数据的地址包括源、目的地址,并具有地址自动修改的能力;结构上应具有地址计数器。3、能够控制数据块传送的长度结构上应具有字节数计数器。三、DMA的传送形式1、块传送方式DMA接口将一批数据传送结束后,才释放总线。特点:①DMA传送期间,CPU不能访存,影响程序的执行。②适用于高速I/O设备的场合。2、单字传送方式(周期挪用)每进行一次DMA传送,释放总线,然后重新申请。特点:①可提高CPU对主存的利用率。②适用于低速I/O设备的场合。CPU访存DMA访存CPU访存DMA访存3、DMA与CPU交替访存特点:DMA接口无需建立申请和归还。传送效率高,但控制逻辑复杂。四、DMA的工作过程1、预处理(初始化)(1)设置传输类型。输入/输出。(2)设置主存地址初值。(3)设置数据块长度。(4)设置设备地址。(5)设置传输模式。2、数据传送2、后处理(1)数据校验。(2)故障诊断。(3)重新初始化。由中断服务程序完成。3、8237A具有4种传送方式:单字节传送方式,数据块传送方式,请求传送方式和级连方式。§6.2可编程DMA控制器8237A功能特点:1、每片8237A内部有4个独立的DMA通道,每个通道可分别进行数据传送,一次传送最大可达64KB,能够实现存储器与外部设备间或存储器两个区域间的数据传送。2、每个通道的DMA请求可以单独允许和屏蔽,具有不同的优先级,每个通道的优先级可以是固定的,也可以是循环的。一、8237A的基本结构芯片公用寄存器通道专用寄存器各通道组合的寄存器每个通道各提供一位,组成一个4位寄存器。8位,用来存放芯片控制字,它控制整个DMA控制器的工作方式。8位,可以被CPU读取,用来反映8237A的内部状态。8位,在存储器间进行DMA传送时,用来暂存数据。8位,用于存放通道方式控制字。16位,用来保存DMA传送时本通道所用到的数据段地址初值,该初值是由CPU对8237A进行初始化编程时写入的。16位,用于保存DMA传送过程中现行的地址值,初始时该寄存器的值与地址初值寄存器相同,每次DMA传送后其内容自动增1或减1。16位,用来保存DMA传送过程中要传送数据的字节数,这个寄存器的初值由CPU在编程时写入。16位,保存当前要传送的字节数,初始时该计数器的值与字节初值寄存器相同,每次DMA传送后此计数器内容减1,当它的值减为零时,表明DMA传送结束。4位,每位对应于一个通道的DMA请求触发器,它反映各通道DREQ端是否有DMA请求,也可以通过软件设置每个通道的请求位。4位,每位对应于一个通道的屏蔽触发器,可以通过软件对屏蔽寄存器进行设置,以实现对各通道DMA请求的屏蔽控制。8237A采用40个引脚的双列直插式封装形式(DIP40)。二、8237A的引脚功能输入,时钟信号。该信号为8237A提供工作时钟。输入,低电平有效。片选信号。输入,高电平有效。复位信号,8237A复位后处于空闲状态,内部各寄存器清零,屏蔽触发器置位。输入,高电平有效。准备好信号,用来表示存储器或外设是否准备好,该信号用于DMA操作时,与慢速存储器或外部设备同步。输入。通道0~3的DMA请求信号。输出。通道0~3DMA请求的DMA应答信号。输出,高电平有效。总线请求信号,用于向CPU发出总线请求,请求CPU出让总线的控制权。输入,高电平有效。总线响应信号,CPU对HRQ信号的响应信号。双向,三态。8位数据线/地址线。8237A作为从模块时,是数据线,用来与系统的数据总线相连。8237A作为主模块时,地址线,输出要访问的存储单元地址中的高8位。双向,三态。地址线。8237A作为主模块时,输出要访问的存储单元地址中的低8位。8237A作为从模块时,A7~A4浮空;A3~A0是输入,用于对8237A内部寄存器寻址;双向,三态,低电平有效。I/O读信号。8237A作为从模块时,输入,控制对8237A内部寄存器的读操作。8237A作为主模块时,输出,外设读控制信号。双向,三态,低电平有效。I/O写信号。8237A作为从模块时,输入,控制对8237A内部寄存器的写操作。8237A作为主模块时,输出,外设写控制信号。输出,三态,低电平有效。存储器读信号。输出,三态,低电平有效。存储器写信号。双向,低电平有效。DMA传送结束信号。输出:当任一通道当前字节数寄存器的值为0时,8237A从该引脚输出一个低电平信号,表示DMA传输结束。输入:外部送入一个低电平信号,强制结束DMA传送过程。输出,高电平有效。地址允许信号。AEN为高电平时,允许8237A将高8位地址输出至地址总线,同时使与CPU相连的地址锁存器失效,即禁止CPU使用地址总线。AEN为低电平时,8237A被禁止,CPU占用地址总线。输出,高电平有效。地址选通信号。在DMA传送期间,此信号用于将DB7~DB0输出的地址计数器中高8位地址送到外部地址锁存器,与8237A芯片直接输出的低8位地址A7~A0共同构成内存单元的低16位地址。CLKAENEN锁存器ADSTBCS地址译码A7A4~A3A0~A15A8~A7A0~DB7DB0~CPUIO/M数据总线STB地址总线三、8237A的控制字8237A初始化设定通道计数初始值设置通道功能设置地址初值寄存器与地址计数器;设置字节数初值寄存器与字节数计数器。设置工作方式寄存器;设置屏蔽寄存器;设置命令寄存器。控制整个8237A的工作方式,写入控制寄存器。1、芯片控制字D7D6D5D4D3D2D1D0设置传输方式D0=0,存储器与I/O口之间的数据传输;D0=l,存储器到存储器之间的传输。D0=l时才起作用。D1=1,源地址值保持不变;D1=0,源地址值改变。启动/停止控制。D2=0,启动8237A工作;D2=1,停止8237A工作。设置工作时序。D3=0,为普通时序(3个时钟周期);D3=1,为压缩时序(2个时钟周期)。设置优先级。D4=0,固定优先级。通道0优先级最高,通道3优先级最低;D4=1,循环优先级。如某通道传输结束后,其优先级自动降为最低。设置写时序。D5=0,正常写时序;D5=1,扩展写时序。设置DREQ的有效电平。D6=0,DREQ高电平有效;D6=1,DREQ低电平有效。设置DACK的有效电平。D7=1,DACK高电平有效;D7=0,DACK低电平有效。D7D6D5D4D3D2D1D0用于模式选择。每传送一个字节,检测DREQ,一旦变为有效信号,继续进行传送,8237A并不释放总线。2、通道方式控制字控制通道的工作方式,写入通道方式寄存器。D7D6=00,请求传输模式。D7D6=01,单字节传输模式。D7D6=10,块传输模式。D7D6=11,级联传输模式。每传送一个字节8237A释放系统总线,8237A会立即对DREQ信号进行检测,若DREQ有效,向CPU发出总线请求信号,获得总线控制权后,再进行下一个字节的传送。8237A获得总线控制权之后,可以完成一个数据块的传输,直到字节数计数器减为0,或由外部输入有效的EOP信号时,8237A才释放总线。由5片8237A构成的主从式DMA系统中,DMA数据通道最多可扩展到16个。D7D6D5D4D3D2D1D0地址增减选择。D5=0,地址递增修改;D5=1,地址递减修改。自动预置功能选择。D4=0,禁止自动预置;D4=1,允许自动预置。传输类型选择。D3D2=00,校验传输方式。D3D2=01,写传输方式。D3D2=10,读传输方式。D3D2=11,无意义。虚拟传输方式,用来对读传输或写传输功能进行校验,该方式下8237A也发出地址信号和信号,但并不发出对存储器和I/O口的读/写控制信号。EOPI/O口内存单元,此时8237A除发出地址信号外,还使和信号有效。IORMEMW内存单元I/O口,此时8237A除发出地址信号外,还使和信号有效。IOWMEMRD7D6D5D4D3D2D1D0通道选择。D1D0=00,选择通道0;D1D0=01,选择通道1;D1D0=10,选择通道2;D1D0=11,选择通道3。3、屏蔽控制字(1)普通屏蔽字对某一通道进行屏蔽设置。通道选择。D1D0=00,选择通道0;D1D0=01,选择通道1;D1D0=10,选择通道2;D1D0=11,选择通道3。D2=0,清除屏蔽位;D2=1,设置屏蔽位。(2)综合屏蔽字对所有通道进行屏蔽设置。0=不屏蔽;1=屏蔽。通道选择。D1D0=00,选择通道0;D1D0=01,选择通道1;D1D0=10,选择通道2;D1D0=11,选择通道3。D2=0,清除DMA请求位;D2=1,设置DMA请求位。4、DMA请求控制字5、状态字反映每个通道字节数计数器当前时刻是否减至0。1=计数结束;0=计数未结束。反映8237A每个通道DMA请求情况。1=有DMA请求;0=无DMA请求。也称为总清命令或综合清除命令,其功能与硬件RESET信号相同。6、不需写入控制字的命令有两种命令不需要通过数据总线写入控制字,而是直接对地址信号和控制信号进行译码,并产生相应的片内操作。(1)复位命令(2)清除先/后触发器命令先/后触发器是用以控制地址初值寄存器和字节数初值寄存器的初值设置的。8237A内部寄存器共占用16个I/O端口地址,由A3~A0的16种不同组合加以区分和控制。四、8237A的端口地址分配CSRDWR写通道3字节初值寄存器和字节数计数器读通道3字节数计数器011001110写通道3地址初值寄存器和地址计数器读通道3地址计数器011001100写通道2字节初值寄存器和字节数计数器读通道2字节数计数器011001010写通道2地址初值寄存器和地址计数器读通道2地址计数器011001000写通道1字节初值寄存器和字节数计数器读通道1字节数计数器011000110写通道1地址初值寄存器和地址计数器读通道1地址计数器011000100写通道0字节初值寄存器和字节数计数器读通道0字节数计数器011000010写通道0地址初值寄存器和地址计数器读通道0地址计数器011000000操作A3A2A1A0CSRDWR写综合屏蔽字0111110清除屏蔽触发器0111100写复位命令(总清)读暂存寄存器011011010清除先/后触发器0111000写方式寄存器0110110写普通屏蔽字0110100写请求寄存器0110010写控制寄存器读状态寄存器011010000操作A3A2A1A0五、8237A在IBMPC/XT系统中的应用从与DMA控制器8237A通道1相连接的外设输入640B的数据,送入内存中起始地址为2000H开始的单元中。DMA传送的要求是:增量传送、块传送方式、传送结束不自动初始化、DREQ、DACK信号高电平有效。※确定DMA控制器8237A的端口地址A91A80A70A60A50A4xA30A20A10A001111…端口地址范围:200H~20FHOUT0DH,AL;写主复位命令MOVAL,10000101BOUT0BH,AL;写方式寄存器MOVAL,10000000BOUT08H,AL;写命令寄存器MOVAX,2000HOUT02H,AL;写入当前地址寄存器低字节MOVAL,AHOUT02H,AL;写入当前地址寄存器高字节MOVAX,640OUT02H,AL;写入当前字节数寄存器低字节MOVAL,AHOUT02H,AL;写入当前字节数寄存器高字节OUTOEH,AL;清除屏蔽寄存器位根据要求,其方式寄存器的控制字应设置为10000101B,命令寄存器的控制字应设置为10000000B。初始化程序为:
本文标题:微机接口技术 课件第6章
链接地址:https://www.777doc.com/doc-3613952 .html