当前位置:首页 >> 其它课程 >>

DDR SDRAM技术专题


DDR SDRAM 技术专题
DDR SDRAM 是“双倍数据速率同步动态随机访问存储器”的缩写,是一种低成本、高容量的存储器,在计算机、消费类电子、通信等领域 中一些要求高容量存储空间的场合有着广泛的应用。本技术专题试图以从事 DDR SDRAM 使用及其控制器设计的电子工程师的角度对 DDR SDRAM 进行较为详细的讨论。 我们希望本技术专题能够为广大电子设计工程

师提供有益的参考。

1. DDR SDRAM 概述
SDRAM 是同步动态随机访问存储器的缩写,是一种低成本、高容量的存储器。它在计算机、消费类电子、通信等领域 中一些要求高容量存储空间的场合有着广泛的应用。

传统的 SDRAM 采用一种单倍数据速率(SDR)的结构执行访问操作,它在每个时钟周期的上升沿传输数据,因此 SDR SDRAM 的带宽等于其时钟其频率乘以其数据总线宽度。例如,如果 SDR SDRAM 的操作频率为 100MHz, 其数据总线宽度为 16 位,则其总线带宽为 100MHz x 16 bit = 1600Mbit/S,也就是 1.6Gbps。而对带宽的 需求是无休止的!为了增加总线带宽,如果使用传统的方法,我们要么增加数据总线宽度,要么提高其操作频率。那 么, 有没有可能在既不增加数据总线宽度也不提高工作频率的条件下增加总线带宽呢?为适应这种需求, DDR SDRAM 出现了!

DDR SDRAM 使用一种双倍数据速率的结构来获得高性能的操作。双倍数据速率结构本质上是一种 2n 预取结构, 在输入/输出管脚上,每个时钟周期可以传输两个字。对于一次 DDR SDRAM 的访问操作(写操作、读操作),在芯 片的内部,一个时钟周期执行一个位宽为 2n 的数据传输,而在 DDR SDRAM 器件的管脚上则每半个时钟周期执行一 次 n 位的数据传输。因此,DDR SDRAM 的总线带宽为: 工作频率×数据总线宽度×2 可见,在相同的数据总线宽度和工作频率下,DDR SDRAM 的总线带宽比 SDR SDRAM 的总线带宽提高了一倍。

概括起来,DDR SDRAM 具有如下特点:
? ? ? ?

双倍数据速率结构,每个时钟周期完成两次数据传输; 双向的数据选通信号(DQS)伴随数据一起传输。在接收侧,它用来捕获数据; 在读操作过程中,DQS 与数据沿对齐,在写操作过程中,DQS 与数据中央对齐; 差分的时钟输入(CK 与/CK);

? ? ? ? ? ? ? ? ? ? ?

DLL 将 DQ 和 DQS 的跃变与 CK 的跃变对齐; 在每个 CK 的上升沿接收命令字;数据和数据掩码参考于 DQS 的上升沿和下降沿; 内部的四个 BANK 可以并发操作; 写数据时支持数据掩码(DM); 支持的突发长度:2、4、或 8; CAS 潜伏期:2 或 2.5,DDR 400 还包括 CL = 3 为每一次突发访问提供了 AUTOPRECHARGE 选项; 自动刷新与自刷新模式; 2.5V(SSTL_2 兼容)I/O; 对于 DDR200、 DDR266、 DDR333: VDDQ 为+2.5 V ±0.2 V; 对于 DDR400: VDDQ 为 2.6 ±0.1 V; + 对于 DDR200、 DDR266、 DDR333: VDD 为+3.3 V ±0.3 V 或+2.5 V ±0.2 V; 对于 DDR400: VDDQ + 为 2.6 ±0.1 V;

2. DDR SDRAM 与 SDR SDRAM 的功能比较
在对 DDR SDRAM 进行详细描述之前,我们首先对 DDR SDRAM 与 SDR SDRAM 的功能作一个简要的对比。 下表列出了它们之间在外部接口上的一些不同之处:

SDR SDRAM 与 DDR SDRAM 的内部存储核本质上是相同的。它们都具有相同的寻址和命令控制接口;都具有 4 个 BANK 的存储阵列;都具有相同的刷新要求。它们之间基本的不同点在于数据接口。

SDR SDRAM 的数据接口是一个系统同步的设计,它仅仅在时钟的上升沿捕获数据。它的内、外部数据总线具有相 同的宽度,当数据穿越 I/O 缓冲器时被顺序地锁存到内部存储阵列。SDR SDRAM 还支持一个 DQM 信号,它在写 操作过程中作为数据掩码使用;在读操作过程中作为输出使能使用。

