DDR3:MIG控制器设计(vivado)

前言DDR SDRAM 全称为 Double Data Rate SDRAM,中文名为“双倍数据流 SDRAM”。DDR SDRAM 在原有的 SDRAM 的基础上改进而来。也正因为如此,DDR 能够凭借着转产成本优势来打败昔日的对手 RDRAM,成为当今的主流。DDR3第四代SDRAM,第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM。 很多人将SDRAM错误的理解为第一代,也就是 SDR SDRAM,并且作为名词解释,皆属误导。

日常·唠嗑:对于深入做项目来说,DDR是必不可少的,特别是在做图像处理或者数据交互的时候。最近在做车牌识别的时候,就遇到了很多关于DDR数据读写的难题,好在查阅相关资料,以及在诸多大佬的帮助下,问题顺利解决了。

进入正文
MIG IP 控制器是 Xilinx 为用户提供的一个 DDR 控制的 IP, 这样用户即使不了解 DDR 的控制和
读写时序也能通过 DDR 控制器方便的读写 DDR 存储器。7 系列的 DDR 控制器的解决方案如下所
示:
DDR3:MIG控制器设计(vivado)
DDR3 控制器包含 3 部分:用户接口模块(User interface Block), 存储器控制模块(Memory
Controller)和 DDR3 的物理接口(Physical Layer)。开发人员只需要开发用户的逻辑设计跟 DDR 控制
器的用户接口对接来读写 DDR3 的数据。关于 DDR3 控制器用户端的接口定义和时序的更多介绍,
大家还是参考 Xilinx 提供的文档(UG586),接下来为大家介绍如何生成和配置 DDR3 控制器吧!

1、首先在 Vivado 环境里新建一个项目,取名为 ddr3_test。再点击 Project Manager 界面下的 IP
Catalog,打开 IP Catalog 界面。
DDR3:MIG控制器设计(vivado)
2、在 IP Catalog 界面里双击 Memories & Storage Elements\Memory Interface Generators 下的
Memory Interface Generator (MIG 7 Series)。
DDR3:MIG控制器设计(vivado)
3、点击 Next, 如果有同学想了解更多的 MIG 的信息,可以点击左边的 User Guide 按钮来打开 Xilinx
的相关文档来查看。
DDR3:MIG控制器设计(vivado)
4、修改 Component Name 为"ddr3",点击 Next。
DDR3:MIG控制器设计(vivado)

5、这里可以选择兼容芯片,我们不需要,点 Next。
DDR3:MIG控制器设计(vivado)
6、选择默认的 DDR3 SDRAM。
DDR3:MIG控制器设计(vivado)
7、我使用的板是黑金的AX7050 开发板。 Memory Part 选择开发板上的型号"MT41J256m16xx-125", Data Width 数据宽度选择 32 位。
DDR3:MIG控制器设计(vivado)
8、 选择 PLL 输入时钟的频率为 200Mhz, 这个时钟需要跟开发板上的时钟频率一致,其它设置输出
阻抗值和内部的 ODT 内部上拉电阻值来改善 DDR3 的信号完整性,一般不需要修改。
DDR3:MIG控制器设计(vivado)
9、 System Clock 选择差分"No Buffer", Reference Clock 因为开发板上没有提供单独的 DDR 参考时钟,所以选择"Use System Clock"。System Reset Polarity 选择"ACTIVE LOW"。
DDR3:MIG控制器设计(vivado)
10、 HR bank 的内部端接阻抗,这里为 50 ohms,不用修改。这是由核心板的硬件设计决定的。
DDR3:MIG控制器设计(vivado)
11、 点击第二项,我们需要设定一下 DDR 的管脚,点击 Next。
DDR3:MIG控制器设计(vivado)
12.、在这个界面里设置 DDR3 的数据、地址和控制信号的 FPGA 管脚分配和 IO 电平。这个手工分配
起来还是比较费劲的,用户可以使用点击“Read XDC/UCF”按键直接导入管脚分配文件。导入后
ddr3 的管脚分配如下。
DDR3:MIG控制器设计(vivado)
导入ucf文件就可以完成 ddr3 的管脚分配

DDR3:MIG控制器设计(vivado)
再点击"validate" 按验证一下,通过后点击 Next。
DDR3:MIG控制器设计(vivado)
13、这里软件默认设置,直接点击 Next。
DDR3:MIG控制器设计(vivado)
14、显示 ddr3 IP 配置的概况,检查一下,没有问题就点击 Next。
DDR3:MIG控制器设计(vivado)
15、选择 Accept, 点击 Next。
DDR3:MIG控制器设计(vivado)
DDR3:MIG控制器设计(vivado)
16、 点击 Generate 按钮生成 MIG 控制器。
DDR3:MIG控制器设计(vivado)
17、点击 Generate 按钮生成 MIG 相关的设计文档。
DDR3:MIG控制器设计(vivado)
18、 这时在项目中添加了一个 ddr3 的 IP。关于 MIG 7 Series 详细介绍请大家参考 Xilinx 提供的文档“ug586_7Series_MIS.pdf”。
DDR3:MIG控制器设计(vivado)

总结:到第18步,MIG IP的设计就基本完成了,下次有时间再做一篇DDR3读写测试文章。
本文章参考了黑金AX7050使用手册,以及black_pigeon的基于MIG IP核的DDR3控制器一文。