003 SDRAM(一)

1,SDRAM

1.1 SDRAM引脚框图

 

注:x4、x8、x16 分别表示位宽 4bit、8bit、16bit;#符号表示信号为低电平有效;短
划线 - 表示 x8 和 x4 引脚功能与 x16 引脚功能相同。
由于 SDRAM 在容量、位宽以及生产厂家存在差异,所以 SDRAM 在 Bank 地址、地
址总线、数据总线和数据掩码可能存在位宽的差异,但各输入输出管脚的名称和实现功能
并无出入。由图 53-4 已较为详细的展示了不同位宽的 SDRAM 芯片的引脚示意图,针对其
中较为重要的输入输出引脚,我们以镁光公司生产的、容量为 4 Meg x 16 x 4 Banks 的
SDRAM 芯片为例,对其做一下功能介绍。

 

 

 

 

 1.2 SDRAM功能框图

 

SDRAM 内部包含一个逻辑控制单元,内部包含模式寄存器和命令解
码器。外部通过 CS_N、RAC_N、CAS_N、WE_N 以及地址总线向逻辑控制单元输入命
令,命令经过命令解码器进行译码后,将控制参数保存到模式寄存器中,逻辑控制单元进
而控制逻辑运行。
外部通过地址总线输入地址信息,地址信息在逻辑控制单元进行逻辑控制时起到辅助
作用,除此之外,复用的地址总线与 Bank 控制逻辑、行地址复用器、列地址计数锁存
器、列地址解码器等内部器件共同作用,精确选定存储阵列中与行列地址相对应的存储单
元,进而进行数据存取操作。

1.3 SDRAM 的存储容量与速度等级

 

。例“MT48LC16M16A2”,由图可知,“Micron”“MT48LC16M16A2”分别表示此
SDRAM 芯片的生产商和产品型号。“4Meg × 16 × 4Banks”才是表示 SDRAM 存储容量
的具体参数,其中“4Meg”表示单个 L-Bank 包含的存储单元的个数,计算方法为单个存
储阵列行地址数和列地址数的乘积,以此芯片为例,行地址总线为 A0-A12,行地址位宽为
13 位,行地址数为 8192 (2^13)行,列地址位宽为 9 位,列地址数为 512(2^9)列,单个 L
Bank 中包含的存储单元个数为行地址数(8192)与列地址数(512)相乘,乘积为 4M(8192 ×
512 = 4194306); “16”表示数据位宽,即每个存储单元存储数据的 bit 数;4Meg 与 16 相
乘表示单个 L-Bank 中可存储的 Bit 数;“4BANKS”表示一片 SDRAM 中包含的 L-Bank
个数,此 SDRAM 芯片包含 4 个 L-Bank;由此可得 SDRAM 芯片的存储容量为:
256MBit(4Meg × 16 × 4BANKS)。
容量计算方法可简化为:
存储容量(Bit) = L-Bank 存储单元数 ×数据位宽(Bit) × L-Bank 个数

 

时钟频率(Clock Frequency),单位
MHz,所列举的具体参数为 SDRAM 正常工作的最高时钟频率,SDRAM 工作时只能等于
或低于这一时钟频率;tRCD 表示写入自激活命令到开始进行数据读写,中间所需的等待时
间,列举的数值表示等待时间的最小值,单位为 ns; tRP 表示自预充电指令写入到预充电
完成所需的等待时间,列举的数值表示等待时间的最小值,单位为 ns;CL(CAS(READ)
latency)列选通潜伏期,表示自数据读指令写入到第一个有效数据输出所需等待时间,单位
ns;Target tRCD-tRP-CL 表示最大工作频率下,tRCD、tRP、CL 等待的最小时钟周期数。
 

1.4 基本操作与时序

 

 

1.4.1禁止命令(CI)

禁止命令 (Command Inhibit) ,其他数据手册也称为取消设备选择命令 (Device
Deselect),控制指令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b1XXX。不论 SDRAM 处于何种
状态,此命令均可被执行,无需顾及 CKE 是否有效,即 CLK 是否使能,无需关心 DQM、
ADDR、DQ 的信号输入;执行此命令后,SDRAM 芯片不被选择,新的命令无法写入,但
已经执行的命令不受影响。

1.4.2无操作命令(NOP)

无操作命令(No-operation),也可称为空命令,简称为 NOP 命令,控制指令为
{CS_N,RAS_N,CAS_N,WE_N} = 4’b0111。不论 SDRAM 处于何种状态,此命令均可被写
入,该命令给被选中的 SDRAM 芯片传递一个空操作信息,目的是为了防止 SDRAM 处于
空闲或等待状态时,其他命令被写入,此命令对正在执行的命令无影响。

