SDRAM
SDRAM(同步动态随机存储器)
本次运用的SDRAM内存大小为256Mbit,有4个bank,每个bank有4M(8192行*515列)存储单元,每个单元可存16bit数据
引脚
信号 | 类型 | 描述 |
---|---|---|
clk | in | 时钟,所有其他输入在CLK的上升沿被寄存到SDRAM |
cke | in | 时钟使能,控制内部时钟信号,当禁用时,SDRAM将处于电源关闭、暂停或自刷新状态之一 |
cs_n | in | 片选,启用或禁用除CLK、CKE和DQM之外的所有输入 |
BA0,BA1 | in | bank地址线 |
A0-A12 | in | 行列地址线,行地址:RA0 ~ RA12,列地址:CA0 ~ CA8自动预充电标志:A10 |
RAS_n,CAS_n,WE_N | in | 行地址选通,列地址选通,写使能 |
LDQM,UDQM | I/O | 数据掩码,16位高低字节,可控制读写数据 |
DQ0-DQ15 | I/O | 数据输入输出 |
操作流程
1、预充电(precharge)
预充电命令:关闭特定bank中激活的行,或关闭所有bank中激活的行。
A10决定预充电模式:
当预充电命令中的地址A10为高时,预充电所有bank;当预充电命令中A10为低时,预充电特定bank。
当write/read命令中的A10为高时,自动预充电(auto-precharge)被使能;反之。
预充电命令发送之后,这些bank等待tRP才能接收命令
2、自动预充电(auto-precharge)
自动预充电是非显示命令,即使能自动预充电是需要发送write/read命令时将地址中A10拉高,在读写
突发结束后,立即预充电那个bank/row。
3、NOP
NOP 指令用以表明对 sdram 芯片(CS# == 0)进行空操作。NOP 指令的目的是在 sdram 在空闲
或者等待状态下,避免去执行一些潜在的不需要的指令。已经在执行过程中的指令不受影响。
4、自动刷新(auto-refresh)与自刷新(self-refresh)
为使数据不丢失,电容的两次刷新时间不能超过64ms,刷新都是针对行的。共性:都不需要外部提供地址信息,SDRAM内部有一个行地址生成器(刷新计数器)。刷新都是针对
一行的,不需要对列地址寻址,但也不需要对行进行寻址,因为内部有刷新计数器
自动刷新:SDRAM正常工作模式中为了数据不丢失进行的操作,需要外部时钟参与,刷新的行地址也
是由内部刷新计算器控制
自刷新:休眠模式低功耗状态下存储数据,不需要外部时钟参与,刷新的行地址内部刷新计算器控
制。
发送自动刷新命令需要的时间为tRRC(自动刷新周期),由于是对行操作,等效于行选通时间(RAS)
SDRAM中每次刷新操作所需要的时间为自动刷新周期(tRC),在自动刷新指令发出后需要等待tRC才能发
送其他指令。
5、行激活
行激活命令也叫做bank激活命令,作用是在指定bank中激活一行;
行激活后会一直处于激活状态(即列寻址处于激活状态),直到预充电命令被发送到这个bank;
行激活命令之后,需要延时tRCD(即发出行地址到发出列地址的时间间隔),才能发送READ/WRITE命令(读写操作必须先激活对应bank)
6、读操作
读数据命令用来开启数据的突发读,bank,row都可选,注意A10的值决定是否执行自动预充电操作,若执行自动预充电,突发读结束后就进行预充电,此行关闭,若不执行自动预充电,该行保持激活,仍能被访问。
CAS latency :读延迟(读潜伏周期,CL)Burst length:突发长度(BL)
读命令发出后,输出buffer(理解为SDRAM的dq_out)会在(CL-1)个时钟后期后变为低阻,然后会在突发读结束后重新变为高阻态,
7、写操作
DM(数据掩码)高有效,当为低时,数据能正确被写入DM;当为高时,数据将被忽略。
写突发时,第一个数据与写命令同步;
突发写–>预充电中间需要间隔tDPL