第8章 可编程DMA控制器8237A_第1页
第8章 可编程DMA控制器8237A_第2页
第8章 可编程DMA控制器8237A_第3页
第8章 可编程DMA控制器8237A_第4页
第8章 可编程DMA控制器8237A_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 可编程DMA控制器8237A 8.1 概述概述 8.2 8237A的内部结构与引脚的内部结构与引脚8.3 8237A的工作方式的工作方式8.4 8237A内部寄存器功能及格式内部寄存器功能及格式8.5 8237A的编程及应用的编程及应用 回顾回顾 DMA方式传输的特点方式传输的特点回顾:回顾:DMA传输的产生条件传输的产生条件I/ODMACCPU请求请求DREQ请求请求HRQ回答回答回答回答HLDA回顾回顾 DMA的基本原理图的基本原理图问题:问题:具体实现具体实现DMA的芯片结构如何?如何运作?的芯片结构如何?如何运作?8.1 概述概述 8.1.1 8237A芯片的主要芯片的主要功能

2、功能(1)有)有4个独立个独立DMA通道,每个通道通道,每个通道均可独立传送数据。均可独立传送数据。(2)每个通道)每个通道DMA请求都可分别允许请求都可分别允许和禁止。和禁止。(3)每个通道均有)每个通道均有64 KB寻址和计数寻址和计数能力。能力。(16位地址寻址能力位地址寻址能力)(4)有)有4种种DMA传送方式,分别为单传送方式,分别为单字节传送、数据块传送、请求传送字节传送、数据块传送、请求传送和级联传送方式。和级联传送方式。(5)需要更多数据传送通道可把)需要更多数据传送通道可把8237A级联。级联。8237A通道通道0通道通道1通道通道2通道通道3接接口口接接口口接接口口接接口口

3、外外设设外外设设外外设设外外设设8.1 概述概述8.1.2 8237A的工作状态的工作状态DMA控制器除了作为控制器除了作为I/O设备接受设备接受CPU指令和设置外,还可以指令和设置外,还可以作为作为主控设备,替代主控设备,替代CPU对总线读写进行控制对总线读写进行控制,控制,控制I/O设设备和存储器之间的直接数据传送,普通备和存储器之间的直接数据传送,普通I/O设备是没办法控设备是没办法控制总线的读写的。制总线的读写的。问题:问题:DMA芯片和普通接口芯片有什么不同?芯片和普通接口芯片有什么不同?(1)从态方式从态方式:DMA控制器未取控制器未取得总线控制权时须由得总线控制权时须由CPU对其

4、进行对其进行编程,初始化并设定它的工作参数,编程,初始化并设定它的工作参数,CPU处于主控状态,处于主控状态,DMA控制器控制器和一般和一般I/O芯片一样,是系统总线芯片一样,是系统总线从设备。从设备。(2)主态方式主态方式:DMA控制器取得控制器取得总线控制权后,系统就完全在它的总线控制权后,系统就完全在它的控制下,使控制下,使I/O设备和存储器之间设备和存储器之间或存储器与存储器之间进行直接的或存储器与存储器之间进行直接的数据传送。数据传送。CPUDMACRAMI/O8.2 8237A内部结构及引脚内部结构及引脚 问题:问题:8237A内部应该有哪些功能模块?内部应该有哪些功能模块?应该从

5、应该从数据数据、状态状态、控制控制几方面来考虑。几方面来考虑。8-2-1 8237A内部结构 8237A内部结构由内部结构由数据和地址缓冲器组数据和地址缓冲器组、内部寄存器内部寄存器、命令控制逻辑命令控制逻辑、时序与控制逻时序与控制逻辑辑、优先级编码电路优先级编码电路等组成。等组成。8237A内部结构简图内部结构简图8237A内部结构简化表示内部结构简化表示时序与控制逻辑时序与控制逻辑n片选,时钟,读写控制信号等片选,时钟,读写控制信号等优先级编码电路优先级编码电路n固定优先级和循环优先级;固定优先级和循环优先级;n一旦某个通道正在服务,其它通道均被禁止,一旦某个通道正在服务,其它通道均被禁止

6、,直到该通道完成传输。直到该通道完成传输。数据数据/地址缓冲器组地址缓冲器组n缓冲器可以连接系统总线。缓冲器可以连接系统总线。命令控制逻辑命令控制逻辑n内部地址译码(内部地址译码(A0-A3)等。)等。内部寄存器组内部寄存器组n有有4个独立通道,每个通道有个独立通道,每个通道有4个个16位寄存器位寄存器,一个工作方式寄存器;,一个工作方式寄存器;n另有另有5个全芯片共用寄存器:命令,状态,请个全芯片共用寄存器:命令,状态,请求,屏蔽,暂存。求,屏蔽,暂存。8.2 8237A内部结构及引脚内部结构及引脚问题:芯片对外的联络方式如何?(引脚信号情况)问题:芯片对外的联络方式如何?(引脚信号情况)8

