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