XILINX XAPP702 User Manual

R
XAPP702 (v1.6) 2006 年 2 月 22 日
应用指南:Virtex-4 系列
使用 Virtex-4 器件实现的 DDR2 的控制器
作者:Lakshmi Gopalakrishnan
提要
简介

DDR2 SDRAM 器件概述

DDR2 SDRAM 器件提供了比 DDR SDRAM 指标所要求的更好的新功能,并允许 DDR2 器件在 400
Mb/s 或更高的数据率下运行。高数据率要求 FPGA 中的控制器和 I/O 具备更高的性能。控
制器的运行须与存储器的操作速度同步,以获得所需带宽。
本应用指南描述了在 Virtex™-4 器件中实现 267-MHz DDR2 控制器,并与 Micron DDR2 SDRAM 器件接口。本技术文档简要介绍了 DDR2 DDR2 存储器接口时控制器的运行情况,并描述了此控制器后端用户接口。使用 Verilog 编写的 参考设计可以从
概述部分介绍 DDR2 SDRAM 器件所具有的功能,作为下一代 DDR 器件与上一代之间的主要区 别。
DDR2 SDRAM 器提供的差分时钟运行。命令在时钟的每个正边沿寄存。双向数据选通脉冲 (DQS) 与接收端中 的用于采样的数据一起传输。在读时 DQS 由 DDR2 输。DQS 与用于读的数据边沿对齐,与用于写的数据中心对齐。
对 DDR2 SDRAM 器件的读和写访问为突发式;访问以激活命令寄存开始,然后是读或写命令。 在激活命令下寄存的地址位用于选择要访问的组和行。在读或写命令下寄存的地址位用于为突 发访问选择组和起始列位置。
DDR2 控制器设计包括一个用户后端接口,用于生成写地址、写数据和读地址。这些信息存储 在四个异步的 FIFO 中,以实现后端和控制器模块间的地址和数据同步。根据 FIFO 中数据的可 用性和命令逻辑块发出的命令,控制器会考虑存储器的计时要求,然后向存储器发出正确命令。
Xilinx 网站下载。
器件采用 SSTL 1.8V I/O 标准,利用 DDR 架构实现高速运行。存储器使用此控制
SDRAM 器件的功能,详细说明了与高速
SDRAM 器件传输,而在写时则由控制器传
© 2004–2006 Xilinx, Inc. All rights reserved. All Xilinx trademarks, registered trademarks, patents, and further disclaimers are as listed at http://www.xilinx.com/legal.htm. All other trademarks and registered trademarks are the property of their respective owners. All specifications are subject to change without notice.
NOTICE OF DISCLAIMER: Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this feature, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any warranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose.
XAPP702 (v1.6) 2006 年 2 月 22 日 www.xilinx.com/cn 1
R
DDR2 SDRAM 器件概述

控制器发出的 DDR2 命令

表1
列出了控制器发出的命令。这些命令是存储器使用下列控制信号探测到的:
行地址选择 列地址选择
写使能
时钟使能
芯片选择
表 1:
DDR2 命令
(WE)
(CKE) (CS)
(RAS) (CAS)
信号
在整个器件配置过程中和器件配置后设定为 High
在整个器件运行过程中设定为 Low
选择 功能
1
2
3
4
5
6
7
注:
1. 地址信号 A10 在预充电所有组期间设定为 High,在单个组预充电期间设定为 Low。
加载模式 (Load Mode)
自动刷新 (Auto Refresh)
预充电 (Percharge)
(1)
组激活 (Bank Activate)
写 (Write)
读 (Read)
空操作 / 空闲 (No Operation/IDLE)
行地址
选择
LLL
LLH
LHL
LHH
HLL
HLH
HHH
列地址
选择

模式寄存器

模式寄存器 (MR) 用于定义 DDR2 SDRAM 的具体运行模式,
发类型、
CAS 延迟 (CAS Latency) 和运行模式的选择。图1 所示为控制器所使用的模式寄存器
的功能。
BA1 BA0
00
A12 A11 A10
PD WR
A9 A8
DLL
A7 A6TMA5 A4
CAS# Latency
包括突发长度(Burst Length
A3 A2BTA1 A0
写使能
信号
Burst Length
)
、突
A2 A1 A0 Burst Length
010 4
011 8
Others Reserved
A6 A5 A4 CAS Latency
010 2
A11 A10 A9 Write Recovery
00 1 2
01 0 3 01 1 4
10 0 5
10 1 6
Others Reserved
图 1:
2 www.xilinx.com/cn XAPP702 (v1.6) 2006 年 2 月 22 日
011 3 100 4
101 5
Others Reserved
x702_01_091305
模式寄存器
DDR2 SDRAM 器件概述
R
组地址 BA1 和 BA0 用于选择模式寄存器。
表 2:
组地址位配置
BA1 BA0 模式寄存器
00MR
01EMR1
10EMR2
11EMR3
表2
所示为组地址位的配置。

扩展模式寄存器

扩展模式寄存器 (EMR) 控制除 MR 支配的功能之外的其他功能。如 有:DLL 阻抗校准
表 3:
扩展模式寄存器
BA1 BA0 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 1输RDQSDQS
DDR2 SDRAM
使能 / 无效、输出驱动力、
(OCD) 、
DQS
使能 / 无效、
OCD 程序 R
参考设计使用一个为 0 的 AL。该设计中未采用 OCD。
片上终端
RDQS/RDQS
TT
(ODT)、Posted CAS 附加延迟 (AL)、
使能 / 无效、输出无效 / 使能。
Posted CAS R
表3
所示,这些附加功能
TT
片外驱动器
ODS DLL

