《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 一種新型圖像壓縮系統(tǒng)的設(shè)計
一種新型圖像壓縮系統(tǒng)的設(shè)計
2014年電子技術(shù)應(yīng)用第11期
高利聰1,2,菅少坤1,2,梁 庭1,2
1.中北大學(xué) 電子測試技術(shù)國家重點實驗室,山西 太原030051; 2.中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點實驗室,山西 太原030051
摘要: 為打破傳統(tǒng)的攝像機-采集卡-存儲卡為一體的簡單采集存儲設(shè)計模式,實現(xiàn)模擬視頻和數(shù)字視頻雙采集及數(shù)據(jù)壓縮、高速傳輸?shù)男履J剑O(shè)計了一種以FPGA為控制核心、DSP為圖像數(shù)據(jù)處理中心、IP核的生成與雙SDRAM乒乓緩存協(xié)同工作為技巧、PCI卡高速傳輸為手段的圖像壓縮系統(tǒng)。DSP邏輯編碼的改進使圖像壓縮比得到進一步提高。通過實際測試,圖像的壓縮比可達26:1;FPGA+DSP+PCI卡的綜合使用使處理圖像數(shù)據(jù)的速度提高至少50%,圖像轉(zhuǎn)存速率更是達到了38 MB/s。
關(guān)鍵詞: FPGA DSP SDRAM PCI 圖像壓縮
中圖分類號: TP333.1
文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)11-0043-04
A new design of image compression system
Gao Licong1,2,Jian Shaokun1,2,Liang Ting1,2
1.National Kay Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China;2.Kay Laboratory of Instrumentation Science & Dynamic Measurement of Ministry of Education,North University of China,Taiyuan 030051,China
Abstract: In order to break the traditional design pattern camera - capture card - the card as one of the simple acquisition and storage, and realize the new mode of double data acquisition of analog video and digital video as well as compression and high-speed transmission,an image compressing system is designed with FPGA as the control center, DSP as image data processing center, IP core generation and dual-SDRAM ping-pong cache collaborative work as skill, and PCI card as a means of high-speed transmission. Improved DSP logic code makes the image compression ratio be further improved. Through the actual test, image compression ratio of up to 26:1. The integrated use of FPGA+DSP+PCI card makes the speed of image data processing improved by at least 50%, image transfer rate is reached 38 MB/s.
Key words : FPGA;DSP;SDRAM;PCI;image compression

0 引言

  傳統(tǒng)的視頻采集系統(tǒng)僅支持PAL和NTSC幾種制式的視頻數(shù)據(jù),這些模式很難清晰地抓拍到目標(biāo)快速變化的瞬時圖片,而很多高幀頻的攝像頭只是對圖像進行了簡單的采集,并未處理和壓縮。為了改善視頻圖像數(shù)據(jù)的信道傳輸和存儲速度,降低對信道寬度以及存儲空間大小的要求,本文設(shè)計了一種多接口、高速率傳輸?shù)?a class="innerlink" href="http://theprogrammingfactory.com/tags/圖像壓縮" title="圖像壓縮" target="_blank">圖像壓縮系統(tǒng)。該系統(tǒng)不直接存儲圖像數(shù)據(jù),而是由FPGA采集數(shù)字化后的視頻圖像數(shù)據(jù),通過DSP將采集的數(shù)據(jù)進行編碼壓縮,然后再將編碼壓縮后的數(shù)據(jù)通過PCI高速傳輸給計算機,最后再通過計算機對圖像進行解壓縮并顯示。

