多端口SDRAM帧缓存控制器的设计

时间:2022-04-28 05:58:58

多端口SDRAM帧缓存控制器的设计

摘要:该文使用FPGA实现了一种多端口帧缓存控制器。该控制器具有FIFO接口特性,能完成多个通道的数据并行读写操作。此外,该文中还针对图像数据特点做了SDRAM控制器的操作优化,提高控制器的读写图像数据的效率。设计的控制器IP核能够十分方便的应用在图像处理系统中,应用前景光明。

关键词:FPGA;帧缓存;SDRAM控制器

中图分类号:TP391文献标识码:A文章编号:1009-3044(2012)13-3181-03

The Design of Frame Buffer Based on Multi-port SDRAM Controller

WANG Zhong-feng

(School of Electronic and Information Engineering, Lanzhou jiaotong University, Lanzhou 730070, China)

Abstract: This article designed a multi-port frame buffer controller based on FPGA.The controller has a interface which similar with a FIFO. In addition, we optimized the timing opertion for this SDRAM controller Against the character of image data , improve the efficiency of the controller to read and write operation.This controller can be applicated in the image processing system easily and have a bright future.

Key words: FPGA;frame buffer;SDRAM controller

在嵌入式图像处理系统中往往需要将大量的图像数据缓存后再进行图像算法处理。一般的系统中使用SDRAM来作缓存存储器。SDRAM芯片具有高速,低价的特点非常适合做图像帧缓存,但SDRAM接口实现复杂,为系统设计带来了困难。该文设计了一种具有FIFO接口特性的多端口帧缓存控制器,设计的系统利用多端口特性实现读写操作的并发操作。这样能充分利用SDRAM存储器的优点还消除了使用SDRAM带来的接口复杂性。这种具有多端口特性SDRAM控制器具有以下优点:

(1)接口信号非常简单,与FIFO接口类似。

(2)多通道并行端口,灵活提供用户所需的通道。

1帧缓存控制器的设计方案

本控制器可以实现对SDRAM存储器的多端口并行访问,该控制器不仅实现了对SDRAM存储器的操作,同时还为外部提供了简单的类似FIFO的接口,使得系统易于集成。多端口存储控制器的结构如图1所示。

图1帧缓存控制器系统框图

多端口帧缓存存控制器主要由FIFO用户接口单元,FIFO仲裁器,全局仲裁器,刷新命令计时器,命令解释器和数据路径控制器等模块构成:

FIFO用户接口模块:系统使用FIFO用户接口完成数据的乒乓并行操作。这些FIFO用来缓存从通道外输入的图像数据信号,FIFO产生的控制信号如数据满,数据空等信号传送到FIFO仲裁器模块中。

FIFO仲裁器:在该模块中对FIFO传送来的控制信号进行分析,从而决定优先执行哪个FIFO通道的数据请求命令。FIFO仲裁器的仲裁结果输出到全局仲裁器中判决处理。

刷新命令计时器:该模块用于产生刷新信号。输出的刷新信号传送入全局仲裁器供其分析仲裁是否进行刷新操作。

全局仲裁器模块:全局仲裁器根据负责整个控制器操作状态的跳转,根据当前状态,命令解析器的操作反馈信号及FIFO仲裁器的状态产生下一时钟的操作状态,同时向后级命令解释器发出控制名令,该模块是整个帧缓存控制器的关键部分。

命令解释器:命令解释器负责对发来的命令字进行解析,最终产生用于控制SDRAM所需要的时序信号。

数据路径控制器:数据路径控制器用于对数据路径进行控制。数据路径控制器根据上级模块的输入来控制SDRAM数据总线上的信号(DQ数据)何时有效并防止总线读写操作之间可能产生的总线冲突。

上述模块中,全局仲裁器是设计的关键与难点,下面对这个模块进行详细的阐述。

2.1全局仲裁模块的设计