1.4.3 配置模式寄存器命令(MRS)

  设定BL数值,读写操作模式(突发与否),突发传输模式(顺序传输,交错传输)

配置模式寄存器命令(Load Mode Register),也被称为 Mode Reigister Set,简称 LMR 命
令,控制指令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0000,此命令只有所有 L-Bank 均处于
空闲状态时才可被写入,否则配置出错,而且在执行此命令后,SDRAM 必须等待相应的
响应时间 tRSC(Register Set Cycle),模式寄存器配置周期)后,才可写入新的命令。

 

突发长度(Burst Length)
突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉
及到存储单元(列)的数量就是突发长度(Burst Length,简称 BL)。
 
地址总线的低三位 A0-A2 是突发长度的控制位,SDRAM 芯片的突发长度可设置为
1、2、4、8 和整页,单位为字节,整页表示一次突发传输一整行的数据量,具体数值视芯
片而定。
 
若在数据读/写操作时不使用突发传输,此时可等效为突发长度为 1 字节,每次读/写数
据时,都要对存储单元进行寻址,如果要实现连续的读/写操作,就要不断地发送列地址和
读/写命令,这种方法控制资源占用极大,效率较低。

 

若使用突发传输,只要指定起始列地址和突发长度,内存就会依次地自动对后面相应
数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址,这样,除了第一笔数
据传输需要若干个周期外,其后的每个数据只要一个周期即可获得。突发的数据长度一般
是 4 或 8,如果传输时实际需要的数据长度小于设定的 BL 值,则调用“突发停止”命令结
束传输。

 

突发类型
突发类型的设置位为 A3,可将突发类型设置为两类,顺序和隔行。一般将 A3 设置为
低电平,选择顺序类型,但也要结合实际情况进行选择。不同突发类型所对应的情况,具
体见图 53-12。

 

列选通潜伏期(CAS Latency)
列选通潜伏期是指从读命令被寄存到数据总线上到出现第一个有效数据之间的时钟周
期间隔,列选通潜伏期可被设置为 2 个或 3 个时钟周期,设置位为 A6,A5,A4,当
{ A6A5A4}=3’b010 时,潜伏期为 2 个时钟周期;当{ A6A5A4}=3’b011 时,潜伏期为 3 个
时钟周期,时序图具体见图 53-13。

 

运行模式(Operating Mode)
运行模式设置位为 A7,A8,SDRAM 存在标准模式、测试模式等多种模式,但对于普
通用户,只开放了标准模式,在使用 SDRAM 时只需将 A7,A8 设置为低电平进入标准模式
即可。
写模式
写模式设置位为 A9,控制 SDRAM 的写模式。当 A9 为低电平时,SDRAM 的读/写操
作均采用突发方式,突发长度由突发长度寄存器(A0-A2)设定;当 A9 位高电平时,
SDRAM 的读操作依然采用突发方式,突发长度由突发长度寄存器(A0-A2)设定,但
SDRAM 的写操作不在使用突发方式,每一个写命令只能写入一个数据。
A10-A12 为保留位,对模式寄存器的配置不起作用,赋值为 0 即可。

1.4.4 预充电命令

预充电的作用就是关闭指定的 L-Bank 或者全部 L-Bank 中激活的行,预充电命令执行
后,必须等待对应的等待时间 tRP(tRP(Precharge command Period),预充电命令周期),相对
应的 L-Bank 将可以被重新操作。
预充电命令(Precharge)命令包括两类:全部预充电(Precharge All)和指定 L-Bank 预充电
(Precharge Bank),控制指令均为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0010,通过地址总线
中的 A10 和 L-Bank 地址线 BA[1:0]辅助控制预充电类型, 当 A10 为高电平时,执行全部
预充电命令,对所有的 L-Bank 进行预充电,无需关心 BA[1:0]信号的输入;当 A10 为低电
平时,只对由 BA[1:0]选定的 L-Bank 进行预充电。当某个 L-Bank 执行预充电操作后,该
L-Bank 处于空闲状态,在下次读写操作之前必须重新激活。

 

1.4.5 刷新命令(Refresh)

