JPEG解碼器IP核的設(shè)計與實現(xiàn)
摘要:介紹了基于靜止圖像壓縮標準JPEG解碼器IP核的設(shè)計與實現(xiàn)。設(shè)計采用適于硬件實現(xiàn)的IDCT算法結(jié)構(gòu),通過增加運算并行度和流水線技術(shù)相結(jié)合的方法以提高處理速度。根據(jù)Huffman碼流特點,采用新的Huffman并行解碼硬件實現(xiàn)結(jié)構(gòu),用簡單的算術(shù)運算代替復雜的配對模式,解碼速度快,硬件成本低。該IP核可方便地集成到諸如數(shù)碼相機、手機以及掃描儀等各種應用中。
關(guān)鍵詞:JPEG;IP核;Huffman;流水線設(shè)計
基于IP(Intellectual Property)核的設(shè)計和可復用已成為SoC(System on a Chip)設(shè)計方法的主流設(shè)計方法。本設(shè)計實現(xiàn)了基于靜止圖像壓縮標準JPEG基本模式的解碼器軟IP核。JPEG(Joint Photograph ExpelsGroup)是1992年CCITT和ISO正式通過的連續(xù)色調(diào)靜止圖像壓縮標準。圖像的高數(shù)據(jù)量和廣泛應用對圖像的存儲和傳輸提出了要求,有限的存儲容量和傳輸帶寬不能直接對圖像進行存儲與傳輸,因此需要先對圖像進行壓縮處理。JPEG壓縮算法因其優(yōu)異的壓縮性能成為目前最流行的圖像壓縮工具。
1 JPEG解碼IP核設(shè)計和實現(xiàn)
在JPEG解碼器中,因為Huffman解碼是變長的,本次解碼結(jié)束后才能重新定位碼流,難以實現(xiàn)流水線設(shè)計,所以本設(shè)計中主要通過提高功能部件并行度和在功能模塊內(nèi)部實現(xiàn)流水線來提高解碼速度。因為解碼速度不定,所以各功能模塊間的握手信號很關(guān)鍵。每個模塊的數(shù)據(jù)輸出時也要考慮到后級模塊的數(shù)據(jù)輸入要求,這樣才能達到整個解碼過程的有序、高效進行。JPEG解碼IP核總體架構(gòu),如圖1所示。
1.1 JPEG解碼IP核控制器設(shè)計
JPEG解碼器控制器的作用是在不同解碼環(huán)節(jié)為各個單元模塊分配任務,以控制中間運算過程及最后輸出結(jié)果。采用了有限狀態(tài)機的設(shè)計方法,這是一種結(jié)構(gòu)清晰、設(shè)計靈活的方法,它易于建立、理解和維護,特別是應用于大量狀態(tài)轉(zhuǎn)移和復雜時序控制系統(tǒng)中更顯優(yōu)勢??刂破髦饕梢粋€Mealy型有限狀態(tài)機實現(xiàn),狀態(tài)轉(zhuǎn)移如圖2所示。
初始化狀態(tài)(IDLE):復位或者一幅圖像解碼完成時進入的狀態(tài),重新定位碼流,在解碼開始標志有效時跳轉(zhuǎn)到標志符解碼狀態(tài)(DeMar-ker)。
標志符解碼狀態(tài)(DeMarker):按JPEG碼流語法和JFIF文件格式解析標記符,根據(jù)解析出的標志符跳轉(zhuǎn)到相應的標志段解碼狀態(tài),如果解析到SOI標志符或者是0xFFFF狀態(tài)不改變。
解碼出錯狀態(tài)(False):若是在標志段解碼出錯跳轉(zhuǎn)到False狀態(tài),通過輸出端口將出錯信號輸出,在得到外部反饋后跳轉(zhuǎn)到初始化狀態(tài)IDLE。
應用擴展標志段APPn、幀開始標志段SOFO、量化表定義DQT標志段、Huffman碼表定義DHT標志段和掃描行開始SOS標志段的解碼過程是相似的,在相應標志符后是標志段的長度,可以根據(jù)這個長度值,結(jié)合JPEG碼流語法,進行碼流解析,將所需的圖像信息如圖像尺寸、圖像格式、量化表、Huffman碼表等寫入相應寄存器或者存儲器中,以便于后續(xù)壓縮數(shù)據(jù)的解碼。
Huffman碼流解碼狀態(tài)(DeHuffman):在解析完掃描開始標志段SOS后跳轉(zhuǎn)到Huffman碼流解碼狀態(tài),解碼圖像壓縮數(shù)據(jù),主要包括Huffman解碼、反量化、反Z字形重排、IDCT和輸出緩存等。
控制器還負責外部輸入的調(diào)配工作,每個時鐘周期,都將本次解碼長度送至碼流緩存模塊,從而重新定位解碼碼流位置。因為有多種圖像格式,所以控制器還要負責各個模塊的亮度色度選擇信號的輸入。
評論