本文为CSDN博主「洋洋Young」的原创文章,原文链接:https://blog.csdn.net/sxyang2018/article/details/126590561
Xilinx 提供了 7 系列 DDR3 控制器 IP,使用该 IP 可以很方便地在设计中实现 DDR3 的读写控制逻辑。本文记录了 Xilinx DDR3 IP 的学习与调试过程,FPGA 型号为 XC7A35T。
目录
1 用户接口
在《7 Series FPGAs Memory Interface Solutions》用户手册中,Xilinx 给出了 DDR2/DDR3 存储器接口的设计说明,其中 MIS 介于用户接口与 DDR3 物理接口中间。
从上图可以看出,DDR3 控制器内部可以分为三个部分——用户接口电路(User Interface Block)、存储控制电路(Memory Controller)和物理层电路(Physical Layer)。用户接口电路与用户逻辑进行通信,物理层电路则控制 DDR3 的校准、刷新与读写操作。
在 FPGA 的开发过程中,主要用到了 DDR3 IP 的用户接口,因此着重学习这部分内容。
1.1 地址与指令通道
地址与指令通道用于发送读写地址和操作指令,包括四个端口:app_addr, app_cmd, app_en 和 app_rdy,其中 app_cmd 占 3 bit,写操作指令为 000,读操作指令为 001。
手册中关于这四个端口的说明如下:
app_rdy 是 MIS 输出的指示信号,app_rdy 为高电平时表示地址与指令通道处于空闲状态。只有 app_en 和 app_rdy 同时为高电平时,DDR3 操作指令才被接收。
1.2 写数据通道
写数据通道用于传输待写入 DDR3 的数据,包括五个端口:app_wdf_data, app_wdf_end, app_wdf_mask, app_wdf_wren 和 app_wdf_rdy。
手册中关于这五个端口的说明如下:
app_wdf_rdy 是 MIS 输出的指示信号,app_wdf_rdy 为高电平时表示写数据通道处于空闲状态。只有 app_wdf_wren 和 app_wdf_rdy 同时为高电平时,DDR3 写数据才被接收。
1.3 读数据通道
读数据通道用于传输从 DDR3 读出的数据,包括三个端口:app_rd_data, app_rd_data_end 和 app_rd_data_valid。
手册中关于这三个端口的说明如下:
app_rd_data_valid 是 MIS 输出的指示信号,高电平时表示 DDR3 读数据有效。由于读数据是 DDR3 控制器 IP 提供,因此不需要额外的信号表示读数据通道有效。
2 DDR3 读写调试
2.1 DDR3 写操作
Xilinx DDR3 IP 单次写时序和多次写时序如下图所示。
2.2 DDR3 读操作
Xilinx DDR3 IP 单次读时序和多次读时序如下图所示。
通过在线调试可以看到,读指令发起之后,需要等待多个 ddr3 时钟周期,app_rd_data_valid 才被拉高。