7、-2-2 8237A的引脚的引脚 8237A是是40引脚的双列直插式器件,由于它既可做主模块又引脚的双列直插式器件,由于它既可做主模块又可做从模块,故其外部引脚设置也具有一定的特点。如它的可做从模块,故其外部引脚设置也具有一定的特点。如它的I/O读写线和数据线是双向读写线和数据线是双向的,另外,还设置了的,另外,还设置了存储器读存储器读/写写线线和和16位地址输出线位地址输出线。这些都是其他。这些都是其他I/O接口芯片所没有的。接口芯片所没有的。 片内寄存器片内寄存器寻址寻址/存储存储器低位地址器低位地址存储器低位存储器低位地址地址DMA过程结束过程结束数据数据/存储器存储器高位地址高位地址从

8、从DB7-0输输出高出高8位位地址地址外设外设DMA请求请求应答外设的应答外设的DMA请求请求n4. 8237A的外部引脚(分类说明)的外部引脚(分类说明)1) 请求与响应信号引脚请求与响应信号引脚(1) DREQ(DMA Request,输入,输入)DREQ0DREQ3。每个。每个通道对应一个通道对应一个DREQ信号端,此引脚连接外设的信号端,此引脚连接外设的DMA请求信请求信号。号。 (2) HRQ(Hold Request,输出,输出)8237A收到外设接口发来收到外设接口发来DREQ信号后,如果该通道的信号后,如果该通道的DMA请求没有被屏蔽,则请求没有被屏蔽,则DMA控制器的控制器的

9、HRQ端输出有效电平,向端输出有效电平,向CPU发出总线请求。发出总线请求。(3) HLDA(Hold Acknowledge,输入,输入)DMAC向向CPU发总线发总线请求信号请求信号HRQ以后,以后,CPU发回的总线响应信号。发回的总线响应信号。8237A收到收到该信号后,便获得了总线控制权。该信号后,便获得了总线控制权。(4) DACK(DMA channel Acknowledge,输出,输出)DACK0 DACK3。这是。这是DMAC送给送给I/O接口的回答信号,每个通道对接口的回答信号,每个通道对应一个应一个DACK信号端。信号端。DMAC获得获得CPU送来的总线允许信号送来的总线

10、允许信号HLDA以后,便产生以后,便产生DACK信号送到相应发出请求的外设接口信号送到相应发出请求的外设接口。2) DMA传送控制信号引脚传送控制信号引脚IOR/IOW: 双向,被动态时接收双向,被动态时接收CPU的读的读/写命令写命令,主动态时向主动态时向I/O发读发读/写命令;写命令;MEMR/MEMW: 输出,主动态时向输出,主动态时向M发读发读/写命令;写命令;CS: 被动态时被动态时,由由CPU选中该芯片进行读选中该芯片进行读/写操作;写操作;DB0DB7:被动态时作数据线,双向三态,主动态时双功能:被动态时作数据线,双向三态,主动态时双功能,地址和数据分时复用地址和数据分时复用:传

11、送传送M地址的地址的A815,M-M传输时作数据传输时作数据输入输入/输出线;输出线;A0A3:双向,被动态作端口选择线:双向,被动态作端口选择线(16个可访问端口个可访问端口),主动,主动态发出态发出M地址的地址的A03;A4A7:单向,主动态发出:单向,主动态发出M地址的地址的A47;ADSTB:地址选通,输出,用于将:地址选通,输出,用于将DB0DB7发出的发出的A815锁锁存到外部地址锁存器存到外部地址锁存器;2) DMA传送控制信号引脚传送控制信号引脚AEN:地址允许,输出,主动态时为高电平,:地址允许,输出,主动态时为高电平,地址允许信地址允许信号,输出,高电平有效。号,输出,高电

12、平有效。AEN使地址锁存器中锁存的高使地址锁存器中锁存的高8位位地址以及页面地址寄存器的地址以及页面地址寄存器的4位地址一起送到地址总线上,位地址一起送到地址总线上,与芯片直接输出的低与芯片直接输出的低8位地址共同构成内存单元的位地址共同构成内存单元的20位物理位物理地址。地址。AEN信号也使与信号也使与CPU相连的地址锁存器无效,从而相连的地址锁存器无效,从而由由8237A提供内存地址。提供内存地址。READY:准备就绪,输入,用于慢速:准备就绪,输入,用于慢速I/O或或M申请延长总申请延长总线周期;线周期;RESET:复位,输入,高有效,:复位,输入,高有效,屏蔽寄存器被置屏蔽寄存器被置1

13、,所有通,所有通道工作在屏蔽状态,其他寄存器均清道工作在屏蔽状态,其他寄存器均清0。复位后,。复位后,8237A进进入空闲状态。入空闲状态。 ;CLK:时钟,输入,为:时钟,输入,为DMAC提供工作时钟;提供工作时钟;EOP:过程结束,双向,低有效,内部终止为输出,外部终过程结束,双向,低有效,内部终止为输出,外部终止止(强迫结束强迫结束)为输入。为输入。NC:no code,未编码引脚,不连接未编码引脚,不连接8.3 8237A的工作方式的工作方式问题:问题:DMA控制器控制器8237A是如何进行是如何进行DMA传输的?(工作方式)传输的?(工作方式) 8.3.1 单字节传送方式单字节传送方

14、式n在这种方式下,在这种方式下,8237A每传送每传送 1个字个字节,修改当前字节计数器及当前地址节,修改当前字节计数器及当前地址寄存器,然后释放系统总线,结束一寄存器,然后释放系统总线,结束一次次DMA传送。如果收到新的一个传送。如果收到新的一个DMA请求,则重新申请总线,重复上请求,则重新申请总线,重复上述过程。在这种方式下,述过程。在这种方式下,CPU可以在可以在每个每个DMA周期结束后控制总线。周期结束后控制总线。n当内部字节计数器由当内部字节计数器由0减为减为FFFFH时,产生传输过程结束信号时,产生传输过程结束信号EOP,表示整个表示整个DMA传送过程结束。传送过程结束。发送发送D

15、MA请求请求传送传送1字节,并修字节,并修改地址及计数改地址及计数DMA结束,结束,让出总线让出总线获得总线,获得总线,DMA开始开始问题:问题:单字节传送方式有什么优缺点?单字节传送方式有什么优缺点?传输效率较低,但传输两个字节之间,传输效率较低,但传输两个字节之间,CPU有机会得回控有机会得回控制权。制权。如何进行更高效的传输?如何进行更高效的传输?8.3.2 数据块传送方式数据块传送方式n外设准备好后,向外设准备好后,向8237A发发DREQ信号,信号,8237A收到该信号后向收到该信号后向CPU发发HRQ信号请求占用总线,信号请求占用总线,CPU同意同意HRQ请求,向请求,向8237A

16、发发HLDA信号,然后信号,然后8237A向外设发向外设发DACK信号开始信号开始DMA传送。传送。n在这种方式下,在这种方式下,DMA控制器获得总线控制权后,可以连续进行多个控制器获得总线控制权后,可以连续进行多个字节的传送字节的传送(最多最多64K字节字节)。只有当字节计数器计数由。只有当字节计数器计数由 0 减为减为FFFFH,或者收到外部输入的结束命令,或者收到外部输入的结束命令(从从EOP引脚输入一个低电引脚输入一个低电平信号平信号)时,时,8237A才释放总线而结束传送。才释放总线而结束传送。问题:问题:数据块传输方式有什么特点?数据块传输方式有什么特点?一次申请总线,可以传输多个

17、字节一次申请总线,可以传输多个字节(一个数据块,一个数据块,最大最大64KB)8.3.3 请求传送方式请求传送方式n这种工作方式与数据块传送方式类似,不同点在于每传送这种工作方式与数据块传送方式类似,不同点在于每传送1 B后,后,8237A都对都对DREQ端进行测试,询问其是否有效。端进行测试,询问其是否有效。n如检测到如检测到DREQ端变为无效电平,则停止端变为无效电平,则停止DMA传送,但不释放系统总线,传送,但不释放系统总线,测试过程仍进行。测试过程仍进行。n当检测到当检测到DREQ端变为有效电平时,就在原来的基础上继续进行传送。端变为有效电平时,就在原来的基础上继续进行传送。n这种方式

18、的特点是这种方式的特点是DREQ信号一直有效时,连续传送数据,只有当字节信号一直有效时,连续传送数据,只有当字节计数器由计数器由 0 减为减为FFFFH,或外部送来有效的,或外部送来有效的EOP信号才结束信号才结束DMA传送传送过程过程。问题:问题:请求传送方式有什么特点?请求传送方式有什么特点?和数据块传送方式一样,一次申请总线,可以传和数据块传送方式一样,一次申请总线,可以传输多个字节(最大输多个字节(最大64KB),不过有其独特特),不过有其独特特点点,每传输一个字节都要重新检测外设来的,每传输一个字节都要重新检测外设来的DREQ信号,如果信号无效,暂停传输,直到信号,如果信号无效,暂停

19、传输,直到信号重新有效。信号重新有效。8.3.4 级联传送方级联传送方式式在这种方式下可把一片在这种方式下可把一片8237A(主片)和几片(主片)和几片8237A(从片)进行级联,(从片)进行级联,以便扩充以便扩充DMA通道。通道。有什么特点?有什么特点?主片只作信号联络和管理,主片只作信号联络和管理,数据传输是在从片的控制数据传输是在从片的控制下进行的。下进行的。图图8-3 二级二级8237A级联级联8.4 8237A内部寄存器功能及内部寄存器功能及格式格式思考:思考:要使用要使用8237A进行正确的进行正确的DMA数据传输,必须数据传输,必须对它进行编程控制对它进行编程控制,如何编程控制它

