PL端DDR3读写测试实验#

实验VIvado工程为“ddr3_pl_test”。

硬件介绍#

开发板的PL端有2颗16bit ddr3,这很大程度方便我们移植以前的FPGA工程到ZYNQ系统中,同时也提供了更大的带宽。

../_images/image119.png

Vivado工程建立#

创建一个PL端ddr3测试工程#

../_images/image213.png ../_images/image310.png ../_images/image46.png

配置ddr3 IP#

  1. 在“IP Catalog”的搜索框搜索“mig”,快速找到“Memory Interface Generator”,双击

../_images/image56.png
  1. 点击“Next”

../_images/image65.png
  1. “Component Name”修改为“ddr3”,以后我们例化ddr3就可以,点击“Next”

../_images/image75.png
  1. 点击“Next”

../_images/image85.png
  1. 控制器类型选择“DDR3 SDRAM”,点击“Next”

../_images/image95.png
  1. “Memory Part”选择“MT41J256m16XX-125”,“Data Width”选择32

../_images/image105.png
  1. “Input Clock Period”选择5000ps(200MHz)

../_images/image1110.png
  1. “System Clock”选择“No Buffer”,“Reference Clock”选择“Use System Clock”,“System Reset Polarity”选择“ACTIVE LOW”,点击“Next”

../_images/image124.png
  1. 使能DCI Cascade,点击“Next”

../_images/image133.png
  1. 选择“Fixed Pin Out:Pre-existing pin out is konwn and fixed”

../_images/image143.png
  1. 点击“Read XDC/UCF”

../_images/image153.png
  1. 选择ddr.ucf,这里可以选择工程里已经存在的XDC文件,只要包含ddr3的管脚分配信息就可以。

../_images/image162.png
  1. 点击“Validate”

../_images/image172.png
  1. 选择测试输出的管脚,这里保持默认,不配置

../_images/image182.png
  1. 点击“Next”

../_images/image192.png
  1. 点击“Access”接受条款

../_images/image202.png
  1. 点击“Next”

../_images/image214.png
  1. 点击“Generate”

../_images/image222.png
  1. 在弹出的“Generate Output Products”中选择“Generate”

../_images/image232.png

添加其他测试代码#

其他代码主要功能是配置si5338,读写ddr3并比较数据是否一致,这里不做详细介绍,可参考工程代码。

../_images/image241.png

下载调试#

生成bit文件以后,使用JTAG下载到开发板,我们可以通过LED来观察ddr3测试情况,LED1亮表示si5338配置完成,LED2亮表示ddr3 读写有错误,LED3亮表示ddr3控制器初始化完成,LED4闪烁表示ddr3测试程序在运行。

实验总结#

本实验通过PL端Verilog代码直接读写ddr3,通过LED来显示测试结果,我们也可以把ddr3配置成AXI接口,这样方便和ARM系统完成数据交互。