深入理解sdram之寄存器配置

来源:互联网 发布:广州淘宝拍摄基地 编辑:程序博客网 时间:2024/06/05 20:34
  • 背景
    此篇文章根据前篇文章 深入理解sdram之基本特性的理解讲解每个寄存器的含义以及配置方法

  • BWSCON
    这里写图片描述
    BWSCON中每4位控制位控制一个BANK,最高位对应BANK7,接下来的4位对应BANK6,一次类推
    STx: 禁止/启动 数据掩码引脚,关于数据掩码在前篇文章分析过,这里sdram为0,SRAM为1
    WSx: wait信号使能位,这里这时为0,关于wait信号的说明在datasheet里有详细的记载
    DWx: 没什么好说的,位宽,这里为32位 , 即 0x10

  • BANKCONx(x值为0->5)
    1.对于bank0->bank5来讲,用默认值即可,即0x0700
    这里写图片描述
    2.BANKCONx(x值为6->7)
    这里写图片描述
    我们看到如果要接sdram的话,这里MT应设置为11
    Trcd: 即读数据时行地址->列地址之间硬件的反应时间,这里推荐位 3clocks
    SCAN: 01

  • REFRESH
    这里写图片描述
    上图的红色标准为选择的情况,至于参数的意思在上一篇文章中有详细的介绍
    这里要注意两点:
    1.Refresh Counter:
    这里写图片描述
    2.关于Tsrc的配置问题
    为什么Tsrc要配置7个clocks呢? 大家都知道,在配置完时钟后,即使用PLL后,SDRAM时钟频率为100MHz, 查询K4S561632手册后发现
    Trc = 66ns –> 7个clocks
    Trp = 20ns–> 2个clocks
    也就是说Tsrc = Trc-Trp 5个clocks,
    而实际我们配置寄存器
    Tsrc = 7个clocks, Trc = 2个clocks (Trc = 9个clocks)那会不会工作产生异常呢?
    其实,这就是对这个寄存器的理解了,往高了配没什么问题
    首先,要知道,我们配置的这个寄存器是内存控制器,并非sdram硬件, 我们是要告诉这个内存控制器关于sdram这个硬件的工作特性,换句话说
    实际上: 以SDRAM时钟频率为100MHz前提下
    实际硬件参数:
    完成一个行有效周期 Trc为 66ns,换句话说,就是从指令发送开始66ns之内就可以完成一次读写, 即7个clocks
    完成预充电的时间为Trp为20ns,即2个clocks
    我们设置寄存器的参数,也就是内存控制器认为sdram的参数
    我们告诉内存控制器 Trc需要9个clocks,即90ns
    Trp是2个clocks, 即20ns
    产生的时序如下
    这里写图片描述
    由上图可知,实际上并不影响数据的读取,就是慢一点
    因为控制器向sdram发读取命令的时间点为T0,但是sdram硬件在T7时间点就完成了工作
    但是控制器认为sdram完成的时点在T9(早在T7就完成了), 所以并不影响数据在次读取,
    同理,我们在写裸机时,没有配置时钟PLL的情况下是12MHz,所以其时钟周期都达到了ms的级别..所以在一个时钟周期内读取数据就能完成,其实配置多少都无所谓了。。
    在啰嗦一句,比如在T0时控制器发送读取指令,sdram需要等待66ns就能返回数据,但是这66ns还不到一个时钟周期,所以还没到一个时钟周期数据就读完了,但是由于裸机配置了Trc为9个clocks,那就等到很多ms后控制器才读取/写入下一个数据
  • BANKSIZE
    这里写图片描述
    上面设置关于SCKE这个信号使SDRAM进入节能模式,这个是在硬件连接的时候就已经确定
    关于BK76MAP,设置sdram大小,jz2440是外接64M的sdram
  • MRSR
    这里写图片描述
    这里肯定是支持突发模式了,但是很多参数都是固定的,比如(Fixed:固定) BL,突发长度为1,感觉为1的话就没什么意义了,但办法,2440的内存控制器只支持这个了.查询sdram硬件手册发现tRcd为20ns所以CL为2个clocks,这里设置为3个clocks,也没啥毛病,多了比少了强
    寄存器就这样配置完毕
    关于sdram,还有很多其它的特性,比如全页操作,关于更多的特性,推荐一份资料,有兴趣的大家可参考:
    http://download.csdn.net/detail/mxgsgtc/9836413
0 0
原创粉丝点击