DDR SDRAM 的数据接口是一个源同步的设计,数据在每个时钟周期被捕获两次,并伴随一个双向的数据选通信 号。

DDR SDRAM 采用了一种 2n 预取结构,它的内部数据总线宽度是外部数据总线宽度的两倍。这就使得内部存储 单元以成对的方式向 I/O 缓冲器传递数据。DDR SDRAM 在读操作时没有输出使能信号,但它支持一个 BURST TERMINATE 命令来快速中止正在执行的 READ 命令。在 WRITE 操作过程中,DM 信号被用来屏蔽无效的 写数据。DDR SDRAM 的命令总线包括时钟使能、芯片选择、行地址、列地址、BANK 地址、以及写使能信号。 DDR SDRAM 采用一对差分时钟(CK 和 CK#)进行工作,DDR SDRAM 的命令信号(地址和控制信号)使用 CK 的上升沿锁存。与 SDR SDRAM 不同,DDR SDRAM 采用一个双向的数据选通信号(DQS)伴随着数据一起传输。

DQS 信号在 DDR SDRAM 的读访问操作中由 DDR SDRAM 输出并与数据总线沿对齐,而在写访问操作中由 DDR SDRAM 控制器输出,并与数据总线中央对齐。DDR SDRAM 的输入数据使用 DQS 的上升沿和下降沿进行 锁存,而其输出数据则以 DQS 的上升沿和下降沿作为参考时钟。

接下来,我们首先对 DDR SDRAM 的功能作一个简要的描述,然后我们会对 DDR SDRAM 的一些基本概念以及 各种操作进行详细的描述。

3. DDR SDRAM 功能描述
DDR SDRAM 是一种高速 CMOS 动态随机访问存储器,它在内部被配制成 4 个 BANK 的 DRAM,外部数据具有 X4 位、X8 位、X16 位三种宽度。DDR SDRAM 具有如下的容量:
?

64Mb(即 67,108,864 位):16 M X4 (4 M X4 X4 banks)、8 M X8 (2 M X8 X4 banks)、 4 M X16 (1 M X16 X4 banks);

?

128Mb(即 134,217,728 位):32 M X4 (4 M X4 X4 banks)、16 M X8 (2 M X8 X4 banks)、 8 M X16 (1 M X16 X4 banks);

?

256Mb(即 268,435,456 位):64 M X4 (4 M X4 X4 banks)、32 M X8 (2 M X8 X4 banks)、 16 M X16 (1 M X16 X4 banks);

?

512Mb(即 536,870,912 位):128 M X4 (4 M X4 X4 banks)、64 M X8 (2 M X8 X4 banks)、 32 M X16 (1 M X16 X4 banks);

?

1Gb(即 1,073,741,824 位):256 M X4 (4 M X4 X4 banks)、128 M X8 (2 M X8 X4 banks)、 64 M X16 (1 M X16 X4 banks);

DDR SDRAM 中每一个 BANK 中的存储单元被组织成正方阵列,由若干行和若干列组成,这些存储单元通过行和 列的地址译码器来寻址。对于任何一个单元的读操作,整个行均被读出,然后重新写回(刷新)。对于任何一个单元 的写操作,整个行均被读出,然后改变其中一个单元的值,最后将整个行写回。DDR SDRAM 的功能框图如下图所示。

DDR SDRAM 的接口信号描述如下表所示:

对 DDR SDRAM 不同容量、不同数据宽度的寻址信号如下图所示:

DDR SDRAM 在上电后必须由一个初始化操作来配置 DDR SDRAM 的模式寄存器,模式寄存器的设置决定了 DDR SDRAM 的工作模式。

为了减少 IO 引脚的数量,DDR SDRAM 的行地址和列地址复用相同的地址引脚。因此,在访问 DDR SDRAM 的 时候,要先由 ACTIVE 命令来激活需要访问的 BANK、并锁存行地址(BA0、BA1 用来选择 BANK;A0~A13 用来 选择行),然后才能发布 READ 或 WRITE 命令。对应于 READ 或 WRITE 命令的地址信号用来选择突发访问的起始 列地址。

DDR SDRAM 使用双倍数据速率结构来获得高速操作。 双倍数据速率结构本质上是一个 2n 预取结构, I/O 管脚 在 上,它每个时钟周期传输两个数据字,也就是每半个时钟周期传输一个数据字。而对应 DDR SDRAM 内部的 DRAM 核,则每个时钟周期执行 2n 位宽度的数据传输。在没有数据传输的时候,DQ、DQS、DM 可以处于悬浮态。对 DDR SDRAM 的读访问和写访问都是面向突发的,访问操作从一个选定的位置开始,以可编程的顺序持续几个可编程 数目的位置。

DDR SDRAM 的存储单元由电容组成,我们知道,电容总是趋向于释放电荷,因此 DDR SDRAM 还需要周期 性的刷新操作,只有这样才能保证其存储的数据不会丢失。DDR SDRAM 的生产厂商规定,DDR SDRAM 的每一 行都必须在 64ms 以内刷新一次。

在以后的章节中,我们会对 DDR SDRAM 的初始化、模式寄存器定义、DDR SDRAM 操作的一些基本概念、命 令描述和操作进行详细的描述。

4. DDR SDRAM 的初始化
DDR SDRAM 是一种易失性存储器器件,也就是说,当器件掉电后,存储在 DDR SDRAM 中的所有内容及其配置信 息将会丢失。DDR SDRAM 每次上电后,必须按一定的顺序来初始化其内部状态机并配置用户定义的操作参数,否则 会引起不可预料的操作结果。在本节中,我们会对 DDR SDRAM 的初始化顺序进行详细描述(有关模式寄存器的具体 含义我们会在下一节中详细描述)。

我们首先讨论 DDR SDAM 的上电顺序。DDR SDRAM 的上电必须满足下列之一的条件:
? ? ?

VDD 和 VDDQ 从同一个电源转换器提供,并且 VTT 被限制成 1.35V,并且 VREF 设置成 VDDQ/2。

或者:
? ? ?

VDDQ 在 VDD 之后或与 VDD 一起提供,并满足 VDDQ < VDD+0.3V,并且 VTT 在 VDDQ 之后或与 VDDQ 一起提供,并满足 VTT < VDDQ+0.3V,并且 VREF 在 VDDQ 之后或与 VDDQ 一起提供,并满足 VREF < VDDQ+0.3V。

上述的两个条件中,至少有一个必须被满足。

DDR SDRAM 每次上电后,必须按下列顺序进行初始化。 1. 将时钟使能信号(CKE)驱动成 LVCMOS 低电平。CKE 是一个 SSTL_2 电平的输入信号,但在施加了 VDD 电源后可以检测一个 LVCMOS 低电平。 在上电过程中将 CKE 保持为 LVCMOS 低电平, 能够阻止 DDR SDRAM 接收不期望的命令,并能够保证 DQ 和 DQS 输出在正常操作之前保持为高阻状态; 2. 在为 DDR SDRAM 提供了稳定的电源供应并将 CKE 保持为低后,我们就可以为 DDR SDRAM 提供一个稳定 的时钟; 3. 在向 DDR SDRAM 发布命令之前,必须等待至少 200us;

4. 为了初始化 DDR SDRAM 的内部逻辑, CKE 置为 SSTL_2 逻辑高并在命令总线上发布一个 NOP 命令或一 将 个 DESELECT 命令。注意,此时 CKE 输入从 LVCMOS 输入转变为 SSTL_2 输入并保持为 SSTL_2 输入; 5. 发布一个 PRECHARGE ALL 命令; 6. 在至少 tRP 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令 (也就是说至少 tRP 时间后才能发布 其它命令); 7. 使用 LMR 命令编程扩展模式寄存器。此时,必须配置 DLL(将 E0 设置为 0 以便使能 DLL)和 I/O 驱动强度 (将 E1 设置为 1 提供标准驱动,或者将 E1 设置为 0 来提供缩减驱动强度),所有其它的位必须设置成 0; 8. 在至少 tMRD 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tMRD 时间后才能发 布其它命令); 9. 使用 LMR 命令将 DDR SDRAM 的模式寄存器设置为期望的操作模式。注意,除了 M0 到 M7 之外的所有其它 MR 位必须被设置成 0。在这一步骤还执行一个 DLL 复位。只要 DLL 被复位,那么需要至少等待 200 个时钟 周期才能发布可执行命令(例如 READ 命令); 10. 在至少 tMRD 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tMRD 时间后才能发 布其它命令); 11. 发布一个 PRECHARGE ALL 命令并将 A10 设置成逻辑高电平,这一命令将所有 BANK 置入空闲态; 12. 在至少 tRP 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tRP 时间后才能发布其 它命令); 13. 发布一个 AUTO REFRESH 命令。 注意, 作为 DDR SDRAM 初始化的一部分, 必须发布两个 AUTO REFRESH 命令:在本步骤时发布一个,在第 15 步时再发布一个; 14. 在至少 tRFC 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tRRF 时间后才能发布 其它命令); 15. 发布第二个 AUTO REFRESH 命令; 16. 在至少 tRFC 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tRRF 时间后才能发布 其它命令); 17. 发布一个 LMR 命令来清除 DLL 位(将 M8 设置为 0); 18. 在至少 tMRD 的时间内为 DDR SDRAM 发布 NOP 或 DESELECT 命令(也就是说至少 tMRD 时间后才能发 布其它命令); 至此,DDR SDRAM 的初始化过程就结束了,此后,我们可以发布任何有效的命令。注意:从第 9 步的 DLL 复 位到任何后续命令之间至少需要 200 个时钟周期。

上述的初始化过程可以用下面的简化流程图表示:

DDR SDRAM 初始化的时序图如下图所示:

在上面所描述的初始化操作中,一个很重要的命令就是加载模式寄存器命令,在接下来的一节中我们会对 DDR SRAM 的模式寄存器进行详细的描述。

5. DDR SDRAM 的模式寄存器
在 DDR SDRAM 的初始化过程中,我们必须配置 DDR SDRAM 的操作参数。操作参数是通过 DDR SRAM 的两个内 部寄存器进行配置的,这两个内部寄存器分别为:模式寄存器(Mode Register,MR)和扩展模式寄存器 (Extended Mode Register,EMR)。在上一节所提到的 LMR(加载模式寄存器)命令就是用来编程这两个寄存 器。在发布 LMR 命令的时候需要与 DDR SRAM 的 BANK 地址(BA[1:0])和行地址(A[13:0])配合使用。其中

BA[1:0]用来选择 MR 或 EMR;A[13:0]用来提供写入的配置码,A[13:0]的最低有效位对应模式寄存器的最低有效 位。其时序图如图 5-1 所示:

模式寄存器

DDR SDRAM 模式寄存器的定义如图 5-2 所示:

模式寄存器用来定义 DDR SDAM 的特定操作模式,包括突发长度、突发类型、CAS 时延、以及复位 DLL 等。在 发布 LMR 命令来编程模式寄存器时 BA[1:0]必须设置为 2'B00 来选择模式寄存器,所加载的配置参数会一直保持 (M8 位除外,它是自清除的)直到模式寄存器被重新编程或 DDR SDRAM 掉电。模式寄存器只有在所有 BANK 都 处于空闲状态并且所有突发传输都已经结束的情况下才能够被加载,而且在发布完该命令后必须等待一个特定的时间

