《可编程接口芯片》由会员分享,可在线阅读,更多相关《可编程接口芯片(39页珍藏版)》请在金锄头文库上搜索。
1、1,2018/10/16,9.3.0 概述 1 直接数据通道传送(DMA) 中断传送仍是由CPU通过程序来传送 每次要保护断点,保护现场需用多条指令,每条指令要有取指和执行时间。这对于一个高速I/O设备,以及成组交换数据的情况,例如磁盘与内存间的信息交换,就显得速度太慢了。,9.3 直接存储器存取与DMA 控制器8237,2,2018/10/16,所以希望用硬件在外设与内存间直接进行数据交换(DMA),而不通过CPU执行指令,这样数据传送的速度的上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线(例如IO/、等)是由CPU管理的。在DMA方式时,当需要进行DMA传送
2、时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态高阻状态),而由DMA控制器接管,控制数据的传送以及要传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。这些都是由硬件实现的。,3,2018/10/16,2DMA控制器的基本功能DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应能暂时取代CPU,用硬件完成数据传送的控制功能。具体地说应具有如下功能: (1)能接收外设的请求,向CPU发出DMA请求信号。 (2)当CPU发出DMA响应信号之后,接管对总线的控制,进入DMA方式。 (3)能寻址存储器,即能输出地址信息和修改地址。 (4)能向存储器和外设
3、发出相应的读/写控制信号。,4,2018/10/16,(5)能控制传送的字节数,判断DMA传送是否结束。 (6)在DMA传送结束以后,能结束DMA请求信号,释放总线,使CPU恢复正常工作。,5,2018/10/16,3DMA传送方式 各种DMAC一般都有两种基本的DMA传送方式: (1)单字节方式:每次DMA请求只传送一个字节数据,每传送完一个字节,都撤除DMA请求信号,释放总线。 (2)字节(字符)组方式:每次DMA请求连续传送一个数据块,待规定长度的数据块传送完了以后,才撤除DMA请求,释放总线。,6,2018/10/16,4. DMA控制器的工作状态,DMA数据传送是在DMA控制器控制下
4、进行的,不需要CPU直接参与。但需要说明的是在DMA控制器芯片取得总线控制权之前,它仍然与其它接口芯片一样受CPU控制。DMA控制器在微机系统中有两种工作状态:主动状态 、被动状态 (1)主动状态DMA控制器取代CPU获得对系统数据总线DB、地址总线AB、控制总线CB和状态信号的控制权,暂时成为系统的主控制者,向存储器和外设下达控制命令 (2)被动状态接收CPU对它的控制和指挥,7,2018/10/16,9.3.1 DMA控制器8237,一、 8237的引脚以内部结构 1 . 8237的基本功能8237是一个高性能的可编程DMA控制器芯片,在5MHZ时钟下,其传输速率可达1.6MB/Sec;接
5、收外设的DMA请求,向CPU发送DMA请求一片8237有4个独立的DMA通道,每个通道具有不同的优先权,可分别设置为允许或禁止每个通道有4中工作模式,通过编程设定工作模式一次传送的数据最大64KB多个8237可级联,8,2018/10/16,2. 8237 内部结构,9,2018/10/16,8237A内部寄存器,10,2018/10/16,3. 8237 引脚,11,2018/10/16,(1)数据、地址线,A3A0:被动状态为输入,作为CPU对8237内部寄存器寻址用。主动状态为输出,作为低4位地址信号 A7A4:主动状态为输出A7A4四位地址信号 DB7DB0:三态双向总线。被动状态为数
6、据线,CPU向8237写入进行初始化控制命令,读取8237的状态等主动状态:高8位地址/数据复用总线,12,2018/10/16,(2).控制逻辑信号,CLK:时钟,输入 *CS:片选,输入,低电有效 RESET:复位信号,输入,高电平有效 READY:系统准备好信号,输入,高电平有效。 AEN:地址允许信号,输出信号,高8位地址输出允许 ADSTB:地址选通,输出,高电平有效。 *MWMR:三态输出,低电平有效,将数据从存储器读出 *MWMW:三态输出,低电平有效,将数据写入存储器 *IOR: *IOW: *EOP:过程结束,双向,低电平有效,13,2018/10/16,(3). 请求与响应
7、信号(优先编码逻辑信号),DREQ3DREQ0: 请求,输入,由外设送来HRQ:总线请求,输出,高电平有效,发送给CPUHLDA:总线保持响应信号,输入,由CPU送来DAKK3DACK0:DMA应答,输出,送到外设,14,2018/10/16,9.3.2 DAM8237A的工作周期(337页),共有7个时钟状态:Si, S0, S1, S2, S3, S4, SW(1) DMA空闲周期: Si上电后进入该周期。在该周期,当外设请求DREQ无效,则CPU可以对芯片进行初始化编程,或读取芯片状态。 (2) 过度周期:S0初始化后,若DREQ有效,则8237向CPU发出请求信号HRQ,这时8237从
8、空闲状态Si进入过渡状态S0。(3)DMA周期 :有4个基本时钟状态:S1, S2, S3, S4。 如果不能完成传送,则在S3, S4 之间插入SW,15,2018/10/16,8237A有4种DMA传送方式,3种DMA传送类型,可以实现存储器间的数据传送,9.3.3 8237A的工作模式,16,2018/10/16,1. DMA的传送方式,(1)单字节传送方式这种方式一次只传送一个字节。数据传送后字节计数器减量,地址要相应修改(增量或减量取决于编程)。HRQ变为无效,释放系统总线。若传送使字节数减从0减为0FFFFH,则系统终止DMA传送,或重新初始化。特点:一次传送一字节,效率低,但两次
9、传送之间CPU有机会重新获得总线控制权。,17,2018/10/16,(2)块传送方式在这种传送方式下,8237由DREQ启动后,就连续地传送数据,直至字节数计数器减到零(由0减到0FFFFH)产生TC(Terminal Count),或者由外部输入有效的 信号来终结DMA传送。,18,2018/10/16,(3)请求传送方式在这种工作方式下,DREQ有效,8237处于连续的数据传送状态。当出现以下三种情况之一时停止传送。 字节数传送完毕(计数器值从0减到0FFFFH),发生TC; 由外界送来一个有效的 信号; 外界的DREQ信号变为无效(外设的数据已传送完)。,19,2018/10/16,(
10、4)级连方式这种方式用于通过级连以扩展通道的情况。第二级的HRQ和HLDA信号连到第一级的DREQ和DACK上。,20,2018/10/16,2. DMA 传送类型,在前三种工作方式下,DMA传送有三种类型:DMA读、写和校验。 (1)DMA读:数据由存储器外设 (2)DMA写:数据由外设存储器 (3)DMA校验,21,2018/10/16,3 存储器 存储器的传送,8237可以编程为存储器到存储器的传送工作方式 在该方式下,8237A要固定使用0,1通道。 0地址寄存器:源地址 1地址寄存器:目的地址通道1的字节数寄存器存放要传送的字节数。,22,2018/10/16,4. 优先权方式,可以
11、通过编程选择 (1)固定优先权方式0,1,2,3(2)循环优先权方式无论那种优先权方式,某个通道获得服务后,其它通道无论优先权高低,都会被禁止,知道当前服务的通道结束传送。,23,2018/10/16,5. 自动初始化方式,当设置为该方式时,只要DMA过程产生EOP 信号,则会用DMA内基地址、基字节数等内容自动恢复DMA传送的初始值等,为下一次传送做好准备。,24,2018/10/16,9.3.4 8237A的寄存器组和编程控制字,25,2018/10/16,(1)现行地址寄存器每一个通道有一个16位的现行地址寄存器。在这个寄存器中保存着用于DMA传送的地址值,在每次传送后,这个寄存器的值自
12、动增量或减量。这个寄存器的值可由CPU写入或读出(分两次连续操作)。(2)现行字节数寄存器每个通道有一个16位的现行字节数寄存器,它保持着要传送的字节数,在每次传送后此寄存器减量。当这个寄存器的值减为零时,TC将产生。这个寄存器的值在编程状态可由CPU读出和写入。,26,2018/10/16,(3)基地址寄存器每一个通道有一对16位的基地址和基字节数寄存器,它们存放着与现行地址寄存器相联系的初始值。CPU同时写入现行地址寄存器和基地址寄存器。(4)基字节数寄存器每一个通道有一对16位的基字节数寄存器,它们存放着与现行字节数寄存器相联系的初始值。CPU同时写入现行字节数寄存器和基字节数寄存器。,
13、27,2018/10/16,5模式寄存器 每一个通道有一个模式寄存器以规定通道的工作模式,如下图所示。 在编程时用最低两位来选择写入哪个通道的模式寄存器。,28,2018/10/16,29,2018/10/16,(6)命令寄存器这是一个8位寄存器,用以控制8237的工作。命令字的格式如图所示。,30,2018/10/16,31,2018/10/16,(7)请求寄存器8237的每个通道有一条硬件的DREQ请求线,由硬件提出DMA请求。当工作在数据块传送方式时,也可以由软件发出DREQ请求。所以,在8237中有一种请求寄存器,如下图所示。每个通道的软件请求可以分别设置。软件请求是非屏蔽的,它们的优
14、先权同样受优先权逻辑的控制。,32,2018/10/16,33,2018/10/16,(8)屏蔽寄存器每个通道外设通过DREQ线发出的请求,可以单独地屏蔽或允许,所以在8237中有一个屏蔽寄存器,如图所示。,34,2018/10/16,单通道屏蔽寄存器 A3A2A1A0=1010,主屏蔽寄存器 A3A2A1A0=1111,35,2018/10/16,(9)状态寄存器8237中有一个可由CPU读取的状态寄存器,如图所示。,36,2018/10/16,37,2018/10/16,(10)临时寄存器在存储器到存储器的传送方式下,临时寄存器保存从源单元读出的数据,又由它写入至目的单元。在传送完成时,它
15、保留传送的最后一个字节,此字节可由CPU读出。,38,2018/10/16,9.3.5 8237A的软件命令,8237在编程状态还有两种软件命令,软件命令不需要通过数据总线写入控制字,而由8237直接对地址和控制信号进行译码。 (1)清除高/低触发器 (2)主清除命令 (3)总清除命令,39,2018/10/16,(1)输出主清除命令。 (2)写入基地址与现行地址寄存器。 (3)写入基字节数与现行字节数寄存器。 (4)写入模式寄存器。 (5)写入屏蔽寄存器。 (6)写入命令寄存器。 (7)写入请求寄存器。若有软件请求,就写入指定通道,可以开始DMA传送的过程。 若无软件请求,则在完成了(1)(6)的编程后,由通道的DREQ启动DMA传送过程。教材344页有一个参考程序。,9.3.6 8237的编程步骤,