20、?,如何编程控制它?对对8237A进行编程控制,就是往它各种内部寄存器写进行编程控制,就是往它各种内部寄存器写数据,以此来设定它的工作参数,并启动它开始运作。数据,以此来设定它的工作参数,并启动它开始运作。通道共用通道共用寄存器寄存器请求寄存器请求寄存器;屏蔽寄存器;暂存寄存器;屏蔽寄存器;暂存寄存器;命令寄存器命令寄存器;状态寄存器状态寄存器;通道专用通道专用寄存器寄存器方式寄存器方式寄存器字节寄存器字节寄存器地址寄存器地址寄存器基字节计数寄存器基字节计数寄存器当前字节计数寄存器当前字节计数寄存器基地址寄存器基地址寄存器当前地址寄存器当前地址寄存器字节和字节和地址寄地址寄存器为存器为16位位

21、8位位8位位问题:问题:8237A只有只有8根数据线,如何写入根数据线,如何写入16位位数据到字节计数或存储器地址相关的寄存器中?数据到字节计数或存储器地址相关的寄存器中?分两次写。往该寄存器拥有的端口地址写入字节分两次写。往该寄存器拥有的端口地址写入字节数据,连续对同一端口按顺序写两次,就可以把数据,连续对同一端口按顺序写两次,就可以把16位字的低八位和高八位分别写入寄存器中。位字的低八位和高八位分别写入寄存器中。如何确保低八位和高八位的顺序正确?如何确保低八位和高八位的顺序正确?8237A内有一个高内有一个高/低位触发器,当用专门指令低位触发器,当用专门指令清清0( P.195)这个触发器

22、后,立即往寄存器写这个触发器后,立即往寄存器写数,先写低八位,后写高八位即可。数,先写低八位,后写高八位即可。(软、硬件软、硬件复位时,高复位时,高/低触发器自动被清低触发器自动被清0)8.4 8237A内部寄存器功能及内部寄存器功能及格式格式8237A的内部的内部10个可编程寄存器详列下表。个可编程寄存器详列下表。名名 称称位数位数数量数量功能功能当前地址寄存器当前地址寄存器164保存在保存在DMADMA传送期间的地址值,可读写传送期间的地址值,可读写当前字节计数寄当前字节计数寄存器存器164寄存当前字节数,初始值比实际值少寄存当前字节数,初始值比实际值少1 1,可读写,可读写基地址寄存器基

23、地址寄存器164寄存当前地址寄存器的初始值,只能写寄存当前地址寄存器的初始值,只能写基字节数寄存器基字节数寄存器164保存相应通道当前字(节)数的计数器的初值保存相应通道当前字(节)数的计数器的初值工作方式寄存器工作方式寄存器84寄存相应通道的方式控制字,由编程写入寄存相应通道的方式控制字,由编程写入命令寄存器命令寄存器81寄存寄存CPUCPU发送的控制命令发送的控制命令状态寄存器状态寄存器81存放存放8237A8237A各通道的现行状态各通道的现行状态请求寄存器请求寄存器41寄存各通道的寄存各通道的DMADMA请求信号请求信号屏蔽寄存器屏蔽寄存器41用于选择允许或禁止各通道的用于选择允许或禁

24、止各通道的DMADMA请求信号请求信号暂存寄存器暂存寄存器81暂存传输数据,仅用于存储器到存储器的传输暂存传输数据,仅用于存储器到存储器的传输8.4.1 当前地址寄存器当前地址寄存器l每个通道都有一个每个通道都有一个16位的位的当前地址寄存器当前地址寄存器,用于存放,用于存放DMA传送的存储器当前地址值传送的存储器当前地址值。每传送一个数据,地址。每传送一个数据,地址值自动值自动增增1或减或减1,以指向下一个存储单元。在编程状态下,以指向下一个存储单元。在编程状态下,CPU可用输出指令对该寄存器写入初值,也可由输入指可用输出指令对该寄存器写入初值,也可由输入指令读出该寄存器中的值,但每次只能读

25、令读出该寄存器中的值,但每次只能读/写写8位数据,故对位数据,故对该寄存器的读该寄存器的读/写操作要分两次进行。若工作方式寄存器写操作要分两次进行。若工作方式寄存器编程为自动预置操作,则当编程为自动预置操作,则当DMA传送结束,产生传送结束,产生EOP信信号后,号后,8237A自动将自动将基地址寄存器基地址寄存器中保存的初始值装入该中保存的初始值装入该寄存器中。寄存器中。8.4.2 当前字节计数寄存器当前字节计数寄存器l每个通道都有一个每个通道都有一个16位长的当位长的当前字节计数寄存器前字节计数寄存器,用来保存,用来保存DMA传送的当前字节数。实际传送的字节数比编程写入的传送的当前字节数。实

26、际传送的字节数比编程写入的字节数大字节数大1。例如,编程的初始值为。例如,编程的初始值为10,将传送,将传送11 B。每次。每次传送以后,字节计数器传送以后,字节计数器减减1。当其内容从。当其内容从 0 减减 1 而到达而到达FFFFH时,将产生终止计数时,将产生终止计数TC脉冲输出终止计数。脉冲输出终止计数。CPU访访问它是以连续问它是以连续2 B对其读出或写入。在自动预置方式时,当对其读出或写入。在自动预置方式时,当EOP有效后,被重新预置成有效后,被重新预置成基字节计数寄存器基字节计数寄存器里保存的初始里保存的初始值;如果在非自动预置方式,这个计数器在终止计数之后将值;如果在非自动预置方

