sdram 2440

    首先是sdram的结构。SDRAM的基本单元是由mos管和电容组成的,其中mos管控制选通,电容控制信息的存储。因此行列选通相当于选通了各自的MOS管。接着是基本的存储单元,它由多个基本单元组成,如通常8个基本单元组成的字节存储单元,或者16个的半字存储单元,这也者也就是DATA ACCESS的位宽。接着是L-BANK,SDRAM内部结构是阵列式的,这样的好处是可以任意访问某个位置的信息,而不需要象管道结构一样必须有先后顺序。阵列是由多行多列组成的,固定大小的阵列为一个L-BANK,多个L-BANK组成一个SDRAM芯片,如通常2个或者4个L-BANK。为什么要多个L-BANK,我的理解是速度方面的考虑,因为如果只有一个L-BANK,那么要驱动某一行或者某一列将需要比较长的时间,而阵列的访问又必须是选通某一行,然后是某一列的过程,其实访问某几个阵列点事实上并不需要选通这么多其他的行列。通过分为几个L-BANK后,这个过程被分解为选通特定的L-BANK+确定选通的L-BANK阵列中的相应阵列点。这个过程将比第一种办法要有效。但是如果分的L-BANK数量太多,我认为一个是设计上,另一个选通的复杂度上将不合适。其他SDRAM中还有相应的控制寄存器。这样SDRAM的内部结构的大概就形成了。

    由于使用SDRAM的CPU DATABUS的不同,所以可能需要多个SDRAM芯片组合使得数据总线宽度与CPU相符。这个CPU宽度对应决定的就是P-BANK,一个P-BANK可能需要多个SDRAM芯片组成。而这些组成一个P-BANK的芯片的选通就需要一个统一的CS片选信号。这样看来,ARM通常所说的8个BANK就是P-BANK。这样就可以将SDRAM芯片跟CPU芯片连接了。

    接下来就是SDRAM的具体原理了,首先需要一个初始化过程:因为SDRAM需要使用到电源、时钟、引脚等,所以需要准备好这些,而这些的初始化都需要一个稳定下来的过程。然后是预充电和自动刷新,其中预充电命令的作用是使得所有的器件处于待机状态,而自动刷新操作使得内部的刷新及计数器进入正常运行状态,为SDRAM模式寄存器编程做好准备。接下来是模式寄存器的设置,该寄存器里一般设置了读取延迟,burst长度,CAS,burst类型,操作模式,还有是设置SDRAM是工作在单个读写操作还是burst操作下,这些信息将以相应命令通过地址线相应位传递给该寄存器,并保持直到最后掉电为止。

    初始化做完之后就进入了正常读写操作模式了。先是发送行地址,这同时也可以发送片选信号、L-BANK的选择信号,此时RAS信号处于有效状态,CAS无效,不过这个过程需要一定的时间,因为行地址出现在地址总线后仍然需要一定的时间选通相应行对应的MOS管,而且这个过程由于一行中MOS管数量也是比较多的,所以需要一定的时间,这个时间称为tRCD,以时钟周期为单位。接着是发送列地址,在tRCD之后发送列地址信号,此时CAS信号处于有效状态,RAS无效,行列地址信号的判断就是通过这样的办法实现的。同样选通列地址也需要一个选通列MOS管的过程,但是这个过程相对于tRCD来说比较小,它被与后面要提到的tAC一并定义成了CL,单位也是时钟周期,称为潜伏期。同时此时需要#WE读写信号的指示是读还是写,这将影响到CL的定义。

    地址已经选通了,这时候就需要根据读写指示来进行相应的操作了,如果#WE指示是读操作,那么首先电容要放电,然后由于存储单元里面的电量是很小的,所以又读到引脚之前需要经过一个放大操作,这由S-AMP完成。所以列地址选通后,数单元出据从存储来,先要到S-AMP中,进行放大,放大过程又需要一个时间,称为tAC。这个过程中S-AMP做了2个工作,一个是先根据参考电平判断存储体内信息是0还是1,然后根据结果进行放大。显然这个过程也会影响整个访问时间,所以需要根据器件特性选择一个合适的值。这之后数据就可以出现在引脚上了。

    CL就是从列地址输入到最终数据出现在引脚的时间,这个值需要综合考虑器件的特性来设置。

    如果#WE指示是写操作,那么有点不通,因为写如的信息是经过外部的其他控制器过来的,因此不需要进一步驱动即可满足写入的电平要求,所以也就不需要S-AMP的放大,需要的是一个充电的过程。从列地址输入到充电完成(即数据写入完成)的这个过程被定义为写回,tWR,至少需要一个时钟周期,或者更多。

    这样读写的基本操作就完成了,但是读写的方式可以有突发和单独寻址。如果用突发方式那么就不需要每次都指定新的列地址,反之则需要每次输入新的列地址,虽然每次读写数据的时候各阶段的时间是相同的,可以以类似流水线的方式处理而不增加读写的时间,使得数据连续,但是这个时候必须占用大量的内存控制器,因为它毕竟在输入一些列的控制信息,从而无法进行新的命令。突发传输这一只需要对第一笔数据进行相应的列等控制。突发传输需要指定突发长度BL,这个数值需要根据具体的控制器和SDRAM的特点来设置,有些甚至固定不可以修改。比如长度为全页,就是将同一P-BANK中的各SDRAM中L-BANK中相同一行所有的存储单元进行连续传输,这里也包含了页的概念。

    根据突发长度的不同,造成每次传输几笔数据,那么未必每一笔数据都是需要的,这个时候需要屏蔽一些数据,采用DQM实现。读出时DQM在2个时钟后生效,而写入时立即生效。

    这样已经解决了用不同方式读写SDRAM,以上的操作中有一个特点是经常是行地址不变,而改变列地址进行寻址,如果需要读取另一行的时候,则需要关闭原来在操作的这一行,并将信息进行保存,因为每次行选通操作将影响一行中的所有存储单元,所以需要对它们进行重写。这个过程被定义为预充电,时间为tRP,单位也是时钟周期。可以以单独的预充电命令实现,也可以以辅助设定的办法实现(通过A10信号,这里一直有点模糊)。在这个过程前如果是读操作,那么可在数据输出的同时进行回写,即将S-AMP中的数据在读出时进行写回操作,那么将不会造成延迟;如果是写操作,那么由于数据的写回,需要在写操作完成后再进行,否则将出现写回的数据不正确,所以这时候需要在写操作后用tWR的时间进行预充电操作,也就是有了一个写回延迟。

    由于预充电的操作的针对工作行进行的,它针对的是由于行选通而可能造成的数据干扰,所以这个操作需要在行操作后及时的进行。而SDRAM要不断刷新才能保持所有的数据的正确,所以除了预充电外,还需要刷新操作。它针对的是所有的行。此外预充电针对的行并不一定地址相同,而只要是活动的行;刷新操作每次针对的是所有L-BANK中相同地址的行,有规律的进行。根据通常存储体数据保存的上限64ms,结合每个L-BANK的行数,可以计算出刷新率。同时刷新分为自刷新和自动刷新,相同点是都不需要外界提供地址,不同之处是AR利用外部时钟,而SR将利用内部始终进行,这个时候除了CKE外,其他信号都是无效的。发出AR命令时将CKE无效,就进入SR模式。SR模式下使CKE有效,就回到正常操作状态。

    这样基本了解了SDRAM的运行机理,其他涉及到具体部件的当然还有一些建立控制信号的时间,保持时间等。

    因此ARM在运用SDRAM时,需要将以上需要的信息传递给ARM的MEMROY控制器,并通过它来控制SDRAM内部的的控制相关的寄存器。总结上面:1需要通知MEMORY CONTROLLER挂载的是SDRAM;

                      2告诉MEMORY CONTROLLER P-BANK的位宽,SIZE;

                      3列地址为数,行选通的tRCD,列选通以及放大组成的CL,放大过程的时间tAC,写回时间tWR;

                      4突发长度BL;

                      5预充电时间tRP;

                      6刷新方式,刷新基数;

                      7各信号的建立时间和保持时间(看手册好象是针对SRAM和ROM,这个不是很明白)。

 

 

    再来结合2440中的MEMORY CONTROLLER看看,

        BWSCON:WS6,决定时钟是否采用WAIT;DW6,databus位宽(对应2);

        BANKCON6:MT,指明SDRAM(1);TRCD(3);SCAN(3),列地址位数;

        REFRESH:REFEN,是否刷新;TREFMD:刷新类型(6);TRP,(5);Tsrc,半周期时间,对应RAS cycle Time,必须保证一定时间才能使得行地址顺利选通;REFRESH COUNTER,控制刷新时间(6);

        BANKSIZE:BURST_EN(4);BK76MAP,BANK6的大小(2);

        MRSR:WBL BURST LENGTH(4);CL(3);BT(4),突发类型;BL(4)。

    这样就可以有针对得设置这些寄存器了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值