《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于FPGA+ARM的高速计算机屏幕信息记录系统
基于FPGA+ARM的高速计算机屏幕信息记录系统
来源:电子技术应用2011年第6期
孙红亮1,唐艳发1,梁春锋2,吴 彪2,张 利2
(1.清华大学 微电子所,北京100084; 2.清华大学 电子工程系,北京100084)
摘要: 介绍一种自主研发的高速计算机屏幕信息记录系统。该系统支持VGA/DVI输入,支持SVGA、XGA、SXGA、UXGA等多种计算机屏幕分辨率图像的连续压缩和存储。实验表明,本系统的单帧图像压缩性能接近JPEG2000标准,PSNR值优于JPEG标准。
中图分类号: TN409;TP302
文献标识码: B
文章编号: 0258-7998(2011)06-0038-03
High speed computer screen recorder system based on FPGA+ARM
Sun Hongliang1,Tang Yanfa1,Liang Chunfeng2,Wu Biao2,Zhang Li2
1.Institute of Microelectronics, Tsinghua University, Beijing 100084,China; 2.Department of Electronic Engineering, Tsinghua University, Beijing 100084,China
Abstract: A high speed computer screen recorder system based on FPGA+ARM is introduced in this paper. This system could support image signal from both DVI and VGA interface, and compress computer screen images with common resolutions, like SVGA, XGA, SXGA and UXGA. The experimental results show that the compression quality(PSNR) of this system could approach JEPG2000 standard and far better than JPEG standard.
Key words : FPGA;ARM;computer screen;image compression;wavelet transform


 随着计算机应用越来越广泛,越来越多的重要信息需要由计算机屏幕显示,因此对计算机屏幕记录的需求越来越迫切。同时, 伴随着显示器的高速发展,计算机屏幕分辨率日益增大,需要记录的图像分辨率也逐渐增大,因此,对能够记录计算机屏幕信息的设备需要日益增长。目前的图像压缩存储方案大都无法支持高分辨率图像,如ADI公司推出的图像压缩芯片ADV212[1],该芯片支持的最大分辨率为1 024×1 024,无法满足SXGA(1 280×1 024)或更高的图像分辨率。另外,在一些DSP解决方案中,因为DSP接口不灵活以及DSP本身处理能力的限制,很难支持高分辨图像压缩。
    本设计开发出了一套基于双FPGA+ARM架构的高速计算机屏幕图像压缩系统。系统通过对图像压缩系统任务的划分,利用FPGA的并行计算能力和灵活的编程方式,完成图像压缩算法。对于压缩后的码流,系统采用ARM管理,基于linux的嵌入式ARM系统能够以文件的形式存储码流,另外,ARM对网络和音频常用设备能方便地管理。系统支持主流接口(VGA,DVI),压缩后的码流可以存储在本地硬盘,也可以通过网络发送到远端服务器。双FPGA的设计对计算机屏幕图像压缩更为方便,原始图像经过前端预处理FPGA进行帧间检测,以决定该帧图像进入主FPGA的压缩模式,主FPGA为核心压缩引擎,负责完成高速图像压缩算法。
1 系统架构与实现
    系统整体架构如图1所示,采用双FPGA+ARM架构,主要包括图像前端预处理、图像压缩模块和码流管理部分。

 

 

    前面一块FPGA完成前端预处理,如分辨率检测、色彩转换和图像分析等功能;后面一块FPGA用来实现图像实时压缩,其中ARM对系统进行管理,如压缩后码流管理、网络管理和音频录制等。
1.1 预处理模块
    本系统同时支持VGA、DVI两种主流显卡接口。采用AD9888[2]作为视频模数转换器,TI公司的TFP403[3]为DVI接收芯片。Xilinx公司Virtex4[4](XC4VLX40)完成图像预处理,主要包括图像数据的采集、色彩空间转换和帧间检测。前端处理模块如图2所示。

