前言
本文总结 FPGA DDR4 读写控制中 MIG IP 核的基础控制信号。
主要参考内容:【正点原子】MPSoC-P4 之 FPGA 开发指南_V2.0,[XILINX] pg150-ultrascale-memory-ip-en-us-1.4
MIG IP 核控制信号
IP 核创建界面
MIG IP 核(memory interface generator)是用户与 DDR4 进行沟通的桥梁。如果直接编写 DDR4 代码,内容将非常复杂且性能难以保证。以 XILINX 提供的 MIG IP 核为例,在综合布线后查看 utilization,能发现 MIG IP 核足足使用了约 7500 个 LUT 和 9000 个 register 资源,足以看出其编写的复杂程度。对于普通用户,能够操作 MIG 提供的用户接口即可。


这里需要解释一个重要的概念,即 memory option 中的 Burst Length 参数。在上图所示的 DDR4 芯片中,其固定了 Burst Length=8。DDR4 速度快且容量高,与 FPGA 中常用的 RAM 不同。当给定地址 ADDR 并启动传输后,DDR4 内存会同时将 Burst LengthData Width 大小的数据一起传送到数据总线上,其真正传输了数据的地址范围也就是 ADDR~ADDR+Burst Length-1。以图中的参数为例,假设给出了地址 ADDR=0 并给出读数据指令,在一段时间后,就会在 816=128 位的数据总线上得到 0~7 这些地址单元上的数据。因此,无论进行写操作还是读操作,假设都是顺序读写,每次给控制器的地址都是以 8 为步进的,这点在后续程序编写中很重要。
IP 核控制信号
接下来开始正式看 MIG 的控制信号以及相关时序。PG150 中给出了用户接口的所有控制信号,如下图:


图中标黄的信号是主要关注的,大致分为四类:全局接口,命令接口,写接口,读接口。
全局接口

三个全局接口分别代表着 MIG 给用户使用的用户时钟,校准完成指示,以及与用户时钟同步的复位信号。这里要注意所有的操作用户接口的逻辑都必须等到校准完成信号拉高后才能进行。
命令接口
第二类接口是命令接口:











