本文介绍一个FPGA开源项目:DDR3读写。该工程基于MIG控制器IP核对FPGA DDR3实现读写操作。
MIG控制器支持两种接口:(1)简单用户控制逻辑接口;(2)AXI接口。该工程采用前者,后面会整理DDR3的AXI总线访问方法。
下面简单介绍一下MIG控制器IP核的使用以及FPGA板上测试结果。
01软硬件平台
02IP核参数配置
MIG(Memory Interface Generator)IP核提供了用户接口逻辑,以便于实现对DDR的访问。有关MIG的详细描述,可以参考官方文档:ug586。这里不展开介绍。
接口配置界面,保持默认选项。
Input Clock Period:输入时钟,这里选择200M。
读取XDC文件管脚配置,并点击validate,进行校验。
系统信号选择不用配置,保持默认选项即可。
03用户接口 & 读写时序
MIG IP产生的用户接口信号是以app_*格式命名:
input [127:0] app_rd_data; //读数据
input app_rd_data_end; //读数据结束
input app_rd_data_valid;//读数据有效
input app_rdy; //MIG控制器准备好读写
input app_wdf_rdy; //MIG控制器准备好写
output [27:0] app_addr; //读写地址
output [2:0] app_cmd; //读写命令
output app_en; //控制命令使能
output [127:0] app_wdf_data; //写数据
output app_wdf_end; //写数据结束
output app_wdf_wren; //写数据使能
DDR写时序如下图所示。逻辑比较简单,将所有信号严格对齐即可。但有一个需要注意的地方,就是当 app_rdy 和 app_wdf_rdy 都为高的时候,才能同时拉高 app_en ,这时写入的数据才有效。
DDR读时序如下图所示。app_cmd、app_addr、app_en、app_rdy信号严格对齐即可,但是同样需要在 app_rdy 拉高的情况下,才能拉高 app_en 。另外,数据读出会略有延迟。
04Vivado工程源码结构
本工程源码结构如下图所示。
05实现功能 & 测试结果
该Vivado工程主要用于FPGA DDR3读写功能测试。基于用户控制逻辑接口,以1s为周期,每周期内完成1次读写操作。板上测试1次读写操作的结果如下图所示。
全部0条评论
快来发表一下你的评论吧 !