1.1.1 图像数据采集
    预处理FPGA接收到的图像数据为接口芯片送来的图像数据,包括像素时钟信号(PCLK)、场同步信号(VSYNC)、行同步信号(HSYNC)以及数据信号(R[7:0],G[7:0],B[7:0])。图像数据的采集包括判断图像分辨率和提取图像数据两个步骤。
    当前的计算机屏幕分辨率很多,工业VGA标准规定了各种分辨率的像素时钟及场、行同步信号时序,根据相邻场同步信号(VSYNC)之间行同步信号(HSYNC)数目,以及相邻行同步信号(HSYNC)之间像素时钟(PCLK)数目识别VGA信号分辨率。根据场同步信号(VSYNC)和行同步信号(HSYNC)提出图像数据。
1.1.2 色彩空间转换
    VGA输出为RGB信号,而人眼对图像的亮度分量更为敏感,所以,对图像数据进行色彩空间转换,将RGB信号转换为YUV信号,转换公式:
 
    系统实现时采用4:2:2采样模式,FPGA采用定点化处理后,得到亮度分量Y 和色度分量UV。
1.1.3 帧间检测
    帧间检测的核心思想是对比相邻两帧图像,判断每个像素点是否变化。以3×3的块为判断单元,如果有变化则将该像素位置和像素值都存起来;如果没有变化则不传输这些信息。当得到了一个4×4的块以后把这个16个点的信息作为一个整体传给后面的模块,然后统计1帧图像总的码流大小。如果该值低于一个设定的阈值,则认为当前帧没有变化,直接传当前帧变化部分的像素和位置信息到后面的码流整理模块;如果统计后码流的大小大于设定的阈值,则将当前帧送入LX100中进行压缩。
1.2 图像压缩模块
    图像压缩为系统核心模块,该压缩引擎包括小波变换和熵编码,算法全部由系统主FPGA完成。该FPGA芯片选用Xilinx公司的Virtex4[4]系列FPGA(XC4VLX160)。图像压缩引擎结构如图3。

    在系统算法设计中,图像小波变换采用了基于离散小波变换的空间推举算法(SCLA)[5]。不同于传统的离散小波变换(DWT),SCLA对行与列同时进行变换,其乘法次数是小波变换算法中最少的,而重建图像质量也很高,PSNR值优于JPEG,接近JPEG2000。编码算法采用了改进的无链表零树编码算法(SLC),该算法综合了多层次零树编码算法(SPIHT[6])和无链表零树编码(LZC[7])的特点,在性能上优于LZC,逼近SPIHT,而且易于硬件实现。
    系统的架构由FPGA和两片外部SDRAM实现。SDRAM用于缓存小波变换后的小波系数。FPGA完成小波变换算法SCLA和熵编码算法SLC。SCLA算法由5个流水线小波滤波器完成,每个滤波器完成一层小波分解,而小波分解运算需要乘法器,在FPGA芯片选型时,根据小波滤波器中需要乘法器的个数选择FPGA。在本系统中,5个流水的小波滤波器包括36个乘法器,对于亮度分量Y和色度分量UV两路数据并行处理,则需要72个乘法器,而在Virtex4系列FPGA(XC4VLX160)中有96个DSP单元。由小波变换得到小波系数,系统设计时采用2片外部SDRAM和FPGA片内SRAM结合的方法缓存小波系数。对于亮度分量Y和色度分量UV两路数据并行处理以提高系统吞吐量,SDRAM1和SDRAM2分量用来缓存Y和UV的小波系数。熵编码算法SLC负责对小波系数编码,该算法以一棵小波树为基本处理单元,即当前端小波系数构成一棵小波树时,熵编码模块便启动编码,从而完成一帧图像所有小波树的编码。
