摘 要:本文在分析了單片JPEG2000壓縮標(biāo)準(zhǔn)的專用編解碼芯片ADV212的硬件結(jié)構(gòu)和工作原理的基礎(chǔ)上,實現(xiàn)了基于ADV212的圖像壓縮系統(tǒng)的硬件設(shè)計和FPGA邏輯設(shè)計。其中,該系統(tǒng)的數(shù)據(jù)輸入接口采用LVDS,數(shù)據(jù)輸出接口采用USB,F(xiàn)PGA主要實現(xiàn)對壓縮芯片ADV212寄存器的配置,整個系統(tǒng)的數(shù)據(jù)流控制以及系統(tǒng)時序邏輯適配。實驗結(jié)果表明,該系統(tǒng)滿足系統(tǒng)對圖像壓縮實時性的要求,同時,重構(gòu)后的圖像與原始圖像進行相比,具有較高的峰值信噪比(PSNR)。
關(guān)鍵詞:圖像壓縮 ADV212 JPEG2000 FPGA
中圖分類號:TN919文獻標(biāo)識碼:A文章編號:1674-098X(2013)04(b)-0152-03
近年來,圖像在航空航天領(lǐng)域的應(yīng)用越來越普遍。眾所周知,圖像信息具有數(shù)據(jù)海量性的特點,在特定的環(huán)境下,受傳輸時間、存儲空間和信道帶寬的影響,攜帶大量數(shù)據(jù)的圖像信息很難被快速的傳輸或存儲,這成為圖像信息處理發(fā)展的主要瓶頸之一。因此,研究有效的圖像編碼技術(shù),以壓縮的形式存儲或傳輸,并且保證被壓縮的圖像重構(gòu)后能被接受,這樣就解決了在遙感等某些重要領(lǐng)域圖像的快速存儲和傳輸問題。
1 基于ADV212圖像壓縮系統(tǒng)設(shè)計
本文中的方案采用“FPGA+ADV212”的架構(gòu),用硬件電路實現(xiàn)系統(tǒng)中圖像壓縮子系統(tǒng),該系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。FPGA邏輯設(shè)計主要實現(xiàn)對ADV212芯片的配置、整個系統(tǒng)的數(shù)據(jù)流控制以及系統(tǒng)時序邏輯適配,同時,系統(tǒng)中還有一些電源轉(zhuǎn)換模塊、存儲模塊、輸入輸出模塊、USB模塊以及顯示模塊。與傳統(tǒng)的設(shè)計方法相比較,該方法具有開發(fā)周期短、設(shè)計效率高、擴展性和升級性好、設(shè)計靈活等特點。
1.1 ADV212硬件結(jié)構(gòu)及工作原理
ADV212是AD公司推出的一款單片JPEG2000編解碼芯片,是當(dāng)今市場上少有的具有實時壓縮和解壓縮標(biāo)準(zhǔn)視頻信號和高清晰度視頻信號功能的芯片。該芯片適用于多種視頻和靜止圖像格式。ADV212的內(nèi)部功能框圖如圖2所示,該芯片主要由像素接口、小波變換引擎、熵編解碼器、嵌入式處理器、存儲器系統(tǒng)和內(nèi)部DMA引擎等組成。輸入圖像和像素數(shù)據(jù)輸入像素接口,采樣值則經(jīng)過隔行掃描傳輸?shù)叫〔ㄗ儞Q引擎中。在小波引擎中,每個圖塊或幀將通過5/3或9/7濾波器分解成許多子帶。生成的小波系數(shù)寫入內(nèi)部寄存器中。熵編解碼器將圖像數(shù)據(jù)編碼為符合JPEG2000標(biāo)準(zhǔn)的數(shù)據(jù)。內(nèi)部DMA引擎提供存儲器之間的高帶寬傳輸及各模塊和存儲器之間的高性能傳輸。RISC處理器具有每一個程序和數(shù)據(jù)存儲器、中斷控制器、標(biāo)準(zhǔn)總線接口及定時器計數(shù)器所對應(yīng)的ROM和RAM。
1.2 ADV212壓縮芯片的初始化流程及關(guān)鍵寄存器說明
在本系統(tǒng)中,通過FPGA內(nèi)嵌NIOSII軟核實現(xiàn)對JPEG2000壓縮芯片ADV212的初始化,初始化的過程包括直接寄存器的配置、間接寄存器的配置以及固件的加載,其中,配置所需的ADV212 RISC固件存儲在NIOS II外部存儲總線的FLASH芯片上。對于本系統(tǒng)中壓縮芯片設(shè)置為HIPI 模式,其初始化的具體流程如圖3所示。系統(tǒng)上電后,先進行上電復(fù)位(BOOT=0x008A),然后配置內(nèi)部鎖相環(huán)(PLL),至少等待20us鎖相環(huán)配置成功后,設(shè)置No-Boot Host模式(BOOT=0x008A),配置主機接口訪問方式(BMODE=0x000A,這里主要設(shè)置主機控制數(shù)據(jù)寬度和DMA數(shù)據(jù)寬度)和間接寄存器的訪問方式(MMODE=0x000A,這里主要設(shè)置數(shù)據(jù)存取位數(shù)和間接地址步長大?。缓驨IOS II軟核將存儲在片外FLASH中大小為32KB的固件讀出并且寫入ADV212中0x57F00~0x57FF0存儲空間上,軟復(fù)位(BOOT=0x008D),重新設(shè)置BUSMODE和MMODE,再設(shè)置編碼參數(shù)(包括圖像格式、精度、小波變換級數(shù)、小波類型、編碼塊的大小、壓縮比、量化步長、輸出碼流格式等),配置間接寄存器(行列計數(shù)器、F0_START、F1_START、V0_START、V1_START、V0_END、V1_END、PIXEL_START、PIXEL_END、PMODE2、VMODE、DMA等),配置完這些寄存器后使能中斷,查詢固件是否正確加載(SWFLAG=0XFF82),如果固件被正確加載,清標(biāo)志(EIRQFLAG=0xFFFF)后就可以進行編碼了,否則繼續(xù)查詢。
1.3 ADV212壓縮的時序控制模塊
ADV212壓縮的時序控制是通過管腳DACK,DREQ,WE,RD,HDATA,按照握手協(xié)議進行讀寫的時序控制。模塊DMA_burst_write和模塊DMA_burst_read是ADV212壓縮的時序控制模塊。此程序中,ADV212的壓縮模式為HIPI模式,數(shù)據(jù)通過HDATA接口利用DMA模式輸入和輸出ADV212。
DMA_burst_write模塊的頂層設(shè)計如圖4所示,此模塊是數(shù)據(jù)寫入到HDATA的時序控制。DMA_burst_read模塊的頂層設(shè)計如圖5所示,此模塊是外部從ADV212的HDATA接口讀出數(shù)據(jù)的時序控制。
DMA模式的讀寫時序為ADV212發(fā)出請求DREQ,外部產(chǎn)生應(yīng)答QACK和讀或者寫信號。如圖6所示為DMA_burst_write模塊在線時序仿真,當(dāng)dreq0_adv212變?yōu)榈碗娖綍r,表明此時壓縮芯片ADV212請求輸入未壓縮的圖像數(shù)據(jù)。當(dāng)dack0_adv212出現(xiàn)一個低脈沖信號時,此時寫入未壓縮的圖像數(shù)據(jù)。由圖6可知,每出現(xiàn)一個讀脈沖信號adv212_we,都會寫入一個32位的未壓縮的圖像數(shù)據(jù),否則繼續(xù)等待dack0_adv212信號變低。
如圖7所示為DMA_burst_read模塊在線時序仿真,當(dāng)dreq1_adv212變?yōu)榈碗娖綍r,表明此時壓縮芯片ADV212請求輸出壓縮后的圖像數(shù)據(jù)。當(dāng)壓縮完成,dack1_adv212會出現(xiàn)一個低脈沖信號,此時響應(yīng)輸出壓縮后的圖像數(shù)據(jù)。由圖7可知,每出現(xiàn)一個讀脈沖信號adv212_rd,都會讀出一個32位的壓縮數(shù)據(jù),否則不輸出,繼續(xù)等待dack1_adv212信號變低。當(dāng)LCODE信號出現(xiàn)一個高脈沖信號時,在HDATA總線上可以看到幀結(jié)束標(biāo)志0xFFD9,表明此時一幀圖像壓縮結(jié)束。
1.4 NIOSⅡ軟核接口
基于ADV212的圖像壓縮系統(tǒng)的NIOSⅡ系統(tǒng)模塊包括FPGA、存儲器和外設(shè)接口三部分。
FPGA部分的設(shè)計是建立在FPGA芯片內(nèi)部的,核心是NIOSⅡ嵌入式CPU模塊,與一般的嵌入式系統(tǒng)開發(fā)不同,當(dāng)SOPC設(shè)計需要新的外設(shè)模塊時,不需要在PCB上加入相應(yīng)的外設(shè)芯片,在FPGA芯片內(nèi)部加入相應(yīng)的外設(shè)模塊,并通過在片上的Avalon總線與NIOSⅡ CPU相連即可。
存儲器部分的設(shè)計有作為代碼運行和變量交換的空間的片上RAM;有用于將程序固化EPCS;還有FLASH控制器,控制NIOSⅡ CPU對Flash的讀寫,F(xiàn)lash中事先寫入了ADV212的配置數(shù)據(jù)。
另外還有ADV212控制器用于控制NIOSⅡ CPU對ADV212寄存器的讀寫,從而配置ADV212;SYSID是一個簡單的只讀設(shè)備,它作為SOPC Builder系統(tǒng)提供唯一的標(biāo)識符;Avalon三態(tài)總線橋用來連接NIOSⅡ CPU與SDRAM、Flash。
2 測試實驗結(jié)果
為了驗證該圖像壓縮系統(tǒng)的效果,將一副512*512的灰度圖輸入至壓縮芯片ADV212,如圖8所示為原始圖像,按10:1的壓縮比,不可逆的5級定點97小波變換將此圖像壓縮成JP2格式,然后利用開源軟件kakadu.exe進行重構(gòu),如圖9所示為重構(gòu)后的圖像,比對圖8和圖9的區(qū)別,用肉眼幾乎很難看出差異,所以,我們只能用數(shù)學(xué)統(tǒng)計的方法定量的計算圖像的峰值信噪比和實時性等評價壓縮質(zhì)量的指標(biāo),以此來驗證該圖像壓縮系統(tǒng)的效果。
其中,和分別表示原始圖像和重構(gòu)圖像坐標(biāo)為(i,j)處的像素幅值。表示原始圖像中可能取的最大值。由公式1和公式2計算可知,壓縮后重構(gòu)圖像和原始圖像的峰值信噪比計算結(jié)果如表1所示。
實時性測試:通過軟件測試,將原始圖像coffee輸入到ADV212的HDATA數(shù)據(jù)總線上,從輸入圖像開始計時,到從HDATA數(shù)據(jù)總線讀出壓縮后的圖像信息,時間小于0.1ms,滿足系統(tǒng)對于圖像壓縮實時性的要求。
3 結(jié)語
通過對JPEG2000壓縮標(biāo)準(zhǔn)的專用編解碼芯片ADV212的硬件結(jié)構(gòu)與工作原理的學(xué)習(xí),讓我們深入了解了JPEG2000壓縮編碼的實現(xiàn)流程,在此基礎(chǔ)上開發(fā)了基于ADV212的圖像壓縮系統(tǒng),為今后在FPGA上開發(fā)更高效的JPEG2000算法夯實了基礎(chǔ)。實驗表明,該圖像壓縮系統(tǒng)滿足系統(tǒng)對于圖像壓縮的實時性和峰值信噪比的要求。
參考文獻
[1]Analog Devices Inc.ADV212_Programming Guide_Rev.2.0[S]. 2007-02-26.
[2]Analog Devices Inc.ADV212_UserGuide_Rev1.1[S].2006-12-11.
[3]Analog Devices Inc.ADV212_DataSheet[S].2006-12-16.
[4]黃賢武.數(shù)字圖像處理與壓縮編碼技術(shù)[M].電子科技大學(xué)出版社,2000.
[5]陳檸檬.基于THJ2K的JPEG2000圖像壓縮系統(tǒng)[J].電視技術(shù),2007,31(6): 81-83.
[6]孫兆林.MATLAB6.X圖像處理[M].清華大學(xué)出版社,2002.
[7]王細(xì).基于Verilog HDL的數(shù)字系統(tǒng)應(yīng)用設(shè)計[M].國防工業(yè)出版社,2006.
[8]岡薩雷斯著,數(shù)字圖像處理[M].電子工業(yè)出版社,2007.