才能执行后续操作,否则会引起不可预料的操作结果。

模式寄存器的 M8 位用来复位 DDR SDRAM 内部的 DLL,当改位置位后会复位 DLL,并且它是一个自清除的位, 也就是说当 DLL 复位完成后改位会自动清除成 0。

模式寄存器的 M[2:0]用来指定突发长度、M3 用来指定突发类型(顺序或交错的)、M[6:4]用来指定 CAS 时延、 M[13:7]用来指定操作模式(M12 在 256Mb 及以上的器件中使用、M13 在 1Gb 容量的器件中使用)。

有关突发长度、突发类型、CAS 时延的详细描述我们将会在下一节中给出。

扩展模式寄存器

DDR SDRAM 扩展模式寄存器的定义如图 5-3 所示:

扩展模式寄存器用来控制 DDR SDRAM DLL 的使能/关闭以及输出驱动强度的选择。在发布 LMR 命令来编程扩展 模式寄存器时 BA[1:0]必须设置为 2’B01 来选择扩展模式寄存器,所加载的配置参数会一直保持直到扩展模式寄存 器被重新编程或 DDR SDRAM 掉电。 扩展模式寄存器只有在所有 BANK 都处于空闲状态并且所有突发传输都已经结 束的情况下才能够被加载,而且在发布完该命令后必须等待一个特定的时间才能执行后续操作,否则会引起不可预料 的操作结果。

DLL 的使能与关闭:DLL 的使能/关闭通过 E0 位来控制。在正常操作模式下,DLL 必须被使能。每次 DLL 被使能 后必须紧跟一个 DLL 的复位操作 (通过编程模式寄存器) 并且必须在 200 个时钟周期后才能发布其它可执行命令 , (读 或写等); 输出驱动强度选择:DDR SDRAM 所有输出的正常驱动强度是 SSTL_2,某些器件制造商可能会支持一个较弱的

驱动强度来驱动更轻的负载或者在点到点环境中使用。扩展模式寄存器的 E1 位用来选择驱动强度,在使用时注意具体 器件的数据手册。

接下来我们首先对 DDR SDRAM 使用中的一些基本概念、术语进行详细描述。

