尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

157.FPGA DDR3 MIG UI 接口精讲:命令数据流水读写,完整可上板工程

157.FPGA DDR3 MIG UI 接口精讲:命令数据流水读写,完整可上板工程 摘要接口设计是FPGA工程落地的核心能力。本文以DDR3控制器接口为靶向,从物理层时序收敛、Bank分组策略、用户逻辑与IP核握手协议三个维度,拆解一个可直接运行的读写验证工程。文章不涉及抽象理论堆砌,全部代码基于Xilinx 7系列平台,经过综合与行为仿真验证。读者可依循步骤,在自身工程中复刻并扩展。应用场景FPGA接口设计覆盖以下高频场景:高速数据采集系统:ADC采样数据经FPGA写入DDR3缓存,再经PCIe或以太网上位机。视频图像处理:多路视频流需要帧缓存,DDR3作为帧缓冲器,要求读写带宽均衡。软件无线电:基带IQ数据实时存储与回放,接口延迟抖动必须控制在纳秒级。嵌入式软核系统:MicroBlaze或RISC-V软核通过AXI总线访问DDR3,接口时序直接影响CPU主频。上述场景的共同诉求是:接口必须稳定、可复现、可调试。本文以DDR3用户接口为例,提供一套从IP配置到上板验证的闭环路径。核心原理1. 物理层与用户层解耦Xilinx DDR3 IP(MIG)将复杂的DRAM物理层时序(tRCD、tRP、刷新周期)完全封装。用户只需操作一个简单的AXI4或UI(User Interface)接口。UI接口包含三组信号:写通道:app_cmd、app_addr、app_wdf_data、app_wdf_wren、app_wdf_end。读通道:app_rd_data、app_rd_data_valid。握手信号:app_rdy、app_wdf_rdy、app_en。核心逻辑在于:app_rdy与app_wdf_rdy同时拉高时,用户命令与数据才被真正采样。这是典型的源同步握手,任何一侧未就绪,数据必须保持稳定。2. 命令与数据并行流水DDR3写入操作中,命令(app_cmd+app_addr)与数据(app_wdf_data)在时间上可以错开。MIG内部有写数据FIFO,允许命令先发,数据后到。但为了简化设计,本文采用命令与数据同拍发送,规避FIFO半满状态判断。3. 读写冲突仲裁多端口访问DDR3时,必须引入仲裁器。本文设计一个简单的优先级固定仲裁:写优先。实际工程建议使用轮询或加权轮询,避免写淹没读。详细步骤步骤1:MIG IP核配置在Vivado中创建DDR3 MIG IP,关键参数如下:控制器类型:DDR3 SDRAM。工作频率:400MHz(数据率800Mbps)。接口类型:UI(User Interface)。数据位宽:64位(UI侧),物理侧为16位DDR3颗粒。地址位宽:UI侧27位(行14位,列10位,Bank3位)。突发长度:8(固定,MIG内部固定为8)。输入时钟:200MHz差分时钟(由板载晶振提供)。步骤2:用户逻辑架构设计设计一个顶层模块,内部例化MIG IP和用户读写状态机。状态机包含五个状态:IDLE:等待外部触发信号。WRITE:连续写入256个数据(地址从0到0x3FF)。WAIT_WRITE_DONE:等待写命令FIFO排空。READ:连续读回256个数据。COMPARE:比对读回数据与写入数据。步骤3:时序约束在XDC文件中必须约束:输入时钟:create_clock -period 5.000 [get_ports clk_200m_p]。MIG生成的约束文件自动添加,用户不得修改。若跨时钟域(如用户逻辑工作在100MHz,UI接口在400MHz),必须使用MIG提供的ui_clk作为用户逻辑主时钟。完整可运行代码以下代码基于Vivado 2020.2,芯片型号xc7a35ticsg324-1L。// 模块:ddr3_interface_test // 功能:DDR3读写全链路验证 // 平台:Xilinx Artix-7 + MIG 7 Series // 时钟:ui_clk(由MIG输出,频率400MHz) module ddr3_interface_test( input wire sys_clk_200m_p, // 200M差分时钟正极 input wire sys_clk_200m_n, // 200M差分时钟负极 input wire
返回列表