DDR存储控件测试分析:状态机与FDMA传输

需积分: 50 35 下载量 201 浏览量 更新于2024-08-06 收藏 2.89MB PDF 举报
"FPGA DDR测试代码状态机分析-ISO+IEC+27000-2018,Kintex FPGA DDRMIG (AXI4) 高级应用" 本文档主要介绍了一种针对FPGA中的DDR内存进行读写操作的测试代码状态机分析方法,特别适用于Kintex FPGA的DDR Memory Interface Generator (DDRMIG) 与AXI4接口。测试代码采用了状态机模型来管理数据传输,确保了高效和精确的内存访问。 1. **WRITE1状态**: 在此状态下,系统首先计算DDR内存的大小,以256MB为例,即268435456字节。考虑到AXI4协议中一次突发(burst)传输的大小通常为4096字节(32位宽),因此设置每次packet传输的大小也为4096字节。关键参数`pkg_wr_size`和`pkg_rd_size`被设置为1024,这是因为它们是以32位为单位计算的,且必须是FDMA内部AXI突发长度的整数倍。 2. **WRITE2状态**: 当`pkg_wr_areq`被设置为1并持续一个时钟周期后,系统进入WRITE2状态。此时,启动一个FDMA包传输。当`pkg_wr_last`变为1时,表示一次packet传输结束。在WRITE2状态,系统使用计数器将值写入DDR内存。 3. **READ1状态**: 进入READ1状态时,通过设置`pkg_rd_areq`为1启动一次FMDA的packet读取传输,然后进入READ2状态。 4. **READ2状态**: 当`pkg_rd_last`等于1时,表示一次read传输完成,同时地址空间的地址增加。在READ2状态,系统通过计数器对比读取的DDR数据,检查是否存在错误。 这个测试代码状态机设计的关键在于正确配置FPGA中的DMA控制器(MSXBO_FDMA),它是一个基于AXI4接口的自定义DMA控制器,简化了对DDR的读写操作。MSXBO_FDMA无需额外的驱动程序,可以直接在FPGA MIG控制器或Zynq PS/PL上使用,相比官方的DMA和VDMA,它提供了更简便的使用体验。 文档中提到的版本信息是REV2019,日期为2019年4月1日,主要更新了AXI4自定义MSXBO_FDMA的DDR读写测试和视频缓存方案的示例。该教程由常州一二三电子科技有限公司/溧阳米联电子科技有限公司提供,使用Vivado 2017.4进行开发,并提醒用户尊重版权,未经许可不得擅自摘录或修改内容。 这个文档详细介绍了如何利用状态机进行FPGA中的DDR内存读写测试,通过精心设计的状态转换和参数设置,确保了数据传输的准确性和效率。对于FPGA开发者,尤其是使用Kintex FPGA和DDR内存接口的工程师来说,这份资料提供了宝贵的实践经验。