1 總體結(jié)構(gòu)設(shè)計

  本設(shè)計結(jié)合FPGA處理速度快、DSP運算能力強等優(yōu)點,提出了如下方案:通過FPGA模擬I2C總線時序,對模擬視頻采集芯片TVP5150進行配置,并接收TVP5150輸出的ITU-R BT.656格式的圖像數(shù)據(jù);同時,采用了Camera Link 接口,接收標(biāo)準(zhǔn)數(shù)字相機輸出的圖像數(shù)據(jù)。在FPGA完成對視頻數(shù)據(jù)的采集并經(jīng)內(nèi)部FIFO緩存后,將數(shù)據(jù)打包并行傳輸給DSP,DSP對圖像進行JPEG2000標(biāo)準(zhǔn)的壓縮,壓縮幀頻不低于60幀/s,壓縮比不小于20:1;壓縮后的數(shù)據(jù)通過PCI總線傳輸給控制計算機,然后通過計算機對圖像進行解碼顯示。

001.jpg

  圖像壓縮系統(tǒng)的整體結(jié)構(gòu)如圖1所示,主要包括圖像采集模塊、FPGA控制模塊、DSP壓縮模塊、PCI接口模塊、電源和時鐘管理模塊。

  視頻采集模塊使用了型號為PNT-698的CCD模擬攝像頭,該攝像頭幀頻為25 Hz,場頻為50 Hz,像素為720×576,輸出為PAL制式圖像信號,信噪比大于48 dB,并可以實現(xiàn)自動增益控制以及自動白平衡調(diào)整,輸出接口標(biāo)準(zhǔn)為BNC。

2 硬件平臺的搭建

  2.1 視頻接口協(xié)議設(shè)定

  視頻接口由8路并行數(shù)據(jù)和1路時鐘信號組成,時鐘為像素時鐘,時鐘周期T=1/1 728fN,fN為行頻率,單位是Hz,fN=1/625(一幀圖像為625行),脈沖寬度t=18.5±3 ns,數(shù)據(jù)保持時間為td=18.5±3 ns。

002.jpg

  視頻傳輸協(xié)議是以幀為單位傳輸,一幀圖像的傳輸格式如圖2所示。為了與標(biāo)準(zhǔn)電視圖像掃描方式相兼容,采用隔行掃描,每幀625行,每行1 728 B。其中第1行~第23行和第311行~第336行為場消隱信號,主要針對視頻數(shù)據(jù)場結(jié)束后掃描位置的重新定位,偶數(shù)場共288行(23~311),奇數(shù)場共288行(336~624)。

  圖像解碼芯片TVP5150采用了同步信號嵌入數(shù)據(jù)內(nèi)部的輸出方式,所以需要對行數(shù)據(jù)結(jié)構(gòu)進行研究。行數(shù)據(jù)結(jié)構(gòu)如圖3所示,一行共1 728 B,前288 B為行控制信號,后1 440 B為圖像數(shù)據(jù)。行控制信號包括行開始標(biāo)志SAV(Start of Active Video),長度為4 B;行結(jié)束標(biāo)志EAV(End of Active Video),長度為4 B;行消隱信號280 B。SAV信號和EAV信號都由4 B組成,分別為FF、00、00、XY,前3 B為固定數(shù),最后1 B XY表示該行數(shù)據(jù)在整幀圖像中的位置信息。XY字節(jié)包含奇偶場標(biāo)志、行消隱狀態(tài)信息、場消隱狀態(tài)信息。

