《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種新型圖像壓縮系統(tǒng)的設(shè)計(jì)
一種新型圖像壓縮系統(tǒng)的設(shè)計(jì)
2014年電子技術(shù)應(yīng)用第11期
高利聰1,2,菅少坤1,2,梁 庭1,2
1.中北大學(xué) 電子測(cè)試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051; 2.中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原030051
摘要: 為打破傳統(tǒng)的攝像機(jī)-采集卡-存儲(chǔ)卡為一體的簡(jiǎn)單采集存儲(chǔ)設(shè)計(jì)模式,實(shí)現(xiàn)模擬視頻和數(shù)字視頻雙采集及數(shù)據(jù)壓縮、高速傳輸?shù)男履J?,設(shè)計(jì)了一種以FPGA為控制核心、DSP為圖像數(shù)據(jù)處理中心、IP核的生成與雙SDRAM乒乓緩存協(xié)同工作為技巧、PCI卡高速傳輸為手段的圖像壓縮系統(tǒng)。DSP邏輯編碼的改進(jìn)使圖像壓縮比得到進(jìn)一步提高。通過實(shí)際測(cè)試,圖像的壓縮比可達(dá)26:1;FPGA+DSP+PCI卡的綜合使用使處理圖像數(shù)據(jù)的速度提高至少50%,圖像轉(zhuǎn)存速率更是達(dá)到了38 MB/s。
關(guān)鍵詞: FPGA DSP SDRAM PCI 圖像壓縮
中圖分類號(hào): TP333.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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í)圖片,而很多高幀頻的攝像頭只是對(duì)圖像進(jìn)行了簡(jiǎn)單的采集,并未處理和壓縮。為了改善視頻圖像數(shù)據(jù)的信道傳輸和存儲(chǔ)速度,降低對(duì)信道寬度以及存儲(chǔ)空間大小的要求,本文設(shè)計(jì)了一種多接口、高速率傳輸?shù)?a class="innerlink" href="http://ihrv.cn/tags/圖像壓縮" title="圖像壓縮" target="_blank">圖像壓縮系統(tǒng)。該系統(tǒng)不直接存儲(chǔ)圖像數(shù)據(jù),而是由FPGA采集數(shù)字化后的視頻圖像數(shù)據(jù),通過DSP將采集的數(shù)據(jù)進(jìn)行編碼壓縮,然后再將編碼壓縮后的數(shù)據(jù)通過PCI高速傳輸給計(jì)算機(jī),最后再通過計(jì)算機(jī)對(duì)圖像進(jìn)行解壓縮并顯示。

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

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

001.jpg

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

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

2 硬件平臺(tái)的搭建

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

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

002.jpg

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

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

003.jpg

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

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

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

  本系統(tǒng)中選用Spartan3系列的XC3S1400AN作為核心處理器[1],其內(nèi)部?jī)?chǔ)存資源豐富,內(nèi)部Flash 16 Mbit, Distributed RAM(分布式RAM)176 Kbit,Block RAM(塊RAM)576 Kbit。為了節(jié)約成本,同時(shí)考慮到系統(tǒng)的傳輸速率及可靠性,在FPGA內(nèi)部IP核中創(chuàng)建了內(nèi)部FIFO,數(shù)據(jù)寬度為32 bit,存儲(chǔ)容量為3 M×32 bit。采用了獨(dú)立的讀時(shí)鐘(RD_CLK)和寫時(shí)鐘(WR_CLK),數(shù)據(jù)達(dá)到半滿,半滿標(biāo)志位置1(half_flag=′1′);達(dá)到滿,滿標(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ù)在寫時(shí)鐘的邏輯控制下寫入到FIFO;將半滿信號(hào)連接到DSP的中斷引腳,半滿信號(hào)置高,會(huì)觸發(fā)DSP的DMA進(jìn)程,將FIFO中的圖像數(shù)據(jù)讀走[2]。同理,DSP通過EMIF外設(shè)接口將FPGA作為其外部存儲(chǔ)空間,壓縮后的數(shù)據(jù)通過DMA寫到FPGA內(nèi)部的另一個(gè)FIFO,半滿信號(hào)觸發(fā)FPGA內(nèi)部讀數(shù)進(jìn)程,將數(shù)據(jù)讀走,通過PCI總線上傳到控制計(jì)算機(jī)。

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

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

005.jpg

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

  2.4 乒乓緩存設(shè)計(jì)

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

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

007.jpg

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

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

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

  3.1 TVP5150解碼邏輯

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

006.jpg

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

  3.2 DSP編碼邏輯


008.jpg

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

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

009.jpg

  PCI接口內(nèi)部邏輯流程圖如圖9所示,先判斷總線啟動(dòng)信號(hào)ADS,若該引腳電平由高變低,則啟動(dòng)一次數(shù)據(jù)傳輸過程,然后判斷讀寫信號(hào)電平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è)計(jì)過程中調(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接口傳輸給上位機(jī)并顯示,如圖10(a)所示,圖像大小為407 KB,格式為BMP。然后保持源圖片不變,將采集到的圖像數(shù)據(jù)傳輸給DSP編碼,編碼后傳輸給上位機(jī),經(jīng)上位機(jī)解碼后得到的圖片如圖10(b)所示,其大小為59.5 KB,壓縮比約為10:1;圖10(c)大小為15.2 KB,壓縮比約為26:1。同時(shí),圖像數(shù)據(jù)通過PCI卡傳輸給上位機(jī)時(shí)最高速率達(dá)到了38 MB/s。

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

參考文獻(xiàn)

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

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

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

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

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

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


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