SDRAM 操作小结
前几天在 21IC 上看到有一个家伙问 SDRAM 的问题,什么地址线连接啊,操作啊,看完后,只能轻叹一声,菜鸟啊, 估计 SDRAM 从来没使用过,只会使用普通的一些存储器的家伙。回想一下自己这 3 年来做过的系统,用了各种各样 的存储器,想想是不是要小结一下,以至纪念我的技术岁月,因为以后打算开始混日子了。

1,SDRAM 的地址线 在我们一般用的什么 SRAM 啊,PSRAM 啊,RAM 啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如 有 11 根地址线,那寻址空间就是 2 的 11 次方减 1。但是 SDRAM 是分列地址和行地址的,行、列地址线是复用的, 所以有时候我们看到说寻址空间有多大多大, 但是看看地址线怎么就那么几根啊, 呵呵。 SDRAM 一般还有 2 根 BANK 的线,分成 4 个 BANK,在有的处理器的 SDRAM 控制模块中,这两根线可能映射到地址线的某两根去。一般芯片常 按照以下方式写芯片的配置,比如 4Meg x 4 x 16,那这个芯片就是 256Mbits。其中 16 指数据线是 16 根,中间一个 4 是只分 4 个 BANK, 每个 BANK 是 4Meg。

2,SDRAM 的初始化 SDRAM 上电后使用前必须要经过一段初始化操作才可以使用。这个操作过程是标准的过程。这个过程如下 A: precharge B: auto-refresh C: Load Mode Register D: Normal Read/Write 在上电后输入初始化命令之前,最少要 100us 延迟(这个其实很容易满足,呵呵) 。 在输入 precharge 命令后, 因为必须是对所有 BANK 进行 Precharge, 所以 A10 这个管脚要设置成高, 因此在 Precharge 后面要做一个读的操作,这个操作最主要的是在 SDRAM 的寻址空间里设置的地址必须是 A10 是高的。 在输入 Auto-refresh 命令后,一般要跟几句空操作或者读什么之类的,反正要达到延迟的目的,以使得 SDRAM 有时 间来完成 refresh。

之后就是要设置 SDRAM 的模式寄存器,这个寄存器里一般设置了 burst 长度,CAS,burst 类型,操作模式,还有是 设置 SDRAM 是工作在单个读写操作还是 burst 操作下。而这个寄存器的设置也是通过地址线来设置的,所以在发出 Load Mode Register 命令后要做一个操作可是使得在 SDRAM 的地址线上出线的值就是你要设置的值。这里很有必要 提醒的一下的是,这个操作是 8 位的操作,切记切记。 设置完模式寄存器后就进入正常操作模式。 实际上具体的操作要跟选用的处理器的 SDRAM 控制模块相结合来设置。对于这些初始化命令比较直观的理解就是拿 逻辑分析仪来分析。

在这里需要提醒一下 CAS 这个参数很重要。还有 SDRAM 必须要刷新的,因此刷新频率可以按照手册算出来的,但是 设置的高一点也是可以的。常常 SDRAM 都有工作频率,但是也可以工作在低一点的频率上,比如 PC133 的,你工作 到 100 也是可以的,设置基本不需要修改。

3,其他 我们有时候看到有的原理图上数据线有倒过来接的,其实这个无所谓的,反过接,写进去的就是反的,但是读出又反 了一下,反反两次正好没反。 延伸一下到 DDR,其实 DDR 就是 SDRAM 外面加了一个乌龟壳。因此初始化是一样的。当然 DDR 一是多了一个把时 钟频率反相的时钟,因此有 2 个相位差 180 度的时钟。这两个一般都是用同一个时钟源产生,一致性会比较好。还有 多了 2 个 DQS,这个也是一个时序要求,一般 CPU 的控制模块都有设置好了。如果你使用的 CPU 不含有控制模块, 那用 FPGA 去做一个控制模块的话,那就要好好研究时序了。

在有些处理器的控制模块中,由于 EMI 的设置,地址线映射关系复杂,因此推算会比较麻烦,一般如果没有什么映射 的话,还是很容易操作的。

DDR SDRAM 在嵌入式系统中的应用
引言 很多嵌入式系统, 特别是应用于图像处理与高速数据采集等场合的嵌入式系统, 都需要高速缓存大量的数据。 DDR (Double Data Rate,双数据速率)SDRAM 由于其速度快、容量大,而且价格便宜,因此能够很好地满足上述场合对 大量数据缓存的需求。但 DDR SDRAM 的接口不能直接与现今的微处理器和 DSP 的存储器接口相连,需要在其间插 入控制器实现微处理器或 DSP 对存储器的控制。 随着密度与性能的不断提升,现场可编程门阵列(FPGA)已被广泛应用于各种嵌入式系统中。而且,现在很多的 FPGAs 都提供了针对 DDR SDRAM 的接口特性:其输入输出引脚都与 SSTL-Ⅱ电气特性兼容,内部提供了 DDR 触 发器、锁相环等硬件资源。使用这些特性,可以更加容易地设计性能可靠的高速 DDR SDRAM 存储器控制器。 1 DDR SDRAM 在嵌入式系统中的应用

