>
首页 » 业界动态 » 一种基于FPGA和DSP的视频处理系统

一种基于FPGA和DSP的视频处理系统

作者:李 刚,付宇卓,王世明  时间:2006-10-26 23:49  来源:
摘要:该文介绍了一种基于现场可编程门阵列(FPGA)和数字信号处理器(DSP)的实时视频处理系统,此系统以FPGA为数据缓冲和逻辑控制单元,DSP为图像数据处理单元。该文介绍了此视频处理系统的整体结构,详细讨论了从色空间RGB到YCbCr的转换,并给出了转换前后的图像对照。同时也介绍了视频数据流的缓冲处理,以及DSP和FPGA轮流对双口RAM的控制,最后介绍了用DSP实现图像压缩的过程。通过此系统的实现可以看出,使用FPGA实现视频处理系统的控制,可以提高系统的性能,同时使得系统的适应性和灵活性强,设计调试方便。

关键词:现场可编程门阵列;数字信号处理器;色空间;图像压缩

引言

图像处理是一种重要的信息资源,随着信息科学的发展,图像处理在通信、管理、医学、气象等方面都发挥着越来越重要的作用。这就使得快速准确的进行图像处理变得更为重要。

现场可编程逻辑门阵列FPGA(Field Programmable Gate Array)可以实时地对外加或内置的RAM、ROM编程,灵活改变逻辑器件的功能,实现不同的要求。DSP+FPGA组成的系统具有结构灵活,通用性强,适于模块化设计的特点,从而提高了算法的效率;同时这种系统开发周期短,容易维护和扩展,适合数字信号处理。本文设计了一个基于DSP+FPGA的系统,对图像进行控制、压缩和输出。此系统在设计的时候,使用了LCD控制和CMOSSENSOR控制器IP模块,从而使得对LCD和CMOS SENSOR的控制可以实现非常复杂的功能。这种IP模块复用技术也是ASIC设计中经常使用的方法。

图1 系统结构原理图

系统的组成及基本原理

该视频处理系统是基于DSP+FPGA结构来实现的。如图1所示,FPGA是整个系统的控制中心,它对图像数据实现缓冲和预处理,同时也是CMOS SENSOR和LCD接口的控制器。DSP是整个系统的实时处理高级算法的核心器件。在系统结构上,图像由CMOS传感器进行模数转换,将数据送入FPGA,在FPGA中对数据进行缓冲和预处理,然后在DSP中对数据进行JPEG压缩,最后由LCD输出图像。

硬件选择
在此视频处理系统中,FPGA选用了Xilinx VirtexII3000,它有300万门的容量,还有96个16Kbx1的内部存储块(Block Memory),能够适用于各种数据的处理。DSP芯片选用了汉芯1号eDSP21600,该器件具有指令周期短、数据吞吐量高、通用能力强、指令功能完备及功耗低等特点,完全满足快速算法的要求。CMOS SENSOR选用的是ICM109T,它可以提供200万像素的图像。

RGB图像的预处理
系统的图像数据流首先由CMOS SENSOR获得。CMOSSENSOR得到的图像数据为RGB格式,图像每一帧的第一行数据为G(红)和R(绿)间隔传输,第二行为B(绿)和G(蓝)间隔传输,第三四行分别与一二行相同,依此类推。图像数据如图2所示。

图2 图像数据RGB格式

FPGA在接收CMOSSENSOR图像以后,将每一帧图像的RGB信号分离,分成对应的R 分量、G分量、B分量,即由一帧图像分解为3帧图像。在R分量中,原为R的象素不变,原为G或B的象素则根据自身周围R象素的平均值计算得到。例如在G分量中,D2点的G值为C1、E1、C3、E3四点G值的均值。R和B分量可用同样的方法。原始图像和分解后的图像如图3所示。

FPGA实现RGB信号到YCbCr信号的转换
YCbCr信号有几种抽样格式,如4∶4∶4、4∶2 ∶2、4∶1∶1、4∶2∶0等。此系统设计使用的是4∶2∶2的抽样格式,即每传输4个亮度信号Y样点,只传输2个蓝色差信号Cb和2个红色差信号Cr样点。如果每种信号需要8bit,那么只需要16bit的系统,节省了1/3的带宽。从色空间RGB 到色空间YCbCr的转换公式如下:

Y=(0+ 0.257R)+(0.504G+0.098B)(1)
Cb=(128+0.439B)-(0.148R+0.291G)(2)
Cr=(128+0.439R)-(0.368G+0.071B) (3)

