关于SDRAM在STM32系统中的应用
-
SDRAM(以W9825G6KH为例)
W9825G6KH内部结构框图
每个存储单元(bank)可以看成是一个表格,寻址的时候,首先 RAS 信号为低电平,选通行地址,地址线 A0-A12 所表示的地址,会被传输并锁存到行地址译码器里面,最为行地址,同时 BANK 地址线上面的 BS0, BS1 所表示的 BANK 地址,也会被锁存,选中对应的 BANK(BANK被激活),然后, CAS 信号为低电平,选通列地址,地址线 A0~A12 所表示的地址,会被传输并锁存到列地址译码器里面,作为列地址,这样,就完成了一次寻址。
管脚说明:
A0-A12:地址线。A0-A8 Multiplexed pins for row and column address(行列地址线复用).
Row address(行地址): A0-A12. Column address(列地址):A0-A8.
A10 is sampled during a precharge command to determine if all banks are to
be precharged or bank selected by BS0, BS1.
BS0, BS1:BANK选择 Select bank to activate during row address latch time, or bank to read/write during address latch time.
DQ0-DQ15:数据线 Multiplexed pins for data output and input.
#CS:片选信号 Disable or enable the command decoder. When command decoder is disabled, new command is ignored and previous operation continues.
#RAS:行地址选通 Command input. When sampled at the rising edge of the clock, nRAS ,nCAS and nWE define the operation to be executed.
nCAS: 列地址选通 Command input.
nWE:写使能 Command input.
LDQM,UDQM:输入输出MASK The output buffer is placed at Hi-Z(with latency of 2) when DQM is sampled high in read cycle. In write cycle, sampling DQM high will block the write operation with zero latency.在实际使用的时候,我们可能会以: 8 位、 16 位、 24 位和 32 位等宽度来读写数据,这样的话,并不是每条数据线,都会被使用到,未被用到的数据线上面的数据,必须被忽略,这个时候就需要用到数据掩码( DQM)线来控制了
CLK:时钟 System clock used to sample inputs on the rising edge of clock.
CKE:时钟使能 CKE controls the clock(时钟) activation and deactivation. When CKE is low, Power Down mode, Suspend mode, or Self Refresh mode is entered
名词解释
突发长度 – 突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
预充电 --由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank(逻辑 Bank)的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。
刷新: --刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称SR)。
自动刷新: SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成要
刷新的行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址。刷新涉及到所有
Bank,因此在刷新过程中,所有 Bank 都停止工作,而每次刷新所占用的时间为 9 个时钟周期
( PC133 标准),之后就可进入正常的工作状态,也就是说在这 9 个时钟期间内,所有工作指
令只能等待而无法执行。刷新操作必须不停的执行,完成一次所有行的刷新所需要的时间,称
为刷新周期,一般为 64ms。显然,刷新操作肯定会对 SDRAM 的性能造成影响,但这是没办法
的事情,也是 DRAM 相对于 SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同
时所付出的代价。
Mode Register Set 即设置模式寄存器。我们通过设置模式寄存器命令,来完成对模式寄存器
的设置,这个命令在每次对 SDRAM 进行初始化的时候,都需要用到。
SDRAM的初始化 SDRAM 上电后,必须进行初始化,才可以正常使用。