1.3 码流管理模块
    对于图像经过FPGA压缩后的码流,系统采用ARM芯片进行管理,该芯片为Cirrus Logic公司的工业级嵌入式处理器EP9315[8]。该处理器具有ARM920T核,最高主频达200 MHz,并具有丰富的外围接口,包括网络、USB、音频等。FPGA和ARM之间通信由I2C总线完成,当FPGA完成一帧图像压缩后,通过FPGA的GPIO发送一个终端信号给ARM,并准备好一帧码流长度等信息。ARM中断服务程序响应该中断,通过I2C接口读走码流长度,通过映射SRAM的方式从FPGA读取压缩码流到ARM内存,然后以文件的形式存储码流到本地硬盘,或者通过网络发送到远端服务器。
2 实验结果与性能
2.1 算法性能验证

    系统设计初期,用软件对算法的性能进行了验证。在PC上对一组Lena等标准图像进行压缩,得到不同的重建图像,对重建图像求解PSNR值,式(2)为PSNR计算公式。其中Mean Square Error(MSE)表示原始图像和重建图像对应像素的均方误差值。

    表1为本系统采用算法与JPEG及JPEG2000对标准图像压缩后重建图像的PSNR比较。从表中可以看出,本系统采用算法远优于JPEG,接近JPEG2000。PSNR值的比较以压缩比(对应表中Bitrate)为基准,即在相同压缩比的情况下对比PSNR值。

2.2 硬件实现和硬件压缩
    硬件系统电路板采用10层板制作工艺,电路板面积为30.8 cm×16.7 cm,在100 MHz工作频率下对系统测试,结果表明系统工作稳定。表2为系统对1 600×1 200、1 280×1 024和1 024×768三种常见分辨率的计算机屏幕进行的记录,记录的图像源采用了各类计算机屏幕常见图像,如Word文档、PPT文件、动态雷达图像和一段视频。其中,PPT的平均翻页速度为60 s。由表2可以看出,系统对于Word文档、PPT文档等只有局部变化的图像能够达到非常高的压缩比,压缩帧率约为60帧/s。

    本文结合应用提出图像压缩算,以FPGA为核心计算平台,设计了一套计算机屏幕图像记录系统。系统实现了对1 280×1 024×24 bit图像每秒记录27帧,对1 600×1 200×24 bit图像每秒记录17帧,对PPT、Word文档等只有局部变化的屏幕图像每秒可记录60帧,且压缩后重建图像质量优于JPEG,与JPEG2000接近。同时,对于压缩后的码流,系统采用ARM以文件的方式管理,有利于码流本地存储以及通过网络传输等灵活的应用。另外,系统支持多种输入接口,提高了硬件系统的灵活性,具有广阔的应用前景。
参考文献
[1] Analog Devices Corporation.JEPG2000 video codec ADV212  [EB/OL].[2010-02-26].http://www.analog.com/static/imported-files/data_sheets/ADV212.pdf.
[2] Analog Devices,Inc.AD9888-100/140/170/205MSPS analog flat panel interface[EB/OL].[2010-02-26].http://data.eeworld.com.cn/pdf/68311_AD_AD9888.pdf.
[3] Texas Instruments,Inc.TFP403-TI panelbus digital
     receiver[EB/OL].[2010-02-26].http://focus.ti.com/lit/ds/  symlink/tfp403.pdf.
[4] Xilinx,Inc.Virtex-4 family overview[EB/OL].[2010-02-26].http://www.xilinx.com/support/documentation/data_sheets/ds112.pdf.
[5] MENG H,WANG Z.Fast spatial combinative lifting algorithm of wavelet transform using the 9/7 filter for  image block compression.Electron.Lett.,2000,36(21).
[6] SAID A,PEARLMAN W A.A new,fast,and efficient
     image codec based on set partitioning in hierarchical trees. IEEE Trans.CVST,1996,6(3):243-250.
[7] LIN Wen Kuo,BURGESS N.Listless zerotree coding for color images.Conference Record of the Asilomar Conference on Signals.Systems & Computers,v1,1998:231-235.
[8] Cirrus Logic,Inc.DS631UM1.EP9315 user’s guide[EB/OL].  [2010-02-26].http://www.cirrus.com/en/pubs/manual/EP93xx_Users_Guide_UM1.pdf.

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