003.jpg

  視頻圖像數(shù)據(jù)為YCbCr 4:2:2格式,Y表示一個像素的亮度,Cb、Cr表示一個像素的色差信號,一個像素2 B,每行共720個像素,共1 440 B。視頻數(shù)據(jù)格式為CbYCrYCbYCrY……CrY,因此可以理解為每個像素均有各自的亮度信號Y,但是共用一組色差信號Cb和Cr。在解包數(shù)據(jù)時,需要將它們分開,若需要顯示,可以將YUV格式轉(zhuǎn)換為RGB格式。

  2.2 FPGA與DSP接口設(shè)計

  FPGA完成圖像數(shù)據(jù)的接收后,經(jīng)過格式變換及濾波將圖像數(shù)據(jù)傳輸給DSP進行壓縮。壓縮打包完成后,又需要將數(shù)據(jù)回傳給FPGA,通過FPGA控制PCI接口時序,將數(shù)據(jù)最終上傳給計算機。為了滿足圖像數(shù)據(jù)高速、雙向、實時的傳輸,在DSP與FPGA之間設(shè)計了兩個高速的FIFO緩沖。

  本系統(tǒng)中選用Spartan3系列的XC3S1400AN作為核心處理器[1],其內(nèi)部儲存資源豐富,內(nèi)部Flash 16 Mbit, Distributed RAM(分布式RAM)176 Kbit,Block RAM(塊RAM)576 Kbit。為了節(jié)約成本,同時考慮到系統(tǒng)的傳輸速率及可靠性,在FPGA內(nèi)部IP核中創(chuàng)建了內(nèi)部FIFO,數(shù)據(jù)寬度為32 bit,存儲容量為3 M×32 bit。采用了獨立的讀時鐘(RD_CLK)和寫時鐘(WR_CLK),數(shù)據(jù)達到半滿,半滿標(biāo)志位置1(half_flag=′1′);達到滿,滿標(biāo)志置1(full_flag=′1′)。

004.jpg

  FPGA和DSP的接口如圖4所示,視頻數(shù)據(jù)采集、處理完成之后,F(xiàn)PGA通過FIFO的滿標(biāo)志查看FIFO是否已滿,如果未滿,則將32 bit圖像數(shù)據(jù)在寫時鐘的邏輯控制下寫入到FIFO;將半滿信號連接到DSP的中斷引腳,半滿信號置高,會觸發(fā)DSP的DMA進程,將FIFO中的圖像數(shù)據(jù)讀走[2]。同理,DSP通過EMIF外設(shè)接口將FPGA作為其外部存儲空間,壓縮后的數(shù)據(jù)通過DMA寫到FPGA內(nèi)部的另一個FIFO,半滿信號觸發(fā)FPGA內(nèi)部讀數(shù)進程,將數(shù)據(jù)讀走,通過PCI總線上傳到控制計算機。

  2.3 DSP壓縮模塊設(shè)計

  JPEG2000壓縮算法硬件實現(xiàn)復(fù)雜度比較高,其核心算法離散小波變換和EBCOT算法計算量特別大[3],同時要考慮到實時性要求,所以對CPU的處理速度以及緩存空間等要求很高。因此在本次設(shè)計中,選擇了TI公司C6000系列DSP中的TMS320DM642作為硬件平臺。該DSP計算速度超過每秒64億次,適合大數(shù)據(jù)吞吐量高速運算,比如在圖像處理領(lǐng)域。同時,DM642擁有豐富的外設(shè)接口,包括可實現(xiàn)與SDRAM、Flash等外部存儲芯片無縫數(shù)據(jù)連接的EMIF接口等,非常適合音視頻解碼、數(shù)字監(jiān)控以及數(shù)字視頻服務(wù)等應(yīng)用[4]。

005.jpg

  對圖像數(shù)據(jù)處理流程如圖5所示,源圖像先經(jīng)過正向預(yù)處理后進行離散小波變換(DWT),然后對變換的小波系數(shù)進行量化處理和熵編碼,最后將熵編碼后獲得的圖像數(shù)據(jù)打包成壓縮數(shù)據(jù)包輸出。解碼則按照壓縮碼流中提供的各個參數(shù)將編碼過程進行逆向操作,最終將源圖像重構(gòu)還原出來。

  2.4 乒乓緩存設(shè)計

  圖像傳感器單位時間內(nèi)產(chǎn)生的數(shù)據(jù)是連續(xù)的,且數(shù)據(jù)量比較大,而DSP的編碼速率是變化的。為了防止在編碼過程中造成數(shù)據(jù)的丟失,需要在采集與編碼電路之間設(shè)計一組幀緩存電路。

  常用的緩存電路主要有FIFO、雙端口RAM和乒乓緩存結(jié)構(gòu)[5]。由于FIFO的存儲容量太小,不適合圖像視頻數(shù)據(jù)的大吞吐量緩存。雙端口RAM配備必須進行訪問仲裁控制,設(shè)計較復(fù)雜。乒乓緩存結(jié)構(gòu)克服了它們所有的缺點,輸入的視頻數(shù)據(jù)流以幀為單位交替地寫入兩個不同的SDRAM存儲單元,在寫入其中一塊SDRAM的同時,將另一塊SDRAM中的數(shù)據(jù)讀出,并送到數(shù)據(jù)編碼單元進行運算。這樣數(shù)據(jù)的輸入/輸出都是不間斷的,非常適合流水線式操作,完成數(shù)據(jù)的無縫緩存和處理。

