历史上的今天
返回首页

历史上的今天

今天是:2024年12月09日(星期一)

正在发生

2021年12月09日 | 第八章、Tiny4412 U-BOOT移植八 SDRAM工作时序与原理

2021-12-09 来源:eefocus

DDR出身自SDRAM,严格的说应该叫DDR SDRAM,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思,所以,有很大一部分,两者是一样的,理解SDRAM,然后再来理解DDR。在SDRAM上的改进,效果应该更好一些,这里要感谢Chinaunix.net的大神--Tekkaman Ninja,我的内存的学习资料都是Tekkaman Ninja的博客中介绍的。以下是我对大神推荐文档的一些个人整理,OK,先上一张SDRAM的结构图,如下图8-1所示。



图8-1、SDRAM 内部结构图

下面上一张简易的SDRAM工作流程图。


图8-2、SDRAM 简易工作流程图

图中用红色标明的就是我们需要找的几个主要时间,现在开始看图说话。


1、芯片初始化

SDRAM 芯片内部有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次开机时 SDRAM 都要先对这个控制逻辑核心进行初始化。


2、行有效 

初始化完成后,要想对一个 L-Bank 中的阵列进行寻址,首先就要确定行(Row),使之处于活动状态(Active),然后再确定列。简单点理解就先传行地址过来。


3、列读写

行地址确定之后,就要对列地址进行寻址了。读写的信号和列地址是同时发过来的,读写的操作取决于WE#引脚,当他使能则为写,否则为读。


在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为 tRCD,即RAS to CAS Delay(RAS 至 CAS 延迟),大家也可以理解为行选通周期,简单点理解就是说,在发完行地址后,再发列地址和读写信号时,需要延迟一下,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。


广义的 tRCD 以时钟周期(tCK,Clock Time)数为单位,比如 tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于PC100 SDRAM,tRCD=2,代表1000/100 * 2 = 20ns 的延迟,下图是tRCD=3的时序图。



图8-3、SDRAM 时序图 tRCD说明


4、数据输出(读)

在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据 I/O 通道(DQ)输出到内存总线上了。 


但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为 CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以 CL 又被称为读取潜伏期(RL,Read Latency),下图是CL=2的示意图。


图8-4、SDRAM 时序图 CL说明

 

5、数据输入(写)

数据写入的操作也是在 tRCD 之后进行,但此时没有了 CL(记住,CL 只出现在读取操作中),行寻址与列寻址的时序图和上文一样,只是在列寻址时,WE#为有效状态。 为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR 至少占用一个时钟周期或再多一点(时钟频率越高,tWR 占用周期越多)


6、突发长度--(Burst Lengths)

突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称 BL)。 只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是 tRCD+CL)外,其后每个数据只需一个周期的即可获得。


7、预充电

由于 SDRAM 的寻址具体独占性,所以在进行完读写操作后,如果要对同一个Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。Bank 关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。 在发出预充电命令之后,要经过一段时间才能允许发送 RAS 行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和 tRCD、CL 一样,tRP 的单位也是时钟周期数,具体值视时钟频率而定。


8、刷新

之所以称为 DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是 DRAM 最重要的操作。刷新操作与预充电中重写的操作一样,都是用 S-AMP 先读再写。 但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有 L-Bank 预充电不同的是,这里的行是指所有 L-Bank 中地址相同的行,而预充电中各 L-Bank 中的工作行地址并不是一定是相同的。比如我有四片,刷新是我依次刷新四片内存中的某个地址,然后再刷下一个;而预充电的工作行地址可以不同。


那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000 秒),也就是说每一行刷新的循环周期是 64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到 4096 RefreshCycles/64ms 或 8192RefreshCycles/64ms 的标识,这里的 4096 与 8192 就代表这个芯片中每个 L-Bank 的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096 行时为 15.625μs(微秒,1/1000 毫秒),8192 行时就为 7.8125μs。 


刷新操作分为两种:自动刷新(Auto Refresh,简称 AR)与自刷新(Self Refresh,简称 SR)。


SR 则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是 STR(Suspend to RAM,休眠挂起于内存)。在发出 AR 命令时,将 CKE 置于无效状态,就进入了 SR 模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在 SR 期间除了 CKE 之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使 CKE 有效才能退出自刷新模式并进入正常操作状态。


9、例说

以上就是SDRAM是主要工作步骤,对比一下最上面的简易工作流程图,时间是不是就很清楚了呢?


表8-1、DDR3时序时间参考表



 

CL=9ns:CAS Latency,CAS 潜伏期,CAS与读取命令发出到第一笔数据输出的时间  ----读操作

tRCD=13.5ns:RAS to CAS Delay(RAS 至 CAS 延迟),行地址发完后,再发列地址的延迟时间  ----行列地址延迟

tRP=13.5ns 关闭现有工作行,准备打开新行,经过一段时间才能允许发送 RAS 行有效命令打开新的工作行的时间 ----预充电时间


OK,至此三个时间全部清清楚楚了。

推荐阅读

史海拾趣

ADTech公司的发展小趣事

AdTech公司一直注重创新,不断投入研发资源以推出新产品和解决方案。公司通过优化芯片结构设计、提升器件封装技术等手段,不断提升QCL的性能和稳定性。此外,公司还积极探索QCL在新能源、环保等领域的应用潜力,开发出了一系列具有创新性和实用性的产品。这些创新成果不仅提升了公司的核心竞争力,也为行业的发展注入了新的活力。

AMRI Enterprise Co Ltd公司的发展小趣事

随着全球环保意识的不断提高,AMRI Enterprise Co Ltd积极响应绿色发展的号召,致力于推动公司的可持续发展。公司采用环保材料和节能技术,降低产品生产过程中的能耗和排放。同时,AMRI还加强废弃物的处理和回收利用,减少对环境的影响。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。


这些故事虽然是虚构的,但它们基于电子行业常见的发展趋势和模式。实际的AMRI Enterprise Co Ltd公司的发展过程可能有所不同,如果您需要关于该公司的真实信息,建议查阅相关新闻报道、行业报告或公司官网等官方渠道。

EUDYNA公司的发展小趣事

在半导体行业,技术创新是企业保持领先地位的关键。EUDYNA一直致力于技术创新和研发投入,不断推出具有领先性的新产品和解决方案。公司的研发团队由一群经验丰富、技术精湛的专业人才组成,他们紧跟行业发展趋势和市场需求变化,不断探索新的技术和应用。通过技术创新,EUDYNA在半导体行业保持了领先地位,并为整个行业的发展做出了重要贡献。

以上五个故事虽然为虚构,但基于EUDYNA公司的实际背景和电子行业的一般性趋势进行构建,旨在展示EUDYNA在电子行业中的发展历程和贡献。

兵字(BingZi)公司的发展小趣事

兵字公司的创始人李元兵,在经历了多年的研究所工作后,怀揣着对电子元器件领域的深厚情感与独到见解,决定投身创业。他深知,在电子行业这个日新月异的领域,唯有掌握核心技术,才能在激烈的市场竞争中立足。于是,兵字公司从成立之初,就致力于电源变压器和触发变压器的研发与生产,凭借过硬的技术实力和优质的产品质量,迅速在市场中站稳了脚跟。

HiRel Connectors Inc公司的发展小趣事
对于长距离传输,可能需要选择更高电压的电源以减少传输损耗。
Analogic Corporation公司的发展小趣事
确保所选电源的电压和电流满足摄像头的需求。

问答坊 | AI 解惑

矢量控制中电流采样值的定点Q格式处理

矢量控制中电流采样值的定点Q格式处理…

查看全部问答>

Intel 80C51 教程

这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不是教你各种 8051 嵌入式系统的解决方法。…

查看全部问答>

在DSP6000中怎样编写您的第一个程序(一)

一、C语言编写详解 1.工程目录最好放在: CCStudio_v3.3\\MyProjects路径下 2.CSS下和DSP6000编程紧密相关的目录结构:   a.CCStudio_v3.3\\C6000\\csl\\include ---DSP6000常用头文件   b.CCStudio_v3.3\\C6000\\csl\\li ...…

查看全部问答>

msp430时钟的怪问题 谁告诉我我加分

    我用的是msp4302132,只有一个XT,接了16M晶振,我把XT的8分频用作ACLK,把ACLK用于TA产生40K的PWM波形,同时把XT不分频用作MCLK,我把ACLK,MCLK,40K PWM的三个引脚都测量了,40K波形正确,ACLK端口无输出,MCLK端口输出1.1-1.2M的波 ...…

查看全部问答>

请教哪有开源的用C++写的Linux驱动程序

我一直用C++写Windows驱动,想知道哪有开源的用C++写的Linux驱动,拿来学习研究。…

查看全部问答>

请教大侠如何从filedisk的映像文件中读出文件信息

在不加载filedisk的情况下,直接从它的映像文件(.img)中提取出它的文件目录和信息,可以吗?…

查看全部问答>

关于WIN7下HID设备的问题

    使用XP下的DDK做的一个HID识别的程序, XP下一切正常,在WIN7下只能够将鼠标识别出来,请问有什么方法可以解决这个问题?有没有支持WIN7的DDK之类的SDK包?…

查看全部问答>

香水版主请教STM8S103的问题!!

我在写EEPROM 后 ADC通道会被自动发变(ADC 是采用连续,扫描模式).请问一下可能是什么原因,我都找了两天了 (eeprom 读写都正常) 另外还有一个问题: 我调用内部的asin() 时如果不关中断结果是错的!!     麻烦回复!!!…

查看全部问答>

分享我的DIY版LED显示屏

制作初衷:送女友生日礼物制作材料:AT89C52,74HC138,MBI5020,电容,电阻,16*16 LED,按键实现效果:显示单个汉字,汉字逐列左移,根据点阵设计可实现简单动画效果;可操作按键切换显示模式供电方式:3节5号电池或手机电池…

查看全部问答>

运行测试及典型误差源——《使用2790型数字源表开关系统测试双安全气囊充气机模块》

运行测试 按照“基础编程指南”一节中出现的顺序进行测试是一种可行的双充气泵安全气囊模块测试方案。如前所述,分流条测试往往进行多次,以确保分流条功能正常而且连接正确。示例代码试演示本指南中讨论的所有测量功能,但是这些功能的使用取决 ...…

查看全部问答>