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