《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA+ARM的高速計(jì)算機(jī)屏幕信息記錄系統(tǒng)
基于FPGA+ARM的高速計(jì)算機(jī)屏幕信息記錄系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2011年第6期
孫紅亮1,唐艷發(fā)1,梁春鋒2,吳 彪2,張 利2
(1.清華大學(xué) 微電子所,北京100084; 2.清華大學(xué) 電子工程系,北京100084)
摘要: 介紹一種自主研發(fā)的高速計(jì)算機(jī)屏幕信息記錄系統(tǒng)。該系統(tǒng)支持VGA/DVI輸入,支持SVGA、XGA、SXGA、UXGA等多種計(jì)算機(jī)屏幕分辨率圖像的連續(xù)壓縮和存儲(chǔ)。實(shí)驗(yàn)表明,本系統(tǒng)的單幀圖像壓縮性能接近JPEG2000標(biāo)準(zhǔn),PSNR值優(yōu)于JPEG標(biāo)準(zhǔn)。
中圖分類號(hào): TN409;TP302
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 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


 隨著計(jì)算機(jī)應(yīng)用越來(lái)越廣泛,越來(lái)越多的重要信息需要由計(jì)算機(jī)屏幕顯示,因此對(duì)計(jì)算機(jī)屏幕記錄的需求越來(lái)越迫切。同時(shí), 伴隨著顯示器的高速發(fā)展,計(jì)算機(jī)屏幕分辨率日益增大,需要記錄的圖像分辨率也逐漸增大,因此,對(duì)能夠記錄計(jì)算機(jī)屏幕信息的設(shè)備需要日益增長(zhǎng)。目前的圖像壓縮存儲(chǔ)方案大都無(wú)法支持高分辨率圖像,如ADI公司推出的圖像壓縮芯片ADV212[1],該芯片支持的最大分辨率為1 024×1 024,無(wú)法滿足SXGA(1 280×1 024)或更高的圖像分辨率。另外,在一些DSP解決方案中,因?yàn)镈SP接口不靈活以及DSP本身處理能力的限制,很難支持高分辨圖像壓縮。
    本設(shè)計(jì)開(kāi)發(fā)出了一套基于雙FPGA+ARM架構(gòu)的高速計(jì)算機(jī)屏幕圖像壓縮系統(tǒng)。系統(tǒng)通過(guò)對(duì)圖像壓縮系統(tǒng)任務(wù)的劃分,利用FPGA的并行計(jì)算能力和靈活的編程方式,完成圖像壓縮算法。對(duì)于壓縮后的碼流,系統(tǒng)采用ARM管理,基于linux的嵌入式ARM系統(tǒng)能夠以文件的形式存儲(chǔ)碼流,另外,ARM對(duì)網(wǎng)絡(luò)和音頻常用設(shè)備能方便地管理。系統(tǒng)支持主流接口(VGA,DVI),壓縮后的碼流可以存儲(chǔ)在本地硬盤,也可以通過(guò)網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器。雙FPGA的設(shè)計(jì)對(duì)計(jì)算機(jī)屏幕圖像壓縮更為方便,原始圖像經(jīng)過(guò)前端預(yù)處理FPGA進(jìn)行幀間檢測(cè),以決定該幀圖像進(jìn)入主FPGA的壓縮模式,主FPGA為核心壓縮引擎,負(fù)責(zé)完成高速圖像壓縮算法。
1 系統(tǒng)架構(gòu)與實(shí)現(xiàn)
    系統(tǒng)整體架構(gòu)如圖1所示,采用雙FPGA+ARM架構(gòu),主要包括圖像前端預(yù)處理、圖像壓縮模塊和碼流管理部分。

 

 

    前面一塊FPGA完成前端預(yù)處理,如分辨率檢測(cè)、色彩轉(zhuǎn)換和圖像分析等功能;后面一塊FPGA用來(lái)實(shí)現(xiàn)圖像實(shí)時(shí)壓縮,其中ARM對(duì)系統(tǒng)進(jìn)行管理,如壓縮后碼流管理、網(wǎng)絡(luò)管理和音頻錄制等。
1.1 預(yù)處理模塊
    本系統(tǒng)同時(shí)支持VGA、DVI兩種主流顯卡接口。采用AD9888[2]作為視頻模數(shù)轉(zhuǎn)換器,TI公司的TFP403[3]為DVI接收芯片。Xilinx公司Virtex4[4](XC4VLX40)完成圖像預(yù)處理,主要包括圖像數(shù)據(jù)的采集、色彩空間轉(zhuǎn)換和幀間檢測(cè)。前端處理模塊如圖2所示。

