SDRAM时序

SDRAM时序

SDRAM工作的大体流程

1、 首先,我们知道内存控制器要先确定一个P-Bank的芯片集合,然后才对这集合中的芯片进行寻址操作。因此要有一个片选的信号,它一次选择一个P-Bank的芯片集(根据位宽的不同,数量也不同)。被选中的芯片将同时接收或读取数据,所以要有一个片选信号。

2、 接下来是对所有被选中的芯片进行统一的L-Bank的寻址,目前SDRAML-Bank的数量最高为4个,所以需要两个L-Bank地址信号(22=4)。

3、 最后就是对被选中的芯片进行统一的行/列(存储单元)寻址。地址线数量要根据芯片的组织结构分别设计了。但在相同容量下,行数不变,只有列数会根据位宽的而变化,位宽越 大,列数越少,因为所需的存储单元减少了。

4、 找到了存储单元后,被选中的芯片就要进行统一的数据传输,那么肯定要有与位宽相同数量的数据I/O通道才行,所以肯定要有相应数量的数据线引脚。

SDRAM的内部基本操作与工作时序

1.芯片的初始化

SDRAM在开机时的初始化过程如下



2.行地址有效

   初始化完成后,要想对一个L-Bank中的阵列进行寻址,首先就要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和L-Bank的定址,但它们与行有效可以同时进行。

    CS#L-Bank定址的同时,RASRow Address Strobe,行地址选通脉冲)也处于有效状态。此时An地址线则发送具体的行地址。由于行有效的同时也是相应L-Bank有效,所以行有效也可称为L-Bank有效。

3.列读写

行地址确定之后,就要对列地址进行寻址了。但是,地址线仍然是行地址所用的A0-A11(本例)。没错,在SDRAM中,行地址与列地址线是共用的。不过,读/写的命令是怎么发出的呢?其实没有一个信号是发送读或写的明确命令的,而是通过芯片的可写状态的控制来达到读/写的目的。显然WE#信号就是一个关键。WE#无效时,当然就是读取命令。


列寻址信号与读写命令是同时发出的。虽然地址线与行寻址共用,但CASColumn Address Strobe,列地址选通脉冲)信号则可以区分开行与列寻址的不同,配合A0-A9A11来确定具体的列地址。

   然而,在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS DelayRASCAS延迟),大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。tRCDSDRAM的一个重要时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟周期(tCKClock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定.


tRCD=3的时序图如下



4.  数据输出(读)

    在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CLCAS LatencyCAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RLRead Latency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟频率决定。

    不过,CAS并不是在经过CL周期之后才送达存储单元。实际上CASRAS一样是瞬间到达的,但CAS的响应时间要更快一些。为什么呢?假设芯片位宽为nbit,列数为c,那么一个行地址要选通n×c个存储体,而一个列地址只需选通n个存储体。但存储体中晶体管的反应时间仍会造成数据不可能与CAS在同一上升沿触发,肯定要延后至少一个时钟周期。

    由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为tACAccess Time from CLK,时钟触发后的访问时间)。tAC的单位是ns,对于不同的频率各有不同的明确规定,但必须要小于一个时钟周期,否则会因访问时过长而使效率降低。比如PC133的时钟周期为7.5nstAC则是5.4ns。需要强调的是,每个数据在读取时都有tAC,包括在连续读取中,只是在进行第一个数据传输的同时就开始了第二个数据的tAC

                 CL=2tac示意图



CL的数值不能超出芯片的设计规范,否则会导致内存的不稳定,甚至开不了机(超频的玩家应该有体会),而且它也不能在数据读取前临时更改。CL周期在开机初始化过程中的MRS阶段进行设置,在BIOS中一般都允许用户对其调整,然后BIOS控制北桥芯片在开机时通过A4-A6地址线对MRCL寄存器的信息进行更改。

5、数据输入(写)

数据写入的操作也是在tRCD之后进行,但此时没有了CL(记住,CL只出现在读取操作中),行寻址与列寻址的时序图和上文一样,只是在列寻址时,WE#为有效状态。




从图中可见,由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储电容的充电操作,因此数据可以与CAS同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWRWrite Recovery Time),这个操作也被称作写回(Write Back)。tWR至少占用一个时钟周期或再多一点(时钟频率越高,tWR占用周期越多).


最近调试SDRAM学习一下

转载自:http://www.cnblogs.com/qiweiwang/archive/2011/03/20/1989537.html



### DDR SDRAM 时序参数及其配置 DDR SDRAM时序参数对于确保稳定性和性能至关重要。这些参数控制着内存模块的操作模式以及读写操作的时间间隔。 #### 主要时序参数说明 1. **CAS Latency (CL)** CAS延迟表示列地址选通时间,即从发出命令到数据可用之间所需的周期数。较低的数值意味着更快的数据访问速度[^1]。 2. **RAS to CAS Delay (tRCD)** RAS至CAS延时表示行激活之后可以发送读取或写入指令前等待的时间长度。此值越低越好,因为它直接影响随机存取的速度。 3. **Row Precharge Time (tRP)** 行预充电时间为关闭当前行并准备开启新行所需的时间。同样地,较短的预充电动作能够提高效率。 4. **Active to Precharge Delay (tRAS)** 激活状态转为预充电态所需要经历最短时间段称为 tRAS 参数。它决定了每次访问不同页面之间的最小间隔。 5. **Refresh Cycle Time (tREFI)** 刷新周期是指为了保持数据不丢失而定期刷新整个 DRAM 阵列所必需的最大时间间隔。通常情况下,默认设置已经足够满足需求。 6. **Write Recovery Time (tWR)** 写恢复时间指的是最后一次写入完成后直到下一个命令之前必须经过的时间段。这有助于防止因过早执行下一条指令而导致的数据损坏风险。 7. **Exit Self Refresh to Active Command (tXSR)** 自刷新退出到活动命令转换期间需要遵守的一个重要定时约束条件就是 tXSR 值。当系统从自刷新模式返回正常工作模式时会用到这个参数。 8. **Minimum Clock Cycle Time (tCKMIN/tCKMAX)** 定义了允许使用的最低和最高频率范围内的时钟周期持续时间。超出该界限可能会引起不稳定现象或者无法正确运行硬件组件。 #### 设置方法 针对具体平台上的 DDR 控制器配置上述各项参数可以通过寄存器编程来完成。例如,在某些 FPGA 或者 SoC 平台上,开发者可能通过特定工具链提供的图形界面来进行调整;而在嵌入式 Linux 系统中,则往往是在启动脚本里指定相应的选项[^2]。 下面是一个简单的例子展示如何在 U-Boot 中调用函数 `imx_ddr_size()` 来获取 RAM 大小,并间接反映了部分时序参数已经在板级支持包(BSP)层面进行了适当设定: ```c int dram_init(void) { gd->ram_size = imx_ddr_size(); return 0; } ``` 这段代码片段实际上并没有直接涉及具体的时序参数修改逻辑,而是依赖于底层驱动程序完成了必要的初始化过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值