| |
(1)SDRAM的控制pin脚:CS(chip select), RAS(row access strobe), CAS(column access strobe), WE(write enable)。SDRAM发的各种command就是通过给这些pin不同的配置实现的。
(2)tRCD (RAS to CAS Delay):在发送列读写命令时必须要与行有效命令(active command)有一个时间间隔。(列寻址信号是与read/write command同时发出的。)
(3)tCL(CAS latency):在CAS(随同read/write同时发出)发出之后,需要经过一段时间才能有有效数据输出。
(4)tRP(Precharge command period):在发出precharge command后,要经过一段时间才能允许active command去打开新行。
读data的3种case:
1). 要寻址的行和L-bank是空闲的: 最快经过tRCD(active command) + tCL(read command)的时间后就可得到有效数据。
2). 要寻址的行正好是前一个操作的工作行(即要寻址的行已经处于选通(strobe)状态): 最快经过tCL(read command)的时间后就可得到有效数据。
3). 要寻址的行所在的L-bank中已经有一个行处于活动状态: 最快经过tRP(precharge command) + tRCD(active command) + tCL(read command)的时间后就可得到有效数据。
(5)Precharge & auto precharge:
Precharge(预充电): L-bank关闭当前工作行,准备打开新行的操作。
Precharge(de-activate row in bank or banks)是一个sdram command,一般在Initiation过程中使用,而auto precharge是含在read/write command里面的(由address里的A10控制),一般在最后一个read/write时使用。
(6)关于Mode Register:
Burst length(3 bits),Burst type,CAS latency(3 bits),Operating mode(2 bits),Write burst mode。
(7)M-domain会用到的几种clock:
1)mclk:发给sdram controller电路用。
2)mclko:发给chip外部的sdram芯片用。
3)mclka:发给datapath用,写data到sdram中去。
4) mclkb:发给datapath用,读sdram送过来的data。
其中,2),3),4)可进行粗调(0,90,180,270 degree)和细调(256个delay cell)。
(8)关于微调(256级delay cell级联):
第一个delay cell的CKIN_U接vdd。当SEL=0时,这一级的输出就是vdd,传给下一级的CKIN_U。一直到某一级的SEL=1,则其输出就是mcko_inv反相并有一点延时。这个clock信号传给下一级的CKIN_U。而下一级的SEL必然等于0,因为是one-hot码。那么这个clock信号就会被delay后继续往下传。那么one-hot码中1的位置就决定了fine delay时间的长短。
dly_sel_mclko[255:0]是one-hot码,每一位用来控制一个delay单元。
(9)关于auto refresh
存储体中电容数据有限保存上限是64ms,以一行(row)为单位进行刷新,
假如有4096 row(2^12)那么auto refresh的时间间隔为:64ms / 4096 = 15.625 us(微秒)。
2. 状态机跳转
(1)IDLE à AREF à AREF_wait:就是关于auto refresh的状态跳转。
(2)IDLE à PRE à PRE_wait:关于initial的precharge状态跳转。
(3)IDLE à LMR à LMR_wait:关于初始化时mode register的状态跳转。
(4)初始化:IDLE à PRE à LMR à PRE à AREF à LMR à IDLE
(5)正常工作状态:
ACT:select bank & activate row。
ACT_wait:等待tRCD(delay from Row active to read/write)的时间后再进入read/write。
READ:select bank & column, and start READ burst。
READ_wait:burst length,1个READ cycle + 3个READ_wait cycle凑成burst length为4的情况。
RDATA:当data读取完后,需要等待tCL的时间数据才真正输出。
WRITE:select bank & column, and start WRITE burst。
WRITE_wait:burst length,1个READ cycle + 3个READ_wait cycle凑成burst length为4的情况。
ACTX:作用是在read bank a 快要结束的时候,对下一个bank(bank b)做active的操作。ACTX后面,对bank a再读最后一组数据,完成auto precharge。接下来会开始bank b的read。如下图,先读bank0,然后读bank1。注意col地址4fc中的4表示要autoprecharge。