-
R
应用指南:
Virtex-5
系列
使用
Virtex-5 FPGA
器件
实现
DDR SDRAM
控制
器
4
日
作者:
Toshihiko Moriyama
和
Rich
Chiu
提要
本应用指南描述了在
Virtex?
-5
器件中实现的
200 MHz
DDR SDRAM
(
JEDEC DDR400
(PC3200)
标准)控制器。本设计实现使用
IDELAY
单元调整读数据时序。读数据时序校准和调
整在此控制器中完成。
DDR SDRAM
器件是低成本、高密度的存储资源,在很
多存储器供应商处均可获得。本参考设
计利用
DDR400 SDRAM
器件开发而成。
DDR SDRAM
描述
DDR SDRAM
规范的详情可在电子工业联盟
(Electronic Industries Alliance, EIA)
成员
JEDEC
机构的网站上获得,网址为
/
。
DDR SDRAM
规范刊载在
JEDEC
技术文档
中,文
件名为
JESD79E
的参
考文件
。
DDR SDRAM
器件是硅片存储器资源,现在最经常用于
各种系统,包括从消费产品到视频系统
的各类
应用
。
DDR SDRAM
器件的频率高达
200 MHz
或
DDR400
。
DRAM
器件有组件或模块
两种配置。
DDR
控制器命令
表
1
所示为控制器发出的命令。这些
命令通过使用下列控制信号传输到存储器:
?
??
?<
/p>
行地址选择
(RAS)
?
??
?<
/p>
列地址选择
(CAS)
?
??
?<
/p>
写使能
(W
E)
?
??
?
时钟使能
(CKE)
(器件配置后始终置为高)
?
??<
/p>
?
芯片选择
(CS)
(器件运行期间始终置为低)
表
1:
DDR SDRAM
命令
信号编号
1
2
3
4
5
6
7
注:
功能
加载模式寄存器
(Load
Mode
Register)
自动刷新
(Auto
Refresh)
预充电
(Precharge)
(1)
选择组激活行
(Select
Bank
Activate)
写命令
(Read
Command)
读命令
(Write Command)
空操作
(No
Operation, NOP)
RAS
L
L
L
L
H
H
H
CAS
L
L
H
H
L
L
H
WE
L
H
L
H
L
H
H
1.
地址信号
A10
在预充电所有组期间设定为高,在单个组预充电期间设定为低。
Xilinx, Inc.
All
rights
reserved.
All Xilinx
trademarks, registered trademarks,
patents, and
further disclaimers are as
listed at
/
.
All
other
? 2006
trademarks and
registered trademarks are the property of their
respective owners.
All specifications
are subject to change wi
thout
notice.
NOTICE OF
DISCLAIMER: Xilinx
is providing this
design, code, or information
is.
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 fro
m any claims
o
f infring
ement. You are
responsible for obtaining any rights
you
may require for your
i
mplementation. Xilinx expressly
disclaims any
warranty whatsoever with
respect to the adequacy of the implementation,
including but not limited to
any
w
arranties or
representations
that t
his
implementation is free fro
m claims
o
f in
fringement and any
implied warranties of merchantability or fitness
for a particular purpose.
XAPP851 (v1.1)
2006
年
7
月
1
4
日
/cn
1
R
2
DDR SDRAM
描
述
命令功能
模式寄
存器
模式寄
存器用
于定义
DDR SDRAM
特定的运行模式,包括突发长度、突发类型、
CAS
延迟和
运行模式的选择。
图
1
所示为此控制器所用的模式寄存器的功能。
BA1
BA0
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
0
0
0
DLL
0
CAS Latency
BT
Burst
Length
A2 A1
A0
Burst
Length
0
0
1
2
0
1
0
4
0
1
1
8
Others
Reserved
A6 A5
A4
CAS Latency
0
1
0
2
0
1
1
3
(DDR400)
1
1
0
2.5
Others
Reserved
A8
DLL
0
Normal
Operation
1
Reset
BA1
BA0
Mode
Register
0
0
Mode Register (MR)
0
1
E
xtended MR
EMR1
x851_01_031806
图
1:
DDR400
的模式寄存器定义
组地址
(Bank Address) BA1
和
BA0
用于选择模式寄存器。
图
1
显示了组地址位配置。
扩展模
式寄存
器
p>
模式寄
存器控
制范围
之外
的功能
由扩展
模式寄
存器控
制。这些附加功能是用于
DDR SDRAM
接
口的
DLL
使能
/
无效和输出驱动强度,如
图
2
所示。
/cn
XAPP851
(v1.1) 2006
年
7
月
14
日
DDR
SDRAM
存储器控制器参考设计
R
BA1
BA0
E12
0
1
E11
E10
E9
E8
0
E7
E6
E5
E4
E3
E2
E1
E0
DS
DLL
E0
DLL
0
Enable
1
Disabled
E1
1
0
Drive Strength
Normal
Reduced
x851_02_031806
图
2:
DDR400
的扩展模式寄存器
DDR SDRAM
存储器控制器
参考设计
此
DDR SDRAM
存储器控制器参考设计由一个
PHY
层和一个主控制器
层组成
,如
图
3
所示。
PHY
层由存储器初始化逻辑和地址
/
命令
/
数据的
I/O
逻辑组成。读数据采集时序校准也是在
PHY
层完成的。主控制器层包括
DDR
SDRAM
控制器状态机和用于地址
/
命令
/
数据的
FIFO
逻辑。
DDR SDRAM Controller Reference
Design
Front-End
FIFOs
Address/
Main
DDR
Command
SDRAM
FIFO
Controller
User
Design
Write
Data
FIFO
PHY
Controller
DDR
SDRAM
Read Data
FIFO
User Interface
X851_03_050606
图
3:
参考设计
DDR SDRAM
存储器控制器的结构
XAPP851 (v1.1) 2006
年
7
月
14
日
/cn
3
R
DDR SDRAM
接口设
计
DDR SDRAM
接口设计
DDR
控制器提供了一个基本类似于
FIFO
的用户接口,通过此接口用户可以发出命令、向
DDR
存储器
提供写
数据
,或者接收其发出的读数据。用户接口的数据宽
度为
DDR
存储器总线数据
宽度的
两倍,
并在每
个
FPGA
时钟周期内为
DDR
存储器
控制器提供两个数据字。
DDR SDRAM
用户接口
后端用户接口包含三个
FIFO
:
?
??
?
地址
/
命令
FIFO
?
??
?
写数据
FIFO
?
??
?
读数据
FIFO
前两个
FIFO
由不同用户的后端逻辑加载,而读数据
FIFO
由
PHY
控制器访问,以将采集的数
据存储在每个读周期上。
表
2:
用户接口端口描述
端口名称
APP_ADDR
I/O
I
宽度
36
描述
控制器执行的指令代码和命令地址。此端口的位映射
如下所示:
[31:0]
存储器地址
(
CS
、组
、行、列)
[34:32]
动态命
令请求
(见
表
4
)
[35]
未使用
-
预留以备后用的功能
说明
在写到此
FIFO
之
前,监控
APP_ADDR_AF
的近满
(almost
full)
标志位
高有效
高有效
APP_ADDREN
APP_ADDR_AF
APP_W
R
_DAT
A
APP_DAT
AMASK
APP_DAT
AEN
APP_WRDAT
A_AF
APP_RD_DAT
A
APP_RD_V
ALID
CTRL_RDY
PHY_ERROR
I
O
I
I
I
O
I
O
O
O
1
1
数据带宽
x
2
数据掩码带宽
x 2
1
1
数据带宽
x 2
1
1
1
APP_ADDR
的写
DQS
地址
/
命令
FIFO
近满标志
写突发的写数据
对应于写数据的数据掩码
APP_W
R
_DAT
A/APP_DAT
AMA
SK
的写
DQS
写数据
FIFO
近满标志
读数据
FIFO
输出
(采集到的读数据)
高有效
高有效
置位后,显示出现在
APP_RD_DATA
上的采集到的读
高有效
数据在当前时钟周期上为有效
置位后,显示
PHY
接口逻辑已完成
SDRAM
初始化
高有效
和
读数据通路校准
置位后,显示读数据通路校准过程中出现了一个错误
高有效
存储器
地址
(APP_ADDR)
包括深存储器接口的列地址、行地址、
组地址和芯片选择宽度,如
表
3
所示。
警告!
存储器控制器不支持自动预充电,用户必须保证
APP_ADDR[10]
对于读和写命令始终为低。
表
3:
用户接口地址的比特分配
地址
列地址
col_ap_width
-
1 :
0
比特分配
col_ap_width
+
row_address
-
1 : col_ap_width
行地址
4
/cn
XAPP851
(v1.1) 2006
年
7
月
14
日
DDR SDRAM
接口设计
R
表
3:
用户接口地址的比特分配
(
续表
)
地址
组地址
比特分配
col_ap_width
+
row_address
+
bank_address
-
1 :
c
ol_ap_width
+
row_address
芯片选择
col_ap_width
+
row_address
+
bank_address
+
chip_address
-
1 :
col_ap_width
+
row_address
+
bank_address
动态命令请求
表
4
所列为存储器控制器通过用户接
口所支持的命令。注意:存储器控制器在相应的时刻会自
动发
出加载模式寄存、自
动刷新
、预充
电和
激
活命令
。但是
这些命
令也可
通过用
户接口
手动发<
/p>
出。
表
4:
控制器支持的命令
APP_ADDR[34:32]
000
001
010
011
100
101
加载模式寄存器
自动刷新
全部预充电
激活
写
读
NOP
NOP
描述
110
111
XAPP851 (v1.1) 2006
年
7
月
14
日
/cn
5
R
DDR SDRAM
控制器接口
6
DDR SDRAM
接口设
计
图
4
所示为
DDR SDRAM
命令生成状态机中的状态机。
Initialization
INIT_DONE
RST
CONFLIC
T ||
R
EFRESH
REFRESH
Precharge
IDLE
Auto
!
R
P_C
NT
Refresh
REFRESH
DONE
T
C
WR
|| RD
L
F
N
O
Active
C
|
H
S
E
R
F
Act
ive
E
R
Wait
O
T
WR
RD
U
A
First
Write-
First
A
Write
Read
Read
T
C
Wri
te
Read
L
F
Wait
Read-
Write
Wait
N
O
C
p>
X851_05_050506
|
图
4:
H
主控制器状态机
S
E
p>
在控制器向存储器发出命
R
F
令之前
要执行
这些步
骤:<
/p>
E
R
1.
命令逻辑模块生成
O
一个读
/
写命令。
T
U
2.
控制器向读
/
写地址
FIFO
发出读使能信号。
3.
如果所有组都已预
充电,
控制器
会激活
相应组
中的某
行;或
将这些
< br>组、行
地址与
已处于
活
动状态的组、行地
址进行
比较。
如果存
在冲突
,在进
入读
/
写状态前,控制器会预充电活
动的组
,然后发出
一个激
活命令
。
4.
进入写状态后,
如
果控制
器检测
到读命
令,就
会等
Write_to_Read
时间结束后再发出读命
令。同样,在
读状
态中,
发现来
自命令
逻辑模
块的写
命令后
,控制
器会等
待
Read_to_Write
的时间,然后发送写命令。
5.
在发送
到
DDR
存储器前,命令已经过流水处理而与地址信号同步。
/cn
XAPP851
(v1.1) 2006
年
7
月
14
日
DDR SDRAM
接口设计
R
表
5
所列为
SDRAM
控制器接口的设计文件。
表
5:
DDR SDRAM
控制器设计文件
模块名称
DDR1_TOP
DDR1_PARAMETERS
DDR1_CONTROLLER
DDR1_BACKEND_FIFOS
文件名
ddr1_
ddr1_
ddr1_
ddr1_backend_
ddr1_rd_wr_addr_
ddr1_wr_data_fifo_
顶层模块
描述
DDR SDRAM
存储器参数
DDR SDRAM
存储器主控制器
例化
ddr1_rd_wr_addr_fifo
和
ddr1_wr_data_fifo_16
模块
读
/
写地址
FIFO
DDR1_RD_WR_ADDR_FIFO
DDR1_WR_DAT
A_FIFO_16
写数据
FIFO
表
6
所列为
SDRAM
控制器接口的顶层
I/O
端口。
表
6:
DDR SDRAM
控制器顶层端口描述
端口名称
RST
CLK0
CLK90
CKE
CK
AD
BA
CS_n
RAS_n
CAS_n
WE_n
DM
DQ
DQS
APP_ADDR
APP_ADDR_EN
APP_W
R
_DAT
A
APP_DAT
A_MASK
APP_DAT
A_EN
APP_RD_DAT
A
APP_RD_V
ALID
APP_ADDR_AF
APP_W
R
_DAT
A_AF
CTRL_RDY
PHY_ERROR
I/O
I
I
I
O
O
O
O
O
O
O
O
O
I/O
I/O
I
I
I
I
I
O
O
O
O
O
O
描述
请参阅
第
4
页的
“DDR SDRAM
用户接口
”
了解有关信号描述
的详情
请参阅
第
8
页的
“PHY
接口
< br>”
了解有关信号描述的详情
XAPP851 (v1.1) 2006
年
7
月
14
日
/cn
7
R
PHY
接口
8
PHY
接
口
PHY
层包括
DDR SDRAM
存储器初始化状态机和读数据采集时序校准逻辑。上电后,
DDR
SDRAM
存储器初始化开始。初始化完成后,读数据采集时序校准开始。
Reset
Initialization
Read Data Calibration
and Alignment
PHY
Ready
X851_04_050406
图
5:
PHY
初始化状态机顺序
初始化
DDR SDRAM
必须在执行读和写操作之前必须进行初始
化。如
图
6
所示,当高有效复位信号被
设置
成高到低
(High-to-Low)
时,控制器将开始存储器的初始化。存储器初始化顺序由
JEDEC
规范做了定义。
Reset
Wait For
200us
Precharge All
Command
Assign CKE to
HIGH
Autorefresh
Precharge All
Load Mode Register
BA 00 With No DLL Reset
Load Mode Register
BA 01
WAIT For
200 Clock Cycles
Load Mode
Register
BA 00 With DLL
Reset
Memory Initialization
Done
X851_06_050406
图
6:
存储器初始化状态机顺序
/cn
XAPP851
(v1.1) 2006
年
7
月
14
日
-
-
-
-
-
-
-
-
-
上一篇:2018版省建设工程计价依据
下一篇:北京方言大全