APP下载

基于FPGA的双端口SDRAM控制器的实现

2013-12-14康磊雒明世

电气自动化 2013年4期
关键词:预充电时钟端口

康磊,雒明世

(西安石油大学 计算机学院,陕西 西安 710065)

0 引言

在视频图像实时处理系统中,在数据的采集和显示环节需要实现快速的大量数据访问,因而就需要大容量高速度的存储设备进行数据存取,SDRAM具有容量大、速度快、价格低的特点,同时还具有较低的功耗,因此目前已经广泛地应用于实时系统中。目前采用嵌入式技术开发的实时系统很多,由于SDRAM除了正常的数据读写操作,还需要进行预充电、刷新及地址更新等状态,因此,为了在嵌入式系统中使用SDRAM存储器就需要有SDRAM的控制器模块,虽然目前有许多通用的SDRAM控制接口模块,但是都不能使SDRAM的带宽得到充分利用,影响到了数据的实时处理效果。这里设计了一种可以充分利用了SDRAM的带宽的SDRAM控制器接口,该接口使SDRAM工作在整页猝发式读写模式,并用四个FIFO作为数据缓冲区,采用Verilog HDL硬件描述语言实现。

1 SDRAM的工作模式简介

设计中采用的SDRAM芯片是ISSI公司的IS42S16160B,该芯片是由4个存储模块(bank)构成的容量为256 Mb,最高工作时钟可达到166 MHz的高速CMOS存储器,其中每个存储模块的内部结构是8192(行)×512(列)×16(位)。SDRAM芯片的访问采用猝发式读取,所谓猝发读取是指在给出访问控制信号和首地址信息后,数据可以连续传输,连续传输的数据长度是可编程的,长度可以是1,2,4,8和全页。猝发存取虽然带宽很高,但是控制方式比较复杂,在其工作过程中除了正常的数据存取外,还需要完成初始化、工作方式设置、预充电、刷新等操作[1]7。

图1是实时视频显示系统的构成框图,该系统可以将实时采集的图像数据送显示器显示,图像数据存放在 SDRAM中,对SDRAM的操作控制是由双端口SDRAM控制器来实现的。该控制器是在Altra公司的FPGA芯片EP2C70896C6上实现的。本文主要介绍双端口SDRAM控制器的设计和实现方法。

图1 实时视频显示系统框图

2 双端口SDRAM控制器的工作原理及构成

SDRAM芯片要求在上电后必须首先完成初始化过程。初始化过程要求在上电至少等待200 μS后,所有Bank首先必须完成一次预充电的操作,然后至少执行8次的刷新操作,最后设置模式寄存器[1]24。模式寄存器的作用是定义 SDRAM的工作模式,用于控制猝发读写的方式和数据长度等。

图2 双端口SDRAM控制器内部结构框图

完成初始化工作后,SDRAM就进入了正常工作模式,在正常模式下还有许多的工作状态,这些工作状态在控制信号的作用下进行转换或根据所处的模式自动进行状态转换。在视频系统中数据的读出和写入往往是连续的,因此若要使SDRAM的带宽最大化,应当使SDRAM工作全页模式下,SDRAM芯片的主要工作状态有:空闲、行激活、自动读和自动写和预充电等几个状态。

按照SDRAM芯片的初始化、刷新及数据存取的时序要求,SDRAM 控制器的构成如图2所示[2-3]。

(1)FIFO读写端口

为了能够让多个设备同时实现存储器数据的访问,需要增加数据缓存区,这里采用FIFO作缓存器。写端口1/2(WR_FIFO1/2)的输入数据是图像传感器的数据,而其输出数据是写入到SDRAM中的,其输入时钟频率由图像传感器的数据传输率决定,输出时钟频率采用120 MHz。读端口1/2(RD_FIFO1/2)的输入数据来自SDRAM,输入时钟频率为120 MHz,而且其输入数据送往VGA显示器,输出频率有显示模式决定。

接收的图像数据存入一个WR_FIFO1/2中,端口仲裁器会将其写入到SDRAM中,并在适当的时候将图像数据送往RD_FIFO1/2,这样VGA显示所需的数据就可以从 RD_FIFO中读取了。当然,这要求SDRAM的存取数据要能够满足数据数据采集和显示的速度。

读、写端口是采用Altera的IP核dcfifo,使用FPGA的片上存储器实现的,这里分别采用了两个读端口和写端口用于实现对两幅图像的存储和显示。为了与SDRAM的全页模式相对应,实现的FIFO的容量是512字 ×16位,具有独立的读、写时钟和读写请求信号输入,同时具有FIFO的缓存数据计数输出。

(2)端口仲裁器