图 1 是 DDR SDRAM 在高速信号源系统中的应用实例。

在该系统中,由 FPGA 的完成各模块之间的接口控制。FPGA 接收从前端传送过来的高速数字信号,并将其存储 在 DDR SDRAM 中;DSP 通过 FPGA 读取 DDR 中的数据,处理后再送回到 DDR SDRAM,最后由 FPGA 负责将数 据分两路输出。 该系统对存储器的要求是能够高速地存储大量的数据,DDR SDRAM 正好能满足这一要求,此时,FPGA 是否能 对 DDR SDRAM 进行有效控制就成为影响系统性能的关键。最后的试验结果表明,FPGA 是能够胜任这一任务的。 2 DDR SDRAM 的工作方式 在 DDR SDRAM 能够被存取数据之前,需要先对其初始化。该初始化流程是预先定义好的。不正确的操作将导致 无法预料的结果。 初始化的过程中将设置 DDR SDRAM 的普通模式寄存器和扩展模式寄存器, 用来制定 DDR SDRAM 的工作方式,这些设置包括突发长度、突发类型、CAS 潜伏期和工作模式以及扩展模式寄存器中的对 DDR SDRAM 内部 DLL 的使能与输出驱动能力的的设置。模式寄存器可以被再编程,这时需要 DDR SDRAM 的各个区(bank)处 于空闲状态,从而改变存储器的工作模式。如果操作正确,对模式寄存器的再编程不会改变存储器内存储的数据。 初始化完全之后,DDR SDRAM 便进入正常的工作状态,此时便可对存储器进行读写和刷新。DDR SDRAM 在一 对差分时钟(CLK 与 CLKn;CLK 的上升沿与 CLKn 的下降沿的交点被认为是 CLK 的上升沿)的控制下工作。命令 (地址和控制信号)在每个时钟(CLK)的上升沿被触发。随着数据一起传送的还包括一个双向的数据选通信号,接 收方通过该信号来接收数据。DQS 作为选通信号在读周期中由 DDR SDRAM 来产生,写周期中由存储器控制器来产 生。该选通信号与数据相关,其作为类似于一个独立的时钟,因此也需要满足相应的时序要求。读周期中,DQS 与数 据是边沿对齐的;写周期中,DQS 与数据是中心对齐的。存储器输入的数据在 DQS 的两个沿都触发,输出的数据也 是以 DQS 的两个沿作为参考,同时还要以时钟 CLK 的两个沿作为参考。因此,由于接口在时钟的两个沿的触发下工 作。其数据宽度(n)是存储器数据宽度(2n)的一半。图 2 描述了 DDR SDRAM 的工作方式。

对 DDR SDRAM 的读和写操作是基于突发的:从一个选定的地址单元开始,连续存取设置好长度的地址单元。该 长度就是所谓的突发长度。DDR SDRAM 提供的可编程的读或写的突发长度为 2,4 或 8。数据的存取以一个激活命令 (ACTIVE command,RAS_n low)开始,接着便是读(CAS_n low)或写(CAS_n low and WE_n low)命令。与激 活命令一起被触发的地址位用来选择将要存取的区(bank)和页(或行);与读或写命令一起触发的地址位用来选择 突发存取的起始列单元。 使用控制器读取 DDR SDRAM 的仿真波形示意图如图 2 所示。 读命令被触发后, 数据将在 1.5 -3 个时钟周期之后触发在数据总线上。这个延迟就是所谓的 CAS 潜伏期(CL, CAS latency),即从 DRAM 内核读 出数据到数据出现在数据总线上所需要的时间 。CAS 潜伏期的大小与 SDRAM 的速度和存储器的时钟频率有关。 当要存取一个不同行的地址单元时,需要通过一个预充电(PRECHARGE)操作关闭当前行。自动刷新(AUTO -REFRESH)命令用来周期性地刷新 DDR SDRAM,以保持其内部的数据不丢失。 3 DDR SDRAM 控制器的设计 DDR SDRAM 控制器的功能就是初始化 DDR SDRAM;将 DDR SDRAM 复杂的读写时序转化为用户方简单的读 写时序,以及将 DDR SDRAM 接口的双时钟沿数据转换为用户方的单时钟沿数据,使用户像操作普通的 RAM 一样控 制 DDR SDRAM;同时,控制器还要产生周期性的刷新命令来维持 DDR SDRAM 内的数据而不需要用户的干预。 3.1 DDR SDRAM 控制器的控制流程 DDR SDRAM 提供了多种命令,整个控制状态机非常复杂。但很多应用场合中,并不需要用到所有的命令,因此 为了简化设计,但同时又兼顾尽可能多的应用场合,在控制器的设计中制定了如下几种功能:DDR SDRAM 的初始化、 可变长度的突发读写,自动刷新功能,预充电以及模式寄存器的重置(reload)。图 3 是控制器整个状态转移图。

