FPGA学习笔记
SDRAM 操作命令
1. SDRAM 操作命令
1. SDRAM 操作命令
-
禁止命令:禁止新的命令执行。执行此命令时,不用顾及 CLK 是否(CKE),已 经执行的命令不受影响。
-
空命令:该命令主要给被选中的 SDRAM 传递一个无需要操作的信息,主要是 为了防止在 SDRAM 处于空闲或者等待状态时,其他命令被写入 SDRAM。此命令对正在执行的操作没有影响。
-
加载模式寄存器命令:模式寄存器的值是通过地址线 A0–A11 写入 SDRAM,加载模式寄存 器命令只有在所有的 BANK 都处于空闲状态(未激活)时才可进行, 否则会出错。在执行了加载模式寄存器命令后,必须等待对应的响应 周期(tMRD)后才能执行新的命令。
A0—A2:突发长度寄存器;A3:突发类型寄存器,顺序和隔行;
A4—A6:列选通潜伏期设置寄存器:是指从读命令被寄存到数据总线上到有第一个有效数据间的时钟间隔,2,3个时钟周期;
A7—A8:运行模式设置寄存器:SDRAM 器件存在多种模式:如标准模式,测试模式等,对普通用户,只开放了标准模式。因此,我们在使用的时候,需要设置{A7,A8}=2’b00;
A9:写突发模式设置寄存器:A9= 0:SDRAM 的读和写都将采用突发方式,具体突发长度由突发长度寄存器 A0—A2 设定;A9=1:对于 SDRAM 的读,依然遵从突发长度寄存器设定的值进行,而对于 SDRAM 的写,则不再具备突发属性,每个写入命令只能写入一个数据;
-
激活命令(ACTIVE):为后续的操作或者叫激活一个特定的BANK 和行。
行会一直保持激活状态并可以进行读 写,只有执行一个预充电命令(PRECHARGE)后,该行才会被关闭。
同一个 BANK 中,每次只能激活一行。在某行已经激活的状态下,当需要对该 BANK 中的另一行进行操作时,必须首先执行一个预充电命令来关闭当前行,然后才能激活另一行.
BA0-BA1 :BANK;A0–A12:行(ROW)。
-
读命令:来启动对一个已经激活行的突发读取操作。
① A0–A9, A11(x4),A0– A9(x8),A0–A8(x16)):指定需要读取的数据起始列地址,
② A10:控制是否在突发读取完成之后立即执行预充电,即关闭当前行操作。若为1:在读取完当前行以后立即自动执行预充电操作(关闭当前行),若为0:电平则不关闭该行,使其继续处于激活状态,以便于紧接着对该行执行新的读写操作。
③ DQM:控制该位对应的数据是否被正常的读出。若 DQM 为1,则数据总线上对应字节的状态会变为三态,即该字节数据被屏蔽。从 DQM 有效到数据总线状态对应发生变化,有两个时钟周期的延迟。
-
写命令:启动对一个已经激活行的突发写入操作。
① A0–A9, A11(x4),A0– A9(x8),A0–A8(x16)):指定需要写入的数据起始列地址。
② A10:控制是否在突发写完成之后立即执行预充电,即关闭当前行操作。若为1:在写完当前行以后立即自动执行预充电操作(关闭当前行),若为0::不关闭该行,使其继续处于激活状态,以便于紧接着对该行执行新的读写操作。
③ DQM:控制该位对应的字节是否被写入新的数据。DQM 为高电平,则数据总线上对应字节的数据不会被写入到 SDRAM。
-
预充电命令(PRECHARGE,用于关闭行):关闭在指定 BANK 或者全部 BANK(具体是单一或者全部 BANK 由 A10 状态选择)中已经打开的行。在预充电命令执行并经过 tRP(PRECHARGE command period)时间后,对应的
BANK将可以重新被操作,即从执行预充电命令到下一次能够对该 BANK 执行新的命令,需要等待 tRP 的时间。A10=1::对所有
BANK 行进行预充电,若 A10 =0:只对 BA0 和 BA1 指定的 BANK 中的行进行预充电。当某个 BANK
行被执行了预充电命令后,该 BANK 将处于空闲状态,在下次读写操作之前必须重新激活。 -
自动预充电命令:指在不额外增加执行指令的前提下,达到使用预充电指令一样的效果。在对 SDRAM 发出读写命令时,使用 A10 指明是否在突发读写完成后立即自动执行预充电操作来实现的。自动预充电命令在突发长度为整页突发时是无效的。自动预充电命令每次操作只一次有效。
-
突发终止命令:用来截断固定长度或者整页长度的突发。当突发中断命令被执行时,离该命令最近的一次被 SDRAM 寄存的读或者写命令被截断,突发中断命令并不会对对应行进行预充电,即执行了突发中断操作后,该行仍然处于被激活状态,除非预充电命令被执行,该 BANK 才会被关闭。
-
自动刷新命令:用于对 SDRAM 进行常规操作的 过程中。
① 是非持续性的,每次需要时,都需要发送此命令。
② 在执行自动刷新命令之前,所有的 BANK 必须被预充电(关闭)。
③ 在自动刷新和预充电命令之间,必须间隔最少 tRP(PRECHARGE command period)时间。
④ 自动刷新时,行地址由 SDRAM 芯片内部的刷新控制器自动更新。
-
自刷新命令:保持 SDRAM 中的数据,即使系统中其他部分已经掉电。在自刷新模式下,SDRAM 不需要外部的时钟信号就能够保持数据。
① CKE =0,SDRAM 内部自己产生时钟,用来作为自动刷新的周期。
② 进入自刷新模式后,最少需要保持在自刷新模式下 tRAS (ACTIVE-to-PRECHARGE command)的时间,对于运行在自刷新模式下的最大时间并没有任何限制。
③ 退出自刷新模式需要执行一串命令,在 CKE 信号恢复到高电平之前,时钟信号 CLK 必须稳定。当 CKE 信号恢复到高电平后,必须保持 NOP 命令最低 2 个时钟周期,因为必须保证内部可能 正在执行的刷新操作已完成。
④ 在退出自刷新模式后,就需要每 64ms 内执行 8192 次自动刷新操作(自刷新和自动刷新都是利用了内部的行刷新计 数器)。注:汽车级器件不支持自刷新功能。
参考资料:
- 《FPGA系统设计与验证实战指南》
- MT48LC16M16A2_Micron 数据表
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~