《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > 一种基于DDR高速图像缓存的实现
一种基于DDR高速图像缓存的实现
陈松柏
摘要: 提出了基于DDR存储器的高速FIFO图像缓存方案,降低了用户接口的设计难度,实现了高速缓存的容量扩展,并成功应用于工程项目。本文设计中使用16bit数据位宽的DDR器件,创新地实现了行猝发的操作模式,极大地提高了数据吞吐量。在工作时钟为100MHz的条件下实现了平均缓存速度高达360MB/s,接近理论峰值数据吞吐量400MB/s。
Abstract:
Key words :

  摘  要: 提出了基于DDR存储器的高速FIFO图像缓存方案,降低了用户接口的设计难度,实现了高速缓存的容量扩展,并成功应用于工程项目。本文设计中使用16bit数据位宽的DDR器件,创新地实现了行猝发的操作模式,极大地提高了数据吞吐量。在工作时钟为100MHz的条件下实现了平均缓存速度高达360MB/s,接近理论峰值数据吞吐量400MB/s。


  关键词: DDR存储控制器; 高速缓存; FIFO

   随着半导体传感器技术的发展,在实际应用中越来越多地用到了高帧频、大面阵的CCD相机以获取高质量、高分辨率的图像数据。以分辨率为1K×1K、帧频为200f/s、8bit灰度级的相机为例,其图像数据流速率就将高达200MB/s,这对图像的高速缓存和记录提出了挑战。高速缓存的实现是实时记录的前提条件,高速图像记录之前必须采用合理的缓存机制来完成高速图像数据缓存。
  目前高速缓存实现方案有三种: 第一种是FIFO(先进先出)方式,FIFO存储器就像数据管道一样,数据从管道的一端流入,从另一端流出,先进先出,省略了地址线,接口简单方便,其缺点是容量可扩展性差。第二种是双口RAM方式,具有两套独立的数据、地址和控制总线,因而可从两个端口同时读写而互不干扰,能达到很高的传输速度,并且具有随机存取的优点,缺点是需要用户产生地址逻辑。 第三种是高速SRAM切换方式,高速SRAM只有一套数据、地址和控制总线,可通过三态缓冲门来实现两块SRAM的乒乓切换操作,该方案提高了系统带宽,缺点是切换电路控制比较复杂。
  目前高速缓存方案中常采用三种介质:第一种是SRAM,其具有操作简单的特点,但是昂贵的价格和容量的有限性限制了其在高速大容量的缓存中的应用。第二种是SDRAM,由于需要进行刷新、预充电等操作,控制难度大于SRAM,同时由于其数据传输只在时钟沿上沿进行,因此其传输带宽还是受时钟频率的限制。第三种是DDR SDRAM,克服了SDRAM数据带宽的问题,在时钟的上下沿均传输数据,带宽是SDRAM的两倍,性价比高,是目前高速缓存的最理想介质。
  本文以Micron DDR SDRAM[1]作为缓存介质,发挥了FIFO接口简单、DDR的容量可扩展性和高数据带宽的优点。在工作时钟100MHz的条件下,以FIFO作为缓存方案实现了缓存容量32MB、数据传输率高达360MB/s的高速图像缓存,弥补了FIFO容量小和DDR用户接口逻辑复杂的缺点,具有较好的应用前景。


1 系统设计
    为提高设计的可移植性和可扩展性,采用了模块设计的方法,设计四个模块来完成图像缓存功能。系统框架如图1所示。用户层接口模块负责与用户进行通信,接收用户命令和图像数据并产生控制命令到应用层控制模块;应用层控制模块负责接收来自用户层命令以及物理层控制模块的状态反馈信号,产生读写命令及DDR操作地址发送到物理控制模块;物理层控制模块负责接收应用层发送来的操作地址和命令以及和用户层进行数据通信,同时负责产生DDR器件操作所需要的时序逻辑功能来完成对DDR器件的物理层操作。

 

 

1.1 物理层控制模块
  DDR器件在上电过程中有一系列复杂的操作:上电后至少等候200?滋s然后连续执行如下一连串命令:
    全充电→空命令→配置外部模式寄存器→空命令→配置内部模式寄存器→全充电→空命令→自动刷新→空命令→自动刷新→空命令→用户发出任何有效操作命令。
    该模块的状态机如图2所示,复位或者上电后进入初始化状态,初始化完成后进入工作等待(空闲)中,由于DDR器件的构造特点,需要每隔64ms对器件所有存储单元进行一次刷新。DDR器件本身具有自动刷新计数器,刷新一行计数器便增加一,因此自动刷新的时间间隔由DDR的行数决定,本设计采用Micron MT46V32M16器件,行数为8K,计算得到相邻自动刷新命令的间隔为7.8μs。设计中采用一个计数器,每隔7.8?滋s就发出一个自动刷新的命令,控制器在工作空闲状态下响应并发出自动刷新命令。


  DDR的存储单元[2]按照块(BANK)、行(ROW)、列(Column)地址分布,支持最大猝发操作为8个存储单元,每次切换块、行地址必须首先进行充电状态(Precharge)来关闭当前操作的块、行中的存储单元,并且在进行新的操作时首先要激活操作单元所在的块和行,控制器在工作空闲状态下发出激活命令(ACTIVE)进入激活状态,在此状态下等候应用层发送的控制命令以进行数据操作。
  由以上分析可知:由于存在猝发长度限制及块和行地址切换等控制时间开销,DDR的随机操作的数据吞吐量实际上是有限的,不适合高速图像缓存这种应用环境,必须设计一种新的猝发模式来提高数据吞吐量。本文结合DDR充电以及图像缓存的特点,提出并实现了一种一次操作DDR一行、一行1 024个存储单元的猝发模式,由于DDR只支持2、4、8长度的猝发模式,设计中采用了猝发长度为4的连续猝发方式,核心思想是在一次猝发正在进行的时候又发起操作命令从而使得该次猝发后连续进行下一次猝发。实现了一次连续操作2KB数据的高吞吐量操作。如图2状态机所示,当一行操作完后则进入空闲状态,然后再进行自动刷新和充电的操作。这种猝发模式一次猝发只需要一次充电操作,而猝发长度为8的猝发模式完成2KB的数据传输共需要进行125次充电操作,而一次充电操作需要几个时钟周期开销,相比较而言,大大节省了控制开销,提高了数据吞吐量。
