XILINX DDR4 SDRAM(MIG)笔记1(基于VU250 board)https://blog.csdn.net/linpeng_9527/article/details/105451043
XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)https://blog.csdn.net/linpeng_9527/article/details/105596704
一句话:使用以下配置,保证你的IP直接上板能work,不用仿真!!!欢迎点赞
FPGA型号:Xilinx VU250 board
IP版本:V2.2
数据手册:https://www.xilinx.com/support/documentation/ip_documentation/ultrascale_memory_ip/v1_4/pg150-ultrascale-memory-ip.pdf
先附上XDMA和MIG的整个设计拓扑
1、Basic页面
一张图截不下来,截了两张岂不是更清楚~~~
Clocking:我是这么理解的:Memory device interface speed(833ps对应1200MHz)通过PHY to controller clock frequency ratio(4:1)得到IP的输出频率c0_ddr4_ui_clk(300MHz),Reference input clock speed(2499ps对应400MHz)(从我的VU9P芯片对应板子的硬件原理图得出DDR4的参考输入也就是晶振频率为400MHz)
Controller Options:
configuration:DDR类型,这里选择是是components;
memory part:选择真实用的的DDR型号,我这里用的是MT40A1G8WE-075E;
data width:IP上c0_DDR4接口的数据位宽,可以设置成8/16/32/64/72,设置成多少位就要进行多少位的pin约束;此外,注意当选择8/16/32/64的时候IP上没有“C0_DDR4_S_AXI_CTRL”接口,当选择72的时候会多出来这个接口,这个接口怎么连接?输入接constant 0,输出为空即可;
Memory Address Map:内存地址映射,对于用户来说好像没区别;
Ordering:默认是normal,建议选择strict;
其余参数保持默认即可;
2、AXI Options页面
Data Width:按照需要设置即可;
ID Width:按照需要设置即可,啥?什么需要?当然是MIG IP前面的AXI Interconnect IP的拓扑决定这里的ID位宽;
Address Width:和FPGA DDR大小相关,4G对应32bit,8G对应33bit;
此外,一般选择支持AXI Narrow Burst;
3、Advanced Clocking页面
System Clock Option:此处用的是差分时钟
IP输出时钟频率c0_ddr4_ui_clk,为300MHz,等于tck/4,tck就是basic页面的Memory device interface speed(833ps对应1200MHz);
IP输入参考时钟频率C0_SYS_CLK,400MHz;
5、Advanced Options
保持默认配置即可;
6、I/O Planning and Design Checklist
保持默认即可;
7、说明一点:
IP输出的c0_ddr4_ui_clk和c0_ddr4_ui_clk_sync_rst经过一个Processor System Reset IP后的复位连接到IP的c0_ddr4_aresetn。
8、提示一个深坑:不要将c0_init_calib_complete信号用作任何全局复位!!!连接Processor System Reset也不行!!!you can try