SDRAM模块设计
     SDRAM具有高速、大容量等优点,是一种具有同步接口的高速动态随机存储器。它的同步接口和内部流水线结构允许存储外部高速数据,数据传输速度可以和ARM的时钟频率同步,在ARM系统中主要用作程序的运行空间、数据及堆栈区。
     SDRAM可以分为两个单元块,数据可以在两个单元块之间交叉存取。即当一个比特的数据在一个单元块中被存取的时候,另一个比特的数据可以在另外一个单元块中做好准备。所以SDRAM的数据传输速度可达lGB/s。
1实例说明
     ARM系统中能够作为高速缓存的有静态RAM、动态RAM、Flash ROM 3种。其中动态RAM又分为SDRAM和DDR两种,根据设计的性价比,可采用SDRAM作为高速缓存,实现高速数据传输。由于SDRAM的读、写、刷新 等命令操作的时序要求比较严格,因此,SDRAM控制的设计也就成了关键。
     本章主要针对ARM系统SRDAM模块的读写控制、内容测试及软硬件设计进行介绍。SDRAM在系统中主要用作程序的运行空间、数据及堆栈区。当系统启动 时,ARM首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度;同时,系统及用户堆 栈、运行数据也都放在SDRAM中。
2  SDRAM特点
2.1SDRAM状态
     SDRAM的控制时序比较复杂,如图6-1所示为简化的状态转移图,包括上电、预充电、自动刷新、初始化、模式寄存器设置、读、写等功能。具有以上功能的SDRAM控制器可满足系统对SDRAM访问的需要。

其中,对SDRAM控制器的初始化是非常重要的,这个过程一般在启动之后进行。虽然程序也可以在Flash或内部SDRAM中运行,但它们有速度慢或容量小的缺点。初始化SDRAM控制器的程序可以通过不同的方式执行,然后就可以访问SDRAM了。
·制作成B-record,通过Bootstrap下载执行。
·存成文本文件,在AXD中用obey命令执行。
·放在Boot-loader的初始化代码中,从Flash启动执行。
这里可以选择第3种方式,具体实现将在以后章节中详细讲述。
2.2SDRAM控制
SDRAM控制器用来产生控制SDRAM的各种时序,完成SDRAM的读、写和刷新,同时控制存储缓冲器的读、写操作。
其中的仲裁电路主要完成对读写命令和刷新命令的仲裁,防止同时操作,防止数据丢失,刷新命令的优先级别高于读写命令;存储缓冲器是ARM与 SDRAM之间的数据通道,ARM采集的数据先存储在存储缓冲器中,采集满后再通过若干条指令将缓冲器中的数据转移到SDRAM中的一定位置,将 SDRAM中的数据转移到ARM内部RAM中。
SDRAM控制器包括7个模块:SDRAM命令控制器、页和体地址比较器、行列地址复用器、数据对齐复用器、配置寄存器、刷新请求计数器和节电定时器。
(1) SDRAM命令控制器
SDRAM命令控制器实现SDRAM控制器的主要功能,包括对存储器的顺序访问、初始化SDRAM、保存每个存储器范围内活动体(Active Bank)的轨迹、定时刷新操作、控制进入和退出低功耗模式,以及控制地址和数据的复用。
(2) 页和体地址比较器
总共有8个地址比较器。每个片选都为其4个体提供唯一的比较器。比较器用于判断一个请求的访问是否落入当前活动页的地址范围。
(3) 行列地址复用器
尽管地址对折点(Address Folding Point)根据存储器密度、数据I/O宽度和处理器数据总线宽度的不同而变化,但是所有的SDRAM仍采用一个复用的地址总线。地址对折点是指列地址结 束行(或体)地址开始处。SDRAM控制器综合考虑这些因素,通过行列地址复用器、未复用引脚、控制器与存储器设备之间的连接,提供正确的对齐和复用地 址。
(4) 数据对齐复用器
数据对齐模块负责调整内部总线和外部存储设备间的数据排列,包括小端的字节交换。
(5) 配置寄存器
配置寄存器可选择存储设备密度和总线宽度、存储设备数量、行到列延迟以及突发长度,从而决定SDRAM控制器的操作模式。它为刷新和自动节电定时器提供使能,为软件控制的SDRAM初始化、模式寄存器设置、所有存储体的预充电和自刷新周期提供相应的摔制机制。
(6) 刷新请求计数器
SDRAM存储器需要周期刷新以保持数据有效。刷新请求计数器产生对命令摔制器的请求,以执行周期刷新。刷新请求根据一个32KHz时钟输入定时产生,每个时钟周期可以产生l、2或4个刷新周期。
(7) 节电定时器
当节电定时器检测到SDRAM一段时间不活动,且这段时间已经超过设定的超时计数器时,时钟将被禁止。在节电状态期间,数据时钟保持有效;之后对SDRAM的访问只会导致一个微小额外的启动延迟。
2.3 SDRAM时序特点
SDRAM的工作模式对时序要求严格,只有上电逻辑和模式设置正确才能进入相应的工作模式。访问特定逻辑单元必须先激活相应的存储块(BANK),并锁定对应行列地址。另外,必须有定时的刷新逻辑保持数据不会丢失。
SDRAM的所有信号均以系统时钟CLK上升沿为基准,它由如下几根信号线摔制:命令译码控制线WE/RAS/CAS、时钟信号线CKE/CLK、 片选信号线CS。其中,wE/RAS/CAS组合在时钟上升沿的状态决定具体操作,地址线和BANK选择控制线在部分操作动作中作为辅助参数输入。其基本 控制命令如表6.1所示。