27、式,这个计数器在终止计数之后将为为FFFFH。问题:问题:为什么会比要求的计数值多传一个字节?为什么会比要求的计数值多传一个字节?计数减到计数减到 0 后,还要传送一个字节,然后后,还要传送一个字节,然后 0 再减一,才导致再减一,才导致DMA传输终止。传输终止。8.4.3 基地址寄存器基地址寄存器l每个通道都有一个每个通道都有一个16位的位的基地址寄存器基地址寄存器,用来存放对应,用来存放对应通道当前地址寄存器的通道当前地址寄存器的初始值初始值,CPU对对DMA控制器编程控制器编程设置地址初值时,同时写入基地址寄存器和当前地址寄设置地址初值时,同时写入基地址寄存器和当前地址寄存器,即存器,即

28、两个寄存器有相同的写入端口地址两个寄存器有相同的写入端口地址,编程时写编程时写入相同的内容入相同的内容。但基地址寄存器的内容不能被。但基地址寄存器的内容不能被CPU读出,读出,也不能被修改。也不能被修改。问题:问题:为什么要这个寄存器?为什么要这个寄存器?设置该寄存器的主要目的在于,当执行自动预置操作时,设置该寄存器的主要目的在于,当执行自动预置操作时,当前地址寄存器能恢复到初始值。当前地址寄存器能恢复到初始值。8.4.4 基字节计数寄存器基字节计数寄存器l每个通道都有一个每个通道都有一个16位的位的基字节计数寄存器基字节计数寄存器,用于存放对,用于存放对应通道当前字节计数器的应通道当前字节计

29、数器的初始值初始值,该值也是在,该值也是在CPU对对8237A进行进行初始化编程初始化编程时与当前字节计数器一起被写入的,时与当前字节计数器一起被写入的,且且两者具有相同的写入端口,写入相同的内容两者具有相同的写入端口,写入相同的内容。该寄存器。该寄存器的内容不会自动修改,也不能被的内容不会自动修改,也不能被CPU读出。读出。问题:问题:为什么要这个寄存器?为什么要这个寄存器?主要用于自动预置操作时使当前字节计数器能恢复初始值。主要用于自动预置操作时使当前字节计数器能恢复初始值。8.4.5 命令寄存器命令寄存器例,例,10000000B指示指示8237A,允许运作,允许运作,固定优先权顺序,禁

30、止固定优先权顺序,禁止存储器到存储器传送存储器到存储器传送(即只允许存储器和(即只允许存储器和I/O直接直接DMA传送)。传送)。同时影响同时影响4个通道个通道(1) D0内存到内存的传输控制。内存到内存的传输控制。 D0=0时:时:8237A进行的是外设接口和内存进行的是外设接口和内存之间的数据传送,多数情况下均为此种之间的数据传送,多数情况下均为此种 传送传送。 D0=1时:传送在存储器与存储器之间进行时:传送在存储器与存储器之间进行(详见详见8237A的传送类型的传送类型)。(2) D1用于确定在进行存储器到存储器传送用于确定在进行存储器到存储器传送时,源地址是否保持不变。时,源地址是否

31、保持不变。 D1=0时,数据传送过程中,源数据区地址按时,数据传送过程中,源数据区地址按增量或减量进行修改。增量或减量进行修改。 D1=1时,数据传送过程中,源数据区地址不时,数据传送过程中,源数据区地址不变。当希望某变。当希望某1个数据传送后覆盖个数据传送后覆盖1个区域时,个区域时,可按此设置。可按此设置。(3) D2用来启动和停止用来启动和停止8237A工作。工作。 D2=0时,启动时,启动8237A工作。工作。 D2=1时,停止时,停止8237A的工作。的工作。 注意:这一位影响所有通道,一般情况下应使注意:这一位影响所有通道,一般情况下应使它为它为0(启动工作启动工作)。(4) D3选

32、择时序类型。选择时序类型。 D3=0时使用普通时序,此时每传送一个字节时使用普通时序,此时每传送一个字节一般需要一般需要34个时钟周期。个时钟周期。 D3=1时传送一个字节的时间可以压缩到时传送一个字节的时间可以压缩到2个个时钟周期。这是为满足某些高速外设的需要。时钟周期。这是为满足某些高速外设的需要。但是,使用压缩时序时,但是,使用压缩时序时,8237A只改变低只改变低8位位地址,因此传送的字节数限制在地址,因此传送的字节数限制在256个字节以个字节以内。内。(5) D4用于选择用于选择8237A的优先级设置方式的优先级设置方式。 D4=0时采用固定优先级方式,此时,通道时采用固定优先级方式

