XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

XILINX DDR4 SDRAM(MIG)笔记1(基于VU250 board)https://blog.****.net/linpeng_9527/article/details/105451043

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)https://blog.****.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的整个设计拓扑

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

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;

其余参数保持默认即可;

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

2、AXI Options页面

Data Width:按照需要设置即可;

ID Width:按照需要设置即可,啥?什么需要?当然是MIG IP前面的AXI Interconnect IP的拓扑决定这里的ID位宽;

Address Width:和FPGA DDR大小相关,4G对应32bit,8G对应33bit;

此外,一般选择支持AXI Narrow Burst;

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

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;

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

5、Advanced Options

保持默认配置即可;

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

6、I/O Planning and Design Checklist

保持默认即可;

XILINX DDR4 SDRAM(MIG)笔记2(基于VU9P FPGA)

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