TQTT_KU5P开发板教程---DDR4基于IP核 SDRAM(MIG)的测试
文档功能介绍
本文档实现了通使用DDR4 SDRAM(MIG) IP核,是实现了ddr4的测试例子。本开发板使用的是2片MT40A256M16GE-075E的ddr芯片,组成32位数据总线带宽和1GB的容量。创建以及烧写比特流的步骤参考《点亮你的led》。
Vivado创建项目
起始页(或 file-->Project-->New | 创建新工程(Create New Project) |
向导起始页面 | 点击 Next--> |
Project Name(工程名) | 工程名:ddr4 工程路径:(自己选择,不要有中文路径) Next--> |
Add Source(添加设计源文件) | 点击 Next--> |
Add Constraints(添加已有约束文件) | 点击 Next--> |
Default Part(默认配置,芯片选型) | 按具体型号选择 xcku5p-ffvb676-2-i |
New Project Summary(新建工程概况 | 确认工程信息,选型等,点击 Finish 完成 |
引用IP核
双击IP catalog --> 在搜索框输入ddr4 --> 双击DDR4 SDRAM(MIG),如图6-1所示
![]() |
图6-1 |
根据原理图可以得到ddr的芯片型号为MT40A256M16GE-075E,且最大位数为31,数据位宽为32位。如图6-2所示
|
图6-2 |
进入IP核配置界面后,将输入时钟改为100MHZ --> 将cas latency 改为19 --> 芯片型号:MT40A256M16GE-075E --> 数据位宽位32位 --> 直接点击OK,其余界面不需要配置。如图6-3所示
![]() |
图6-3 |
点击生成,如图6-4所示
![]() |
图6-4 |
当IP核生成完成后,选择IP核,点鼠标右键 - > 双击Open IP Example...
如图6-5所示
![]() |
图6-5 |
选择文件存放路径(不能有中文) --> 点OK,如图6-6所示
![]() |
图6-6 |
进入重新打开的vivado,双击打开顶层文件 --> 将103,104行代码注释掉并加入一个2位宽的输出信号led --> 再将代码表6-1添加到顶层文件,如图6-7所示(此段代码的作用是当DDR4成功运行时led1点亮,当DDR4出现错误时led0点亮)
![]() | |||||
图6-7 | |||||
|
再通过原理图来确定ddr各个绑定的引脚名称,并写出xdc文件,如图6-8所示
![]() |
图6-8 |
将下面管脚绑定代码放在pin.txt文件里
set_property IOSTANDARD LVCMOS18 [get_ports c0_init_calib_complete]
set_property IOSTANDARD DIFF_SSTL12_DCI [get_ports {c0_ddr4_ck_t[0]}]
set_property PACKAGE_PIN e22 [get_ports c0_init_calib_complete]
set_property IOSTANDARD LVCMOS12 [get_ports sys_rst]
set_property PACKAGE_PIN P19 [get_ports sys_rst]
set_property PACKAGE_PIN T24 [get_ports c0_sys_clk_p]
#################################################################
set_property PACKAGE_PIN ad24 [get_ports {c0_ddr4_dq[0]}]
set_property PACKAGE_PIN af24 [get_ports {c0_ddr4_dq[1]}]
set_property PACKAGE_PIN ab26 [get_ports {c0_ddr4_dq[2]}]
set_property PACKAGE_PIN ab24 [get_ports {c0_ddr4_dq[3]}]
set_property PACKAGE_PIN ac24 [get_ports {c0_ddr4_dq[4]}]
set_property PACKAGE_PIN ab25 [get_ports {c0_ddr4_dq[5]}]
set_property PACKAGE_PIN af25 [get_ports {c0_ddr4_dq[6]}]
set_property PACKAGE_PIN ad25 [get_ports {c0_ddr4_dq[7]}]
set_property PACKAGE_PIN ad23 [get_ports {c0_ddr4_dq[8]}]
set_property PACKAGE_PIN ae23 [get_ports {c0_ddr4_dq[9]}]
set_property PACKAGE_PIN ad21 [get_ports {c0_ddr4_dq[10]}]
set_property PACKAGE_PIN ac23 [get_ports {c0_ddr4_dq[11]}]
set_property PACKAGE_PIN ac22 [get_ports {c0_ddr4_dq[12]}]
set_property PACKAGE_PIN ae21 [get_ports {c0_ddr4_dq[13]}]
set_property PACKAGE_PIN ab21 [get_ports {c0_ddr4_dq[14]}]
set_property PACKAGE_PIN ac21 [get_ports {c0_ddr4_dq[15]}]
set_property PACKAGE_PIN af17 [get_ports {c0_ddr4_dq[16]}]
set_property PACKAGE_PIN ae17 [get_ports {c0_ddr4_dq[17]}]
set_property PACKAGE_PIN ac19 [get_ports {c0_ddr4_dq[18]}]
set_property PACKAGE_PIN af18 [get_ports {c0_ddr4_dq[19]}]
set_property PACKAGE_PIN af19 [get_ports {c0_ddr4_dq[20]}]
set_property PACKAGE_PIN ad19 [get_ports {c0_ddr4_dq[21]}]
set_property PACKAGE_PIN ae16 [get_ports {c0_ddr4_dq[22]}]
set_property PACKAGE_PIN ad16 [get_ports {c0_ddr4_dq[23]}]
set_property PACKAGE_PIN ab20 [get_ports {c0_ddr4_dq[24]}]
set_property PACKAGE_PIN ab19 [get_ports {c0_ddr4_dq[25]}]
set_property PACKAGE_PIN aa19 [get_ports {c0_ddr4_dq[26]}]
set_property PACKAGE_PIN aa20 [get_ports {c0_ddr4_dq[27]}]
set_property PACKAGE_PIN y17 [get_ports {c0_ddr4_dq[28]}]
set_property PACKAGE_PIN aa17 [get_ports {c0_ddr4_dq[29]}]
set_property PACKAGE_PIN y18 [get_ports {c0_ddr4_dq[30]}]
set_property PACKAGE_PIN aa18 [get_ports {c0_ddr4_dq[31]}]
set_property PACKAGE_PIN p26 [get_ports {c0_ddr4_adr[0]}]
set_property PACKAGE_PIN p25 [get_ports {c0_ddr4_adr[1]}]
set_property PACKAGE_PIN r22 [get_ports {c0_ddr4_adr[2]}]
set_property PACKAGE_PIN aa24 [get_ports {c0_ddr4_adr[3]}]
set_property PACKAGE_PIN t23 [get_ports {c0_ddr4_adr[4]}]
set_property PACKAGE_PIN w20 [get_ports {c0_ddr4_adr[5]}]
set_property PACKAGE_PIN t22 [get_ports {c0_ddr4_adr[6]}]
set_property PACKAGE_PIN w19 [get_ports {c0_ddr4_adr[7]}]
set_property PACKAGE_PIN u21 [get_ports {c0_ddr4_adr[8]}]
set_property PACKAGE_PIN p21 [get_ports {c0_ddr4_adr[9]}]
set_property PACKAGE_PIN v22 [get_ports {c0_ddr4_adr[10]}]
set_property PACKAGE_PIN u19 [get_ports {c0_ddr4_adr[11]}]
set_property PACKAGE_PIN y25 [get_ports {c0_ddr4_adr[12]}]
set_property PACKAGE_PIN p20 [get_ports {c0_ddr4_adr[13]}]
set_property PACKAGE_PIN y23 [get_ports {c0_ddr4_adr[14]}]
#DDR4_WE_B
set_property PACKAGE_PIN u26 [get_ports {c0_ddr4_adr[15]}]
#DDR4_CAS_B
set_property PACKAGE_PIN v26 [get_ports {c0_ddr4_adr[16]}]
#DDR4_RAS_B
set_property PACKAGE_PIN ac26 [get_ports {c0_ddr4_dqs_t[0]}]
set_property PACKAGE_PIN aa22 [get_ports {c0_ddr4_dqs_t[1]}]
set_property PACKAGE_PIN ac18 [get_ports {c0_ddr4_dqs_t[2]}]
set_property PACKAGE_PIN ab17 [get_ports {c0_ddr4_dqs_t[3]}]
set_property PACKAGE_PIN u22 [get_ports {c0_ddr4_ba[0]}]
set_property PACKAGE_PIN r26 [get_ports {c0_ddr4_ba[1]}]
set_property PACKAGE_PIN ae25 [get_ports {c0_ddr4_dm_dbi_n[0]}]
set_property PACKAGE_PIN ae22 [get_ports {c0_ddr4_dm_dbi_n[1]}]
set_property PACKAGE_PIN ad20 [get_ports {c0_ddr4_dm_dbi_n[2]}]
set_property PACKAGE_PIN y20 [get_ports {c0_ddr4_dm_dbi_n[3]}]
set_property PACKAGE_PIN v21 [get_ports {c0_ddr4_bg[0]}]
set_property PACKAGE_PIN p23 [get_ports c0_ddr4_reset_n]
set_property PACKAGE_PIN v19 [get_ports c0_ddr4_act_n]
set_property PACKAGE_PIN aa25 [get_ports {c0_ddr4_odt[0]}]
##DDR4_ODT
set_property PACKAGE_PIN w25 [get_ports {c0_ddr4_ck_t[0]}]
set_property PACKAGE_PIN y22 [get_ports {c0_ddr4_cke[0]}]
set_property PACKAGE_PIN y26 [get_ports {c0_ddr4_cs_n[0]}]
打开xdc文件夹,将pin.txt文件中的代码替换xdc文件中的代码,如下图6-9所示
![]() |
图6-9 |
替换完保存之后直接生成比特流文件,如图6-10所示
![]() |
图6-10 |
当比特流生成完成后,连接电路并烧写比特流文件,集体步骤请参考《点亮你的led》,当比特流烧写进去后如显示一下信息,以及led[1]亮就代表测试成功。Led[0]亮时就代表测试没有通过。如图6-11所示
![]() |
图6-11 |
本教程所使用的代码以及例程都在链接中,希望对你有所帮助!
通过网盘分享的文件:ddr4.rar
链接: https://pan.baidu.com/s/1-21K77zDSkB31oEsU3woPg 提取码: k25u