33、,此时,通道0优先级最高,通道优先级最高,通道1和通道和通道2依次降低,通依次降低,通道道3优先级最低。优先级最低。 D4=1时采用循环优先级方式,此种方式是时采用循环优先级方式,此种方式是优先级自动循环。这样优先级自动循环。这样4个通道的优先级基本个通道的优先级基本均等,避免了一个通道独占总线的情况。均等,避免了一个通道独占总线的情况。(6) D5决定采用滞后写还是扩展写。决定采用滞后写还是扩展写。 在普通时序时,在普通时序时,D5=0采用滞后写,此时写脉采用滞后写,此时写脉冲滞后读脉冲一个周期。冲滞后读脉冲一个周期。 D5=1采用扩展写,此时读、写脉冲同时产生采用扩展写,此时读、写脉冲同时

34、产生,扩展写增加了写命令的宽度。,扩展写增加了写命令的宽度。 使用压缩时序时,这一位无意义。使用压缩时序时,这一位无意义。(7) D6用于设置用于设置DMA请求信号请求信号DREQ的有的有效电平。效电平。 D6=0时,时,DREQ高电平有效。高电平有效。 D6=1时,时,DREQ低电平有效。低电平有效。(8) D7用于设置用于设置DMA应答信号应答信号DACK的有效的有效电平。电平。 D7=0时,时,DACK低电平有效。低电平有效。 D7=1时,时,DACK高电平有效。高电平有效。问题:问题:命令控制字有什么特点?命令控制字有什么特点?为为4个通道共用,设置个通道共用,设置8237A整个芯片的

35、运作参整个芯片的运作参数。数。8.4.6 工作方式寄存器工作方式寄存器例,例,10000101B通道通道1的工作方式为数的工作方式为数据块传送方式,不自动据块传送方式,不自动预置,地址递增,从预置,地址递增,从I/O传数据到内存。传数据到内存。n D1、D0用来选择通道号。指出从同一个用来选择通道号。指出从同一个端口地址中写入的控制字应该送往端口地址中写入的控制字应该送往4个寄存器个寄存器中的哪一个。中的哪一个。 D1D0=00:为通道:为通道0设置工作方式。设置工作方式。 D1D0=01:为通道:为通道1设置工作方式。设置工作方式。 D1D0=10:为通道:为通道2设置工作方式。设置工作方式

36、。 D1D0=11:为通道:为通道3设置工作方式。设置工作方式。n D3、D2位用来设置数据传送类型。数据传位用来设置数据传送类型。数据传输类型有三种,即写传输、读传输和校验传输。输类型有三种,即写传输、读传输和校验传输。n D3D2=00:设置为校验传送,可用此方式对读:设置为校验传送,可用此方式对读传送功能和写传送功能进行检验,这是一种虚拟传传送功能和写传送功能进行检验,这是一种虚拟传送。此时,送。此时,8237A也会产生地址信号和信号,但并也会产生地址信号和信号,但并不产生对存储器和不产生对存储器和I/O接口的读接口的读/写信号。检验传送写信号。检验传送功能一般用于器件测试。功能一般用于

37、器件测试。n D3D2=01:设为写传送,数据由:设为写传送,数据由I/O接口写入接口写入内存。内存。n D3D2=10:设为读传送,数据从内存读出送到:设为读传送,数据从内存读出送到I/O接口。接口。n D3D2=11:无效状态。:无效状态。n D4位决定地址和计数初值是否可以重新装位决定地址和计数初值是否可以重新装入。入。n D4=1:可以使:可以使DMA控制器进行自动预置。如控制器进行自动预置。如果果8237A被设置为具有自动预置功能,那么,在被设置为具有自动预置功能,那么,在计数值到达计数值到达1时,当前地址寄存器和当前字节计时,当前地址寄存器和当前字节计数器会从基本地址寄存器和基本字

38、节计数器中重数器会从基本地址寄存器和基本字节计数器中重新取得初值,从而为进入下一个数据传送过程做新取得初值,从而为进入下一个数据传送过程做好准备。要注意的是,如果一个通道被设置为具好准备。要注意的是,如果一个通道被设置为具有自动预置功能,那么,本通道的对应屏蔽位必有自动预置功能,那么,本通道的对应屏蔽位必须为须为0。n D4=0:非自动预置。:非自动预置。nD5位指出每次传送一字节后当前地址寄存器位指出每次传送一字节后当前地址寄存器的内容是增的内容是增1还是减还是减1,即增量传送还是减量,即增量传送还是减量传送。传送。nD5=0增量传送。增量传送。nD=1减量传送。减量传送。nD7、D6位用于

39、设置工作方式。位用于设置工作方式。nD7D6=00时,设置为请求传送方式。时,设置为请求传送方式。nD7D6=01时,设置为单字节传送方式。时,设置为单字节传送方式。nD7D6=10时,设置为块传送方式。时,设置为块传送方式。nD7D6=11时,设置为级联传送方式。时,设置为级联传送方式。思考:思考:方式控制字有什么特点?方式控制字有什么特点?8237A每个通道都有一个方式寄存器,控制着本通道的工每个通道都有一个方式寄存器,控制着本通道的工作方式。但是作方式。但是4个寄存器共用一个端口地址,由方式控制字个寄存器共用一个端口地址,由方式控制字最低两位指出通道号。最低两位指出通道号。8.4.7 请

