SDRAM工作原理
SDRAM的工作原理
在信息处理中,特别是实时视频图像处理中,需要对视频信息进行缓存,这就必须设计大容量的存储器。同步动态随机存储器SDRAM虽然有价格优廉、容量大等优点,但因为SDRAM控制复杂,常用的做法是设计SDRAM通用控制器。所以,很多人不得不使用价格更为昂贵的SRAM。现在有一种做法是利用FPGA控制数据存储的顺序来实现对数字视频图像的旋转,截取,平移等实时处理。SDRAM的控制原理图如下所示:
SDRAM的结构特点:
存储器的结构最初为线性结构,在任何时刻,地址线 只能有一位有效,也就是说,如果有N根地址线,那么可寻址的范围为0-(2N-1).当容量增大的时候,地址线的数目必然增加。利用地址译码器可以减少地址线的数目,但是,这种存储器的长宽比太大,在工业上是无法实现的。同时,由于连线的延时和连线的长度成正比,如果这样的设计,会使,存储器的速度变得异常缓慢。现在常用的做法是讲存储器设计成阵列。使得其长宽比接近1:1,这样,存储器就必须多设计一个列地址译码器,才能选择正确的存储单元。因此,存储器的地址线被分成行地址线和列地址线。行地址线选择所要读取的单元所处的行,列地址线选择所要读取的单元所处的列。这样就可以确定所要读取的单元所处的真正位置。
SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址,再送出列地址。这样,可以大幅度减少地址线的数目。提高器件的性能。但寻址过程也会因此而变得复杂。新型SDRAM的存储容量一般比较大,如果采取简单的阵列结构,就会使存储器的字线和位线的长度、内部寄生电容和寄生电阻都变得很大,从而使整个存储器的存取速度变慢。实际上,现在的SDRAM一般都以BANK(存储块)为组织,将存储器分成很多独立的小块。由BANK地址线BA控制BANK间的选择,行地址线和列地址线贯穿所有的BANK,每个BANK的数据的宽度和整个存储器的宽度相同,这样,可以降低字线和位线的长度。从而加快数据的存储速度。同时,BA还可以使未被选中的BANK工作于低功耗的模式下,从而降低器件的功耗。
为减少器件的MOS管的数量,降低功耗,提高器件的集成度和存储容量,SDRAM是利用其内部的电容来存储数据。由于电容的放电,因此必须每隔一段时间就对内部电容进行充电,从而确保存储在电容中的数据不丢失。这就是刷新。刷新机制,使得SDRAM的控制过程变得更加的复杂。从而给应用带来难度。
SDRAM的基本信号
SDRAM的基本信号可以分成以下几类:
(1)控制信号:包括片选(CS),同步时钟(CLK),时钟有效信号(CKE),写允许信号(WE),数据有效信号(DQM);
(2) 地址选择信号:行地址选择(RAS)、列地址选择(CAS)、行/列地址线(A0-A12)、BANK地址线(BA0-BA1);
(3) 数据信号:包括双向数据端口(DQ0-DQ15)、数据有效信号DQM等,DQM为低时,写入/读出有效;
SDRAM的基本命令
要正确对SDRAM进行操作,就必须 输入多种命令,包括:模式寄存器设置、预充电、 突发停止及空操作等。 SDRAM的内部状态会根据下表的命令进行转移。其中,命令COM={CS#,RAS#,CAS#,WE#},也就是说,在这四条线上传输命令。
(命令查网表)
模式寄存器的规定
模式寄存器(Mode register)可以通过装载模式寄存器(Loadmode register)命令进行编程,这组信息会一直保持在模式寄存器中,直到再次编程或者掉电为止。 它规定了SDRAM的操作模式,包括突发长度,突发类型,CAS延迟时间,运行模式及写突发模式。如下图所示,模式寄存器M0-M2用于规定突发长度(Burst Length)。 M3用于规定突法类型BT(Burst Type),M3=0时,突发类型总是连续的;M3=1时,突发类型是交错的,M4-M6用于规定CAS延迟的时钟周期数,M7-M8规定运行模式,M9规定写突法模式 WB(Write Burst Mode),当M9=0时,按编程的突发长度存取,当M9=1时,则按单个存取单元写入,但可按编程的突发长度读出,M10和M11为保留位,可供未来适用。在模式寄存器装载期间,地址A12(M12)必须被驱动至低电平,本方案中,模式寄存器的值为0x220h.
SDRAM的初始化操作
在上电后,必须对SDRAM进行初始化操作后,才能进行其它操作,初始化操作的步骤如下:
(1)SDRAM上电后至少需要等待100-200us,等待时间结束后还至少要执行一条空操作命令。
(2) SDRAM执行一条预充电命令后,要执行一条空操作命令,这两个操作会使所有的存储单元进行一次预充电,从而使所有阵列中的器件处于待机状态。
(3) SDRAM要执行两条自刷新命令,每一条刷新命令之后,都需要执行一条空操作命令。这些操作会使SDRAM内部的刷新及计数器进入正常运行状态,以便为SDRAM模式寄存器编程做好准备。
(4) 执行加载模式寄存器命令。上述4步完成后,SDRAM就进入正常工作状态。
SDRAM基本的读写操作
SDRAM的读操作需要地址线和数据线配合并发出一系列的命令来完成。SDRAM的读操作只有突发模式,而写操作则有突发模式和非突发模式。具体如下:
(1)带预充电的突发读写模式,能够最大访问的列地址最大数目为1,2,4,8;
(2)不带有机充电的全页读写模式,可以任意控制一次操作的列地址的最大数。根据实际情况,本设计只选取了与本方法相关的基本操作命令,并没有设计通用的控制器,下图是本方案的SDRAM内部状态转移图。
Bank 乒乓操作
由于bank内的行与行之间具有关联性,因此,当其中一个Bank的读或写操作结束后,必须执行一次预充电命令以关闭正在操作的行,预充电命令执行后,会有一个tRP的延时,延时完成后才能向同一Bank行(或其他行)发出新的激活命令。由于Bank之间是相互独立的,因此,在一个Bank进行正常的读或写操作时,可以对另外几个BANK进行预充电或空操作;当一个BANK进行预充电期间也可以直接调用另一个已经进行预充电的BANK,而并不需要等待。
常用的三种寻址方式
(1)页命令中PH(Page Hit):若寻址的行与所在的Bank空闲,即该Bank内所有的行是关闭的,那么此时便可以直接发送行有效命令,这种情况下,数据数据读取前的总耗时为tRCD+CL;(tRCD为RAS到CAS的延时;CL为CAS latency)。
(2)页快速命中PFH(Page FAST Hit)或页直接命中PDH(page direct hit):如果要寻址的行正好是在正常读或写,即要寻址的行正处于被选通的有效状态,那么此时可以直接发送列寻址命令,这种情况下,数据读取前的总耗时仅为CL,这就是所谓的背靠背(Back to Back)寻址:
(3)页错失PM(bage miss):若要寻址的行所在的Bank中已经有一个行处于激活状态(未关闭),这种现象而称为寻址冲突,这样,就必须要进行预充电来关闭正在工作的行,然后再对其他的行发送行有效命令,其总时耗为:tRP+tRCD+CL。(tRP为ROW precharge time)。
在以上三种寻址方式中,PFH是最理想的寻址方式,PM则是最糟糕的的寻址方式,实际应用中要尽量采用PFH寻址方式而避免PM寻址方式。
Bank乒乓操作写入
一个由行、场同步信号控制的计数器在预定的时刻会产生一个控制信号,先发出激活相应Bank的激活命令(ACTIVE),并锁存相应的Bank地址(由BA0、BA1给出)和行地址(由A0-A12给出)。一个周期后再给出列地址和写入命令;在CL个周期后,便可将所需写入的数据依次送到数据总线上,当计数器的计数周期到达时,系统会产生一个控制信号,并向SDRAM发送预充电(PRECHARGE)命令(如果使用了可编程长度,则在这前要使用突发终止命令),以关闭已经激活的页。在下一个 视频 行同步信号来临时,系统将重复以上操作,并如此循环下去,具体操作如图4所示,图中左边的一、二、三……为所对应的视频行同步信号,右边1至511……则代表对应的存储器中的列地址(即是屏幕上对应的像素的位置)。
Bank乒乓操作读出
由行、场同步信号控制的一个计数器可在预定的时刻产生一个控制信号,它首先发出相应的Bank激活命令(ACTIVE),并锁存相应的Bank地址(由BA0、BA1给出)和行地址(由A0-A12)给出,然后在一个周期后给出列地址和读命令,当计数器的计数周期到达时,系统会产生一个控制信号,并向 SDRAM 发出预充电(PRECHARGE)命令,以关闭已经激活的页(如果使用了可编程长度,则在这之前要使用突发终止命令)。之后,再在下一个视频行同步信号来临时重复以上操作,如此循环(具体操作如图5),图中左边的一、二、三……为所对应的视频行同步信号,右边1至511……代表对应的存储器中的列地址(即是屏幕上对应的像素的位置)。
场乒乓操作
为了SDRAM能正确进行读和写两个操作,本方案选用两场乒乓操作[6]来实现数据存取,实际上,就是在不同的时间对两场轮换进行读或写,一场读而另一场写,其原理如图6所示。当开关K1在1位置,K2在4位置是时,A写B读;反之,当开关K1在3位置,K2在2位位置时,A读B写。如此循环往复。
若以场同步信号的二分频计数器F/2为读写控制信号,假设SDRAM A在F/2时为1写、2读,则SDRAM B在F/2时为2写、1读,两场即为一个场乒乓操作周期,读写信号均在场同步信号为高电平时有效,由于存在消隐期,消音所以,将会有一段时间读写都无效(读写信号都是低电平,此时SDRAM进入预充电状态),其总体时序如图7所示。
结束语
SDRAM的控制过程虽然很复杂,但如果根据实际情况进行取舍以满足实际系统要求,那么,SDRAM的控制过程还是比较简单的,在实验中,使用ALTERA公司的Cyclone FPGA器件进行设计时,程序设计可采用Verilog语句来实现对实时视频信号的采集,并通过改变计数器的周期及SDRAM的行、列地址线和时序就可以对任意位置的视频图像进行平移、旋转、截取等处理,此外,由于程序设计采用了化整为零和参数化设计思想,因而结构透明、简单;对于特定容量的SDRAM的特定工作模式而言,该方法只需根据器件重新设定参数而不要重新编写程序,因而具有较强的通用性。
posted on 2013-06-04 13:46 kevinwan1991 阅读(2708) 评论(0) 编辑 收藏 举报