基于FPGA的DDR3用户接口设计
潘一飞,余海
(南京理工大学 电子工程与光电技术学院,江苏 南京 210094)
摘要:本文详细介绍了在Xilinx Virtex-6系列FPGA中使用MIG3.7 IP核实现高速率DDR3芯片控制的设计思想和设计方案。针对高速实时数字信号处理中大容量采样数据通过DDR3存储和读取的应用背景,设计和实现了适用于该背景的控制状态机,并对控制时序作了详尽的分析。系统测试结果表明,该设计满足大容量数据的高速率存储和读取要求。
关键词:DDR3控制;IP核;FPGA;高速实时数字信号处理
Design of DDR3 memory user interface based on FPGA
PAN Yifei,YU Hai
(School of Electronic Engineering & Photoelectric Technology,Nanjing University of
Science & Technology,Nanjing 210094,China )
Abstract: This paper elaborates the design idea and implementing scheme of using MIG3.7 IP core in FPGA of Xilinx Virtex-6 series to realize the controller of DDR3 Dual Rank memory bank in high performance. Based on this platform, this system implements the control state machine in the user layer satisfying the application background which using DDR3 to storage and read large volume data during high-speed and real-time digital signal processing,also we make a detailed breakdown of the timing control. The system test result reveals that this design meets the requirement of mass storage and high rate input and output. Key words: DDR3 controller;IP core;FPGA;High-speed and real-time digital signal processing 一、引言
随着软件无线电[1]思想的提出和FPGA技术[2]的不断发展,高速实时数字信号处理[3]已经成为FPGA的一个重要课题,高速的采样频率带来的是大容量的存储数据。在存储芯片领域,DDR3以较低的功耗,较快的存储速度,较高的存储容量和较低的价格迅速占领市场;同时在绘制PCB板图时,DDR2对信号完整性[4]的要求比较高,在很多地方都要求T型连接;而DDR3引入了write leveling的模块[5],专门用于各个模块间时钟的对齐,因此可以采用菊花链的连接方式,大大方便了PCB互联设计[6]。因此,在FPGA中使用DDR3进行大容量数据的存储是一种趋势。
本文基于Xilinx 公司的Virtex-6芯片,针对高速实时数字信号处理中大容量采样数据通过DDR3存储和读取的应用背景,利用官方提供的IP核完成了用户接口设计,并在该芯片上完成了验证和实现。目前,该方案已经在某雷达系统的高速数据缓存中得到了应用。 二、系统模型
现假定背景是数字信号处理,由FPGA和DSP共同完成,FPGA主要完成数据的实时检测和初步处理,同时负责采集和存储原始数据。DSP主要负责信号的进一步处理。DSP的实时处理能力有限,那么就需要FPGA把感兴趣时间段的数据存储下来,再由DSP一包一包地从中读取并进一步处理。其基本框图如下:
脉冲有效信号及输入信号数字信号基本参数ADFPGA数字信号处理DDR3存储器数据交互操作DDR3控制器DSP
图1 系统背景框图
在这里我们主要讨论DDR3的控制,提取感兴趣的模块可以得到简化的框图:
DSP模拟数据AD写FIFO用户接口设计MIGDDR3读FIFO 图2 DDR3用户接口设计整体框图
用户接口设计是整个系统的核心,对整个系统进行调度和控制。当接收到DSP写命令的时候,该设计开启写FIFO缓存功能,将对应数据按照MIG的时序要求写入DDR3;当接收到DSP读命令的时候,该设计按照要求产生对应的MIG读时序,控制数据进入读FIFO,进而完成后续操作。
三、MIG时序要求
Xilinx MIG v3.7 IP核的一般写命令操作时序[7]如下图所示:
图3 MIG用户接口的时序要求(突发长度为8)
由以上时序图可以得到连续写命令的控制要点:
1、 当app_rdy(DDR3核准备好信号)和app_en(DDR3核使能信号)同时拉高的时候,
写命令和写地址有效。
2、 当app_wdf_rdy(DDR3写FIFO准备好信号)和app_wdf_en(DDR3写FIFO使能信
号)同时拉高的时候,写入数据有效。
3、 突发长度为8时每两个控制周期对应一组突发数据,则每写入两个数据就要给出一个
app_wdf_end(帧尾信号)。
4、 写命令与写数据的操作时序要在两个时钟周期以内。
四、用户接口设计及时序分析
由上面MIG操作时序要求提出基于等待的写命令写数据同时发送机制。这种方式有一个好处:数据基本不会留在DDR3的FIFO里面,这样,就不用考虑app_wdf_rdy会拉低的情况,方便了写数据的操作,提高了时钟利用率。其基本思路如下图所示:
N状态不变?adfifo_proempty?0??YN?adfifo_dvalid?1??转入写数据状态ad_fifo_rden?1app_wdf_wren?0写等待状态ad_fifo_wren?1Yad_fifo_rden?0app_wdf_wren?1app_wdf_data?ad_fifo_outDSP写命令到达burst_cnt?1?写数据状态读状态app_cmd?1空闲状态app_en?0app_wdf_wren?0adfifo_wren?0adfifo_rden?0NY转入命令发送状态burst_cnt?1?app_rdy?1??(rd_addr?N_max)?rd_addr?rd_addr?1DSP读命令到达app_en?1burst_cnt?0app_wdf_end?1YN保持状态不变写命令发送状态app_cmd?0app_wdf_wren?0保持状态不变N?write_addr?N_max??转入空闲状态Y保持状态不变NYN转入空闲状态app_en?0read_num?0app_wdf_end?0app_en?0N?app_rdy?1??转入等待状态Yapp_addr?app_addr?1转入写数据状态ad_fifo_rden?1Y?adfifo_proempty?0?? 图4 基于MIG的用户接口设计基本框图
由上图设计的状态机所得的时序如下图所示:
图5 用户设计时序图
时刻①写等待状态,此时检测到ADFIFO为空,因此保持写等待状态。 时刻②检测到ADFIFO非空,于是读使能拉高,下一个状态为写数据状态。 时刻③已进入写数据状态,此时检测adata_valid(ADFIFO数据有效信号),因为读使能拉高到读数据有效有一个时钟的延时,因此当检测到adata_valid有效再使得adfifo_rden(ADFIFO读使能)拉低的话,读使能已经有效了两个时钟了。此时并没有检测到ADFIFO数据有效信号,状态不变继续检测。
时刻④检测到读数据有效,说明两个时钟周期的读使能信号已经发出,于是读使能拉低,同时拉高app_wdf_wren(DDR核写使能信号),将对应数据发出。
因为有两个时钟的有效数据,时刻⑤adata_valid依然拉高,继续写入数据;此时检测到brust_cnt(帧尾计数标志)为高,给出帧尾信号,同时app_en(核使能信号)拉高,准备发送写命令,下一个状态为写命令状态。
时刻⑥已进入写命令状态,这时app_en已经拉高,只要检测到app_rdy(核准备好信号)拉高,说明对应地址的写命令已经发出。时刻⑥检测到app_rdy为低,状态不变,继续检测。
经过连续几个时钟周期的等待后,时刻⑦检测到app_rdy为高,说明对应地址的写命令已经发出,地址自动加一,同时app_en信号拉低,再次进入写等待状态。
时刻①到时刻⑦详细描述了当接受到DSP写命令时用户接口设计对各个端口的时序操作,可见与MIG要求时序相符。
读命令的发送和写命令的发送类似,也比较简单,在此不再赘述。 五、结论
使用Xilinx公司生产的Virtex-6芯片进行验证,采样速率为1Ghz,采样位宽为12位,扩展成16位后进行存储,DDR3内部以1067M处理速度,32位的处理带宽进行存储,写数据时从地址全0写到地址全1,读数据时也从地址全0读到全1,经对比无误,说明该控制器能够较好地进行高速读写操作。
[1] 余超,段登平,王建宇,李国通 软件无线电宽带高中频采样的A/D特性分析[J].电讯技术,2004,44(5)
[2] 张碧锋,郭 英 数字中频正交采样及其FPGA实现[J].电讯技术,2011,51(2) [3] 李燕春.高速信号处理终端设备的设计[J].电讯技术,2011,51(8)
[4] 肖汉波.高速PCB设计中信号完整性的仿真与分析[J].电讯技术,2006,46(5) [5] Xilinx Co Ltd. Virtex-6 FPGA Memory Interface Solutions User Guide [EB/OL] .2011, V3.7.http://www.xilinx.com/support/documentation/ip_documentation/ug406.pdf
[6] 冯维萍.电子产品设计过程中消除干扰信号的PCB布线技巧[J].电讯技术,2003,43(3): [7] Xilinx Co Ltd. Virtex-6 FPGA Memory Interface Solutions [EB/OL].2011,V3.7. http://www.xilinx.com/support/documentation/ip_documentation/ds186.pdf