• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA+ARM的高速計算機屏幕信息記錄系統

    基于FPGA+ARM的高速計算機屏幕信息記錄系統

    作者: 時間:2017-06-04 來源:網絡 收藏

    隨著計算機應用越來越廣泛,越來越多的重要信息需要由計算機屏幕顯示,因此對計算機屏幕記錄的需求越來越迫切。同時, 伴隨著顯示器的高速發展,計算機屏幕分辨率日益增大,需要記錄的圖像分辨率也逐漸增大,因此,對能夠記錄計算機屏幕信息的設備需要日益增長。目前的圖像壓縮存儲方案大都無法支持高分辨率圖像,如ADI公司推出的圖像壓縮芯片ADV212[1],該芯片支持的最大分辨率為1 024×1 024,無法滿足SXGA(1 280×1 024)或更高的圖像分辨率。另外,在一些DSP解決方案中,因為DSP接口不靈活以及DSP本身處理能力的限制,很難支持高分辨圖像壓縮。

    本設計開發出了一套基于雙架構的高速計算機屏幕圖像壓縮系統。系統通過對圖像壓縮系統任務的劃分,利用FPGA的并行計算能力和靈活的編程方式,完成圖像壓縮算法。對于壓縮后的碼流,系統采用ARM管理,基于linux的嵌入式ARM系統能夠以文件的形式存儲碼流,另外,ARM對網絡和音頻常用設備能方便地管理。系統支持主流接口(VGA,DVI),壓縮后的碼流可以存儲在本地硬盤,也可以通過網絡發送到遠端服務器。雙FPGA的設計對計算機屏幕圖像壓縮更為方便,原始圖像經過前端預處理FPGA進行幀間檢測,以決定該幀圖像進入主FPGA的壓縮模式,主FPGA為核心壓縮引擎,負責完成高速圖像壓縮算法。

    1 系統架構與實現

    系統整體架構如圖1所示,采用雙架構,主要包括圖像前端預處理、圖像壓縮模塊和碼流管理部分。

    前面一塊FPGA完成前端預處理,如分辨率檢測、色彩轉換和圖像分析等功能;后面一塊FPGA用來實現圖像實時壓縮,其中ARM對系統進行管理,如壓縮后碼流管理、網絡管理和音頻錄制等。

    本文引用地址:http://www.czjhyjcfj.com/article/201706/348377.htm

    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以文件的方式管理,有利于碼流本地存儲以及通過網絡傳輸等靈活的應用。另外,系統支持多種輸入接口,提高了硬件系統的靈活性,具有廣闊的應用前景。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 临泉县| 嘉黎县| 突泉县| 全椒县| 独山县| 共和县| 石楼县| 彭水| 滕州市| 文成县| 南乐县| 湖北省| 屯留县| 祁阳县| 白城市| 图木舒克市| 新巴尔虎左旗| 林西县| 彭阳县| 迁安市| 抚松县| 崇仁县| 宿迁市| 遂昌县| 永嘉县| 张家口市| 印江| 五莲县| 彭阳县| 利川市| 娱乐| 云浮市| 宁夏| 苍南县| 金塔县| 铁岭县| 衡山县| 祁阳县| 丰城市| 荣昌县| 昭平县|