1.1.1 圖像數(shù)據(jù)采集
    預(yù)處理FPGA接收到的圖像數(shù)據(jù)為接口芯片送來(lái)的圖像數(shù)據(jù),包括像素時(shí)鐘信號(hào)(PCLK)、場(chǎng)同步信號(hào)(VSYNC)、行同步信號(hào)(HSYNC)以及數(shù)據(jù)信號(hào)(R[7:0],G[7:0],B[7:0])。圖像數(shù)據(jù)的采集包括判斷圖像分辨率和提取圖像數(shù)據(jù)兩個(gè)步驟。
    當(dāng)前的計(jì)算機(jī)屏幕分辨率很多,工業(yè)VGA標(biāo)準(zhǔn)規(guī)定了各種分辨率的像素時(shí)鐘及場(chǎng)、行同步信號(hào)時(shí)序,根據(jù)相鄰場(chǎng)同步信號(hào)(VSYNC)之間行同步信號(hào)(HSYNC)數(shù)目,以及相鄰行同步信號(hào)(HSYNC)之間像素時(shí)鐘(PCLK)數(shù)目識(shí)別VGA信號(hào)分辨率。根據(jù)場(chǎng)同步信號(hào)(VSYNC)和行同步信號(hào)(HSYNC)提出圖像數(shù)據(jù)。
1.1.2 色彩空間轉(zhuǎn)換
    VGA輸出為RGB信號(hào),而人眼對(duì)圖像的亮度分量更為敏感,所以,對(duì)圖像數(shù)據(jù)進(jìn)行色彩空間轉(zhuǎn)換,將RGB信號(hào)轉(zhuǎn)換為YUV信號(hào),轉(zhuǎn)換公式:
 
    系統(tǒng)實(shí)現(xiàn)時(shí)采用4:2:2采樣模式,F(xiàn)PGA采用定點(diǎn)化處理后,得到亮度分量Y 和色度分量UV。
1.1.3 幀間檢測(cè)
    幀間檢測(cè)的核心思想是對(duì)比相鄰兩幀圖像,判斷每個(gè)像素點(diǎn)是否變化。以3×3的塊為判斷單元,如果有變化則將該像素位置和像素值都存起來(lái);如果沒(méi)有變化則不傳輸這些信息。當(dāng)?shù)玫搅艘粋€(gè)4×4的塊以后把這個(gè)16個(gè)點(diǎn)的信息作為一個(gè)整體傳給后面的模塊,然后統(tǒng)計(jì)1幀圖像總的碼流大小。如果該值低于一個(gè)設(shè)定的閾值,則認(rèn)為當(dāng)前幀沒(méi)有變化,直接傳當(dāng)前幀變化部分的像素和位置信息到后面的碼流整理模塊;如果統(tǒng)計(jì)后碼流的大小大于設(shè)定的閾值,則將當(dāng)前幀送入LX100中進(jìn)行壓縮。
1.2 圖像壓縮模塊
    圖像壓縮為系統(tǒng)核心模塊,該壓縮引擎包括小波變換和熵編碼,算法全部由系統(tǒng)主FPGA完成。該FPGA芯片選用Xilinx公司的Virtex4[4]系列FPGA(XC4VLX160)。圖像壓縮引擎結(jié)構(gòu)如圖3。

    在系統(tǒng)算法設(shè)計(jì)中,圖像小波變換采用了基于離散小波變換的空間推舉算法(SCLA)[5]。不同于傳統(tǒng)的離散小波變換(DWT),SCLA對(duì)行與列同時(shí)進(jìn)行變換,其乘法次數(shù)是小波變換算法中最少的,而重建圖像質(zhì)量也很高,PSNR值優(yōu)于JPEG,接近JPEG2000。編碼算法采用了改進(jìn)的無(wú)鏈表零樹(shù)編碼算法(SLC),該算法綜合了多層次零樹(shù)編碼算法(SPIHT[6])和無(wú)鏈表零樹(shù)編碼(LZC[7])的特點(diǎn),在性能上優(yōu)于LZC,逼近SPIHT,而且易于硬件實(shí)現(xiàn)。
    系統(tǒng)的架構(gòu)由FPGA和兩片外部SDRAM實(shí)現(xiàn)。SDRAM用于緩存小波變換后的小波系數(shù)。FPGA完成小波變換算法SCLA和熵編碼算法SLC。SCLA算法由5個(gè)流水線小波濾波器完成,每個(gè)濾波器完成一層小波分解,而小波分解運(yùn)算需要乘法器,在FPGA芯片選型時(shí),根據(jù)小波濾波器中需要乘法器的個(gè)數(shù)選擇FPGA。在本系統(tǒng)中,5個(gè)流水的小波濾波器包括36個(gè)乘法器,對(duì)于亮度分量Y和色度分量UV兩路數(shù)據(jù)并行處理,則需要72個(gè)乘法器,而在Virtex4系列FPGA(XC4VLX160)中有96個(gè)DSP單元。由小波變換得到小波系數(shù),系統(tǒng)設(shè)計(jì)時(shí)采用2片外部SDRAM和FPGA片內(nèi)SRAM結(jié)合的方法緩存小波系數(shù)。對(duì)于亮度分量Y和色度分量UV兩路數(shù)據(jù)并行處理以提高系統(tǒng)吞吐量,SDRAM1和SDRAM2分量用來(lái)緩存Y和UV的小波系數(shù)。熵編碼算法SLC負(fù)責(zé)對(duì)小波系數(shù)編碼,該算法以一棵小波樹(shù)為基本處理單元,即當(dāng)前端小波系數(shù)構(gòu)成一棵小波樹(shù)時(shí),熵編碼模塊便啟動(dòng)編碼,從而完成一幀圖像所有小波樹(shù)的編碼。