全局仲裁器负责对整个控制器的工作状态进行控制,是本模块的核心模块。全局仲裁器根据负责整个控制器操作状态的跳转。在时域上看,图像处理系统中的图像数据都是从图像传感器以行为单位不间断输出到存储系统中,行与行之间的有一定的时间间隔,固定图像行组成一帧的图像数据。设计的帧缓存控制器针对图像数据的传输特点实现了对整行图像数据的读写操作,即控制器能实现整行图像数据的读操作和整行图像数据的写操作,这样的设计能提高系统的运行效率。全局仲裁器中包含的状态有:

刷新状态:由于在SDRAM有电期间,SDRAM芯片需要不断的进行刷新操作才能将数据保持下来,该状态就是用于产生刷新信号的。刷新信号首先由刷新计数模块产生的定时信号送到全局仲裁器中,在接下来的无读写操作时间段时由命令解析器产生刷新信号给SDRAM芯片。

WRITE状态:在WRITE状态,系统将根据SDRAM页模式写操作的时序来完成整行图像数据的写操作,即将写FIFO中的保存的图像数据写入到SDRAM芯片中。页模式写工作时序如图2所示:图2 SDRAM页模式写时的工作时序

根据上面的页模式写时序图可知要完成页模式写操作就需要执行多个命令,这里以整页读操作为例,假设应用的系统中一行图像数据由1024个图像点,该操作的整个流程如下图3所示:

图3命令解析器中命令操作的设计图

要完成1024点图像数据的写入需要依次执行有3个操作,全局仲裁器向下级的命令解析器输出3个对应的命令,而对SDRAM芯片的具体操作则由命令解析器执行。这3个命令分别是:

1)激活命令:SDRAM的时序要求在对某行的中的数据进行读写操作时必须要对该行进行激活操作,只有行激活后,方可对该行进行操作。当进入到激活状态时,全局仲裁器向命令解析器发出激活命令及相应的地址信号。具体激活操作由命令解析器完成。

2)写数据命令:在写状态中全局仲裁器向命令解析器发出写命令。命令解析器负责具体的写操作。在向命令解析器发出写信号的同时,全局仲裁器还需要把具体的列地址输送给命令解析器。在页模式下,控制器只需要向SDRAM芯片输出一次地址信号即可,SDRAM芯片内部的列地址产生器会自动对当前地址加1,这样SDRAM会自动将所需要的长度的数据写到相应行的某个段内。从而解放了控制器,可以节省控制器的时序动作。

3)预充电命令:预充电操作是将打开的行进行关闭。完成一整行图像数据的操作。全局仲裁器发出的命令信号统一由命令解析器执行。

2.2命令解析器的设计

命令解析器负责对上级模块输入的命令进行解码,解码完成后,命令解析器执行解码命令。不同的命令执行的周期不同,从而模块必须根据命令产生相应的动作。例如:在整页读模式下,命令解析器在接收到来自全局仲裁发来的用于结束数据操作的预充电命令时,命令解析器根据SDRAM芯片的操作时序规范产生预充电名利。产生预充电操作的代码如下:

3仿真与调试

在设计完各个模块后,在顶层建立整个模块,对该模块进行仿真,得到的仿真波形图如图4所示:图4三端口控制器仿真图

最后在signaltap II中对帧缓存控制器进行在线调试。产生的调试结果如图5所示:

4结束语

本文针对图像处理系统中图像缓存模块的需求开发了一种多端口帧缓存SDRAM控制器,该控制器能够实现多个端口读写通道数据的并行操作。多端口帧缓存控制器能充分利用图像数据的存储特点来提高运行效率,还能借助FIFO传输特性消除使用SDRAM带来的接口复杂性。本控制器调试结果表明:设计的控制器满足需求的时序功能设计要求,设计的控制器具有一定的实用价值。

参考文献:

[1]张志刚.FPGA与SOPC设计教程—DE2实践[M].西安:西安电子科技大学出版社,2007.

[2]吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.

[3]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

[4]冈萨雷.数字图像处理[M].阮秋琦,译.北京:电子工业出版社,2003.

上一篇:基于细胞膜演化规则的仿生算法 下一篇:基于MapInfo和VB的油库地理信息系统