本文对 Xilinx Vivado 中提供的 DDR3 控制器 IP 核模块进行例化,实现基本的 DDR3读写操作。并使用在线逻辑分析仪查看有规律变化的 DDR3 数据读写时序。
1.DDR3控制器IP接口时序
DDR3 控制器 IP 核用于衔接 DDR3 芯片和 FPGA 的用户逻辑,DDR3 控制器与 FPGA 用户逻辑之间有一套简单易用的接口,以下为User Interface 的基本时序。
1.1 Command 时序
首先,关于 User Interface 的 Command 时序,Xilinx 的用户手册中只给出如图所示的波形。简单的来讲,app_cmd 和 app_addr 有效,且 app_en 拉高,app_rdy 拉高,则该命令成功发送给 DDR3 控制器;若是在 app_cmd、app_addr 和 app_en 都有效时,app_rdy为低,那么必须保持 app_cmd、app_addr 和 app_en 的有效状态直到 app_rdy 拉高,那么该命令才算是成功发送给DDR3控制器。
User Interface 的 Command 时序波形
1.2数据写入时序
对于单次的数据写入 DDR3 控制器,用户手册中给出如图所示的时序波形。这里对应写入 command 发起的前后有 1、2 和 3 不同时间的 Data Write 时序,也就是说,数据比 command 早一点或晚一点写入都是可以的。
User Interface 的写数据时序波形
对于“数据比 command 早一点或晚一点写入都是可以的”这句话,用户手册中提到