40、求寄存器请求寄存器这个寄存器整个芯片只有这个寄存器整个芯片只有一个一个,公用。如图所示,公用。如图所示,DMA请请求寄存器中的求寄存器中的D1、D0位用来指出通道号,位用来指出通道号,D2位用来表示是位用来表示是否对相应通道设置否对相应通道设置DMA请求,如请求,如D2为为1,则使相应通道的,则使相应通道的DMA请求触发器置请求触发器置1,于是产生,于是产生DMA请求,如请求,如D2为为0,则,则无请求。其余位不用。无请求。其余位不用。思考:思考:请求寄存器有什么特点?请求寄存器有什么特点?可由可由软件来启动软件来启动DMA传送传送。一般情况下,。一般情况下,DMA请求从请求从8237A每个通

41、道的每个通道的DREQ引脚引入,由引脚引入,由硬件发出。但是,由于硬件发出。但是,由于8237A为每个通道都配为每个通道都配备了备了1个个DMA请求请求触发器触发器和和1个个DMA屏蔽屏蔽触发器触发器,它们分别可以用来设置,它们分别可以用来设置DMA请求标志和屏蔽请求标志和屏蔽标志,请求标志可由标志,请求标志可由DMA请求寄存器进行设置请求寄存器进行设置。所以,有些情况下。所以,有些情况下DMA请求也可以由软件发请求也可以由软件发出。出。8.4.8 屏蔽寄存器屏蔽寄存器(1)通道屏蔽字。)通道屏蔽字。 8237A的屏蔽寄存器格式为:的屏蔽寄存器格式为:D1、D0位用来选择通道号,位用来选择通道

42、号,D2位为位为1时,所选时,所选择通道的择通道的DMA请求被屏蔽,请求被屏蔽,D2位为位为0,清除屏蔽。,清除屏蔽。8237A为每个通道配备了为每个通道配备了1个个DMA屏蔽触发器,每个通道通过屏蔽触发器,每个通道通过DREQ引脚向引脚向DMAC发出的发出的DMA请求信号,均可通过屏蔽命令字或主屏蔽字进行屏蔽设请求信号,均可通过屏蔽命令字或主屏蔽字进行屏蔽设置。当一个通道的置。当一个通道的DMA屏蔽标志设置为屏蔽标志设置为1时,这个通道就不能接收时,这个通道就不能接收DMA请请求了,不管是硬件的求了,不管是硬件的DMA请求,还是软件的请求,还是软件的DMA请求,都不会被受理。请求,都不会被受

43、理。8.4.8 屏蔽寄存器屏蔽寄存器(2)主屏蔽字。)主屏蔽字。主屏蔽字的第主屏蔽字的第n位对应第位对应第n个通道,个通道,D3D0位中某一位为位中某一位为1,就,就可以使对应的通道设置屏蔽。这样,可以一次完成对可以使对应的通道设置屏蔽。这样,可以一次完成对4个通道的个通道的屏蔽设置。综合屏蔽命令字的高屏蔽设置。综合屏蔽命令字的高5位不用。位不用。应当注意,当复位后应当注意,当复位后4个通道均置于被屏蔽状态,所以在编程时个通道均置于被屏蔽状态,所以在编程时,应根据需要对相应的屏蔽位进行复位。,应根据需要对相应的屏蔽位进行复位。 8.4.9 状态寄存器状态寄存器8237A的状态寄存器分别表示的状

44、态寄存器分别表示4个通道的个通道的DMA请求状态和计数请求状态和计数状态。状态寄存器的高状态。状态寄存器的高4位位D7D4分别表示分别表示4个通道当前有无个通道当前有无DMA请求,比如请求,比如D5=1,表示通道,表示通道1当前有当前有DMA请求需要处理。请求需要处理。低低4位位D3 D0位分别表示位分别表示4个通道的计数结束状态,比如个通道的计数结束状态,比如D0=1表表示通道示通道0计数结束。计数结束。8.4.10 暂存寄存器暂存寄存器l暂存寄存器是一个暂存寄存器是一个8位的寄存器,在存储器至存储位的寄存器,在存储器至存储器传送期间,用来暂存从源地址单元读出的数据。器传送期间,用来暂存从源

45、地址单元读出的数据。当数据传送完成时,所传送的最后当数据传送完成时,所传送的最后1 B数据可以由数据可以由CPU读出。用读出。用RESET信号可以清除此暂存器。信号可以清除此暂存器。要注意有什么?要注意有什么?全芯片只有一个,在存储器到存储器传输时,作为数全芯片只有一个,在存储器到存储器传输时,作为数据暂存用。存储器到存储器传输需要同时使用两个据暂存用。存储器到存储器传输需要同时使用两个通道。通道。8.4.11 软件命令软件命令(1)主清除命令)主清除命令(软件复位软件复位)。主清除命令主清除命令的功能和的功能和RESET功能相同。即执行复位命令后使功能相同。即执行复位命令后使控制寄存器、状态

46、寄存器、暂存器、控制寄存器、状态寄存器、暂存器、DMA请求寄存器以及高请求寄存器以及高/低低触发器复位,屏蔽寄存器置位,同时使触发器复位,屏蔽寄存器置位,同时使8237A进入空闲周期,便进入空闲周期,便于编程。复位后于编程。复位后屏蔽寄存器全置屏蔽寄存器全置1,其它寄存器全置零,其它寄存器全置零。复位命令的执行是通过对端口地址为芯片端口起始地址复位命令的执行是通过对端口地址为芯片端口起始地址+0DH的的端口实施一次写操作完成的,也就是对该端口执行一条输出指端口实施一次写操作完成的,也就是对该端口执行一条输出指令,输出的具体内容无意义。令,输出的具体内容无意义。OUT 0DH, AL ; 主清除

47、命令主清除命令AL的值无意义的值无意义(2)清除字节指示器)清除字节指示器(高高/低触发器低触发器)命令。命令。8237A内部有一个内部有一个“高高/低触发器低触发器”,当这个触发器为,当这个触发器为0时,与时,与16位寄存器的低字节进行数据通信;为位寄存器的低字节进行数据通信;为1时,访问高字节。每访时,访问高字节。每访问一次问一次16位寄存器后,能自动翻转,位寄存器后,能自动翻转,0变变1或或1变变0。在写入存储。在写入存储器起始地址或字节计数器初值之前,应将这个触发器清器起始地址或字节计数器初值之前,应将这个触发器清0,就可,就可以按照先低后高的字节顺序写入初值。以按照先低后高的字节顺序

48、写入初值。通过对端口地址为芯片端口起始地址通过对端口地址为芯片端口起始地址+0CH的端口实施一次写操的端口实施一次写操作完成。作完成。OUT 0CH, AL ; 该命令该命令AL的值无意义的值无意义(3)清除屏蔽寄存器命令。)清除屏蔽寄存器命令。清除所有屏蔽位,使各通道均可接受清除所有屏蔽位,使各通道均可接受DMA传输传输请求。请求。通过对端口地址为芯片端口起始地址通过对端口地址为芯片端口起始地址+0EH的端的端口实施一次写操作完成。口实施一次写操作完成。OUT 0EH, AL ; 该命令该命令AL的值无意义的值无意义8.5 8237A的编程及应用的编程及应用问题:问题:了解寄存器的含义后,还

49、无法立刻编程了解寄存器的含义后,还无法立刻编程控制控制8237A,因为还不知道个读写各个寄存器,因为还不知道个读写各个寄存器要用到的端口地址,要用到的端口地址,8237A各寄存器的端口地各寄存器的端口地址是怎样编排的?址是怎样编排的?8.5.1 8237A主要寄存器端口地址分配主要寄存器端口地址分配 DMA传送前传送前CPU要对要对8237A进行初始化编程。进行初始化编程。 每片每片8237A有有4个地址选择线个地址选择线A3A0,占用,占用16个连续端口地个连续端口地址。址。各寄存器的低位地址各寄存器的低位地址 00H 0FH ,和芯片的和芯片的起始地起始地址址加起来即可访问各个寄存器,芯片

50、的加起来即可访问各个寄存器,芯片的起始地址起始地址由外部由外部片选信号片选信号的产生方式决定。的产生方式决定。译码译码器器A4A5A68237ACSA0A1A2A31100101xxxx50H 5FHA3 A2 A1 A0通道号通道号IOR#IOW#0 0 0 0 (0H)0 0 0 10读当前地址寄存器读当前地址寄存器读当前字节计数器读当前字节计数器写基写基 (当前当前)地址寄存器地址寄存器写基写基 (当前当前)字节计数器字节计数器0 0 1 00 0 1 1 1读当前地址寄存器读当前地址寄存器读当前字节计数器读当前字节计数器写基写基 (当前当前)地址寄存器地址寄存器写基写基 (当前当前)字

51、节计数器字节计数器0 1 0 00 1 0 12读当前地址寄存器读当前地址寄存器读当前字节计数器读当前字节计数器写基写基 (当前当前)地址寄存器地址寄存器写基写基 (当前当前)字节计数器字节计数器0 1 1 00 1 1 13读当前地址寄存器读当前地址寄存器读当前字节计数器读当前字节计数器写基写基 (当前当前)地址寄存器地址寄存器写基写基 (当前当前)字节计数器字节计数器1 0 0 0 (8H)1 0 0 1 (9H)1 0 1 01 0 1 11 1 0 01 1 0 11 1 1 0 (EH)1 1 1 1 (FH)公公共共端端口口读状态寄存器读状态寄存器读暂存寄存器读暂存寄存器写控制寄存器写控制寄存器

温馨提示

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

评论

0/150

提交评论