没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
XAPP858 (v1.0) 2006 年 5 月 12 日 www.xilinx.com/cn 1
© 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.
提要 本应用指南介绍了用于实现高性能 DDR2 SDRAM 接口的控制器和数据采集技术。本数据采集
技术使用了每一个 Virtex™-5 I/O 都具有的输入串行器 / 解串器 (ISERDES) 和输出双倍数据速
率 (ODDR) 的功能。
简介 DDR2 SDRAM 接口是源同步接口,读数据和读 DQS 通过此接口以边沿对齐方式传输。如果使
用 Virtex-5 FPGA 采集这些传输数据,DQS 或数据会被延迟。在本设计中,利用 ISERDES,
读数据在延迟的 DQS 域中被采集,然后在 FPGA 中重新采集。ISERDES 的 OCLK 和 CLKDIV
输入都是由 FPGA 内部的快速时钟提供。因此,ISERDES 的 Q3 和 Q4 输出被忽略。差分 DQS
对被放置在 clock-capable 的 I/O 上,以便利用 BUFIO 时钟资源。被延迟的 DQS 读信号通过
BUFIO 时钟资源被布到对应数据的 ISERDES 时钟输入。FPGA 传输的写数据和 DQS 使用
ODDR。
本应用指南简要介绍 DDR2 SDRAM 器件的功能,并详细说明与高速 DDR2 存储器接口时,控
制器的运行情况。对控制器后端用户接口也进行了说明。
DDR2 SDRAM
概述
DDR2 SDRAM 器件是 DDR SDRAM 系列的下一代器件。DDR2 SDRAM 器件使用 SSTL 1.8V
I/O 标准。以下部分说明 DDR2 SDRAM 器件中的可用功能以及 DDR SDRAM 器件和 DDR2
SDRAM 器件的主要区别。
DDR2 SDRAM 器件使用 DDR 架构实现高速运行。存储器使用此控制器提供的差分时钟运行。
命令在时钟的每个上升沿被寄存。双向数据选通脉冲 (DQS) 与数据一起传输,而数据在接收端
被采集。DQS 是一个随路时钟,在读期间由 DDR2 SDRAM 器件传输,在写期间由控制器传
输。它与读数据边沿对齐,而与写数据中心对齐。
对 DDR2 SDRAM 器件的读和写访问均为突发式。访问开始于对激活命令的寄存,随之以读或
写命令。在激活命令下寄存的地址位用于选择要访问的组和行。在读或写命令下寄存的地址位
用于为突发访问选择组和起始列位置。
DDR2 控制器参考设计包括一个用户后端接口,用于生成写地址、写数据和读地址。这些信息
存储在三个后端 FIFO 中,以实现后端与控制器模块间的地址与数据同步。控制器会查看地址
FIFO 中是否有地址可用,然后按照存储器的时序要求向存储器发出正确的命令。下面的部分对
逻辑模块的实现细节做出了详细说明。
应用指南: Virtex
-
5 FPGA
XAPP858 (v1.0) 2006 年 5 月 12 日
Virtex-5 器件中的高性能 DDR2 SDRAM
接口
作者: Karthi Palanisamy 和 Maria George
R
2 www.xilinx.com/cn XAPP858 (v1.0) 2006 年 5 月 12 日
DDR2 SDRAM 概述
R
控制器发出的 DDR2 SDRAM 命令
表1 说明由控制器发出的命令。这些命令是存储器使用下列控制信号探测到的:行地址选择
(RAS
)、列地址选择 (CAS) 和写使能 (WE) 信号。时钟使能 (CKE) 在器件配置完成后设定为
High,而芯片选择 (CS
) 在器件运行的整个过程中设定为 Low。模式寄存器定义部分说明控制
器支持的 DDR2 命令功能。
模式寄存器定义
模式寄存器用于定义 DDR2 SDRAM 的具体运行模式,包括突发长度 (Burst Length)、突发类
型、CAS 延迟 (CAS Latency) 和运行模式的选择。图1 说明此控制器使用的模式寄存器的各项
功能。
组地址 BA1 和 BA0 用于选择模式寄存器。表2 所示为组地址位配置。
表 1:
DDR2 命令
步骤 功能 RAS CAS WE
1 加载模式 (Load Mode) L L L
2 自动刷新 (Auto Refresh) L L H
3 预充电 (Precharge)
(1)
LHL
4 组激活 (Bank Activate) L H H
5写 (Write) H L L
6读 (Read) H L H
7 空操作 / 空闲 (No Operation/IDLE) H H H
注:
1. 地址信号 A10 在 “预充电”所有组期间设定为 High,在单个组预充电期间设定为 Low。
图 1:
模式寄存器
BA1 BA0
0 0
A12 A11 A10
PD WR
A9 A8
DLL
A7 A6
TM
A5 A4
CAS# Latency
A3 A2
BT
A1 A0
Burst Length
A2 A1 A0 Burst Length
0 1 0 4
0 1 1 8
Others Reserved
A6 A5 A4 CAS Latency
0 1 0 2
0 1 1 3
Others Reserved
1 0 0 4
1 0 1 5
A11 A10 A9 Write Recovery
0 0 1 2
0 1 0 3
Others Reserved
0 1 1 4
1 0 0 5
1 0 1 6
X858_01_042006
DDR2 SDRAM 概述
XAPP858 (v1.0) 2006 年 5 月 12 日 www.xilinx.com/cn 3
R
扩展模式寄存器定义
除了模式寄存器所具备的功能之外,扩展模式寄存器 (表3) 还具有下述功能:DLL 使能 / 无
效、输出驱动力、片上终端 (On-Die Termination, ODT)、Posted CAS 附加延迟 (Additive
Latency, AL)、片外驱动器阻抗校准 (off-chip driver impedance calibration, OCD)、DQS 使能
/ 无效、RDQS/RDQS 使能 / 无效、输出无效 / 使能。本参考设计中未采用 OCD。
扩展模式寄存器 2 (EMR2)
组地址设为 10 (BA1 设为 High,BA0 设为 Low)。地址位全部设为 Low。
扩展模式寄存器 3 (EMR3)
组地址位设为 11 (BA1 和 BA0 设为 High)。与 EMR2 相同,地址位全部设为 Low。
初始化顺序
此控制器状态机使用的初始化顺序遵循 DDR2 SDRAM 规范。接口需符合存储器的电压要求。
以下是初始化命令的发送顺序。
1. 稳定功率和时钟之后,NOP 和 Deselect 命令需持续生效 200 μs。
2. CKE 置位。
3. 400 ns 后执行全部预充电命令。
4. 执行 EMR (2) 命令。BA0 设定为 Low,而 BA1 设定为 High。
5. 执行 EMR (3) 命令。BA0 和 BA1 均设定为 High。
6. 执行启用存储器 DLL 的 EMR 命令。BA1 和 A0 设定为 Low,BA0 设定为 High。
7. 执行用于复位 DLL 的模式寄存器设置命令。需要 200 个时钟周期才能锁定 DLL。
8. 执行全部预充电命令。
9. 执行两个自动刷新命令。
10. 设定 A8 为 Low,执行模式寄存器设置命令以初始化器件运行。
11. 设定 E7、E8 和 E9 等位为 1,执行 EMR 命令以将 OCD 设为默认。
12. 设定 E7、E8 和 E9 等位为 0,执行 EMR 命令以将 OCD 设为退出。
初始化顺序完成后,控制器会先后向 DDR2 SDRAM 存储器发出虚写和虚读,供数据通路模块
从 Virtex-5 输入延迟模块中选择正确的 tap 数。数据通路模块确定所需延迟 tap 的正确数量,
然后向控制器发出 dp_dly_slct_done 有效信号。随后,控制器进入空闲状态。
表 2:
组地址位配置
BA1 BA0 模式寄存器
0 0 模式寄存器 (MR)
01EMR1
1 0 EMR2
11EMR3
表 3:
扩展模式寄存器
BA1BA0A12A11A10A9A8A7A6A5A4A3A2A1A0
0 1输出RDQSDQS OCD 程序 R
TT
Posted CAS R
TT
ODS DLL
4 www.xilinx.com/cn XAPP858 (v1.0) 2006 年 5 月 12 日
DDR2 SDRAM 概述
R
预充电命令
预充电命令用于取消特定组中活动行的活动状态。在预充电命令发出的一定时间 (t
RP
) 后,此
组在接下来的行激活命令中可以使用。输入 A10 确定组 (一个或全部)是否需要预充电。
自动刷新命令
DDR2 器件需每 7.8 μs 刷新一次。用于标记自动刷新命令的电路嵌在控制器内部。控制器使用
一个 16 分频的系统时钟来驱动刷新计数器。置位后,auto_ref 信号用来标记自动刷新命令的需
要。上一个自动刷新命令过 7.8 µs 后,auto_ref 信号被设为 High。随后,控制器会在完成当前
突发传送后发出自动刷新命令。自动刷新命令在此控制器设计中拥有最高优先级。
激活命令
必须先使用激活命令激活 DDR2 SDRAM 存储器内某个组中的某一行,然后才能向该组发送读
或写命令。行被激活后,读或写命令就可以按照 t
RCD
指标发送到行。DDR2 SDRAM 器件还支
持 Posted CAS 附加延迟;它们允许在 t
RCD
规定的时间之前发送读或写命令,方法是使用附加
的延迟时钟周期来延迟读或写命令寄存到内部器件中的实际时间。
一旦探测到冲突,控制器会发出一个预充电命令,取消当前活动行的活动状态,然后发送另一
个激活命令到新行。当输入地址指向某个组内的非活动行时就会出现冲突。
读命令
读命令用于发起对活动行的突发式读访问。BA0 和 BA1 上的值决定组地址,而 A
0
- A
i
上提供
的地址输入决定起始列位置。读突发结束后,只要还未预充电,此行仍可用于后面的访问。
图2 所示为一个附加延迟为零的读命令示例。因此在该示例中,读延迟为三个时钟周期,与
CAS 延迟相同。
图 2:
读命令示例
T
0
T
1
T
2
T
3
T
4
T
4n
T
3n
T
5
NOP NOP NOP NOP NOP READ
Bank a,
Col n
Command
Address
CK
CK
DQS
DQ
DQS
DO
n
RL = 3 (AL = 0, CL = 3)
X858_02_042606
剩余17页未读,继续阅读
NewKin01
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页