007.jpg

  本設(shè)計中乒乓緩存結(jié)構(gòu)如圖6所示,DSP接收到FPGA傳輸?shù)膱D像數(shù)據(jù)后,以幀為單位交替寫入兩塊SDRAM存儲器。與此同時,數(shù)據(jù)被交替讀出,輸出給數(shù)據(jù)壓縮單元進行編碼。數(shù)據(jù)流被嚴(yán)格有效地控制,不會出現(xiàn)丟數(shù)據(jù)或者誤碼,而且效率很高。選用MT48LC2M-

  32B2作為外部高度SDRAM緩存器,讀寫速率可以達到6 ns,數(shù)據(jù)總線寬度為32 bit,容量為64 Mbit,而高頻數(shù)字?jǐn)z像頭輸入的一幀圖像的大小為600×480×3=864 Kbit,完全可以滿足要求。

3 邏輯功能的實現(xiàn)

  3.1 TVP5150解碼邏輯

  TVP5150解碼芯片輸出的數(shù)據(jù)流中除了包含有效的視頻圖像數(shù)據(jù)之外,還包含行、場同步信號以及一些消隱數(shù)據(jù)。所以在視頻解碼時,需要根據(jù)同步信號以及ITU-R BT.656的標(biāo)準(zhǔn)格式將有效數(shù)據(jù)提取出來。

006.jpg

  提取有效數(shù)據(jù)的流程圖如圖7所示,在時鐘的上升沿對TVP5150輸出的數(shù)據(jù)進行采樣,若連續(xù)出現(xiàn)“FF”、“00”、“00” 3個固定字節(jié),則表明出現(xiàn)了定時基準(zhǔn);如果第4 B出現(xiàn)“80”,表示一場數(shù)據(jù)的開始,而且為偶場,接著讀取1 440 B圖像數(shù)據(jù)。同理,若第4 B出現(xiàn)“C7”,表示奇數(shù)場數(shù)據(jù)的開始,接著同樣讀取1 440 B有效圖像數(shù)據(jù);否則,繼續(xù)等待定時基準(zhǔn)的出現(xiàn)。

  3.2 DSP編碼邏輯


008.jpg

  DSP對圖像數(shù)據(jù)的編碼流程如圖8所示,上電復(fù)位后,DSP程序從Flash起始處加載并啟動,通過二次引導(dǎo),最終將應(yīng)用程序全部搬移到DSP內(nèi)存中,然后跳轉(zhuǎn)到入口函數(shù)c_int00(),完成初始化配置,并等待FPGA的外部中斷觸發(fā)信號。FPGA采集到數(shù)據(jù)后,緩存到接口FIFO中,并以中斷的方式觸發(fā)DSP的DMA進程,DSP以DMA的方式將數(shù)據(jù)存儲到SDRAM中,若一幀圖像傳輸完畢,則觸發(fā)軟中斷,進入JPEG2000編碼子程序。編碼完成后,再次觸發(fā)DMA進程,將數(shù)據(jù)回傳給FPGA?!?.3 PCI傳輸接口邏輯

  PCI接口主要用來下發(fā)上位機控制命令和系統(tǒng)參數(shù),上傳編碼后的圖像數(shù)據(jù)。采用PCI9054芯片來連接本地總線和PCI總線,PCI總線協(xié)議由PCI9054芯片內(nèi)部處理,只需對其進行配置,并完成硬件接口驅(qū)動程序即可,PCI9054工作在C模式,內(nèi)部采用了DMA數(shù)據(jù)傳輸方式[6]。

