怎样实现SDRAM控制器的设计?设计要点是什么?
扫描二维码
随时随地手机看文章
SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器)是一种储存外界讯号和数据的设备,主要用来存取具有实时要求的程序。能够根据外界讯号实时以某种以固定时间间隔规律向外供应数据。它是指不包括DRAM(一种半导体元件)在内的存储器,可以给处理器(CPU)同步提供内存数据。
SDRAM不同于DRAM,是一种芯片结构,可以与处理器(CPU)同步工作,即同步外部时钟。它也与SDRAM有着极大的区别:如果要使DRAM的内容保持有效,那么必须要不断地更新存储空间中的数据。但是SDRAM是有刷新时钟,因此可以保持数据的准确性而不需要每隔一定的时间对数据进行刷新。
另外,SDRAM具有以下优点:
1. SDRAM是一种高速存储技术,它可以提升计算机的性能和运行速度,大大提高计算机处理器(CPU)更多任务的能力。
2. SDRAM方案的容量可以扩大几十倍,并可超出DRAM容量的上限。
3. SDRAM的读取速度也是比较快的。
4. SDRAM的能量效率很高,可以长时间的保持数据的有效性,不需要每次频繁的读取数据。
5. SDRAM省电,可以更好的完成复杂操作,而且不会消耗太多的电力。
综上所述,SDRAM是一种具有高速、高容量、高效率、节能等特点的动态存储器。它既能提高计算机的速度,还能减少计算机本身的功率消耗。
在PAL→VGA的实时视频采集系统中,由于视频数据流的数据量大、实时性要求高。SDRAM作数据缓存不仅具有大容量和高速度的特点,而且在价格和功耗方面也占有很大的优势。SDRAM控制较复杂,需要处理预充、刷新、换行等操作,因此设计SDRAM 控制器来完成和SDRAM的接口是相当必要的。高速大容量的存储器作为图像数据的缓存,为了保证数据流的连续性,实时视频采集系统通常采用通过对两片SDRAM的乒乓操作来完成图像数据的缓存。SDRAM是高速设备,工作频率上限最高可以达到166 MHz,该系统中前端图像采集模块的像素时钟为27 MHz,后端VGA显示的像素时钟为31.5 MHz。本文介绍了一种使用1片SDRAM的不同BANK进行乒乓操作,且相对容易实现的SDRAM控制器设计方法。
1 SDRAM基本操作原理
SDRAM的主要操作包括初始化、读写访问、刷新、激活、预充电等。以MICRON公司的MT48LC4M3282(1M×32 b×4 BANKS)为例,简要介绍一下SDRAM的操作。
如图1所示,SDRAM的初始化操作过程如下:
(1)在电源管脚上电(电压不得超过标称值的0.3 V)并且时钟稳定后经过200μs延迟,执行一次空操作命令(该命令在延迟周期的后期发出)且保持时钟使能信号为高;
(2)对所有的BANK进行预充电,所有的BANK都进入空闲状态;
(3)预充电后执行两个自动刷新命令,等待八个刷新周期完毕;
(4)发出模式设置命令来设置模式寄存器。由于上电后模式寄存器的状态是不确定的,所以在进行SDRAM操作之前一定要先设置模式寄存器。模式寄存器设置 值如图2所示。
对SDRAM的读写访问先要以激活命令选择具体的BANK和行,地址线BA1/BA0用来选择BANK,A0~A11用来选择所要访问的行;然后发出读或 写命令,地址线A0~A7用来选择所要访问的起始列。在读命令发出后,要等待一个CAS延迟时间,有效数据才会出现在数据总线上,CAS延迟时间可以设置 为2或3个时钟。在写命令发出后,不需要等待CAS延迟时间有效数据会立即出现在数据总线上。对SDRAM的读写操作一般以突发模式进行,突发长度可以设 置成1,2,4,8以及全页,常用的长度为8个。该系统的CAS延迟时间设置为2,突发长度为1。
SDRAM的存储单元可以理解为一个电容,总是倾向于放电,必须有定时的刷新周期以避免数据丢失。只要保证在64 ms时间内所有有效数据行都完成刷新就可以保证数据不丢。SDRAM提供两种类型的刷新模式:自动刷新和自刷新。在该系统中,前端PAL制式信号一帧的时 间为40 ms,因此SDRAM的同一地址读写操作的时间相隔为40 ms。又由于系统为实时视频采集系统,前端采集的视频数据是连续不断的,所以该系统不需要进行刷新操作即可保证数据不丢。
2 SDRAM控制器的设计实现
在实时视频采集系统中,为了保证数据的稳定和连续性,通常采用的方法是对存储器进行乒乓操作。一般所指的乒乓操作针对两片存储器芯片,如图3所示,其原理 是通过控制模块对两片存储器分别做读写操作,写存储器满时控制模块发出交换命令,切换两片存储器的操作状态。
该系统采用的是一片SDRAM实现乒乓操作。设计时是利用SDRAM的不同BANK间的存取操作来实现乒乓操作。由于SDRAM总共有4个BANK,所以 读取第一帧图像时使用SDRAM的1,2 BANK为读缓存,3,4 BANK为写缓存。第二帧图像时SDRAM的3,4 BANK切换为读缓存,1,2 BANK切换为写缓存。采用一帧图像读写完毕作为切换标志反复切换读写缓存,就充分利用SDRAM的不同BANK来实现乒乓操作。另一方面由于SDRAM 的数据线和地址线只有1组,所以实际控制的时候读写操作是不能同时进行的。设计中考虑到SDRAM的工作频率与前端图像采集的像素频率以及后端VGA显示 的像素频率相比要高得多,因此将读写操作利用时分的方式分开控制。所以在控制器中设计了一个指令计数器(Countcmd),通过计数的方式来切换读写操 作。只要选取适当的SDRAM工作频率以及指令计数器的规定值就可以完成SDRAM读写操作的连续切换。实际设计中采用的SDRAM工作频率为100 MHz,指令计数器的规定值为240。SDRAM控制器状态转换概图如图4所示。
SDRAM控制器的具体状态转换流程如下:首先初始化SDRAM,然后向SDRAM的1,2 BANK写入第一帧图像,当第一帧图像写入完毕后进入乒乓操作阶段。此时SDRAM的1,2 BANK为读缓存,3,4 BANK为写缓存。
首先进入读缓存激活行,开始读操作,读操作开始的同时启动指令计数器。此时每执行一条指令(包括读指令,空操作指令,不包括预充电指令和行激活指令),指 令计数器自加1,当指令计数器到达规定值时将指令计数器清0并切换到写状态。进入写状态前先判断写缓存的行激活标志,如果没有激活,先执行行激活,然后开始写操作,如果已经激活则直接开始写操作。写操作开始的同时启动指令计数器。此时和读状态时一样,每执行一条指令,指令计数器自加1,当指令计数器到达规定值时同样将指令计数器清0后切换到读状态。如此反复切换操作,直至读完一帧或者写满一帧。如果是读完一帧,则判断写缓存中一帧写满没有。如果已经写满,则进入读写BANK切换状态。如果没有,则进入写状态并不再切换读写状态,一直保持写状态直至写满一帧为止,然后进入读写BANK切换状态。如果是写满一 帧,则同理于读完一帧的情况,首先判断读缓存中读完一帧没有,然后根据判断结果进行操作,最后进入读写BANK切换状态。在读写BANK切换状态中,读缓 存切换为3,4 BANK,写缓存切换为1,2 BANK。反复上述操作步骤,就可以完成使用一片SDRAM不同BANK的乒乓操作。整个SDRAM控制器在Altera的QuartusⅡ7.2环境下采用Verilog设计完成,然后在ModelSim SE 6.0环境下仿真通过。随后通过Altera的QuartusⅡ7.2进行综合和布局布线,并最终在Al-teraCyclone系列FPGA芯片 EP1C6Q240C8上完成。所设计的SDRAM控制器在PAL→VGA的实时视频采集系统中调试通过,能够实现图像数据的存储和读取,完全满足系统的要求。
SDRAM上电初始化
上电后,没有任何时序上的操作,只需要延时100us(手册上要求最小为100us),使输入输出电平达到稳定,即可,在此期间,发送的命令最好为NOP。
这里初始化包括了初始化和加载模式寄存器,我认为初始化,就是加载模式寄存器。
“(1)模式寄存器
模式寄存器的定义如下,通过地址线给出,每位都有其具体的含义。
0-2 bit:定义突发长度,每给一个读/写命令后,输出/输入的数据大小
4-6bit :定义潜伏期,发出读命令后,延时多少个周期给读数据,仅对读操作有效
10-12bit: 保留,始终置高即可
其余位始终保持为0即可。模式寄存器的内容就这么多。
在高速实时或者非实时信号处理系统当中,使用大容量存储器实现数据缓存是一个必不可少的环节,也是系统实现中的重点和难点之一。SDRAM(同步动态随机访问存储器)具有价格低廉、密度高、数据读写速度快的优点,从而成为数据缓存的首选存储介制裁。但是SDRAM存储体结构与RAM有较大差异,其控制时序和机制也较复杂,限制了SDRAM的使用。目前,虽然一些能家长微处理器提供了和SDRAM的透明接口,但其可扩展性和灵活性不够,难以满足现实系统的要求,限制了SDRAM的使用。
在详细阐读SDRAM数据文档的前提下,参考ALTERA公司的IP core,利用可编程器件(CPLD,FPGA)设计了一种通用的SDRAM控制器。它具有很高的灵活性,可以方便地和其它数据采集分析系统中,如图1所示。在该系统中,以SDRAM存储阵列缓存中频来的高速数据。存满后,数据被慢速读出至数据处理模块。