SDRAM的控制由一些专用控制引脚和地址线辅助完成。CS、RAS、CAS、WR在时钟上升沿的状态决定具体操作动作,地址线和BANK选择控制线在部分操作动作中作为辅助参数输入。
(1) 上电逻辑和模式设置
SDRAM的所有电源引脚必须同时加电,并且所有输入和电源引脚上电电压不得超过标称值0.3V。加电完成后应立即对所有的BANK进行预充电,然后等待2001μs以避免输出总线上的数据冲突。
等待200μs后需要初始化模式寄存器,并附加8个自动刷新周期(CBR)以保证后续操作正常。模式寄存器设置命令使用地址线和BANK选择控制线 作为模式数据输入线。模式寄存器的设置值必须与器件的延迟参数,以及与读写操作的控制时序一致,否则将导致错误或不可靠的读写。
(2) 存储单元访问
SDRAM采用地址线A11~A0复用而减少I/O引脚数量。在任意读写操作前都必须有BANK激活命令,BANK激活命令激活相应BANK并锁存行地址。
(3) 刷新逻辑和预充电
SDRAM的存储单元相当于一个电容,必须有定时的刷新周期以避免数据丢失。刷新控制器决定刷新的时间间隔,刷新汁数器保证每个单元都能被刷新。当 然,这意味着SDRAM的部分周期必须分配给刷新操作从而降低了系统性能,SDRAM可以采用自动刷新或自刷新,自动刷新实现较为简单,而自刷新功耗更 小。
2.4地址空间分配
ARM可以被配置为从外部SDRAM启动的外启动方式,或从片上ROM启动的内启动方式。
(1)外启动方式下,ARM处理器从外部程序存储器(一般是Flash存储器)取指令执行相应的应用。
(2)内启动方式下,ARM处理器运行片上启动ROM中固化的一个128字节启动程序,完成器件初始化,配置串口l以9600bps速率接收 2048字节用户程序存储于片内SDRAM中,然后跳转到片内SRDAM起始处开始执行刚下载的2K字节用户程序,这为进一步的调试、代码下载、外启动 Flash存储器编程提供途径。
如表6-2和表6-3所示分别是内启动方式与外启动方式下的地址空间分配。

3硬件电路设计
3.1SDRAM芯片
     ARM内部有一个可编程的16位或者32位宽的SDRAM接口,允许连接两组SDRAM容量512Mbit。有了SDRAM控制器,只要选取标准的SDRAM芯片,按照接口电路连接起来就可以了。
这里选择的是Hynix公司的HY57V281620HC。它的容量是16MB(2Mbitx4banKsxl6)。单片数据宽度是16位的,为了增大数据吞吐能力,所以选取了两片SDRAM构成32位地址宽度。
3.2 SDRAM模块原理图
SDRAM模块原理图如图6-2所示。
3硬件电路设计

其 中,SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。因此,要在系统中使用SDRAM,就要求微处理器 具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。ARM芯片在片内具有独立的SDRAM刷新控制逻辑,可方便地与SDRAM接口。但某些ARM芯 片则没有SDRAM刷新控制逻辑,就不能直接与SDRAM接口,在进行系统硬件设计时应注意这一点。
SDRAM芯片选用的封装是32引脚的TSSOPl,引脚密度较大,在焊接时要注意静电等因素的影响,在焊接好并且仔细检查无误后就可以进行测试了。
4软件设计
4.1 SDRAM读写
     SDRAM控制器也是存储的控制中心,其设计直接关系到ARM系统的功能。该控制器主要完成两大任务,即SDRAM与ARM的通信以及SDRAM与后续电路的通信。以下程序主要是SDRAM的写过程、读过程,以及与Flash数据的交互过程。


4.1   SDRAM软件
 
      以下程序代码的功能是SDRAM测试官入和读出的数据是否相符,以及测试第根数据线和SDRAM中的每个单元。
 







测试成功后,ARM向SDRAM发出写命令,将高速采集的数字信号写入SDRAM,直到配置的数据量全部写入SDRAM。以40Mb/s的采样率为例,128Mb/s的SDRAM内存可以存储0.2s的数据量。
5实例总结
SDRAM是新一代高速、高容量动态存储器,具有单位空间存储容量大和价钱便宜的优点。现在的ARM处理器本身一般带有SDRAM控制器,针对特定 的系统定制自己需要的SDRAM控制器,不仅可以节约系统资源,而且可以最大限度地发挥SDRAM的作用,从而实现大容量数据的存储。
本章介绍了针对ARM平台的SDRAM模块的软硬件设计,在设计过程中,需要注意以下一些问题。
·SDRAM控制器对于时序要求严格,所以SDRAM需要正确的上电逻辑和模式设置来进入期望的工作模式。
  ·SDRAM内部操作是一个复杂的状态机,设计时必须考虑多种工作模式问题。