MIG IP 核控制信号
IP 核创建界面
MIG IP 核(memory interface generator)是用户与 DDR4 进行沟通的桥梁。直接编写 DDR4 代码复杂且性能难保证,使用 Xilinx 提供的 MIG IP 核可简化操作。综合布线后查看 utilization,MIG IP 核约使用 7500 个 LUT 和 9000 个 register 资源。
这里需要解释一个重要的概念,即 memory option 中的 Burst Length 参数。对于该 DDR4 芯片,Burst Length 固定为 8。DDR4 传输时,给定地址 ADDR 启动传输后,会同时传送 Burst Length * Data Width 大小的数据。实际传输地址范围为 ADDR 至 ADDR + Burst Length - 1。例如 ADDR=0,读指令发出后,在 8 * 16 = 128 位的数据总线上得到 0~7 这些地址单元的数据。因此顺序读写时,每次给控制器的地址以 8 为步进。

IP 核控制信号
PG150 文档给出了用户接口的所有控制信号,主要分为四类:全局接口、命令接口、写接口、读接口。
全局接口
三个全局接口分别代表用户时钟、校准完成指示,以及与用户时钟同步的复位信号。所有用户接口逻辑必须等到校准完成信号拉高后才能进行。

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

一次成功的命令传输时序如下:

注意只有三个周期的最后一个周期命令才被写入 IP 核,因为此时 app_rdy 才被拉高。app_autoprecharge 信号通常不需要操作,除非额外设置以在同一 bank 中提高读写效率。
写接口
app_wdf_data 为写数据总线。app_wdf_rdy 相当于写操作的 app_rdy。只有当 app_rdy 和 app_wdf_rdy 同时为高时,写命令才有效。app_wdf_wren 拉高表示当前数据总线上的数据是要写入的数据。app_wdf_mask 为屏蔽位,被写入为 1 的字节不会被写入 DDR。app_wdf_end 表示当前时钟周期是写入数据的最后一周期。实际应用时将其与 app_wdf_wren 连到一起即可。