系统上电后,DDR SDRAM 处于空闲状态(Idle),在对存储器进行读写操作之前,需要先对其进行初始化。初 始化的过程中,将设置突发长度,突发类型,CAS 潜伏期等参数。DDR SDRAM 的初始化有一个固定的步骤,错误的 操作将导致 DDR SDRAM 进入不确定状态。在控制器中使用了一个专门的初始化状态机来对 DDR SDRAM 进行初始 化。 初始化完之后便可对 DDR SDRAM 进行读、写或其他操作。在执行读(写)命令之前,先要激活(Active)将 要读(写)的行,之后便可对该行进行突发读(写),在控制器的设计中,所有的读写命令都是不带预充电的,因此, 某一行被激活之后将一直处于激活状态,直到用户发送突发终止命令,此时控制器将自动产生一个预充电命令来关闭 当前行。这样,某一行被激活之后用户便可进行连续的突发读(写)操作,从而节省了每次突发读写所需要的激活时 间,提高了系统的数据吞吐率。 控制器同时提供了一个自动刷新(auto refresh)计数器,每隔一定的时间间隔(即 DDR SDRAM 的刷新周期, 根据所使用的存储器而定,可在控制器中设定),便会产生一个刷新请求,如果此时 DDR SDRAM 处于空闲状态,控 制器便会发生一个自动刷新命令来对 DDR SDRAM 进行刷新;如果此时 DDR SDRAM 正在进行读(写)操作,控制 器将会等到当前的读(写)操作完全之后再发送新命令。在刷新过程中,用户如果有读(写)请求,控制器将在当前 的刷新周期完成之后再响应用户的请求。 正常的操作过程中,当 DDR SDRAM 处于空闲状态时,用户还可以根据实际的需要来重置存储器的控制寄存器, 重新设定存储器的突发长度、突发类型、CAS 潜伏期等参数。

3.2 控制器数据通道的结构 图 4 是 DDR SDRAM 控制器数据通道的结构图。图 4 中完整的显示了控制器读和写数据通道上 DQ 与 DQS 的结 构关系。前面提到过,Cyclone 系列 FPGA 没有带 DDR 触发器的输入输出单元,但完全可以用靠近输入输出引脚处的 逻辑资源来实现 DDR 触发器,而且最后的结果表明,这种实现方式可以满足时序要求。

从图 4 中也可以看到,控制器内部有两个时钟,clk 和 clk_90,两者之间的相位差为 90° 。图中将面向存储器的时 钟命名为 clk。它是 clk_90 时钟的 90° 相位延迟后的信号。clk_90 作为系统时钟来驱动整个 FPGA,clk 时钟驱动存储 器接口路。 3.2.1 DQS 相位延迟电路 在读周期中,DDR SDRAM 处输出的 DQ 和 DQS 信号是边沿对齐的。为了使用 DQS 作为选通信号来捕获 DQ, DQS 信号需要在 FPGA 内部相对于 DQ 信号作 90° 的相位延迟。但是这个延迟不能使用锁相环(PLL)来完成,因为 DQS 信号不具有时钟的特性。因此,需要在 DQS 和数据时钟之间加一个延迟链(delay clain),如图 4 中所示。 前面提到过,Cyclone 系列 FPGA 在其 DQS 输入引脚上有一个专用的延迟单元,用来使 DQS 相对于 DQ 信号产 生一个 90° 相移。因此,可以使用该硬核资源来完成对 DQS 的相移,而不必通过内部的逻辑来搭建这样一个延迟电路, 从而可以获得更好的时序性能。

