引言
近期在进行 FPGA DDR4 读写控制开发,期间查阅了大量资料。本文将聚焦于基础部分,即 DDR4 控制 IP 核 MIG(Memory Interface Generator)的核心控制信号。主要参考 Xilinx PG150 官方文档。
MIG IP 核概述
MIG IP 核是用户与 DDR4 内存沟通的桥梁。若自行编写底层代码,逻辑将极其复杂且性能难以保证。以 Xilinx MIG 为例,综合布线后约占用 7500 个 LUT 和 9000 个寄存器资源,足以说明其内部实现的复杂度。对于普通用户,掌握 MIG 提供的用户接口即可满足大部分需求。
IP 核创建界面
配置 MIG IP 核时,需关注 Memory Option 中的 Burst Length 参数。在本文涉及的 DDR4 芯片中,Burst Length 固定为 8。
DDR4 与普通 RAM 不同,给定地址 ADDR 并启动传输后,会同时传送 Burst Length * Data Width 大小的数据。实际传输的地址范围为 ADDR 至 ADDR + Burst Length - 1。例如,Burst Length=8,Data Width=16bit,则每次传输 128bit 数据,对应 8 个地址单元。因此,顺序读写时,控制器地址应以 8 为步进。这一点在后续程序编写中至关重要。


核心控制信号
PG150 文档定义了用户接口的所有控制信号,主要分为四类:全局接口、命令接口、写接口和读接口。
全局接口

包含三个关键信号:
app_clk:用户时钟。app_rst_n:复位信号,需与用户时钟同步。app_init_calib_complete:校准完成指示。
注意:所有用户接口逻辑必须等待校准完成信号拉高后才能开始操作。
命令接口
命令接口用于指示 DDR 接受读取或写入命令及类型。

操作流程通常为:设置 app_cmd 为特定值(如读命令 3'b001),等待 app_rdy 拉高表示 DDR 就绪,随后拉高 app_en 并提供地址 app_addr。若干周期后,数据连同有效信号出现。