目前国际公认的标准是,存储体中电容的数据有效保存期上限是 64ms,也就是说每一
行刷新的循环周期最大为 64ms,那么刷新速度就是:行数/64ms。我们在 SDRAM 的数据
手册中经常会看到 4096 Refresh Cycles/64ms 或 8192 Refresh Cycles/64ms 的相关介绍,这里
的 4096 与 8192 就代表 SDRAM 芯片中单个 L-Bank 的行数。刷新命令一次对一行有效,
发送间隔也是随总行数而变化, 当单个 L-Bank 为 4096 行时,刷新间隔最大为 15.625μs,
单个 L-Bank 为 8192 行时,刷新间隔最大为 7.8125μs。
刷新命令(Refresh)分为两种:自动刷新命令(Auto Refresh)和自刷新(Self Refresh),控
制指令相同,为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0001,两种刷新方式均不需要外部提
供地址信息。
当 CKE 为高电平时,写入刷新指令,执行自动刷新操作。在执行自动刷新命令前,必
须先要执行预充电命令,将所有 L-Bank 关闭,SDRAM 内部刷新计数器会依次自动生成行
地址,刷新是针对一行中的所有存储单元,所以无需列寻址。由于刷新涉及到所有 L
Bank,因此在刷新过程中,所有 L-Bank 都停止工作,而每次刷新需要等待对应的时钟周
期,之后就可进入正常的工作状态,在此期间,所有工作指令只能等待而无法执行。 64ms
之后则再次对同一行进行刷新,如此周而复始进行循环刷新。
当 CKE 为低电平时,写入刷新指令,执行自刷新操作。自刷新操作主要用于休眠模式
低功耗状态下的数据保存,在发出刷新命令时,将 CKE 置于无效状态,就进入了自刷新模
式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在自刷新期间除了
CKE 之外的所有外部信号都是无效的,只有重新使 CKE 有效才能退出自刷新模式并进入
正常操作状态。

1.4.6 激活命令(Bank Active)

激活命令(Bank Active),控制命令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0011,只有
SDRAM 处于空闲状态下才可被响应。激活命令是为后续操作激活某一特定 L-Bank 中的某
一行,逻辑 Bank 地址线 BA[1:0]和地址总线 A0-A12 选择要激活的特定 L-Bank 的特定行,
激活该行后,该行一直保持激活状态,并可以进行后续读/写操作,操作完成后,只有执行
一次预充电命令(Precharge)后,被激活的特定行被关闭。每次激活只能激活一个 L-Bank,
同一个 L-Bank 中每次只能激活一行,当需要对同一 L-Bank 中其他行进行操作时, 必须先
执行一个预充电命令关闭当前行,再激活另一行进行操作。 

 

1.4.7 写命令

写命令(Write),控制命令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0100,用来实现对已
激活的特定 L-Bank 的特定行的数据突发写入操作,BA[1:0]指定需要写入数据的特定 L
Bank,地址总线 A0-A9 指定需要写入存储单元的起始列地址,A10 的电平变化控制突发写
操作完成后是否立即执行自动预充电操作,若 A10 为高电平,突发写操作完成后,立即执
行自动预充电操作,关闭当前行;若 A10 为低电平,突发写操作完成后,当前行依然处于
激活状态,以便对当前行执行新的读/写操作,想要关闭当前激活行,需写入预充电指令。

 

1.4.8读命令

读命令(Read),控制命令为{CS_N,RAS_N,CAS_N,WE_N} = 4’b0101,用来实现对已激
活的特定 L-Bank 的特定行的数据突发读取操作,BA[1:0]指定需要读取数据的特定 L
Bank,地址总线 A0-A9 指定需要读取存储单元的起始列地址,A10 的电平变化控制突发读
操作完成后是否立即执行自动预充电操作,若 A10 为高电平,突发读操作完成后,立即执
行自动预充电操作,关闭当前行;若 A10 为低电平,突发读操作完成后,当前行依然处于
激活状态,以便对当前行执行新的读/写操作,想要关闭当前激活行,需写入预充电指令。

 

1.4.9 突发终止

突发终止 (Burst Terminate) ,也称为
Burst Stop , 控 制 命 令 为
{CS_N,RAS_N,CAS_N,WE_N} = 4’b0110,SDRAM 处于读/写操作过程中可被写入,突发
停止操作被用来截断固定长度或者整页长度的突发,执行突发停止命令后,最近执行的数
据读/写操作被终止,此命令操作并不会通过预充电关闭当前激活行,需通过预充电操作关
闭被激活行。 

 

posted on 2023-08-21 14:35  沐林枫  阅读(167)  评论(0编辑  收藏  举报

导航