本节目录
一、DDR4测试的设计框架
二、FDMA的接口
三、DDR4的读写模块
四、仿真
五、往期文章链接
本节内容
一、DDR4测试的设计框架
通常在FPGA开发过程中,涉及到大数据的存储使用,均会引入DDR内存的读写。第一版的硬件开发,需要配合硬件进行DDR的读写测试,当然,如果仅仅依据ddr的自校准信号来评判ddr内存的读写ok,并不能说服。
对于DDR的内存地址读写,有两种思路,一种是基于软核的读写测试,通过串口打印测试报告来查看,这种方式是基于C语言的DDR的地址写入与读取,并显示对应的测试结果;另一种是在PL侧开发对应的逻辑代码,从而实现DDR内存地址的全遍历读写测试,比对写入和输入的数据,从而实现测试。当然,支持中断启动读写测试的方式,实现DDR4遍历读写测试,并通过内部寄存器获取关键的测试结果与报告。
以下是简单的测试框架,ddr4_rw_fdma是预留的fdma的读写数据接口,用于DDR4遍历读写测试。至于用户侧,同样预留了fdma的读和写接口,这样方便与独立开发。通过xilinx的axi interconnect的rr调度,从而实现axifull接口的仲裁。
二、FDMA的接口
DMA,内存直接访问,共享DDR内存空间,不同模块实现DDR的数据的读写。
FDMA,可以理解为帧格式的DMA操作,一种简易的DMA的操作方式,将AXIfull接口数据转换成读写测试数据接口,开放给用户侧使用,开发者使用相对方便,对于逻辑处理也更简单,不需要关注AXIfull的内部通道,比如:读通道,写通道,写响应等。
fdma的写通道,转换为axifull的写地址通道、写数据通道、写响应通道。fdma的读通道,转换为axifull的读地址通道、读数据通道。这样的好处,就是FPGA开发者使用fdma的读写通道就可以实现数据的读写,毕竟接口简单,逻辑处理就相对容易和轻松。若追求高性能的dma,需要自己去开发对应的DMA的操作方式。
三、DDR4的读写模块
DDR4的读写测试,通过一个读写模块实现,主要是模块的状态机来实现。
第一步:等待DDR4的上电自校准ok;
第二步:对DDR4的全地址写入数据,64bit的数据位宽,一个地址对应一个字节,也就是对应4个地址叠加。每四个地址叠加后写入对应的64bit的数据。
第三步:对DDR4的全地址读出,同时与每四个地址叠加后的数据进行比对,并将错误数据计数。
一些关键的接口数据
i_ddr4_calib_ok表示DDR4的ip核自校准功能是否ok;
i_ddr4_test_boot表示通过寄存器启动遍历读写测试,注意需在o_ddr4_test_finish结束的时候才会生效,并且脉冲生效;
o_ddr4_test_finish表示当前此轮DDR4读写测试结果;
o_error_cnt表示当前此轮DDR4读写测试结果中异常数据。
四、仿真
①表示上电DDR4自校准结束后,会自动启动一次遍历读写测试。
②表示通过寄存器控制启动DDR4读写测试。
仿真对部分地址进行的验证,上板对全地址进行验证。
可以通过结束信号和错误计数来判断测试结果,从而辅助验证硬件设计是否ok。
当然,还可以指定地址读写测试等等,这些算是自定义功能开发,其实只要基于FDMA进行二次开发,就可以实现各种DDR4的读写测试功能。
五、往期文章链接
UltraScale+FPGA中Serdes的多lane对齐异常解决方案
vivado时序报告中slack是如何计算的?如何优化时序?
UltraScale+FPGA中GTY的TX路径时钟详解——以40G的ETH MAC IP为例
vivado时序优化——约束异步时钟组set_clock_groups
基于FDMA和AXI4接口的DDR4遍历读写测试
基于fpga的图像处理之3x3_5x5算子模板设计
基于fpga的图像处理之3x3_5x5算子模板中值排序
基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)
AXI协议之AXILite开发设计(一)
AXI协议之AXILite开发设计(二)
AXI协议之AXILite开发设计(三)
AXI协议之AXILite开发设计(四)
AXI协议之AXILite开发设计(五)
FPGA和Matlab的FFT功能验证(一)
FPGA和Matlab的FFT功能验证(二)
FPGA和Matlab的FFT功能验证(三)
跟小灰灰一起学vivado:7系列FPGA的MultiBoot和Fallback功能更新固件
跟小灰灰一起学vivado:7系列FPGA配置模式之配置数据文件格式和配置时序步骤
跟小灰灰一起学vivado:7系列FPGA配置模式之主SPI四路(x4)
跟小灰灰一起学vivado:PCIe XDMA实现远程更新FPGA固件
Xilinx UltraScale+DDR4项目开发(一)——DDR4 MIG的ip接口信号
Xilinx UltraScale+DDR4项目开发(二)——DDR4 MIG的时钟网络
Xilinx UltraScale+DDR4项目开发(三)——DDR4器件选型与MIG IP的配置
低速接口项目之串口Uart开发(一)——串口UART
低速接口项目之串口Uart开发(二)——FIFO实现串口数据的收发回环测试
低速接口项目之串口Uart开发(三)——串口发送模块和接收模块
低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制
低速接口项目之串口Uart开发(五)——QT实现Uart串口寄存器读写工具
低速接口项目之串口Uart开发(六)——zynq系列ps-pl端uart实现共享Axilite内部寄存器的读写
低速接口项目之串口Uart开发(七)——如何在FPGA项目中实现自适应波特率串口功能
低速接口项目之串口Uart开发(八)——如何通过ps侧的串口实现zynq的在线升级(一)
低速接口项目之串口Uart开发(九)——如何通过ps侧的串口实现zynq的在线升级(二)
低速接口项目之串口Uart开发(十)——基于EMIO的自定义PL串口实现zynq的在线升级