严格的说DDR应该叫DDR SDRAM,是Double Data Rate SDRAM(synchronous dynamic random access memory,同步动态随机存储器)的缩写,同步是指其时钟频率与CPU前端总线的系统时钟频率相同,动态是指存储阵列需要不断刷新来保证数据不丢失,随机是指数据可随机存储和访问。
    SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。
    DRAM制造商的一些资料中显示,内存至少要每64ms刷新一次,这也就意味着内存有1%的时间要用来刷新。内存的自动刷新对于内存厂商来说不是一个难题,而关键在于当对内存单元进行读取操作时保持内存的内容不变,所以DRAM单元每次读取操作之后都要进行刷新:执行一次回写操作,因为读取操作也会破坏内存中的电荷,也就是说对于内存中存储的数据是具有破坏性的。所以内存不但要每64ms刷新一次,每次读操作之后也要刷新一次。

    接着说明几个SDRAM的概念:
1,物理BANK:传统内存系统为了保证CPU 的正常工作,必须一次传输完CPU 在一个传输周期内所需要的数据。那时的内存必须要组织成P-Bank 来与CPU 打交道,所以会出现两根32bit的内存搭配才能跟64bit的奔腾CPU开机成功。
2,芯片位宽:为了组成P-Bank所需的位宽,就需要多颗芯片并联工作。组成64bit,对于16bit芯片,需要4 颗(4×16bit=64bit)。对于8bit 芯片,则就需要8 颗了。
3,逻辑BANK:Logical Bank,SDRAM 的内部是一个存储阵列。阵列就如同表格一样,将数据“填”进去,你可以它想象成一张表格。单一的L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率,所以人们在内部分割成多个L-Bank。

4,内存芯片容量:存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)×L-Bank的数量,比如128Mbit:2M x 16Bit x 4 Banks:第一个数目是行列相乘的矩阵单元数目,第二个数目是单个存储体的位宽,第三个是逻辑BANK数目。

==============================================================

     DDR的寄存器控制和初始化等,都是通过若干控制脚一起协作完成的,控制的方式依照一个truth table。一般是配置好DDR控制器的参数后,就不再需要人工干预。

DDR的物理BANK和逻辑BANK && truth table_random