Xilinx的DDR4 IP

        这几天在做xilinx的DDR4 IP的faga实现,记录一下。话不多说,直接进入正题,前面的IP生成流程带一下:左侧IP Catalog后搜索DDR4,选择DDR4 SDRAM(MIG),点进去配置(工具是Vivado2021):

        1.Basic如下图:

Xilinx的DDR4 IP_第1张图片

                  Xilinx的DDR4 IP_第2张图片 

上图中需要注意和配置的是:

1.controller/PHY Mode:选择你需要的DDR的类型,是control加phy,还是只用phy,或者是phy加Pingpang,一般选择Controller and physical layer,如果要接入到AXI总线,选择AXI4 interface。

2.memory device interface speed:选择DDR4内部运行时钟,框中填写的是DDR4的单时钟周期。例如选择1600ps的话,频率就是1000000000000/1600=625Mhz。我们这里选择625M。

3.PHY to controller clock frequency ratio意思是DDR与phy的频率比,这里一般选择默认的4:1,细想一下DDR通常是双沿采样,频率选择4:1的话,实际上总线上面走一拍的数据,实际上DDR已经读取或者写入了4次。

4.reference input clock speed:定义DDR4 IP核的输入参考时钟周期,这里我们设置100M。

5.configuration and memory part:选择DDR的类型和memory的型号,这个需要在DDR的手册上面去查找它的具体类型和型号。

DIMM:双列直插式存储模块,是指奔腾CPU推出后出现的新型内存条,提供了64位的数据通道。

SO-DIMM:小外形双双列直插式内存模块,是一种采用集成电路的计算机存储器。

我么这里选择SODIMMS。memory的具体类型选择MTA8ATF1G64HZ-2G3。

6.slot:单插槽还是双插槽,我们用的是19P的板子试单插槽,选择single。

8.Data Width:由所选用的DDR颗粒数据宽度和数量决定,若DDR颗粒位宽为16bit,共选用4片DDR4,那么此处数据位宽为64。我们选用的是金士顿的DDR,8个颗粒每个颗粒是8bit,总位宽64bit。

9.Force Read and Write commands to use AutoPrecharge,enable autoprecharge input,enable user refresh and ZQCS input:此三个选项需要对DDR、自身应用程序有较深的认识时勾选,目的在于提高读写的效率,由用户自行控制预充电、自刷新、ZQCS保持命令。当不勾选时,IP核自动控制预充电、刷新、ZQCS命令,默认不勾选。

2.AXI options如下图:

Xilinx的DDR4 IP_第3张图片

        这里是对DDR与总线的AXI相连的一些位宽的选择,只需要注意第一个数据的位宽要和前面DDR的位宽相对应,

        Arbitration scheme 仲裁机制,影响不同的ID访问的调度策略,一般选择默认的RD PR IREG.

3.Advanced clock如下图:

Xilinx的DDR4 IP_第4张图片

这里需要注意一下的是:DDR可以最多生成4个同步时钟给其他的设计用,并且可以配置频率。后面的两项Advanced Option 和I/O planing基本不需要配置。就不在赘述。

        我用的DDR是金士顿的KVR26S19S8/8-SP,FPGA是XCVU19P。

你可能感兴趣的:(Verilog,Xlinx,fpga开发,verilog)