3.2.2 再同步 读周期中,从 DDR SDRAM 来的数据信号首先通过延迟后的 DQS 锁存到 DDR 触发器中。为了在 FPGA 内部能 够使用该数据,还要将其同步到 FPGA 内部的时钟域上,这个过程称为再同步(resynchronization)。如图 4 所示, 对于前一级 DQS 延迟后的信号锁存的数据再通过 clk_90 同步之后才送到内部数据总线上。 在写周期中,DQS 与 DQ 必须是中心对齐的(center align)。我们用 clk_90 时钟触发的 DDR 触发器产生 DQS 信号,因此,为了满足时序要求,从内部来的数据通过 clk_90 时钟锁存后再由 clk 触发的 DDR 触发器将其输出,从而 保证 DQS 与 DQ 是中心对齐的。 4 控制器的实现 该控制器针对 16 位宽 512Mb 的 DDR SDRAM 设计,在 Altera 公司的 Quartus Ⅱ4.2 环境中采用 Cyclone 系列 的 FP1C6Q240C6 来实现,总共使用了 729 个逻辑单元,占 FPGA 可编程逻辑资源的 12%,此外还使用了 1 个锁相 环(PLL)。最后,在 Modelsim 5.8 中对整个工程进行布局-布线后仿真(Post-Place&Route Simulation),采用 的模型为 Micron 公司的 512Mb 的 DDR SDRAM MT46V32M16 的仿真模型, 时钟为 133MHz, 2 是控制器读取 DDR 图 SDRAM 的时序仿真波形。 5 结论 本文给出了一种通过 FPGA 控制将 DDR SDRAM 应用在嵌入式系统中的方法。设计中采用 Altera 公司性价比较 高的 Cyclone 系列 FPGA,并充分利用片内提供的锁相环、DDR 触发器以及 DQS 延迟链等硬件资源,占用的逻辑资 源少。 该设计可以很容易地转移到 Altera 公司其他系列的 FPGA 上, 经过适当的修改还可以用来控制 64 位宽的 DIMM 型的 DDR SDRAM,因此可以很好地应用在需求高速度、大容量存储器的场合中。


相关文章:
DDR技术终极指南
专题推荐 汪华-2013年中国移动互联... 李开复:渗透与价值——... 蒋涛:移动...SDRAMDDR布线指南 11页 1下载券 终极内存技术指南 95页 1下载券 5.DDR技术...
DDRAM简介
DDR 使 用了 DLL(Delay Locked Loop,延时锁定回路提供一个数据滤波信号)技术,...但 DDR 为 184 针脚,比 SDRAM 多出了 16 个针 脚, 主要包含了新的控制、...
DDR
专题推荐 北师大二附理科学霸高中... 东北师大附中...而 DDR SDRAM 是 Double Data Rate SDRAM 的缩写,...延时锁定回 路提供一个数据滤波信号)技术,当数据...
DDR SDRAM 的工作原理
ddr sdram 68页 免费 7、SDRAM工作原理 11页 免费 SDRAM&DDR解读 31页 免费 SDRAM 工作原理 12页 免费 DDR+SDRAM技术专题 20页 1下载券喜欢此文档的还喜欢 ...
DDR
DDR_计算机硬件及网络_IT/计算机_专业资料。DDR 工作原理 DDR SDRAM 全称为 Double...到了 DDR2和 DDR3时才有了时钟频率的概念, 就是将核心频率 通过倍频技术得...
DDR各种释意概述
严格的说 DDR 应该叫 DDR SDRAM, 人们习惯称为 DDR, 其中, SDRAM 是 ...什么是 DDR1 有时候大家将老的存储技术 DDR 称为 DDR1 ,使之与 DDR2 加...
SDRAM DDR SDRAM
ddr_sdram 19页 免费 ddr-sdram 6页 免费 DDR+SDRAM技术专题 20页 1下载券...SDRAM DDR SDRAM SDRAM,即 Synchronous DRAM(同步动态随机存储器),曾经是 PC ...
精华_DDR SDRAM技术总结_update_图文
精华_DDR SDRAM技术总结_update_调查/报告_表格/模板_实用文档。介绍DDR SDRAM差别的文档 DDR SDRAM 技术总结 Platform H/W: RiverShao 2004-6-16 摘要: 本文...
SDRAM、DDR和DDRII三种内存的区别
SDRAMDDR和DDRII三种内存的区别_IT/计算机_专业资料...想进一步了解,请看一组 DDR 和 DDRII 技术对比的...专题推荐 2014教师资格材料分析辅... 2014小学教师...
ddr2新技术
专题推荐 北师大二附理科学霸高中... 东北师大附中...除了以上所说的区别外,DDR2 还引入了三项新的技术...我们知道使用 DDR SDRAM 的主板上面为了 防止数据线...
更多相关标签:
sdram和ddr区别 | ddr sdram | ddr3 sdram内存条 | ddr2 sdram | sdram ddr 区别 | ddr3 sdram | ddr3 sdram是什么意思 | ddr4 sdram |