F7--DDR4的读写测试-2023-08-11

1.场景

        7系列的FPGA芯片不支持DDR4,使用DDR4需要更高性能的FPGA芯片,这里用到Kintex ultrascale+是支持DDR4的,具体FPGA芯片是XCKU3P-2FFVA676I,DDR4的颗粒为MT40A512M16LY- 075E时钟频率为750MHz-1333MHz,单颗容量为1GB,此处测试2个板贴DDR4颗粒,用到的还是MIG IP。与7系列MIG IP相比,IP的配置上有些许不同,但信号极其含义上基本一致。测试场景中,写入0-1000的数据,读出时计数,计数值与读出数据一致则认为没有错误,并用LED显示结果,没有错误的情况下,则认为读写测试通过。实际使用中,应该测试最大容量,最大速度的情况。对应工程连接    MIG的接口信号与DDR3基本一致,参见F1--DDR3的应用总结。需要注意IP核的复位信号DDR3的是低电平复位,DDR4是高电平复位。 

2.IP核配置

        第一页的配置如下图所示。其中,A处代表Mode and Interface:控制器的模式和接口选项,可以选择AXI4接口或者普通模式,并生成对应的PHY组件;B.DDR4IO上的时钟速率(周期),计算传输速率因为是DDR双沿传输要乘2。C.代表IO时钟与用户时钟的关系,选择4:1,代表用户时钟为250MHz,每1000ps要传输两个(DDR的原因)32bit(这里有两颗DDR4颗粒 16*2=32),而一个250MHz周期是4000ps,因此一个4000psDDR4有8次传输,这是为啥用户界面每次需读写8倍的数据宽度。这里两片DDR4要写32*8=256bit。D处选择参考时钟100MHz,这个具体看硬件设计,这里保持与硬件上的系统时钟一致。F处要选择对应的封装,颗粒就选component,G处选择相应的颗粒型号,如果列表中没有,就要在E处勾选,自己写好DDR4参数存到csv文件中进行导入,点击“here”会跳转到xilinx官网,下载响应模板,后文第二段介绍了其中部分参数的含义,供参考。I处会根据选择的不同时钟速率,实时调整,通常不需要配置,保持默认即可。I处clamshell topology当电路板的正面和反面都存在DDR4颗粒时(镜像对接),勾选此选项。选择此模式的原因是方便PCB布线(查看手册)。H处选择数据位宽,有颗粒物理位宽和数量决定,此处为16*2=32bit。首页中其他配置保持默认。

F7--DDR4的读写测试-2023-08-11_第1张图片

第二页,MIG可以生成时钟供其他模块使用。后面的配置按照默认即可。

F7--DDR4的读写测试-2023-08-11_第2张图片 

3.测试结果

 F7--DDR4的读写测试-2023-08-11_第3张图片

F7--DDR4的读写测试-2023-08-11_第4张图片 

 

4.自定义配置各字段含义

  1. Part type:指内存条的形式,选Component即板贴颗粒的方式。
  2. Part name:给新建配置起名字;
  3. Rank,指的是DDR内存模块中的内存芯片组。每个Rank由一组内存芯片组成,它们在内存总线上共享同一个地址线。在DDR内存中,每个Rank可以被视为一个独立的逻辑单元,具有自己的存储容量和访问速度。在读取或写入数据时,内存控制器可以同时访问多个Rank,从而提高内存的带宽和性能。
  4. StackHeight:DDR4的StackHeight指的是内存模块的堆叠高度,即内存芯片在垂直方向上的叠放数量。StackHeight为1和2表示了DDR4内存模块堆叠芯片的数量和布局方式;1时,表示内存模块的内存芯片只在一侧进行堆叠;2表示内存模块的内存芯片在两侧进行堆叠;
  5. CA Mirror指"地址镜像"(Address Mirroring)技术。在DDR4内存中,每个DRAM芯片通常包含多个地址引脚,用于对内存地址进行编码和存储。地址镜像是指在DRAM芯片中重复使用地址引脚的技术,以便在减少引脚数量的同时,实现更高的内存容量。通常情况下,DDR4内存芯片包含两个地址引脚镜像,根据芯片制造商的设计,可以达到32个地址引脚的效果。这意味着采用地址镜像技术后,DRAM芯片可以存储更多的内存地址,从而实现更高的容量。DDR4 CA Mirror是指DDR4内存模块的命令/地址(Command/Address)引脚的布局方式。当DDR4 CA Mirror为0时,意味着命令和地址引脚的布局是非镜像的。而当DDR4 CA Mirror为1时,表示命令和地址引脚的布局是镜像的。在非镜像布局中,命令和地址引脚按照从左到右的顺序排列,符合标准的DDR4规范。这种布局通常用于大多数DDR4内存模块。而在镜像布局中,命令和地址引脚的顺序与非镜像布局相反,即从右到左的顺序排列。这种布局主要用于特定的DDR4内存模块,以满足特殊的设计要求或应用需求。
  6. CS width:CS(Chip Select)宽度指的是内存模块中每个芯片选择信号的宽度,即每个芯片选择信号所占用的引脚数量。CS信号用于选择要进行读取或写入操作的内存芯片。
  7. CKE width:CKE(Clock Enable)宽度指的是内存模块中时钟使能信号的宽度,即时钟使能信号所占用的引脚数量。CKE信号用于控制内存芯片的时钟输入。
  8. ODT width:ODT(On-Die Termination)宽度指的是内存模块中内部终端电阻控制信号的宽度,即内部终端电阻控制信号所占用的引脚数量。ODT信号用于控制内存芯片的内部终端电阻,以匹配信号传输的阻抗。
  9. CK width:CK(Clock)宽度指的是内存模块中时钟信号的宽度,即时钟信号所占用的引脚数量。
  10. Memory speed grade:内存速度等级指的是内存模块的工作速度。它通常以数字表示,如DDR4-2400、DDR4-3200等,表示内存模块的最大数据传输速率。
  11. Memory density:内存密度指的是内存模块的总容量,通常以GB(Gigabytes)为单位。
  12. Component density:组件密度指的是每个内存芯片的容量,通常以Gb(Gigabits)为单位。
  13. Memory device width:内存设备宽度指的是每个内存芯片的数据总线宽度,通常以位(bit)为单位。
  14. Memory component width:内存组件宽度指的是每个内存芯片的数据总线宽度,通常以位(bit)为单位。
  15. Data bits per strobe:每个数据脉冲的数据位数,表示内存模块数据传输效率。
  16. IO Voltages:IO电压指的是内存模块的输入/输出电压
  17. Data widths:数据宽度指的是内存模块支持的数据位数
  18. Min period:最小周期,即内存模块支持的最小时钟周期。
  19. Max period:最大周期,即内存模块支持的最大时钟周期。
  20. tCKE:CKE信号的使能时间,表示CKE信号保持有效的时间。
  21. tFAW:四个不同的bank之间的最小行激活时间。
  22. tFAW_dlr:四个相邻bank之间的最小行激活时间。
  23. tMRD:最小的读写命令之间的时间间隔。

你可能感兴趣的:(FPGA积累——基础篇,DDR4,MIG,FPGA,vivado)