1.3 碼流管理模塊
    對(duì)于圖像經(jīng)過(guò)FPGA壓縮后的碼流,系統(tǒng)采用ARM芯片進(jìn)行管理,該芯片為Cirrus Logic公司的工業(yè)級(jí)嵌入式處理器EP9315[8]。該處理器具有ARM920T核,最高主頻達(dá)200 MHz,并具有豐富的外圍接口,包括網(wǎng)絡(luò)、USB、音頻等。FPGA和ARM之間通信由I2C總線完成,當(dāng)FPGA完成一幀圖像壓縮后,通過(guò)FPGA的GPIO發(fā)送一個(gè)終端信號(hào)給ARM,并準(zhǔn)備好一幀碼流長(zhǎng)度等信息。ARM中斷服務(wù)程序響應(yīng)該中斷,通過(guò)I2C接口讀走碼流長(zhǎng)度,通過(guò)映射SRAM的方式從FPGA讀取壓縮碼流到ARM內(nèi)存,然后以文件的形式存儲(chǔ)碼流到本地硬盤,或者通過(guò)網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器。
2 實(shí)驗(yàn)結(jié)果與性能
2.1 算法性能驗(yàn)證

    系統(tǒng)設(shè)計(jì)初期,用軟件對(duì)算法的性能進(jìn)行了驗(yàn)證。在PC上對(duì)一組Lena等標(biāo)準(zhǔn)圖像進(jìn)行壓縮,得到不同的重建圖像,對(duì)重建圖像求解PSNR值,式(2)為PSNR計(jì)算公式。其中Mean Square Error(MSE)表示原始圖像和重建圖像對(duì)應(yīng)像素的均方誤差值。

    表1為本系統(tǒng)采用算法與JPEG及JPEG2000對(duì)標(biāo)準(zhǔn)圖像壓縮后重建圖像的PSNR比較。從表中可以看出,本系統(tǒng)采用算法遠(yuǎn)優(yōu)于JPEG,接近JPEG2000。PSNR值的比較以壓縮比(對(duì)應(yīng)表中Bitrate)為基準(zhǔn),即在相同壓縮比的情況下對(duì)比PSNR值。

2.2 硬件實(shí)現(xiàn)和硬件壓縮
    硬件系統(tǒng)電路板采用10層板制作工藝,電路板面積為30.8 cm×16.7 cm,在100 MHz工作頻率下對(duì)系統(tǒng)測(cè)試,結(jié)果表明系統(tǒng)工作穩(wěn)定。表2為系統(tǒng)對(duì)1 600×1 200、1 280×1 024和1 024×768三種常見(jiàn)分辨率的計(jì)算機(jī)屏幕進(jìn)行的記錄,記錄的圖像源采用了各類計(jì)算機(jī)屏幕常見(jiàn)圖像,如Word文檔、PPT文件、動(dòng)態(tài)雷達(dá)圖像和一段視頻。其中,PPT的平均翻頁(yè)速度為60 s。由表2可以看出,系統(tǒng)對(duì)于Word文檔、PPT文檔等只有局部變化的圖像能夠達(dá)到非常高的壓縮比,壓縮幀率約為60幀/s。

    本文結(jié)合應(yīng)用提出圖像壓縮算,以FPGA為核心計(jì)算平臺(tái),設(shè)計(jì)了一套計(jì)算機(jī)屏幕圖像記錄系統(tǒng)。系統(tǒng)實(shí)現(xiàn)了對(duì)1 280×1 024×24 bit圖像每秒記錄27幀,對(duì)1 600×1 200×24 bit圖像每秒記錄17幀,對(duì)PPT、Word文檔等只有局部變化的屏幕圖像每秒可記錄60幀,且壓縮后重建圖像質(zhì)量?jī)?yōu)于JPEG,與JPEG2000接近。同時(shí),對(duì)于壓縮后的碼流,系統(tǒng)采用ARM以文件的方式管理,有利于碼流本地存儲(chǔ)以及通過(guò)網(wǎng)絡(luò)傳輸?shù)褥`活的應(yīng)用。另外,系統(tǒng)支持多種輸入接口,提高了硬件系統(tǒng)的靈活性,具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。