Vo1.27 No.2 Mar.20l1 科技通报 BULLETIN OF SCIENCE AND TECHNOLOGY 第27卷第2期 2011年3月 基于AMBA总线的DMA控制器设计 张 军.马 琪 (杭州电子科技大学微电子CAD研究所,杭州310018) 摘 要:给出了基于AMBA2.0总线的DMA控制器的RTL级设计。并搭建了SoC仿真平台进行功能仿 真,最后进行了FPGA原型验证。在100MHz的工作频率下,仿真和验证结果表明,本设计可以满足功 能和性能的要求。 关键字:SoC设计;AMBA总线;DMA控制器 中图分类号:TP334.4 文献标识码:A 文章编号:1001—7119(2011)02—0268—04 Design of DMA Controller Based on AMBA Bus ZHANG Jun,MA Qi (Microelectronics CAD Center,Hangzhou Dianzi University,Hangzhou 310018,China,) Abstract:DMA controller based on AMBA bus is implemented in Verilog HDL and simulation on SOC platform is COB- pleted.At last the design is targeted to a FPGA device for synthesis and verification.The results operating ̄equency in the 100MHz show that this design can meet the functional and performance requirements. Key words:SoC design;AMBA;DMA controller 0 引言 随着超大规模集成电路(VLSI)工艺技术的 发展,系统集成芯片(SoC)的设计无论在移动通 统框图如图1所示E4]。 AMBA总线是ARM公司提出的一种开放性 片上总线标准,具有高速、低功耗等特点。AMBA 架构的SnC一般来说包含了高性能系统总线 AHB(advanced high performance bus)与低功耗外 围设备总线APB(advanced peripheral bus),AHB 负责连接内嵌处理器、DMA控制器、片上存储器 和其它的一些高速接口或其它需要高带宽的组 件。而外围设备总线APB则是用来连接系统的周 信领域还是嵌入式视频领域都得到了越来越广 泛的应用l1.2]。本文的DMA控制器就是我们开发 的SoC设计平台中的一个外围IP核。 DMA(direct memory access,直接存储器访 问方式)是一种完全有硬件执行输入/输出数据交 换的方式,外部设备直接对存储器进行读/写操 作,而不需要经过CPU。这种直接执行数据传输 边组件,其协议相对AHB来讲较为简单.与AHB 之间则透过桥来相连,以减少系统总线的负载[5]。 的方式,能够达到极大的传输速率f3j。本文的SoC 设计平台将CK.Core作为嵌入式CPU核,采用 AMBA2.0总线,包括SRAM控制器、DDR控制 器、FLASH控制器以及一些其它外围电路,其系 1 DMA控制器的RTL设计 本文设计的DMA数据传输过程如图2所 收稿日期:2010—10-25 作者简介:张军(1984-),男,河南漯河人,硕士,主要研究方向为集成电路设计与EDA技术,zhang_.jun860@163.com; 通讯作者:马琪(1968一),男,浙江绍兴人,杭州电子科技大学微电子CAD研究所研究员,博士,主要研究方向为集成电路 设计与CAD,maq68@126.eom。 第2期 张军等.基于AMBA总线的DMA控制器设计 图1 基于AMBA的SoC设计平台结构图 Fig.1 SoC design platformAMBA 示。首先处理器通过APB总线对DMA的寄存器 该模块接口是APB总线标准接口[ ,具有两 个作用: 进行配置,如源起始地址、目标起始地址、传输数 据长度、启动信号等。然后DMA先执行读操作, 将源数据块的数据从总线上读取放人数据缓冲 (1)写DMA控制寄存器和读取状态寄存器; DMA控制器寄存器包括源地址寄存器,目标地址 寄存器、传输数据长度寄存器(传输数据长度是 以Byte为单位)和DMA开启控制寄存器。其状态 寄存器为DMA工作标志寄存器。 区中:再执行写操作。将缓冲区中的数据搬移到 目的地址。由于缓冲区有限,需要进行分阶段的 重复性读写操作。当传输完成.DMA会产生一个 中断标志.指示处理器DMA传输完成。 本文设计根据DMA控制器的各部分功能进 (2)传输DMA控制器的配置信息到DMA 总控制模块,以控制DMA传输进程。 1.2 DMAAI-IB接口模块 —行模块划分,其中模块包括总控制模块, DMA_APB接口模块和DMA—AHB接口模块。 该模块负责发送获取总线的请求信号以及 获得总线请求后发送的读写控制信号。本模块用 1.1 DMA APB接口模块 图2 DMA数据传输过程 Fig.2 Data transmission of DMA 270 第27卷 图3 DMACTRL状态转移图 _Fig.3 DMACTRL state mac ——一个状态机来实现 ,其状态图如图3所示。 ●DAIDLE,在该状态下,表示DMA处于空 —同的是当burst_num为1,则下个状态跳回 DA TRANS OVER,否则跳到下一个写继续状 态。 ●DA WR_闲状态,无总线操作。当dma_start开始启动后,则 跳入状态DARDREQ状态。其中dma_start信 —~CTU,该过程与DA—RD—CTU相 号由总控制器给出,来控制总的传输阶段数。 ●DA—同 不过当DMA结束此次操作后,如果DMA完 RD REQ,在该状态下,I)MA向AM— 成了所有的循环操作,则跳到DA_TRANS_OVER 结束状态,如果没有则跳回到DA—RD REQ状 态。 ●DASTAGE—BA仲裁器发送请求占用总线信号,然后跳转到 DARDGRANT状态。 ——●DARD——GRANT,等待总线的授权,当 ——OVER一个传送阶段结束, DMA检测到i_hgrant信号 ,则跳转到DASTART状态。 ●DARD——RD— 持续一个CLK,然后跳到IDLE状态。 1-3 DMA总控制模块 START,该状态要知道的信息是 总控制模块是用来控制DMA传输阶段,其 主要是受DMA数据源地址和目标地址的控制。 当数据源地址和目标地址字不对齐时,则进行 Byte方式传输:当数据源地址和目标地址字对齐 时,当四字节对齐时.则进行4xByte方式传输,否 读多少个数据,以什么样的方式去读。在此状态 下发送第一个读地址,同时h_trans=2’b01,表示 开始有效地传输。若是burst_num为1.则跳转到 DAWRITE_—REQ;若burst_num大于1,则跳转到 CTU,继续读数据状态,把所读的 DARD——CTU状态,继续进行读操作。 ——则首先会进行Byte方式传输,然后进行4xByte 方式传输。 ●DARD数据暂存到fifo中。当一次读操作结束,则跳转到 DAWR_—REQ状态。 __2 DMA控制器的仿真与验证 本文设计采用Verilog HDL实现,并在SoC ●DAWRREQ,同DA—RD—REQ一样。表 仿真平台下利用VCS对设计进行了功能仿真。还 选用Xilinx Virtex一4系列FPGA开发板搭建了 FPGA验证平台,进行FPGA原型验证。 示DMA发送占用总线请求,然后跳转到 DAWRGRANT。 ——●DAWR__GRANT,等待总线授权,当状态 机获得i_hgrant信号后。 则跳转到 DA_WR START状态。 ●DAWR__在通过总线读源地址数据操作过程中,各信 号时序如图4。此读操作是一个完整的burstl6操 作。读人数据个数由计数器burst_cnt控制,当计 _START,同DA—FIRSTRD操作 一样,发送h_trans=2’10,表示有效传输开始。不