SDRAM的基本概念SDRAM因其高性价比而被广泛应用于高速数据存储和实时图像处理的设计中。但相对于SRAM、FIFO等其他存储设备,SDRAM的控制相
SDRAM的基本概念
SDRAM因其高性价比而被广泛应用于高速数据存储和实时图像处理的设计中。但相对于SRAM、FIFO等其他存储设备,SDRAM的控制相对复杂。虽然复杂,但不代表不能实现。仔细梳理后发现,SDRAM的控制其实并没有那么难。简要介绍了SDRAM的基本概念及其工作流程。
SDRAM的基本信号:
SDRAM的基本信号(这里不讨论电源和地)可以分为以下三类,分别是控制信号、地址选择信号和数据信号:
(1)控制信号:包括片选(CS),同步时钟(CLK),时钟有效(CLKE),读写选择(/WE),
数据有效性(DQM)等。
(2)地址选择信号:包括行地址选择(/RAS)、列地址选择(/CAS)、行/列地址线(A0-A12)和存储体块地址线(Ba0-Ba1)的时分复用;
(3)数据信号:包括双向数据端口(DQ0-DQ15)、接收数据有效信号(DQM)控制等。当DQM为低电平时,写/读有效。
图1 SDRAM引脚的基本信息
SDRAM相关指令和关键参数分析
图2 SDRAM相关指令
上图中,列出了SDRAM使用的所有指令。其实我们用SDRAM的时候,只是用了一部分。比如在write/write with autoprecharge中,我们可以在两个指令中写入SDRAM,只是说在“write with autoprecharge”指令中,SDRAM在写入一个突发数据后会自动跳出这个状态进行刷新,而在“write”指令中,需要给出相应的指令才能跳出“write”状态,所以为了提高SDRAM的运行速度,我们一般使用write指令来提高速度。当然,“读”和“带自动充值读”的区别也是一样的。
常用说明:
读(读)
发送列读写命令时,必须有一个行有效命令的间隔,定义为tRCD,即
RAS到CAS延迟(RAS到CAS Delay)也可以理解为行选通周期,它应该基于芯片存储器阵列的电子元件的响应时间(从一种状态变化到另一种状态的过程)。SDRAM读取的相关时序如图3所示。
图3 SDRAM读取时序
SDRAM读取时序可以总结如下:激活第2行。打开3号门。预充电和关闭行-下一个指令。
写
图4 SDRAM写时序
预充电
因为SDRAM的寻址是排他的,所以如果读写后要寻址同一L-Bank的另一行,就必须关闭原来的有效(工作)行,重新发送行/列地址。L-Bank关闭现有工作线并准备打开新线的操作是预充电。在发出预充电命令之后,将需要一些时间来允许发送RAS线有效命令以打开新的工作线。这个间隔称为tRP(预充电命令周期)。和tRCD、CL一样,tRP的单位也是时钟周期数,具体数值取决于时钟频率。
自动刷新(自动刷新)
之所以叫DRAM,是因为它需要不断刷新来保留数据,所以是DRAM最重要的操作。刷新操作与预充电中的重写操作相同,使用S-AMP先读后写。但是当有预充电操作时为什么要刷新呢?因为预充电是对一个或所有L-bank中的工作行的操作,而且是不规则的,所以刷新是有固定周期的,所有行都是轮流操作的,以保持那些长时间没有被重写的存储体中的数据。
关键参数:
tRCD:
从有效行到发出读/写命令的间隔定义为tRCD,即RAS到CAS延迟(RAS为行地址选通,CAS为列地址选通),也可以理解为行选通周期。广义的tRCD以时钟周期数(tCK,时钟时间)为单位。例如,tRCD=2表示延迟周期为两个时钟周期,具体时间取决于时钟频率。
图5 tRCD=3
CL:
选择相关列地址后,会触发数据传输,但从存储单元的输出到实际出现在存储芯片中的I/O接口需要一段时间(数据触发本身有延迟,信号需要放大),这就是非常著名的CL(列地址脉冲选通延迟)。CL的值与tRCD相同,用时钟周期数表示。例如,DDR-400的时钟频率为200MHz,时钟周期为5ns,因此CL=2意味着潜伏期为10ns。但是,CL仅用于读操作。对于SDRAM,写入没有延迟。
图6 CL=2
BL:
突发是指同一行相邻存储单元连续传输数据的方式,连续传输的周期数为突发长度(BL)。进行突发传输时,只要指定初始列地址和突发长度,存储器就会自动依次读写相应数量的存储单元,不需要控制器持续提供列地址(SDRAM和DDR SDRAM突发传输中列寻址的操作次数不同,此处不做详述)。这样,除了第一个数据的传输需要几个周期(主要是前一个延迟,一般是tRCD CL)之外,之后的每个数据只需要一个周期就可以获得。
图7突发BL=4
tRP:
因为SDRAM的寻址是排他的,所以如果读写后要寻址同一L-Bank的另一行,就必须关闭原来的有效(工作)行,重新发送行/列地址。L-Bank关闭现有工作线并准备打开新线的操作是预充电。在发出预充电命令之后,将需要一些时间来允许发送RAS线有效命令以打开新的工作线。这个间隔称为tRP(预充电命令周期)。
图8 tRP=2
SDRAM的工作流程
图9 SDRAM的基本工作流程
开始初始化:
1、同时启动装置核心电源VDD和装置I/O电源VDDQ。声明并保持CKE引脚为高电平(CKE引脚为时钟使能信号,高电平表示启动内部时钟信号)。
2、当VDD和VDDQ稳定且CKE设置为高电平时,应用稳定的时钟。
3、等待200s以执行清空操作命令。
4、预充电:预充电命令。SDRAM执行预充电命令后,需要执行空操作命令。这两个操作将同时预充电所有的存储单元,从而将阵列中的所有器件置于待机状态。引脚A10(=AP自动预充电)可以选择预充电模式。当A10=低电平时,单个存储体被预充电,该存储体由引脚BA0和BA1选择。当A10=高时,所有存储体被预充电。
5、自动刷新:自刷新命令。SDRAM要执行两次自刷新命令,每次刷新命令后需要执行一次空操作命令。这些操作会使SDRAM的内部刷新和计数器正常运行,为SDRAM模式寄存器编程做准备。
6、加载模式寄存器:设置模式寄存器。模式寄存器通常用于定义SDRAM的工作模式。寄存器一般设置读取延迟、突发长度、CAS、突发类型、工作模式,以及SDRAM是工作在单次读写操作下还是突发操作下。模式寄存器由加载模式寄存器命令编程,这组信息将保存在模式寄存器中,直到存储器断电。该寄存器的设置也是通过地址线来设置的,因此在发出加载模式寄存器命令后要做的一个操作是将SDRAM地址线上的值设为您想要设置的值。立正!该操作是八位操作。模式寄存器中的M0-M2用于定义突发长度,M3定义突发类型(顺序或交错),M4-M6定义CAS延迟,M7和M8定义操作模式,M9定义写突发模式),M10和M10、M11目前保留。只有当所有存储体都处于空闲状态时,才能加载模式寄存器,并且控制器必须在所有初始化学组完成之前等待一段时间。初始化过程中的任何非法操作都可能导致初始化失败,从而导致整个计算机系统无法启动。
设置模式寄存器后,进入正常读写操作模式。
图10SDRAM初始化
SDRAM的基本读写操作
SDRAM的基本读操作需要控制线和地址线发出一系列命令。首先,发出存储体激活命令(ACTIVE ),锁存相应的存储体地址(由BA0和BA1给出)和行地址(由A0至A12给出)。在存储体激活命令之后,在发出读命令字之前,它必须等待比TRCD(SDRAM的从RAS到CAS的延迟指数)更长的时间。经过CL(CAS延迟值)工作时钟后,读取的数据依次出现在数据总线上。在读操作结束时,向SDRAM发出预充电命令以关闭被激活的页面。等待tRP时间(PRECHAREG命令后,tRP时间后可以再次访问该行),然后就可以开始下一次读写操作了。SDRAM读操作只有突发模式,突发长度为1、2、4、8。
图11SDRAM基本读取操作
SDRAM的基本写操作也需要控制线和地址线发出一系列命令来完成。首先,发出存储体激活命令(ACTIVE ),锁存相应的存储体地址(由BA0和BA1给出)和行地址(由A0至A12给出)。在存储体激活命令之后,在发出写命令字之前,它必须等待比tRCD更长的时间。写命令可以立即写入,要写入的数据依次送到DQ(数据线)。最后一次数据写入后延迟tWR时间。发出预充电命令以关闭激活的页面。等待tRP时间后,可以开始下一步操作。有两种写操作:突发写和非突发写。突发长度与读取操作相同。
SDRAM刷新过程:
因为SDRAM使用其内部电容来存储数据,所以需要不断刷新来保存数据。刷新操作有一个固定的周期,以行为单位进行刷新,所有行依次操作,以保持那些存储体中的数据长时间没有被重写。与所有L-bank预充电不同,这里的行是指所有L-Bank中地址相同的行,但预充电时每个L-Bank中的工作行地址不一定相同。内存条中电容的数据有效存储周期的上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的周期是64 ms .所以刷新率是:行数/64 ms .刷新命令一次对一行有效,发送间隔也随总行数而变化。
有两种刷新操作:自动刷新(AR)和自刷新(SR)。无论何种刷新方式,都不需要外部提供行地址信息,因为是内部自动操作。
对于AR,SDRAM有一个行地址生成器(也叫刷新计数器),自动依次生成行地址。因为对一行中的所有存储体执行刷新,所以不需要列寻址,或者CAS在RAS之前有效。所以AR也叫CBR(CAS先于RAS)刷新。因为刷新涉及到所有的L-bank,所以在刷新过程中所有的L-bank都停止工作,每次刷新所用的时间是9个时钟周期(PC133标准),然后才能进入正常工作状态,也就是说在这9个时钟周期内,所有的工作指令只能等待,不能执行。64ms后,再次刷新同一行,以此类推。显然,刷新操作肯定会影响SDRAM的性能,也是DRAM在获得相对于SRAM(静态存储器,无需刷新即可保留数据)的成本优势的同时所付出的代价。
SR主要用于睡眠模式下低功耗状态下的数据存储,这方面最著名的应用是STR(Suspend to RAM)。发出AR命令时,CKE被置于无效状态,并进入SR模式。此时,不再依赖系统时钟,而是根据内部时钟执行刷新操作。在SR期间,除了CKE之外的所有外部信号都是无效的(不需要提供外部刷新指令),只有让CKE再次有效,才能退出自刷新模式,进入正常工作状态。
审核编辑:李倩
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们