SDRAM 介绍
前言
本文通过镁光 SDRAM 芯片(型号:MT48LC16M8A2TG)手册来学习 SDRAM 的工作原理。
结构框图
引脚及定义
名称类型(对于 SDRAM)定义CLKInput时钟CKEInputCLK 时钟使能,高有用CS#Input片选信号,低有用CAS#,RAS#,WE#Input命令信号,同 CS# 组成差异操纵命令x4,x8: DQM ; x16: DQML,DQMHInput数据掩码,高有用BA[1:0]Inputbank 地址A[11:0]Input① 激活命令时,A[11:0] 作为行地址;② 读/写命令时,A[9:0] 和 A[11] 作为列地址,A[10] 用来指示是否使能主动预充电(高电平有用);③ 预充电命令时,A[10] 高电平表示对所有 bank 举行预充电,低电平表示只对 BA[1:0] 指示的 bank 举行预充电; ④ 加载模式寄存器命令时,A[11:0] 用来表示操纵码x16: DQ[15:0]; x8: DQ[7:0]; x4: DQ[3:0]Inout数据VDDQSupplyDQ 电源VSSQSupplyDQ 地VDDSupply芯片电源VSSSupply芯片地 命令
命令真值表
注释:
- CKE 除了自刷新命令(SELF REFRESH) 为高电平,别的命令下均为低电平
- A[11:0] 用于指示行地址,BA[0:1] 用于指示 bank 地址
- 读/写命令时,A[9:0] 和 A[11] 作为列地址,A[10] 用来指示是否使能主动预充电(高电平有用)
- BURST TERMINATE 表示中断突发命令
- 预充电命令时,A[10] 高电平表示对所有 bank 举行预充电,低电平表示只对 BA[1:0] 指示的 bank 举行预充电
- 主动刷新(AUTOREFRESH): CKE = 1; 自刷新(SELF REFRESH):CKE = 0
- 加载模式寄存器命令时,通过 A[11:0] 将操纵码写入寄存器
- 写命令时,DQ 与 DQM 同时有用;读命令时,DQ 相对 DQM 延时 2 个时钟周期(即 DQM 需提前两个时钟周期)
① COMMAND INHIBIT
克制执行新命令,不管 CLK 是否使能。但是正在举行的操纵不会受影响
② NO OPERATION (NOP)
空闲命令,可防止在空闲或等待状态下使用不合规的命令
③ LOAD MODE REGISTER (LMR)
加载模式寄存器命令时,通过 A[11:0] 将操纵码写入寄存器。此命令只能在所有bank闲置时发出,而且在 TMRD 后才能举行其他操纵。
④ ACTIVE
在读写操纵之前,一般要举行激活操纵,这是因为 SDRAM 的行列地址线是同一组地址线,分时复用,读写操纵发送的是列地址,以是在此之前需要确定读写操纵的行地址以及 bank,这就是激活操纵,在告知 SDRAM 行地址之后,SDRAM 还需要 TRCD 时间才能把该行激活,之后就可以对该行数据举行读写操纵了。
激活命令时,通过 BA[1:0] 选择要访问的 bank,通过 A[11:0] 选择访问的行。在向 bank 发出预充电命令之前,该行将保持激活状态以供访问。
若要访问同一 bank 的其他行,必须先对该 bank 举行预充电,然后再激活待访问行,最后才能举行读写操纵。
⑤ READ
读命令时,A[9:0] 和 A[11] 作为列地址,A[10] 用来指示是否使能主动预充电(高电平有用)。
当选择主动预充电时,正在访问的行将在读突发竣事时主动举行预充电操纵。未选择主动预充电时,该行将保持激活状态,后续仍可访问。
发送读指令后,SDRAM 会在 2~3 个时钟周期才会给出数据,这段时间称为埋伏期,详细时间可以通过模式寄存器设置。
DQ 的读取数据受两个时钟前(与埋伏期无关)的 DQM 状态影响,如图29所示。当 DQM 为高电平时,相应的 DQ 将在两个时钟后变为高阻态。当 DQM 为低电平时,DQ 将输出有用数据。
⑥ WRITE
写命令时,A[9:0] 和 A[11] 作为列地址,A[10] 用来指示是否使能主动预充电(高电平有用)。
当选择主动预充电时,正在访问的行将在写突发竣事时主动举行预充电操纵。未选择主动预充电时,该行将保持激活状态,后续仍可访问。
写入存储器时,DQ 和 DQM 同时作用,如下面时序图所示。当 DQM 低电平时,数据将写入存储器;当 DQM 为高电平时,将忽略相应的数据输入,且不会对该字节/列位置执行写入操纵。
⑦ PRECHARGE
A[10] 高电平表示对所有 bank 举行预充电,低电平表示只对 BA[1:0] 指示的 bank 举行预充电。执行此命令后 TRP 才能举行其他操纵。
若某个 bank 执行了预充电命令,那么读写操纵前必须先执行激活命令。
若要访问同一 bank 的其他行,必须先对该 bank 举行预充电,然后再激活待访问行,最后才能举行读写操纵。
⑧ BURST TERMINATE
突发中断命令,用于中断固定长度大概连续页突发操纵,可以通过此命令结合全页读写模式实现任意长度的读写操纵。
⑨ AUTO REFRESH
DRAM 通过电容存储电荷,但是电容会放电,为了防止电容存储的电荷丢失,就需要在电容存储器还没有丢失的时候把它存储的数据读出来,再重新写进去,这样电容存储的电荷又可以生存一段时间,这个操纵就被称为自刷新。
AUTO REFRESH 在 SDRAM 的正常运行期间使用,此命令是非永久性的,因此每次需要刷新时都必须发出该命令。
在发出 AUTO REFRESH 命令之前,必须对所有活动的 bank 举行预充电。AUTO REFRESH 命令在 PRECHARGE 命令后 TRP 时间才能发出。寻址由内部刷新控制器天生。这使得地址在 AUTO REFRESH 命令期间为“Don’t Care”。无论器件接口位宽多少,128Mb SDRAM 每 64ms(商业级或工业级) 或每 16 ms(车规级) 需要 4096 次主动刷新周期。
主动刷新(AUTOREFRESH): CKE = 1
⑩ SELF REFRESH
启用自刷新模式后,SDRAM 会提供自己的内部时钟,使其执行自己的主动刷新周期,此时只需要保证 CKE 为低电平,别的信号状态不关心。
自刷新模式的最短时间为 TRAS
退出自刷新模式步骤:
- 等待CLK 时钟稳定;
- CKE 置位;
- 至少执行两次 NOP 命令,等待完成内部刷新历程
- 最后执行一次 AUTO REFRESH 命令
自刷新(SELF REFRESH):CKE = 0
命令切换真值表
注:Idle 状态表示 当前 bank 已完成预充电操纵
CKE 真值表
- CKE 前后都为高电平状态切换如 “命令切换真值表” 章节对应的两个表所示
操纵时序
初始化及加载模式寄存器
详细步骤如下:
- VDD 和 VDDQ 供电正常,输入时钟 CLK 稳定
- 等待至少 100 us,期间只能执行 COMMAND INHIBIT 或 NOP 命令
- 在这 100us 内置位 CKE 信号后,至少执行 1 次 COMMAND INHIBIT 或 NOP 命令
- 对所有 bank 举行预充电
- 等待 TRP 时间后所有 bank 进入 idle 状态(期间执行 NOP 命令)
- 执行 AUTO REFRESH 命令,并等待 TRFC 时间(期间只能执行 COMMAND INHIBIT 或 NOP 命令)
- 再次执行 AUTO REFRESH 命令,并等待 TRFC 时间(期间只能执行 COMMAND INHIBIT 或 NOP 命令)
- 执行加载模式寄存器命令(模式寄存器值上电时为未知状态,需举行设置,设置后只有装备断电大概重新执行加载模式寄存器命令才会改变)
- 等待 TMRD 时间后就初始化完成,可举行其他操纵了
注:步骤 6 至少执行两次(即步骤 6 和 步骤 7),也可以根据实际使用场景重复多次执行
bank/row 激活
- 执行激活命令后 TRCD 才可以执行读写操纵
- TRCD 可通过芯片手册得知,根据 CLK 频率换算成时钟周期(周期数向上取整)
- 比方:TRCD 为 20ns, CLK 为 125MHz(对应 8 ns),则 TRCD 对应最小时钟周期数为 20ns/8ns = 2.5 ≈ 3
读操纵
- 执行页突发读取后会不停输出数据,除非执行 BURST TERMINATE 中断突发,本地址到达页尾时主动回卷
Consecutive READ Bursts
Random READ Accesses
READ-to-WRITE
DQM 用于制止 I/O 争用
如图 23 如果写突发长度为 1 时,不需要考虑
如图 24 所示,DQM 信号必须在写命令前至少 2 个时钟置位,以抑制从 SDRAM 中输出读取的数据,让数据总线处于空闲状态。否则,第二次写入无效。
比方,如果DQM在图RW2中的T4拉低,则T5和T7处的写入将有用,而T6处的写入将无效。DQM信号必须在写入命令之前取消断言(DQM延长是输入缓冲区的零时钟),以确保写入数据未被屏蔽;时序如下图:
READ-to-WRITE With Extra Clock Cycle
READ-to-PRECHARGE
- 预充电命令需在最后一个突发数据输出前(CL-1)个时钟周期执行
- 预充电命令可以截断固定长度大概页突发,但是需要在合适时间执行预充电命令
Terminating a READ Burst
Alternating Bank Read Accesses
READ Continuous Page Burst
执行页突发读取后会不停输出数据,除非执行 BURST TERMINATE 中断突发,本地址到达页尾时主动回卷
READ – DQM Operation
DQ 的读取数据受两个时钟前(与埋伏期无关)的 DQM 状态影响,如下面时序图所示。当 DQM 为高电平时,相应的 DQ 将在两个时钟后变为高阻态。当 DQM 为低电平时,DQ 将输出有用数据。
写操纵
WRITE Burst
- 突发长度为 2,写突发完成后没有其他命令,则 DQ 保持高阻态
WRITE-to-WRITE
Random WRITE Cycles
WRITE-to-READ
WRITE-to-PRECHARGE
Terminating a WRITE Burst
Alternating Bank Write Accesses
WRITE – Continuous Page Burst
WRITE – DQM Operation
Burst Read/Single Write
由模式寄存器的写入突发模式字段决定
- M9 = 0:读写突发长度由 M[2:0] 决定
- M9 = 1:读突发长度由 M[2:0] 决定,写不支持突发操纵
预充电
A[10] 高电平表示对所有 bank 举行预充电,低电平表示只对 BA[1:0] 指示的 bank 举行预充电。执行此命令后 TRP 才能举行其他操纵。
若某个 bank 执行了预充电命令,那么读写操纵前必须先执行激活命令。
若要访问同一 bank 的其他行,必须先对该 bank 举行预充电,然后再激活待访问行,最后才能举行读写操纵。
READ With Auto Precharge Interrupted by a READ
READ With Auto Precharge Interrupted by a WRITE
READ With Auto Precharge
READ Without Auto Precharge
Single READ With Auto Precharge
Single READ Without Auto Precharge
WRITE With Auto Precharge Interrupted by a READ
WRITE With Auto Precharge Interrupted by a WRITE
WRITE With Auto Precharge
WRITE Without Auto Precharge
Single WRITE With Auto Precharge
Single WRITE Without Auto Precharge
主动刷新 (AUTO REFRESH)
自刷新 (SELF REFRESH)
退出自刷新模式步骤:
- 等待CLK 时钟稳定;
- CKE 置位;
- 至少执行两次 NOP 命令,等待完成内部刷新历程
- 最后执行一次 AUTO REFRESH 命令
节电模式
- 进入节电模式后 SDRAM 不会举行自刷新,以是需要周期退出节电模式举行刷新
时钟挂起
模式寄存器定义
- 突发长度(BL):突发长度确定单次读或写命令可访问的最大列数。1、2、4 或 8 的突发长度可用于次序突发类型和交织突发类型,而整页突发仅可用于次序类型
- 突发类型(BT):
- CAS 埋伏期(CL):执行读命令至 DQ 输出有用数据的时间延长
- 写入突发模式
- M9 = 0:读写突发长度由 M[2:0] 决定
- M9 = 1:读突发长度由 M[2:0] 决定,写不支持突发操纵
SDRAM 带宽及容量计算
芯片参数
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |