当前位置: 首页 > news >正文

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

wire c0_data_compare_error;

wire  c0_init_calib_complete;

assign led[0] = (c0_data_compare_error )? 1:0;

assign led[1] = (c0_init_calib_complete)? 1:0;

表6-1 需添加到顶层的代码

再通过原理图来确定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 

http://www.dtcms.com/a/121911.html

相关文章:

  • 接口测试性能指标:QPS、TPS、OTPS、TP99
  • 【深度学习基础】Temporal Fusion Transformer
  • TCP转发隧道
  • Go并发背后的双引擎:CSP通信模型与GMP调度|Go语言进阶(4)
  • K8S学习之基础七十九:关闭istio功能
  • 【c语言】倒置字符串
  • map/multimap
  • vue3项目中实现国际化语言切换【直接粘贴即可】
  • Windows找不到compiler.automake.allow.when.app.running怎么设置?
  • ArcGIS Engine开发教程--从零搭建GIS桌面应用
  • Redis学习总结(持续更新)
  • mysql之等值连接8个实例
  • 不同服务器架构(x86、ARM、Power、SPARC)对数据库使用的影响
  • 软件工程基础之设计模式
  • FFMEPG常见命令查询
  • 计算机视觉——深度学习图像处理中目标检测平均精度均值(mAP)与其他常用评估指标
  • 机器学习之PCA主成分分析详解
  • 强化学习原理二 BasicConcepts
  • 从MySQL快速上手大数据Hive
  • go游戏后端开发31:麻将游戏的碰牌与胡牌逻辑
  • 将外网下载的 Docker 镜像拷贝到内网运行
  • 【文献阅读】Capabilities of Gemini Models in Medicine
  • Quill富文本编辑器支持自定义字体(包括新旧两个版本,支持Windings 2字体)
  • MyBatis 动态 SQL 使用详解
  • MCP 服务搭建与配置学习资源部分汇总
  • 【CSS 选择器组合规则详解】
  • 2025-04-09 吴恩达机器学习6——神经网络(1):介绍
  • Spring Boot 3.x 中 WebClient 全面详解及示例
  • 文件上传漏洞原理学习
  • Synexens上海矽印 SP10 基于 DTOF 技术的单点激光雷达