多路读写SDRAM接口设计
存储器是容量数据处理电路的重要组成部分。随着数据处理技术的进一步发展,对于存储器的容量和性能提出了越来越高的要求。同步动态随机存储器SDRAM(Synchronous Dynamic Random Access Memory)因其容量大、读写速度快、支持突发式读写及相对低廉的价格而得到了广泛的应用。SDRAM的控制比较复杂,其接口电路设计是关键。
本文首先介绍SDRAM的主要控制信号和基本命令;然后介绍接口电路对SDRAM的主要 *** 作路径及 *** 作过程,应用于解复用的SDRAM接口电路的设计方法;最后给出了实现结果。
1 SDRAM的主要控制信号和基本命令
SDRAM的主要控制信号为:
·CS:片选使能信号,低电平有效;
·RAS:行地址选通信号,低电平有效;
·CAS:列地址选通信号,低电平有效;
·WE:写使能信号,低电平有效。
SDRAM的基本命令及主要控制信号见表1。
表1 SDRAM基本 *** 作及控制信号
命 令 名 称 CS RAS CAS WE
命令禁止(NOP:Command inhibit) H X X X
空 *** 作(NOP:No operaTIon) L H H H
激活 *** 作(ACT:Select bank and acTIve row) L L H H
读 *** 作(READ:Select bank and column,and start READ burst) L H L H
写 *** 作(WRITE:Select bank and column,and start WRITE burst) L H L L
突发 *** 作停止(BTR:Burst terminate) L H H L
预充电(PRE:DeacTIve row in bank or banks) L L H L
自动刷新或自我刷新(REF:Auto refresh or self refresh) L L L H
配置模式寄存器(LMR:Load mode register) L L L L
所有的 *** 作控制信号、输入输出数据都与外部时钟同步。
2 接口电路对SDRAM的主要 *** 作路径及 *** 作过程
一个完备的SDRAM接口很复杂。由于本文的SDRAM接口应用于解复用,处理的事件相对来说比较简单,因而可以简化设计而不影响性能。接口电路SDRAM的主要 *** 作可以分为:初始化 *** 作、读 *** 作、写 *** 作、自动刷新 *** 作。
(1)初始化 *** 作
SDRAM上电一段时间后,经过初始化 *** 作才可以进入正常工作过程。初始化主要完成预充电、自动刷新模式寄存器的配置。 *** 作过程如图1所示。
(2)读写 *** 作
读写 *** 作主要完成与SDRAM的数据交换。读 *** 作过程如图2所示,写 *** 作过程如图3所示。
(3)刷新 *** 作
动态存储器(Dynamic RAM)都存在刷新问题。这里主要采用自动刷新方式,每隔一段时间向SDRAM发一条刷新命令。刷新过程如图4所示。
3 接口电路的设计
(1)解复用电路
本解复用电路主要完成将1路高速数据流解复用为4路数据流,其结构框图如图5所示。1路数据流进入解复用器后,经过SDRAM缓冲,解复用为4路数据流。
由于要解复用为4路数据流,为了充分利用时隙,满足高速的要求,采用4个bank的SDRAM,各路数据缓冲对应不同的bank。为简化设计,数据流1的缓冲区定为bank0,数据流2的缓冲区定为bank1,数据流3的缓冲区定为bank2数据流4的缓冲区定为bank3。对于每路数据实际上是以高速率集中写入,然后以低速率均匀读出。
由于进行的是解复用,因此写入的数据只有1路,但是有可能4路数据同时都要读出。所以对于4路数据流,其读写地址和读写使能信号是分开的。
(2)SDRAM接口电路的时序控制
高速数据流的速率为3M字节/秒,采用的系统时钟为20倍的字节时钟。送入SDRAM的时钟为60MHz系统时钟。在一个字节时钟内对SDRAM的 *** 作最多有5次(1次读,4次写),而且为了满足刷新的要求,每个字节时钟进行一次刷新 *** 作。根据SDRAM的时序要求,这样的 *** 作是难以实现的。因而要通过多bank *** 作,尽量做到时分复用来实现。图6给出了在一个字节时钟周期的内数据流1进行读写 *** 作,其它3路数据进行读 *** 作的命令排序时序图。可以看出通过多bank *** 作,时分复用,在20个系统时钟节拍内所需的读写 *** 作命令刚好很紧凑地排开。
一个字节时钟内对SDRAM读写 *** 作是随机的,这与数据流的复用比例有在。为了满足时序,根据上面的说明,需要把一个字节时钟周期内对SDRAM的命令合理排序,然后按照排好的顺序执行命令。这样就需要把一个字节时钟周期内对SDRAM的 *** 作进行缓存,然后在下一个字节时钟周期内进行排序、与SDRAM命令相对应、将命令译码产生相应的控制信号线,完成 *** 作。缓存排序过程如图7所示。
(3)SDRAM接口电路
SDRAM接口电路中需要专门 *** 作缓冲区存储一个字节时钟周期内的 *** 作,以备下一字节时钟的排序。为了方便处理,对每路数据的缓冲 *** 作内容(或读或写)放在一个缓冲区。由于数据流的连续性,排序的同时仍然会有 *** 作要求,因此每路的 *** 作内容缓冲区分为两块。对一块缓冲区写入时,读出另一块缓冲区中的 *** 作内容,进行排序、译码、执行。根据字节时钟切换对缓冲区的读写,从而避免冲突。对于从SDRAM读出的数据,每路数据写入相应的读出数据缓冲区。同样每路的读出数据缓冲区也分为两块,根据字节时钟切换读写。
由于一个字节时钟周期内,每路所需的 *** 作最多有2次,每路的 *** 作内容缓冲区只需两个单元(每个单元存储了此次的读写使能信号、写入数据、地址)即可。对于读出数据缓冲区,由于一个字节时钟每路数据最多执行一次读 *** 作,所以读出数据缓冲区只需要一个字节。这两类缓冲区容量都小,因此人部用寄存器来实现,控制简单。
整个接口电路的结构框图如图8所示。
4 SDRAM接口的实现结果
针对MT48LC8M8A2的SDRAM,采用同步设计方法,用Verilog HDL硬件描述语言建立模型,接口电路已经调试通过,规模为2100门(NAND)。整个解复用电路也已经调试通过。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)