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