摘 要: 介紹了基于Avalon總線的靜態(tài)圖像壓縮標準JPEG基本模式解碼器軟IP核的設計和實現(xiàn)。IP核采用流水線和模塊化的設計方法,分別設計各個模塊完成其獨立的功能,然后將這些模塊組成一個頂層模塊,采用Avalon總線接口,利用SOPC Builder工具將IP核集成到系統(tǒng)中。該IP核極大地提高了解碼速度,具有可移植性,可以方便地集成到手機、數(shù)碼相機等數(shù)字產(chǎn)品中。
關鍵詞: JPEG; 解壓縮; IP; Avalon
隨著我國物聯(lián)網(wǎng)籌備和建設的推進,高速圖像處理技術(shù)的應用領域不斷擴大,對圖像處理的要求也越來越高。由于未經(jīng)壓縮圖像的數(shù)據(jù)量非常龐大,對存儲空間和通信帶寬的需求是無限的,這就要求對圖像進行壓縮處理。JPEG圖像壓縮標準憑著其高壓縮率和靈活的應用形式得到了廣泛的應用。
Avalon總線是Altera公司開發(fā)的用于Nios嵌入式處理器的參數(shù)化接口總線,由一組預定義的信號組成,是一種相對簡單的總線結(jié)構(gòu),主要用于連接片內(nèi)存儲器和外設,以構(gòu)成SOPC系統(tǒng)。本文在研究JPEG算法的基礎上,設計了一種基于Avalon總線的圖像解壓縮IP核,以提高圖像解碼的速度,滿足實時性要求。
1 JPEG解壓縮原理
JPEG(Joint Photographic Expert Group)是第一個適用于連續(xù)色調(diào)、多灰度、彩色或黑白靜止圖像的國際標準[1]。JPEG解碼的目的是將編碼后的壓縮數(shù)據(jù)轉(zhuǎn)換成適合于顯示器顯示的RGB信號。其解碼流程如圖1所示。
解碼流程的主要功能模塊包括:(1)頭文件解析;(2)熵解碼,包括直流系數(shù)解碼、交流系數(shù)解碼和差分解碼; (3)反量化與反Z變換(掃描);(4)IDCT變換;(5)顏色空間轉(zhuǎn)換。將每個模塊用Verilog HDL語言進行設計[2],編譯后,利用Modelsim軟件對其進行功能仿真和時序仿真,最終完成各個單元的設計和IP核的實現(xiàn)。
1.1 頭文件解析單元
在JPEG解碼模塊啟動后,頭碼流解析單元首先讀入JPEG文件的包頭,根據(jù)JPEG文件數(shù)據(jù)的存儲方式依次檢測數(shù)據(jù)流中包含的各種段的標識符,把要解碼的文件信息從數(shù)據(jù)流中解析出來并存儲到相應的存儲單元,為后面壓縮數(shù)據(jù)的解碼做準備。
頭碼流解析單元由頭碼流解析狀態(tài)機和一系列存儲單元組成。狀態(tài)機主要有Idle空閑狀態(tài)、ReadMarker讀取標志位狀態(tài)和ReadSegment讀取段內(nèi)信息三個狀態(tài)。該單元模塊初始狀態(tài)為Idle狀態(tài),當外部發(fā)出解碼開始信號時,模塊跳轉(zhuǎn)到ReadMarker狀態(tài),讀完標識符后,模塊進入ReadSegment狀態(tài)。在這個狀態(tài)下,模塊對每個標志段內(nèi)的信息進行解析,并對其中的重要信息如當前圖像的寬度、高度以及解碼需要的量化表和解碼表存儲到相應的存儲單元。當所有的標記段解碼完成后,模塊又跳轉(zhuǎn)到Idle(空閑)狀態(tài)。其狀態(tài)轉(zhuǎn)移圖如圖2所示。
頭文件解析單元模塊的輸入輸出信號分別為:復位信號(rst)、系統(tǒng)時鐘(clk)、輸入數(shù)據(jù)有效(DataInEnabe),輸入數(shù)據(jù)(DataIn)、狀態(tài)機狀態(tài)(state),讀取段內(nèi)信息時的狀態(tài)(process)。該模塊在Modelsim仿真軟件下的頂層仿真如圖3所示。由仿真圖可知,該單元可以每2個時鐘處理1 B的數(shù)據(jù)。