根据转换公式(1)、(2)、(3),对于每一个转换操作,首先作三个数乘运算,然后用两个加法器进行加法运算,最后再用一个加法器作加法即可得到结果。由分析可知只需要三个时钟周期就可以完成从RGB到YCbCr的转换。如果将此计算过程设计成指令流水线模式,那么从较长的一段时间来看,只需要一个时钟周期就可以完成。指令流水线的结构如图4所示,因为计算比较简单,所以只需设计三级流水线即可。


图3 RGB原始图像及分解图像

图4 指令流水线示意图

FPGA对视频数据流的缓冲
为了减轻DSP的负载,FPGA需要对视频数据流进行分类缓冲,即以4∶2∶2的格式将视频数据流写入SRAM,其结构如图5所示。A为时钟产生和数据控制单元; B和C是16bit位移寄存器,数据串行从A进入B和C,然后并行输出到D;D是8选1数据选择单元; E是DSP和FPGA公用的SRAM。

视频数据YCbCr宽为8bit,A单元控制此输入信号在位移寄存器B和C之间切换。每16个时钟周期中,B和C只有一个寄存器在接收A的串行输入,而另外一个则将信号以16bit并行输出直D。8选1数据选择器D输出4组8bit的亮度信号Y,2组8bit的蓝色差信号Cb,2组8bit红色差信号Cr。

此方案采用了串行位移分类并行输出的方法,数据在两组位移寄存器之间轮流输入。在有效的控制信号下,两个寄存器能够在串行位移和并行输出之间切换。该方法的优点是需要的时钟数少,占用资源少,容易实现。

图5 数据串行输入并行输出结构图

FPGA和DSP对RAM 的访问
此系统采用一个双口RAM来实现FPGA和DSP之间的数据交换,双口RAM的容量为16Kx16bit。为了实现实时图像采集和处理,使得FPGA对图像数据的缓冲和DSP对图像数据的读取同步进行,应当将RAM分成相等的两块,即RAM1和RAM2。在系统工作的过程中,一块用于缓冲图像数据,FPGA分类缓冲后的YCbCr信号写入该存储区;另一块外部对图像的读取,DSP可以直接对这个存储区的数据进行运算。该缓存结构的另外一个特点是FPGA和DSP对双口RAM的寻址是来回切换的。因为DSP读取RAM的速度远大于FPGA写RAM的速度,所以切换信号仅由FPGA发出即可。当FPGA分类缓冲数据写满RAM1时,FPGA向DSP发出一个中断信号,此时DSP读取RAM1中的数据,同时FPGA的缓冲数据写入RAM2。当RAM2中数据写满时,FPGA再向DSP发出中断信号,DSP读取RAM2中的数据,同时FPGA的缓冲数据RAM1,如此交替,实现图像数据读写同时进行。

图6 JPEG压缩流程

DSP对图像进行JPEG压缩
此系统进行JPEG压缩使用的是顺序模式,包括对原始图像的数据分块、DCT变换、量化和编码等几个过程,一帧图像的压缩流程如图6所示。使用相反的过程过程便可以将图像解压缩。DSP使用8x8的矩阵进行DCT变换。经过DCT变换后,图像的主要信息包含在了低频分量中,而高频分量则包含较少的信息,这样在图像的压缩过程中去掉一些高频分量,就实现了图像的压缩。这一过程由量化完成。在此系统中使用一种简单的量化矩阵:

其中,Q为压缩因子,i、j为位置坐标。

在编码的过程中,对直流系数进行差分编码(DCPM),对交流系数进行游程编码熵编码。使用这样的方式使得图像数据中出现一半以上的0,可以很大的提高压缩率。试验结果表明,当图像的压缩品质在75%时,图像的视觉效果基本上没什么改变,而存储空间仅为原来的1/3。因此,JPEG压缩大大减少了存储空间。

试验结果
此系统LCD显示使用3843 256分辨率,为了得到连续的图像,使用每秒25帧图像,外部主时钟使用20MHz,经过分频处理,LCD的主时钟使用4.9MHz。在整个系统正常工作时,可以得到连续清晰的视频图像。

结束语

在系统中使用FPGA作为逻辑控制,可以提高系统的灵活性和可扩展行,同时也很大的提高了系统的处理速度。对于不同类型的视频输入数据,只需要对FPGA的逻辑控制和缓冲部分稍作修改就可以重新工作;在DSP单元,可以根据需要进行其他的图像优化处理,如白平衡处理。另外,这种设计结构简单,调试方便,大大降低了硬件调试的难度。

相关推荐

MC56F8006/56F8002:数字信号控制器

图像压缩技术进展

图像获取  图像压缩  WISARD  2009-05-18

TI IP网络摄像机解决方案

DSP芯片介绍及其选型

DSP  数字信号处理器  快速RAM  TI  ADI  2008-08-15

Xilinx ECU 汽车电子开发方案

MATLAB辅助DSP设计的研究与实现

在线研讨会
焦点