1.2 应用层控制模块
  本设计将DDR作为FIFO的容量扩展来实现高速缓存,这需要内部产生地址逻辑。在应用层控制模块中,负责接收用户接口模块送过来的命令信号,并对命令进行译码。判断当前命令与上次命令一样的时候地址继续累加产生,当前命令与上次命令不同时则地址复位,重新从DDR的零地址开始操作,这样符合FIFO的工作特点。模块产生DDR的地址信号和物理层的控制信号,并根据地址逻辑产生DDR状态信号反馈到用户层接口。
1.3 用户层接口模块
  用户层接口模块[3]负责接收图像输入数据,并提供简易用户接口,屏蔽了内部控制的复杂性,在用户看来对该DDR的操作实际上就是对FIFO的操作,判断DDR内部产生的DDR状态信号,发出缓存或者数据读出命令。
  用户接口层模块方框图如图3所示。当用户发出缓存命令时,内部状态机自动监测图像帧的开始位置并将一帧中的几行数据写入“输入FIFO”,当此FIFO达到一次猝发操作数据量2KB时,状态机发出DDR写命令到下一层,并一次性读完输入FIFO的数据。图像数据连续向“输入FIFO”输入,状态机不间断地检测“输入FIFO”的编程状态信号并发出DDR写命令。由于图像数据存在行场消隐期以及DDR的行猝发写操作效率高,因此在一定的像素时钟条件下不会出现数据堵塞情况。

 

  当用户发出读出命令时,状态机自动检测“输入FIFO”的状态,在可编程空信号有效时一次性向“输出FIFO”输入2KB数据,此时“输出FIFO”输出数据有效信号以提示用户可以进行数据读取。用户从DDR读出数据操作实际上就是对FIFO的读操作,因此用户只需要提供读FIFO使能信号以及读FIFO时钟就可以将DDR内部的数据依次读出。当用户快要将FIFO的数据读空的时候,状态机发出读命令从DDR存储器中一次性读出2KB数据存入“输出FIFO”中,由于DDR读的峰值速度高达400MB/s(100MHz×2B×2),而用户接口读速率一般不超过这个值,因此不会出现数据堵塞情况。
    该模块完成了用户接口、图像输入、控制器三个时钟域的设计,极大地简化了用户接口的操作。良好的功能模块化划分,使得用户只需按照具体要求对图像输入接口进行简单修改便可实现对于任何数据源的缓存,拓宽了该缓存技术的应用范围。
1.4 时钟管理单元模块
  本设计DDR控制器时钟频率[4]为100MHz,在各模块中时钟相位可以不同。因此时钟管理模块对时钟输入信号进行90°、180°、270°等相移,设计中可以采用FPGA的数字时钟管理单元(DCM)。该模块产生复位信号,当上电复位该模块自动检测复位信号,并延迟200μs产生控制器所需要的复位信号。


2 性能测试
  使用VHDL语言[5]在ISE7.1i软件环境下完成整个模块的设计,综合后共占14%的芯片Slice资源,最高时钟频率可达156.5MHz。在基于Xilinx的VirtexIIpro硬件平台上加载测试,硬件平台中使用的DDR为Micron公司的MT46V32M16芯片,晶振为100MHz。
  为测试该设计的最高平均缓存速度,采用逻辑分析仪采集控制器内部工作时的数据传输状态。发现一行数据的猝发共需要512个时钟周期,而刷新、充电、状态等待等时钟开销只需要不到50个时钟周期,因此,实际平均数据吞吐量为理论峰值速率400MB/s×512/(512+50)≈360MB/s。
  为测试该图像缓存的数据记录的完整性,向该模块输入模拟产生的相机数据。8位灰度图像大小为512×512,图4为从DDR器件中读出的缓存图像。


  本文设计并实现了一种基于DDR的高速图像缓存。创新地采用了行猝发操作以提高数据吞吐量。在100MHz的时钟条件下实现峰值传输速率400MB/s、最大平均传输速率360MB/s的图像缓存。在提高时钟频率的情况下数据传输率还有上升空间。同时用户可根据需求对输入接口进行修改以应用于特殊要求的数据缓存,应用广泛。


参考文献
[1] DDR SDRAM General Description[DB/OL].[2007-04-15] http://www.micron.com/ datasheets.
[2] Synthesizable DDR SDRAM Controller[DB/OL].[2006-10-27] http://www.xilinx.com.
[3] Memory Interface Application Notes Overview[DB/OL].[2007-03-26] http://www.xilinx.com.
[4] SYNCHRONOUS TIMING FOR DDR SDRAM[DB/OL]. http://www.micron.com/datasheets.
[5] 候伯亭. VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版社,1999.

此内容为AET网站原创,未经授权禁止转载。