资讯 > 正文

适用于影像检测压缩系统的内存存取方式

发布时间:2007-05-10

  关键词:FIFO 影像数据帧 MPMA

  为了兼具可扩充性以及数据处理速度,对于各种应用如:影像数据侦错、视讯数据压缩、音效数据增益、电动机控制等,可程序化数据处理模块(Programmable Data Processing Module)都是当前时势所需。

  以影像数据侦错模块为例,一个可程序化逻辑门阵列(FPGA)是必备的主要组件,硬件工程师可在这个组件中使用硬件描述语言(Hardware Description Language, HDL)撰写适合客户需求的算法。若是需要修改或新增功能,则可修改HDL程序,再对FPGA芯片重新烧录,无须对硬件板卡做任何重新加工或是重新设计的动作,就可以达到需求。

适用于影像检测压缩系统的内存存取方式如图

  在处理的数据量越来越大的情形下,所需的暂存内存容量随之增大,以往的先进先出队列(First-In-First-Out, FIFO)无法符合其高速度与大容量的需求,许多硬件工程师转往思考随机存取内存(Dynamic Random Access Memory, DRAM)的使用可能性。

  随机存取内存具备可快速存取、可依照设计者规划使用空间、大容量等优点,但是内存数组需要重新充电(Re-Charge),甚至在双倍数据速率同步动态随机存取内存(Double Data Rate SDRAM, DDR SDRAM)有数据相位同步等不易控制的问题,不如FIFO使用容易。因此,在使用FPGA芯片设计上,搭配其供货商所提供的RAM控制智财(Intellectual Property, IP),再加上硬件工程师所开发的控制逻辑,是当前数据控制存取的趋势。

适用于影像检测压缩系统的内存存取方式如图

  笔者的构想是在此DRAM Controlling IP上再加上一层包装(Wrapper)使之拥有FIFO接口,成为一多端口内存存取控制(Multi-Port Memory Access, MPMA)技术。既可保有大容量、存取速度快等优点,亦可保有FIFO接口容易的优点。在设计过程中,DRAM空间可随使用者定义而拥有更高的弹性。如图1,此DRAM拥有两个写入端口以及两个读出端口。对于每个写入端口,其数据可从起始地址连续写入,直到结束地址之后,再从起始地址继续写入,成一循环式(Circular)写入方式。对于每个读出端口,其数据读出的方式可使用类似于循环写入的方式,而且只要写入到内存的数据数量比读出的数据数量多,则此方式是合理的类FIFO存取方式。

  MPMA如何使用于数据处理模块

  许多大量资料运算处理的应用,需要极大的资料暂存,相对应于一个4k-Byte FIFO的价格,其实可以买一个32M-Bit DRAM颗粒绰绰有余。不过,就如前述,其不方便的存取控制是一大问题。所以在撰写FPGA里的HDL算法时,借助其FPGA供货商所提供的IP为一个解决方案。图2为在一个FPGA中,借助其供货商所提供的DRAM控制IP来做设计的示意图。

适用于影像检测压缩系统的内存存取方式如图

  对于所需处理的数据量重复性偏高的应用,例如图3的影像原始数据用影像侦错处理算法来侦测P4点是否错误,需要它周围的8个点当作参考数据来对比,若是使用FIFO,可能无法同时暂存到此3条线(Line)的数据,所以使用DRAM暂存大量的数据,以提供硬件的算法所需要时可以存取到大范围的数据。

  由于DRAM的控制复杂,每存取一次就要重新计算其欲存取的数据地址,根据其数据地址的连续性,可在图像原始数据写入后,分为三个端口以连续地址的方式读出。例如图3,第一端口连续读出P0、P1、P2,第二端口连续读出P4、P5、P6,第三端口连续读出P8、P9、P10,则可以完成P5点侦错的计算;而在计算P6点是否错误时,第一端口只要再读出P3,第二端口读出P7,第三端口读出P11,就可以完成计算前数据的完备,大大提高数据的使用率,也因为连续读取的机制,不用每次计算前就先计算数据地址,只要每一端口均先连续读取数据即可完成,也降低了DRAM控制的复杂度。

  MPMA技术介绍

  笔者以Altera MegaCore IP Generator产生的DDR DRAM Controller为例,再加上自创的Wrapper逻辑,制造一进(32-bit in)一出(8-bit out)的MPMA的存取端口;图4为其方框架构图。

如图4

  在此架构中可明白其Altera DDR DRAM Controller与Write/Read wrapper间的数据频宽为64位,而通过笔者所撰写的wrapper逻辑,更可自由地撰写输入与输出的频宽。在Write/Read wrapper中数据的地址计算方式采用累进式累加,其存取接口类似为FIFO的存取,因而达到更容易使用其大容量数据暂存的优点。

  每个wrapper中有一小容量的FIFO、封装(packing)/反封装(un-packing)机制以及地址累进计数器。FIFO用途为调节使用者接口与DRAM频率域(clock domain)的不同所设立;封装(packing)/反封装(un-packing)机制用途为将输入/输出接口数据总线宽度调整至与DRAM Control IP接口相同,以利于写入/读出DRAM数据的效率。地址累进计数器为每个wrapper的DRAM地址产生器,只要写入wrapper里的计数器数字还大于读出wrapper里的计数器,则所读出的资料必为先前已经写入DRAM里的合法数据,不会存取到错误地址的数据。

  MPMA所增进的效能

  以图3的点P5为例,若是不使用wrapper,则P5此点数据会被写入1次,而在运算的时候被读出1(当作主要运算点)+8(当作参考数据点)次。当一张有n点数据的图像需要做侦错处理时,则需要n*(1+1+8)次的数据存取,还不包括地址计算所造成的延迟(latency)。

  当使用一进三出的MPMA wrapper时,同样P5点只需要被写入1次,而在运算的时候被读出3(3个Read wrapper各须要读取1次)次,则同样的n点数据作完侦错处理只需要n*(1+3)次的数据存取,并且采用累进式的DRAM地址计算,不需要花费额外的延迟时间。由此简单的计算可知此MPMA设计可增进2倍以上的数据存取效率。

  结束语

  对于当前数据输入输出量越来越大以及处理越来越复杂的应用,传统的FIFO无论是容量或是速度均有不敷需求的窘境发生。取而代之的,是更大容量的DRAM;但因其控制逻辑的不易,存取控制是一大瓶颈。

  笔者提出一个架构,在FPGA供货商所提供的IP core上加入写入/读出wrapper的作法,实现数据的高度重复使用率与容易操作的类FIFO接口等优点。使用者更可自行定义MPMA wrapper输入/输出端口的个数与数据总线宽度,以增进数据使用率以及演算时间。

  在自动化控制模块领域,凌华科技一直致力于技术的精进以及应用其技术于产品的研发。在此技术推出的同时,凌华科技以此技术应用于大数据量的影像采集/处理模块,和大量影像数据的传输。尤其是线阵扫描(Line-Scan)影像采集系统,因有其检测上的应用,需要在FPGA上执行影像数据计算的算法,则一方面需要大容量的影像数据暂存,另一方面需要重复的读取影像数据,则此技术是必需的。有关技术专利正在申请中。


 

标签:影像检测,压缩系统,内存存取

相关文章