009.jpg

  PCI接口內(nèi)部邏輯流程圖如圖9所示,先判斷總線啟動信號ADS,若該引腳電平由高變低,則啟動一次數(shù)據(jù)傳輸過程,然后判斷讀寫信號電平LWR,若LWR為1,表示PCI寫過程,否則為讀過程。PCI讀過程又分為讀狀態(tài)和讀數(shù)據(jù),通過地址總線LA來判斷,讀過程中,若LA=04H,則為讀寄存器狀態(tài);若LA=A0H,則為讀批量圖像數(shù)據(jù)。而寫過程中,若LA=01H,則為系統(tǒng)復(fù)位,立即執(zhí)行,不寫入寄存器;若LA=02H,則為命令下發(fā),需要將命令字寫入相應(yīng)寄存器;若LA=03H,則為命令刷新,立即執(zhí)行,不寫入寄存器。

  為了使得數(shù)據(jù)不丟失,在PCI接口設(shè)計過程中調(diào)用FPGA的IP核添加了FIFO數(shù)據(jù)緩存器,位寬為32 bit,與PCI總線位寬相匹配,深度為4 KB。由于PCI數(shù)據(jù)總線是雙向傳輸,所以在FPGA內(nèi)部增添了數(shù)據(jù)方向控制模塊,保證了數(shù)據(jù)有序地下發(fā)和上傳。

4 結(jié)果分析


010.jpg


  為了比較壓縮前后圖像的質(zhì)量,首先將未壓縮的圖片通過PCI接口傳輸給上位機并顯示,如圖10(a)所示,圖像大小為407 KB,格式為BMP。然后保持源圖片不變,將采集到的圖像數(shù)據(jù)傳輸給DSP編碼,編碼后傳輸給上位機,經(jīng)上位機解碼后得到的圖片如圖10(b)所示,其大小為59.5 KB,壓縮比約為10:1;圖10(c)大小為15.2 KB,壓縮比約為26:1。同時,圖像數(shù)據(jù)通過PCI卡傳輸給上位機時最高速率達到了38 MB/s。

  通過對比可知,壓縮比越高,峰值信噪比越低,主觀視覺的質(zhì)量也會有所下降,局部細節(jié)有些模糊??傮w來說,本次設(shè)計的新型圖像壓縮編碼系統(tǒng)實現(xiàn)了預(yù)計的功能。

參考文獻

  [1] 邸麗霞.基于FPGA的高速圖像數(shù)據(jù)采集存儲系統(tǒng)設(shè)計[J].電視技術(shù),2013,37(13):49-52.

  [2] 李娟.基于FPGA的圖像預(yù)處理及顯示系統(tǒng)的設(shè)計[D].中國科學(xué)院研究生院,2011.

  [3] 張曉娣,劉貴忠,曾召華,等.JPEG2000圖像壓縮編碼系統(tǒng)及其關(guān)鍵技術(shù)[J].電視技術(shù),2001(8):13-17.

  [4] 鄭紅,劉振強,李振.嵌入式DSP應(yīng)用系統(tǒng)設(shè)計及實例剖析[M].北京:北京航空航天大學(xué)出版社,2012.

  [5] 周如輝.實時視頻處理系統(tǒng)中乒乓緩存控制器的設(shè)計[J].電子元器件應(yīng)用,2006(4):66-68.

  [6] 原學(xué)山.基于PCI總線的圖像采集卡的設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2006.


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