1. 背景
这篇文章主要介绍了DDR3IP核的写实现。
2. 写命令和数据总线介绍
DDR3 SDRAM控制器IP核主要预留了两组总线,一组可以直接绑定到DDR3 SDRAM芯片端口,一组是留给用户端使用的,框图如图1所示。

如图1 所示的中间部分为我们调取的IP 核,user FPGA Logic 为用户端逻辑,DDR2/DDR3 SDRAM 为存储芯片。其中IP 核与存储芯片之间的总线大部分以ddr 作为开头,这部分总线我们只需要在top 模板设为端口即可,无需我们控制。用户端与IP 核之间的总线大部分以app 作为开头,并且从用户端输出到IP 核的信号线需要我们产生。
在了解了大概的框架之后,下面我们首先通过以app 为开头的总线实现对IP写控制操作。为了更好的了解相关的参数,我们可以登录Xilinx 官网下载UG586手册,具体的下载地址如下所示: https://www.xilinx.com/support/documentation/ip_documentation/mig_7serie...
通过手册我们可以了解到,为了实现写,我们需要控制app 端的命令总线和数据总线,下面先对app 端命令总线作解释,此处的input 和output 均现对于IP核而言。
| 端口名称 | 端口名称 | 端口描述 |
| app_cmd | input | 3bit命令总线,3’b000代表写,3’b001代表读。 |
| app_addr | input | 30bit地址总线(位宽根据芯片不同会不同)。 |
| app_en | input | 1bit命令使能信号,该信号有效(高电平),且app_rdy也有效时,IP核才可以接收到用户端发送的app_cmd和app_addr。 |
| app_rdy | output | 1bit命令空闲信号,该信号有效(高电平),且app_en也有效时,IP核才可以接收到用户端发送的app_cmd和app_addr。 |
在了解到命令端每一个信号的作用后,我们可以给出下图2 所示的波形,其中①、②、④处的指令均不会被IP 核接收,只有③处的指令才会被IP 接收。

app 端写数据总线中的每一根信号作用如下表所示,此处的input 和output 均现对于IP 核而言。
| 端口名称 | 端口名称 | 端口描述 |
| app_wdf_data | input | 128bit写数据总线(位宽根据芯片不同会不同),该数据包含8个需要写入DDR3芯片的数据。 |
| app_wdf_wren | input | 1bit写数据有效标志,该信号有效(高电平),且app_wdf_rdy也有效时,IP核才可以接收到用户端发送的app_wdf_data。 |
| app_wdf_rdy | output | 1bit写数据空闲信号,该信号有效(高电平),且app_wdf_rdy也有效时,IP核才可以接收到用户端发送的app_wdf_data。 |
| app_wdf_end | input | 1bit最后一个写数据的标志,该信号有效(高电平)时,代表对应的app_wdf_data为当前写的最后一个数据。 |
| app_wdf_mask | input | 16bit写数据掩码(位宽根据芯片不同会不同),该信号为写数据的掩码。 |
根据上表所描述,我们可以对app 端写时序所用到的每一根信号有一点的了解,下面给出写时序的波形。图3 中所示的①、②、④处的数据均不会被写入到IP 中,只有③处的数据才会被IP 接收。

我们对app_wdf_end 这个信号做最进一步的讲解,该信号表示的是当前突发写的最后一个数据。在A7 DDR3 控制器IP 核中,只存在突发长度为8 这种形式,因此每一次的突发均为16bit x 8 = 128bit,并且在我们调取该IP 核时,会发现DDR3 的物理层端与用户端存在两种速率关系,即4:1 和2:1。当选取速率比例为4:1 时app_wdf_data 为128bit,此时每一个发送的有效app_wdf_data 数据均为当前8 突发的第一个数据,同时也是最后一个数据,因此此时app_wdf_end 信号 与app_wdf_wren 信号同步;当选取速率比例为2:1 时app_wdf_data 为64bit,此时每一个发送的有效app_wdf_data 数据均为当前突发的4 个数据,因此此时app_wdf_end 信号与app_wdf_wren 信号如下图②所示。

3. 写命令和写数据间关系讲解
根据Xilinx UG586 手册我们可知,写命令和写数据直接存在三种逻辑关系,具体示例如图5 所示。图中①状态指的是命令和数据同时发送到IP 核,②状态指的是数据提前于命令发送到IP 核,③状态指的是命令提前于数据发送到IP 核。第①、②种情况均可稳定传输,但是第③种情况需要一个前提条件,即命令提前数据的时间不能超过两个用户端的时钟周期。因此,为了更稳定的发送数据,建议采取第①、②种发送模式,在本讲中,我们采取第②种发送方式。

编辑:hfy
-
FPGA
+关注
关注
1664文章
22553浏览量
640506 -
SDRAM
+关注
关注
7文章
460浏览量
57892 -
DDR3
+关注
关注
2文章
290浏览量
44297 -
Xilinx
+关注
关注
73文章
2208浏览量
132145 -
存储芯片
+关注
关注
11文章
1073浏览量
44900
发布评论请先 登录
Apacer 8GB DDR3 SDRAM SODIMM 内存产品解析
Apacer 2GB Registered DDR3 SDRAM DIMM 技术剖析
Apacer 8GB Unbuffered VLP DDR3 SDRAM DIMM 产品解析
Apacer 4GB Unbuffered ECC DDR3 SDRAM DIMM 产品解析
ISSI DDR3 SDRAM系列芯片深度解析
使用AXI4接口IP核进行DDR读写测试
DDR3 SDRAM控制器IP核的写命令和写数据间关系讲解
评论