扩展模式寄存器 2 (EMR2)

组地址设为 10,此处的 BA1 设为 High,BA0 设为 Low。地址位全部设为 Low。
扩展模式寄存器 3
组地址位设为 11,此处的 BA1 和 BA0 设为 High。
(EMR3)
地址位全部设为
Low

初始化顺序

此控制器状态机使用的初始化顺序遵循 DDR2 SDRAM 指标。 在功率稳定的情况下,在有效时钟 (CK, CK#) 后至少 200 令,之后时钟使能 (CKE) 被设定为 HIGH。以下是初始化命令的发送顺序
1.
CKE 被置位为 HIGH 之后至少 400 ns,发出 PRECHARGE ALL 命令。
2. 随后,设定 BA0 为 LOW、BA2 为 LOW、BA1 为 HIGH,发出 EMR(2) 命令。
3. 设定 BA0 为 HIGH、BA1 为 HIGH、BA2 为 LOW,发出 EMR(3) 命令。
4. 设定 A0、BA1 和 BA2 为 LOW,发出 EMR 命令,将存储器 DLL 置为使能。BA0 设定为 HIGH。
5. 设定 A8 为 HIGH,BA0、BA1 和 BA2 为 LOW,发出模式寄存器设置 (MRS) 命令,以复位 存储器 DLL。
6.
发出 Precharge ALL 命令。
7. 发出两个自动刷新命令。
8.
最后,设定 A8 为 LOW,发出 MRS 命令。用运行参数对器件进行初始化时需要此命令(无 DLL 复位)。
9.
完成步骤 8 后至少 200 个时钟,执行 OCD 校准 ( OCD 校准,则发出一个带默认 OCD 命令 (A9=A8=A7=1) 的 EMR,随之发出带 OCD 命令 的 EMR。
DDR2 SDRAM 器件现在可以开始正常运行了。
该接口须满足存储器的电压要求。
μs
中,应用 NOP 或 DESELECT 命
:
片外驱动器阻抗调整)。
如果未使用
XAPP702 (v1.6) 2006 年 2 月 22 日 www.xilinx.com/cn 3
R
DDR2 SDRAM 器件概述
完成此系列操作后,控制器向 DDR2 SDRAM 发出虚拟读命令。在虚拟读期间,数据通路模块使 用存储器发出的 DQS 来判断进入的 DQS 和内部系统时钟 CLK0 之间的关系。数据通路模块决 定 DQS 与系统时钟对齐所需时间后,控制器开始读使能校准。
DQ/DQS
校准后,控制器
发出
模式写命令,以针对存储器器件写已知模式。随后,在已知模式 写到的位置,读命令发出。读回的数据能帮助计算读命令和接收数据之间的时钟周期延迟情况。 这一计算信息将被寄存,用于在正常读操作时生成读使能。
此读使能校准在 data_write 和 rd_data 模块中实现。在模式写过程中,控制器向存储器发出写 命令,在 data_write 模块中生成已知写数据模式。在模式读过程中,控制器向相同位置发出读 命令,生成 ctrl_rden 信号。该信号被延迟以对齐从存储器中收到的读数据。此延迟逻辑在 pattern_compare8 模块中实现。被延迟的 ctrl_rden
在正常读操作中使用。pattern_compare8 模块置位 COMP_DONE 信号,向控制器表明读使能校准已完成。控制器模块现在即可开始正常 读 / 写操作了。
存储器接口发生器 (MIG) 工具 (1.5 版)为每组生成一个读使能逻辑 块)。如果组有四个数据位,MIG
工具将生成一个 Pattern_Compare4 模块。
Pattern_Compare8 模

预充电命令

预充电命令用于取消特定组中开放的行的活动状态。在预充电命令发出的一定时间 (tRP) 后, 此组在接下来的行激活命令中可以使用。 输入 A10 确定组 ( 一个或全部 ) 是否需要预充电。

自动刷新命令

DDR2 器件需每 7.8μs刷新一次。 DCM 的
CLKDV 输出,为自动刷新计数器提供所需的低频时钟。要节省 DCM 的 CLKDV 输出使 用的 BUFG,设计者可以使用 DCM 的高频 CLK0 输出或 DCM 的 CLK/4 输出(用于 IDELAY 电 路)为刷新计数器计时。如果自动刷新电路的时钟改变,mem_interface_top_parameters_0.v 文件中的 max_ref_count 也应做相应改变。
auto_ref
信号标志出发出自动刷新命令之需。在控制器发出自动刷新命令之前,此信号一直为 High。在发出自动刷新命令前,控制器要完成当前活动组中的操作。
要求自动刷新计数器的电路放置在控制器内。
控制器使用

激活命令

需要先使用激活命令激活 DDR2 SDRAM 存储器内某个组中的某一行,然后才能向该组发送读或 写命令。行被激活后,读或写命令就可以按照 Posted CAS AL。这些器件可以使读或写命令在 时钟周期延迟内部器件对读或写命令的实际寄存时间。 写命令时,支持
CAS AL。
当控制器发现进入的地址所指向的组内行并非当前活动的行时,即会发出地址冲突信号。控制 器随之发出预充电命令停用活动行,同时向新的行发出激活命令。
t
指标发送到行。DDR2 SDRAM 器件也支持
RCD
t
指标规定的时间之前发出,方法是利用 AL
RCD
DDR2 控制器在激活命令之后发出读或
4 www.xilinx.com/cn XAPP702 (v1.6) 2006 年 2 月 22 日
Loading...
+ 9 hidden pages