基于FPGA的DDR3用户接口设计技术详解

本文详细介绍了在xilinx virtex-6系列fpga中使用mig3.7 ip核实现高速率ddr3芯片控制的设计思想和设计方案。针对高速实时数字信号处理中大容量采样数据通过ddr3存储和读取的应用背景,设计和实现了适用于该背景的控制状态机,并对控制时序作了详尽的分析。系统测试结果表明,该设计满足大容量数据的高速率存储和读取要求。
一、引言
随着软件无线电[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一包一包地从中读取并进一步处理。其基本框图如下:
图1 系统背景框图
在这里我们主要讨论ddr3的控制,提取感兴趣的模块可以得到简化的框图:
图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会拉低的情况,方便了写数据的操作,提高了时钟利用率。其基本思路如下图所示:
图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,经对比无误,说明该控制器能够较好地进行高速读写操作。
virtex-6
ddr3
fpga
高速实时数字信号处理

法国初创公司SilMac使用硅微机电系统为石英手表生产全新的手表电机
人脸支付必然成为主流支付方式
单片机50种经典的电路图分享
AR和VR苹果选择了AR,研发团队超1000人
华为决定起诉美国政府违宪,涉嫌入侵华为服务器
基于FPGA的DDR3用户接口设计技术详解
长飞公司正式发布了长飞5G+电力解决方案
南芯科技同步升压控制器SC8201助力NEO 3 VR眼镜
锤子新机坚果Pro即将发布:罗永浩内心无疑是崩溃的,亚马逊曝光坚果Pro配置和售价!
变压器额定电流的定义 计算变压器额定电流的方法
关于5G手机产业链及发展趋势的分析
英特尔同意IMS业务独立
可保证长期使用寿命的开关检测电路
国外芯片产能恢复了吗 国外芯片产能何时恢复
浅谈工业机器人轴承的发展情况
大数据在物流的应用怎样的
华为双旗舰渲染图曝光 AMD霄龙Zen4架构曝光
爱护笔记本不可不读的金科玉律
金砖国家可以利用加密货币做些什么
提高汽车电器电磁兼容性的三大措施