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