端口仲裁器的作用是接收两个读端口和写端口对SDRAM的读写请求,并对FIFO的数据个数进行判断后,选择一个可以对SDRAM进行操作的端口,并产生读请求(READA_REQ)或写请求(WRITEA_REQ)信号,并将两个请求信号送到状态控制器。在一个时刻只能对SDRAM进行读或写操作,只有当一个端口的操作完成后才能选择另一个操作的端口。

其关键代码如下所示。

(3)时钟信号发生器

时钟信号发生器用于产生SDRAM控制模块、VGA驱动器和图像传感器的时钟信号,VGA驱动器时钟信号的频率由显示模式而定,图像传感器的时钟频率则取决于图像传感器的数据传输率。

(4)初始化及刷新控制器

SDRAM芯片要求在加电后必须进行初始化操作,在正常工作时还需要完成存储单元的定时刷新工作。

加电或复位后进行的初始化过程要求在等待200 μs后先使芯片进行一次预充电操作,然后再给出8个刷新命令,最后对芯片的模式控制寄存器进行设置。初始化过程的操作控制是通过一个初始化计数器Initial_timer实现的,根据该计数器的计数值依次给出复位等待(INIT_REQ)、预充电(PRCHARGE)、刷新(REFRESH)和模式设置(LOAD_MODE)四个请求信号。

IS42S16160B芯片要求在64 ms内对所有bank的8192行数据进行刷新,其刷新间隔为64 ms/8 192=7812.5 ns,刷新定时是由Refresh_timer计时器实现的,其时钟信号为120 Mhz,周期为,因此 Refresh_timer的计数值应为 7812.5/8.3=941,考虑到其它操作需要的时间,取值为800就可以满足刷新周期的要求。定时刷新时间到时给出刷新请求信号REF_REQ,使SDRAM进入刷新操作状态[4]。

(5)状态控制器

状态控制器是根据端口仲裁器和初始化及刷新控制器的请求,确定SDRAM芯片的当前的工作状态,工作状态可以是空闲(NOP)、读操作(READA)、写操作(WRITEA)、定时刷新(REF_REQ,)以及在完成初始化时产生的复位等待200 μs(INIT_WAIT),预充电(PRECHARG)、刷新(REFRESH)和模式设置(LOAD_MODE)共八个状态[5-6]。为 了 保证SDRAM的刷新请求能够及时得到响应,采用FIFO读写端口的数据长度不能过长,刷新定时器的定时常数选择也要适当减小。图3是IS42S16160B 的状态转换图,图中的行激活状态是SDRAM进行读写操作之前必须给出行地址A0~A12和bank选择BA0、BA1的状态。

(6)SDRAM接口信号发生器

SDRAM接口信号发生器的作用是根据状态控制器给出的状态控制信号,如初始化、刷新、读、写、预充电、模式设置等输出SDRAM的片选、行列选择、地址、读写控制及数据等端口信号。

图3 IS42S16160B的状态转换图

3 SDRAM控制器的仿真结果

图4是SDRAM控制器的功能仿真结果,图中显示了初始化和读操作时,SDRAM芯片各控制信号的状态。该控制器应用于图像采集和显示系统中,完全能够满足实时数据存储和处理的要求。

图4 SDRAM控制器的仿真图

4 结束语

采用FAGA设计的双端口SDRAM控制器,与传统的SDRAM控制器相比较,采用模块化的自顶向下的设计方法,可移植性号,同时由于支持双端口的数据存取,能够满足实时数据采集和数据处理系统对存储器的要求。该控制器已成功应用于实时图像处理系统中。

[1]Integrated Silicon Solution,Inc.42S83200B - 16160B.pdf[Z].Rev.C.MARCH,2007.

[2]高子旺,顾美康.一种基于FPGA的低复杂度SDRAM控制器实现方法[J].计算机与数字工程,2010,38(01):194-196.

[3]赵欣博,陈星.DDR SDRAM与FPGA的高速接口设计[J].电子测量技术,2008,31(11):182-183.

[4]刘云清,佟首峰,姜会林.利用FPGA实现SDRAM控制器的设计[J].长春理工大学学报,2005,28(04):47-50.

[5]段然,樊晓桠,张盛兵,等.基于状态机的SDRAM控制器的设计与实现[J].计算机工程与应用,2005,42(17):110-112.

[6]朱文斌,刘春平,黄振.基于FPGA的高可靠性SDRAM控制器设计与实现[J].电讯技术,2011,51(10):113-116.

猜你喜欢

预充电时钟端口
动力电池预充设计及温升特性研究
电动汽车预充电保护设计
别样的“时钟”
一种端口故障的解决方案
电动汽车分级预充电回路及预充电阻选型匹配方法研究
古代的时钟
手动预充电方法在西门子S120 电机模块的应用
端口阻塞与优先级
有趣的时钟
系统网络端口安全防护