一种基于单片机系统的DMA控制电路的模块化设计方案
2009-04-16
作者:刘先昆 纪圣谋 徐健健
摘 要: 介绍一种基于单片机系统的采用“RAM出让 ”方式实现的DMA控制电路。模块化设计,便于用可编程逻辑门阵列或集成电路芯片实现。给出其软件接口子程序设计方案。
关键词: 单片机系统 直接存储器存取(DMA)方式 数据传输
采用中断或查询方式时,单片机系统无法实现小于其指令周期的高速数据传输及数据采集。虽然近些年单片机速度不断提高,但指令周期一般还在微秒量级,这就限制了单片机在高速数据传输领域内的应用,如网络通讯、高速数据采集等。DMA(即外设与内储存器之间数据直接传输)控制电路以其高效、高速、CPU资源占用少等特点已在PC机中成熟应用。在PC机中,它是通过安装在主板上的专用DMA控制芯片或集成于外围控制芯片中来实现的。单片机通常不具有DMA功能,也没有现成的控制芯片可以利用。而且,由于总线和系统组成方面的差异无法将PC机中的DMA电路移植到单片机系统中。
另一方面,单片机系统不具备“总线出让”功能,没有类似总线响应、保持响应、总线有效等引脚功能,因此设计采用“指定RAM出让”的方法。指定RAM是指连接在DMA控制器上的RAM。在DMA周期内系统通过控制线将此RAM交由DMA控制器和外设读写,构成“RAM出让”。“RAM出让”的突出优点是在DMA周期中,单片机依然可以对总线上的其他电路或组件进行操作。
本文所讨论的DMA控制电路模块可以采用可编程逻辑门阵列来实现,也可以加工成厚膜电路或集成电路芯片。
1 DMA与系统的连接及其结构框图
DMA控制模块在系统中的连接如图1所示。
1.1 DMA模块与单片机的连接
单片机系统通过数据(DB)、地址(AB)、控制(CB)总线与DMA模块连接。连接方式与连接RAM仅有较小的区别。主要在控制总线部分,除原有的读写控制线外须增加DMA允许输入、DMA状态输出。
1.2 DMA模块与RAM的连接
DMA模块通过8位数据线、地址线和读写控制线与RAM连接。地址线个数由RAM空间大小决定,最大16线。
1.3 DMA模块与外设的连接
连接外设有8位数据线,控制线包括DMA申请输入、读写控制输入、DMA响应输出。
DMA控制模块的结构框图如图2所示。
2 工作原理
2.1 工作过程
在允许DMA操作之前,必须在主程序中对DMA控制器初始化,写入工作方式字和起、止地址。DMA控制器中的方式寄存器和地址发生器中的地址寄存器都是可寻址的口,其地址占用RAM的最高位5个字节(方式字1个,起始和结束地址各2个)。在数据写入时,RAM中同时被写入镜象数据,因此控制字可以从同一地址读出。
初始化设置包括以下信息:
·数据传输方向。即通过方式字中的相应位选择数据向RAM写入或由RAM读出。
·数据传输方式。通过写入方式字选择传输方式,有字节传输、块传输、请求传输三种方式。
·数据传输在存储器中的起始地址和结束地址。这两个寄存器包含在地址发生器模块中。DMA传输时地址采用增1方式,所以要求结束地址高于起始地址。
初始化结束后,在主程序许可的情况下,发出DMA允许(DEN)信号,查询DMA状态(DS)或利用(DS)触发中断来判断DMA结束。在等待结束过程中,单片机可以进行对非指定RAM的所有外部操作以及所有内部操作。下一次DMA传输需要重复设置、DMA允许、等待结束三个过程。
单片机置DEN有效即DMA允许,时序和逻辑模块控制总线收发器1截止和总线收发器2开通,使得RAM连接由单片机切换至外设和DMA控制器,并根据方式寄存器的输出,实现对数据传输方式和传输方向的控制。而在DMA禁止(DEN无效)时或DMA传输结束后,逻辑模块控制总线收发器1开通和总线收发器2截止,使得RAM连接至单片机。
在DMA允许后,当有DMA申请(即DRQ有效),控制器输出DMA响应(DAK有效)通知外设可以进行数据传输,同时改变DMA状态输出(DS输出有效)通知单片机。DMA传输结束可有三种不同方式:方式1为单字传输结束;方式2为RAM地址超出结束地址;方式3为DMA申请信号撤消(DRQ无效)。DMA结束,DS由高变低,触发单片机中断。单片机收到DMA结束信号后,输出DMA禁止,进行数据处理。
2.2 地址产生电路
地址产生电路如图3所示。
主地址发生器是一个16位可预置二进制计数器,预置的16位二进制数作为DMA传输的起始地址。SEN、EEN为计数器和锁存器的写入片选,各2根,高8位和低8位分2个地址写入。CP为计数脉冲输入,DMA每传输完一字节,CP收到一个计数脉冲,计数器输出加1,指向下一个传输地址。
结束地址写入16位锁存器,高8位和低8位分两个地址写入。锁存器输出送数字比较器,与来自计数器输出的地址比较,如果结束地址高于输出地址则地址溢出输出端OA输出低电平。当计数器输出地址高于结束地址时,OA端输出高电平,该信号送逻辑模块控制可作为DMA结束标志。
2.3 工作方式的选择
时序与逻辑模块根据方式字的选择可实现不同传输方式的控制。如字节传输方式、块传输方式、请求传输方式。
字节传输方式时,一次只做一个字节的数据传输。传输结束后释放RAM,DAK无效,到单片机处理数据结束,重新DMA允许后才可以进行下一次传输。
块传输方式要求结束地址高于起始地址,因为DMA地址输出采用加1方式。起始地址和结束地址之间数据作为被传输的数据块,直到整个数据块传输结束后才释放RAM。
请求传输方式与块传输方式类似,但是要求DRQ在传输过程中保持有效。DRQ无效时DMA传输结束,释放RAM。就是说它以DRQ无效作为DMA结束标志。
2.4 时序与逻辑电路
时序与逻辑电路设计需实现上述工作的逻辑功能。包括有:判断单片机输出DEN和DMA结束标记输出总线控制;根据方式字所设的传输方向控制RAM的读或写有效;输出地址进位脉冲;根据方式字中传输方式的选择和DMA申请输入DRQ输出响应DAK;选择DMA结束标记;当结束标记产生时输出DMA结束操作。
总之,时序与逻辑电路的设计取决于对工作方式的选择和DMA工作过程的设计考虑。
3 接口软件设计
DMA控制器在系统中应用时可选择采用结束查询法或结束中断法来判断DMA的结束,接口子程序流程,见图4所示。
参考文献
1 何立民.单片机应用系统设计.北京:北京航空航天大学出版社,1990:1~19
2 张昆藏.微型计算机接口技术.北京:清华大学出版社,1991:32~45
3 余新平.采用DMA技术实现高速数据传输的I/O接口卡设计.电子技术应用,1999;25(7):54~56