由于DDR3底层操控的复杂性,因此FPGA编程时一般由DDR控制器隔离,使得用户访问DDR3具有透明性,把复杂DDR访问变得类似SRAM的访问方式,更复杂的、细节性的操控交给DDR控制器完成,如图1所示。目前Vivado和Quartus 都提供了DDR3控制器的生成向导,下面就如何利用向导,结合前面学过的知识,合理选择各种选项,以生成最佳的DDR3控制器。

图1
1. Vivado 工具DDR控制器生成步骤
-
Vivado下新建工程
Vivado下新建工程用于测试,在主菜单File–>Project–>New,如图2

图2
在图2中输入Project的名称DDR3_intf , 文件路径根据实际情况选择,这里选择D:/FPGA_DDR3_IO。并勾选创建工程子目录(Create project subdirectory)。
(注意:路径和文件名不要出现中文和空格,否则编译时会出现错误,而且提示信息也模棱两可,很难根据错误信息定位错误。)
点击Next,弹出界面如图2所示。

图3
在图3中选择RTL Project,并选中Do not specify sources at this time, 在生成工程文件时不 添加额外的源文件 。点击Next,如图4所示。

图4
在图4中选择对应的FPGA,由于这里以FII-PRX100-D开发板为例解释DDR控制器的使用,因此选择xc7a100tfgg676-2。点击Next,弹出界面如图5所示。

图5
图5对以上工程生成步骤做了简要概述,点击Finish,完成工程创建。
2. 新工程下创建DDR控制器的步骤
-
打开IP catalog 窗口 ,双击IP Catalog

图6
-
选择DDR控制器IPcore
在IP Catalog 对话框中找到 Memories& Storage Elements–>Memory Interface Generator–>Memory Interface Generator(MIG 7 Series),如图7所示。

图7
点击 Next,在新界面中对MIG(Memory Interface Generator)及项目中使用的器件(FPGA),软件工具,开发语言(Verilog)进行了描述,如图8所示。点击Next,如图9.
图8
在图9的新界面中对MIG(Memory Interface Generator) 的选项如下:
-
MIG Output Option
-
Create Design
-
该选项包含生成RTL,XDC, implementation 及simulation文件,可以用来仿真测试,也可以作为整个工程的一个部件。其中XDC仅仅针对DDR控制器的约束文件。
-
-
Verify Pin Changes and Update Design
-
该选项针对以前已经生成的DDR控制器,由于管脚的更改等因素需要重新验证。该选项也会重新生成新的DDR控制器。
-
-
组件名称:
-
将mig_7 series_0修改成DDR3_INTF,将在工程目录内创建DDR_INT的子目录,并在该目录下生成”example_design”,”user_design”与”docs”等目录及文件。
-
-
- user_design文件包含了生成的DDR控制器的接口。该接口包含两个部分,(1)与DDR3 芯片的接口(2)控制器与APP的接口。如图1所示。
- example_design 除了包含接口外还添加了一个简单的应用案例,可用来学习或模仿如何使用新生成的控制器。
- docs 包含了控制器的说明文档。
-
可以选择一个也可以选择多个(最多可以8个),根据硬件电路决定。本例选择一个。
-
-
- AXI4 接口:
-
如果熟悉AXI接口或与该控制器对接的部件使用AXI接口,则选择AXI接口。如果不选AXI则使用传统的控制接口。本例测试不采用AXI接口,因此不选AXI接口。后续有专门的文章介绍AXI总线的使用。
-
-
- DDR 控制器的名称
-
将mig_7 series_0修改成DDR3_INTF,将在工程目录内创建DDR_INT的子目录,并在该目录下生成”example_design”,”user_design”与”docs”等目录及文件。
-
-
-
- user_design文件包含了生成的DDR控制器的接口。该接口包含两个部分,(1)与DDR3 芯片的接口(2)控制器与APP的接口。如图1所示。
- example_design 除了包含接口外还添加了一个简单的应用案例,可用来学习或模仿如何使用新生成的控制器。
- docs 包含了控制器的说明文档。
-
-

图9
-
- 管脚兼容性FPGA器件选择
DDR控制器生成器向导可以根据工程选择的器件推断出在同样封装的器件家族中还有哪些器件可以与工程中使用的器件管脚兼容,如果选择兼容的器件,将来该控制器可在其它兼容器件上使用,如图10所示。点击Next.

图10
-
- DDR 器件选择
如图11,xc7a100tfgg676-2器件支持DDR3,DDR2以及LPDDR2。本例选择DDR3 SDRAM。

图11 DDR器件的选择
DDR3L 与LPDDR3器件虽然不能被ARTIX系列器件支持,但其它7系列器件可以支持,如Kintex 系列FPGA器件。
DDR3L :低电压系列,接口电压1.35V。
LPDDR3:是一种用在移动设备上的功耗更低,体积更小的器件,电压1.2V。
有关DDR控制器设计中的参数配置,管脚锁定,在后续文章中介绍。