MIG IP 核控制信号
IP 核创建界面
MIG IP 核(Memory Interface Generator)是用户与 DDR4 进行沟通的桥梁。直接编写 DDR4 代码内容复杂且性能难以保证,使用 Xilinx 提供的 MIG IP 核更为高效。在综合布线后查看资源利用率,MIG IP 核约使用 7500 个 LUT 和 9000 个 Register 资源,可见其复杂性。


Burst Length 参数说明
在 Memory Option 中,Burst Length 参数至关重要。对于本例中的 DDR4 芯片,Burst Length 固定为 8。DDR4 与 FPGA 常用 RAM 不同,给定地址 ADDR 并启动传输后,DDR4 会同时将 Burst Length * Data Width 大小的数据传送到数据总线上。实际传输的地址范围为 ADDR ~ ADDR + Burst Length - 1。
以图中参数为例,假设给出地址 ADDR=0 并执行读指令,一段时间后将在 8*16=128 位的数据总线上得到 0~7 这些地址单元上的数据。因此,无论是写操作还是读操作,若进行顺序读写,每次给控制器的地址均以 8 为步进,这在后续程序编写中非常重要。
IP 核控制信号
PG150 文档给出了用户接口的所有控制信号,主要分为四类:全局接口、命令接口、写接口、读接口。
全局接口

三个全局接口分别代表:
- 用户时钟 (user_clk)
- 校准完成指示 (init_calib_complete)
- 与用户时钟同步的复位信号 (aresetn)
注意:所有操作用户接口的逻辑都必须等到校准完成信号拉高后才能进行。
命令接口

命令接口用于指示 DDR 接受读取或写入命令及类型。以读命令为例:
- 将 app_cmd 设为 3'b001。
- 等待 app_rdy 信号拉高,表示 DDR 能接受读写命令。
- 拉高 app_en 并同时给出要读的地址 app_addr。
- 若干周期后,数据连同数据有效信号一起出现。
不同 app_cmd 值代表的命令如下:









