BIOS开发笔记 9 – DDR中的时序参数

通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。

一、外部信号

图1 DDR4的外部线路图

DDR是一种高带宽的传输接口,其外部信号较多,图1是一个DDR4的外部线路图,以下对图中跟通讯相关信号作简单的说明。

A[0:16]:地址线,为 ACTIVATE 命令提供行地址,为 READ/WRITE 命令提供列地址,以从相应存储区的存储器阵列(Bank)中选择一个位置 (A10/AP、A12/BC_n、WE_n/A14、CAS_n/A15、RAS_n/A16 这几个信号有复用功能)。它还可以为模式寄存器提供设置信息。

BA[0:1]:Bank Address,除了表示执行ACTIVATE,READ, WRITE, or PRECHARGE 等命令的Bank地址,还可以表示在设置模式寄存器期间,访问哪个寄存器。

BG[0:1]:Bank Group Address,表示Bank Group地址的信号。它可以在一个存储芯片内部实现多个Bank Group,每个Bank Group内部又可以划分成多个Bank。一个Bank Group可以包含多个Bank,Bank Group与Bank的关系就如同硬盘的分区一样。在同一个Bank Group中,各个Bank之间共享一些电路资源,例如地址线、数据线、写使能信号等。而不同Bank Group之间的资源则是独立的,这样就可以有效提高SDRAM的并发读写能力。

RAS#:Row Address Strobe,行地址选通信号,需配合ACT_n和CS_n信号使用。

CAS#:Column Address Strobe,列地址选通信号,需配合ACT_n和CS_n信号使用。

WE#:Write Enable,写使能信号,需配合ACT_n和CS_n信号使用。

CS#:Chip Select,芯片选通信号。

CK、CK#:Clock,差分时钟信号。

CKE:Clock Enable,时钟使能信号。

DQ[0:63]:Data input/output,双向数据总线。DQ[3:0]、DQ[7:0] 和 DQ[15:0] 分别表示 x4、x8 和 x16 的配置 。

DQS:Data Strobe,数据选择信号,用来控制读写数据。读命令时,将由SDRAM控制作为输出信号,用来通知内存控制器何时读取DQ数据;写命令时,将作为SDRAM的输入信号,控制将DQ数据同步写入SDRAM中。DQ信号在读写操作中是共用的,其数据流向是不确定的,如在读操作中,内存控制器并不知道DQ上是否有数据,且数据是否有效。此时就需要一个信号来告知内存控制器,什么时候读取数据,读取哪些数据,DQS便是充当这样的角色。

ACT_n:Command,用于触发SDRAM设备的行激活命令(ACTIVATE command)。当ACT_n信号为低电平,同时CS_n信号也为低电平时,SDRAM设备将把RAS_n/A16、CAS_n/A15和WE_n/A14信号视为行地址输入,并执行行激活操作。当ACT_n信号为高电平,同时CS_n信号为低电平时,SDRAM设备将把RAS_n/A16、CAS_n/A15和WE_n/A14视为常规命令信号,并执行相应的操作,这些命令使用RAS_n、CAS_n和WE_n信号。

二、通信命令

图2 SDRAM内部结构

SDRAM与内存控制器的通讯简单的来讲,其实就是SDRAM执行一系列来自内存控制器的命令,如模式寄存器设置(Mode Register Set)、预充电(PRECHARGE)、激活(Bank ACTIVATE)、读(READ)、写(WRITE)等,这些是如何发送的呢?这便是SDRAM外部信号的作用了,内存控制器可以通过将某几个SDRAM信号的电平设置HIGH或LOW来发送不同的命令,如图3示。

图3

这些命令最终的目的是从Bank中读取或写入数据,而这涉及了bank的寻址。Bank是一个存储矩阵,对其寻址离不开行和列参数,行列参数的具体值由SDRAM的地址信号A[0:16]提供。从图2中可以看到,Bank的上一级地址还有Bank Group(BG是新引入的设计,LPDDR或旧的DDR可能没有此概念),信号BG将为它提供地址;再上一级便是Rank了,它则是通过CS PIN信号来控制。下面将对这些命令逐一说明。

1.MR Set

CPU在对SDRAM进行读写操作前,需要先设置SDRAM中的模式寄存器(如图2左上示),设置的过程称为Mode Register Set,简称MR Set,此过程由CPU在每次开机时完成。

图4-1

图4-2

SDRAM中,模式寄存器可能有多个,分别对应各类参数,如图4-1、4-2,表示MR0。值得注意的是,此时寄存器的值由地址信号 BA、BG、A 组合提供。

2.Precharge

在DDR SDRAM中,预充电(Precharge)是指将存储单元(bank)的存储电容电荷置为预定义状态,这样充电后的电容电荷比未充电的大,放大后的电压信号会更强。

在发出预充电命令之后,要经过一段时间才能允许发送 RAS 行有效命令(即激活)打开新的工作行,这个间隔被称为 tRP(Precharge command Period,预充电有效周期),它的单位是时钟周期数。

3.Bank ACTIVATE

Bank active是SDRAM中的一个操作,它用于选择SDRAM芯片中的一个存储区域(bank)并将其激活,从而允许读取或写入该存储区域中的数据。在SDRAM中,内存被组织为多个存储区域(bank),每个存储区域包含一定数量的行和列。在SDRAM进行读写操作时,必须先选择所需的存储区域(bank),然后选择行和列地址来访问具体的存储单元。
在SDRAM中,Bank active操作由一个ACTIVATE命令来实现。该命令需要一个Bank地址、Bank Group地址和一个行地址作为输入。ACTIVATE命令发送到SDRAM时,所选的存储区域(bank)将处于活动状态。一旦Bank active命令被执行,SDRAM芯片就会将所选的存储区域(bank)中的所有行加载到行缓冲器中,从而加快读写操作的速度。

4.READ/WRITE

SDRAM中,bank的地址由行列确定,收到激活(行有效)命令后便确定了所操作行,后续只需要一个列有效命令即可定位所需操作的存储单元。

读和写命令实际上即是列有效命令。在图3中,读和写的命令几乎是一致的,它们唯一的区别是WE信号,写的时候,该信号为低,读的时候为高。

内存控制器发出激活命令后,需要延时一段时间才可继续发出读写命令,这段时间称为tRCD(RAS to CAS delay),时间单位为时钟周期。

假如内存控制器发出的是读指令,SDRAM需要CL(CAS Latency)个时钟周期,将读取的数据(大小为SDRAM的位宽,x8则为8位,x16则16位)输出到DQ信号中,从低位到高位依次存放,没使用到的高位将保留上一次传输的数据。

假如内存控制器发出的是写指令,列地址和数据将同时发送给SDRAM,此时内存控制器需要等待WL (Write Latency)个时钟周期,以便SDRAM写入数据。

这里注意一下延时(Delay)和潜伏期(Latency)的区别,前者是一直在等待,什么都不做,后者则是进行中。举个例子,延时就像是我们在十字路口等红灯,只有时间到了我们才可以过马路,这段时间我们只能站着等待,什么都不做。绿灯亮后,我们便可以过马路,穿过马路需要一定的时间,这段时间我们人是在走路的,此便可当是潜伏期。

5.Burst

在普通的读写操作中,每次只能读写单个数据,如果要一次读写多个数据,就必须重新发送读写命令,这样延迟多,带宽也低。而Burst是指单个内存控制器请求一系列的连续数据,请求的数据长度称为Burst Length,即BL。例如,在DDR4中,一个Burst长度通常是8个字(BL8,64bit),意味着在内存控制器发送一个读请求后,DRAM会返回8个字的数据。Burst访问可以提高内存读写的效率,因为在单个请求中可以访问更多的数据,减少了请求的次数和总线上的开销。

在读写操作中,内存控制器可以连续发送多个读写命令,这样即可连续读写数据。连续发送的命令之间必须要有一个时间延迟,这样确保两个命令间的数据不会重叠,这个时间称为Additive Latency,简称AL。

6.Auto-Refresh

自刷新是DDR SDRAM中一种重要的内部操作,用于刷新动态存储电容上的电荷,以防止数据的丢失。当数据在DDR SDRAM中存储一段时间后,由于电容的自放电现象,数据存储的电荷会逐渐减少,如果不进行刷新操作,数据就会丢失。

在自刷新操作中,DDR SDRAM会自动向所有存储单元(bank)发送刷新信号,刷新信号会使存储单元中的电容重新充电,以保持存储数据所需的电荷量不变。刷新周期通常由内部定时器控制,可以根据具体DDR SDRAM的规格确定。在DDR SDRAM中,自刷新操作是一个非常重要的管理操作,它可以确保存储的数据的正确性和可靠性。

7.Self-Refresh Mode

自刷新模式是DDR SDRAM芯片在低功耗模式下工作的一种状态。在自刷新模式下,DDR SDRAM会关闭外部时钟,进入自我刷新状态,从而达到降低功耗的目的。执行自刷新模式时,需要向DDR SDRAM发出自刷新入口命令(Self-Refresh Entry Command),让DDR SDRAM进入自刷新模式,等到需要使用时,再向DDR SDRAM发出自刷新退出命令(Self-Refresh Exit Command),让DDR SDRAM恢复到正常操作状态

三、通讯过程

前面零零散散写了很多,下面以一个读操作为例,总结一下整个流程。

1.内存控制器发送MODE REGISTER SET命令,模式寄存器初始化。

2.内存控制器发出预充电命令,SDRAM对存储单元电荷进行充电至预置状态。

3.tRP时钟周期后,预充电完成,内存控制器发出激活命令,SDRAM将所需操作Bank的行置为有效状态。

4.tRCD周期后,激活完成,内存控制器发出读命令READ,每隔一个时钟周期再持续发送DES命令,用于阻止执行新命令。使用此命令,设备实际上被取消选择,已经在进行中的操作不受影响。

图5

这里以Burst READ(BL=8)为例,SDRAM将进入如下处理流程:

5.经过RL-tRPRE时钟周期后,SDRAM使DQS信号有效,通知内存控制器读取DQ数据,时间为tRPRE个时钟周期。

6.tRPRE时钟周期后,SDRAM将指定存储单元中读出的连续8个数据包放在DQ信号上。

7.内存控制器根据DQS信号,同步读取DQ上的数据。

本篇到此结束..

版权声明:
作者:bin
链接:https://ay123.net/mystudy/bios/1580/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
BIOS开发笔记 9 – DDR中的时序参数
通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。 一、外部信……
<<上一篇
下一篇>>
文章目录
关闭
目 录