独立式多分辨率VGA/DVI压缩存储系统
随着计算机应用的快速普及,视频图像的压缩存储在信息记录和安防监控等领域起着重要作用。但是,目前市场上的多数图像压缩系统很难支持多种分辨率或者高分辨率图像的实时压缩,如ADV212[1]难以满足UXGA(1 600×1 200)或更高分辨率1080p等的应用场合。此外,市场上也存在一些基于DSP的解决方案,它们多采用FPGA+DSP架构对图像进行压缩。此类系统的最大缺点在于DSP的数据接口不够灵活,加上DSP的并行度不高,因此大大限制了其在高分辨率图像压缩方面的应用。所以,研究一套支持多种分辨率以及高分辨率的视频图像压缩和存储系统具有重要的现实意义。
基于上述需求,开发了一套基于双FPGA+ARM架构的独立式多分辨率VGA/GVI压缩和存储系统。该系统支持DVI/VGA接口输入,并支持SVGA、XGA、SXGA、UXGA、1080p等任意分辨率的图像压缩和存储,同时能做到音视频同步。另外,该系统采用了双FPGA+ARM架构,提高了系统的灵活性及平台可升级性,拓宽了其应用场合。
本文主要介绍独立式多分辨率VGA/DVI图像压缩存储系统的核心架构,并给出系统的性能。
1 系统架构与实现
该系统的整体架构如图1所示。系统采用了双FPGA+ARM的架构,主要包括四部分:图像前端接口电路、预处理模块、图像压缩模块和管理模块。它同时支持VGA和DVI图像源输入,图像源的缓存或部分运算的中间结果通过Flash和外部存储器实现。这里主要介绍该系统中涉及到前端预处理模块和图像压缩核心模块。
图1中左面一片FPGA主要完成前端预处理,如分辨率检测、色彩转换和图像分析等功能;右面一片FPGA主要用来实现图像实时压缩;ARM对系统进行管理,如压缩后码流管理、网络管理和音频录制等。
1.1 前端预处理模块
前端接口电路采用AD9888作为前端的视频模数转换器,TI公司推出的TFP403作为DVI接收芯片。前端预处理模块采用Xilinx公司的Virtex4[2]系列的FPGA(XC4VLX40) ,它主要完成的功能是分辨率的检测和色彩空间转换等,如图2所示。
1.1.1 分辨率检测
对于标准的VGA接口,不同分辨率下其HSYNC与VSYNC时序不同,系统设计时用一个单独的模块来检测输入端的分辨率。该模块可以通过检测两个相邻VSYNC上升沿间的HSYNC数目来识别VGA信号的分辨率,然后将检测到的分辨率参数送给后端的图像压缩模块,让系统根据对应参数来配置图像采集和图像压缩。
1.1.2 色彩转换
标准的VGA接口输出为RGB信号,在进行压缩之前,先对图像进行色彩空间转换,将RGB信号转换为YUV信号。色彩空间转换公式为:
系统实现时采用4:2:2采样模式,FPGA采用定点化处理后,将得到的Y 和UV分量送给后端的编码模块进行编码。
1.2 图像压缩部分
在系统设计时,考虑到不同分辨率的图像压缩和后续功能扩展,需要采用硬件资源丰富的FPGA,后端模块采用Xilinx公司的Virtex4系列的FPGA(XC4VLX100)。图像压缩的核心架构如图3所示,它主要涉及图像缓存、图像压缩和码流缓存三部分。
1.2.1 图像缓存模块
为了提高系统的处理速度和数据吞吐效率,图像采集模块中采用图4所示的“乒乓操作”缓存图像,即把一帧图像的Y和UV分量缓存到片外的SDRAM1中,同时,系统会从SDRAM2读取另一帧已经缓存的图像到后端的图像压缩模块。这样图像缓存和压缩可以并行处理,提高系统的压缩效率。
系统设计时采用Micron公司16 MB的SDRAM[3],它包含了4个bank。其中,bank0与bank1用来缓存Y分量,bank2与bank3用来缓存UV分量,为了提高读写SDRAM的效率,采用burst读写数据方式,可以减少仲裁操作。
1.2.2 图像并行压缩模块
在系统算法设计时,图像变换采用了基于离散小波变换的空间推举算法(SCLA[4]),相对常见的离散小波变换(DWT),SCLA算法的行与列变换同时进行,乘法次数最少,且重建图像的PSNR值更高。编码算法采用改进的无链表零树编码算法(SLC),它融合了多层次零树编码算法(SPIHT[5])和无链表零树编码(LZC[6])的思想,在性能上逼近SPIHT,但更易于硬件实现。
系统在实现架构上采用了图3所示的双通道并行压缩架构,即Y和UV分量的小波变换和编码并行进行,极大地提高了系统的并行度和压缩效率。兼顾数据读取效率和内存考虑,本系统设计时采用了片外SDRAM和片内SRAM结合的方法来缓存小波系数,所以小波变换和编码模块主要由FPGA和2块片外SDRAM协同完成。SCLA算法采用9/7小波的五层分解,其中SDRAM3用来缓存Y通道分解过程中产生的部分小波系数,SDRAM4用来缓存UV通道分解过程中产生的部分小波系数,向SDRAM中读写数据时仍然采用burst方式。SLC算法以一棵小波树为基本单元,且压缩比可自由控制,完成一帧图像所有小波树的编码。
1.2.3 码流缓存模块
图3中Y通道和UV通道编码后的码流,需要合理的码流管理机制。在此,为了提高系统的吞吐效率,压缩后的码流缓存也采用2片SDRAM进行“乒乓操作”,即向SDRAM5写一帧码流时,从SDRAM6中读取前一帧压缩后的码流;同理,向SDRAM6写一帧码流时,同时从SDRAM5中读取前一帧缓存的码流,原理与图4类似。
- 基于DSP Builder的VGA接口设计(04-10)
- μC/GUI在基于NiosⅡ嵌入式开发平台的环境智能监控系统中的移植与应用(01-14)
- 基于DSP Builder的VGA接口系统设计(04-10)
- 基于FPGA的LCDVGA控制器设计(06-06)
- 利用FPGA实现外设通信接口之: 典型实例-VGA接口的设计与实现(06-05)
- 利用FPGA实现外设通信接口之: 利用FPGA实现常用显示接口(Display Interface)(06-05)