目前,我國正在籌備物聯(lián)網(wǎng)的建設,這對于傳感器技術的發(fā)展以及數(shù)字圖像傳感器瞬時產(chǎn)生的海量數(shù)據(jù)為實時通信系統(tǒng)的存儲容量、傳輸帶寬和功耗提出了挑戰(zhàn)。在醫(yī)療、遙感圖像通信等對恢復圖像質(zhì)量要求高的領域,對低功耗、具有良好壓縮/解壓縮性能及實時處理能力的圖像編/解碼器的需求也變得日益迫切。JPEG靜態(tài)圖像壓縮/解壓縮標準,具有優(yōu)良的壓縮/解壓縮性能,而且要求低存儲量和相對較低的復雜度使其很適合于硬件實現(xiàn)。
為了實現(xiàn)數(shù)據(jù)的實時處理和低功耗應用,本文提出了一種帶有時鐘管理機制的并行、全流水結(jié)構的JPEG解碼器實現(xiàn)方案。
1 JPEG解碼算法
JPEG(Joint Photographic Experts Group)是一種適用范圍很廣的靜態(tài)圖像數(shù)據(jù)壓縮標準。JPEG壓縮是一種有損壓縮,它利用了人的視覺系統(tǒng)特性,使用量化和無損壓縮編碼相結(jié)合的方式去掉視覺的冗余信息和數(shù)據(jù)本身的冗余信息。JPEG解碼器包括:霍夫曼(Huffman)解碼、反量化(IQ)和IDCT變換。在JPEG中,對于圖像的解碼是分塊進行的。整個圖像被劃分為若干個8×8的數(shù)據(jù)塊(MCU),每1個塊對應于原圖像的1個8×8的像素陣列。各行的編解碼順序從上到下,行內(nèi)的編解碼順序從左到右[1]。
2 并行Huffman解碼器
Huffman編碼后代碼的長度不一致,如果解碼器用串行技術實現(xiàn),由于其代碼長度不一致,解1個碼字所需的周期數(shù)也不一樣。對于實時系統(tǒng),串行技術的效率比較低。另外,如果數(shù)據(jù)在傳播過程中被噪聲中斷,整組數(shù)據(jù)就變得沒有價值了。針對這兩方面的問題,本文提出如下的解決方案。如圖1所示為Huffman解碼的主要元件和算法流程。
算法流程:從輸入端獲取32位的壓縮圖像數(shù)據(jù),分析輸入的數(shù)據(jù)流,判斷出碼長,把輸入的數(shù)據(jù)移位,同時從輸入端補充新的數(shù)據(jù)。輸入的數(shù)據(jù)通過Huffman表翻譯成原始數(shù)據(jù),提取出數(shù)據(jù)流中嵌入的符號位,經(jīng)過一系列的除法、減法運算后得到編碼前的頻率數(shù)據(jù),與之前得到的符號位合并后輸送到輸出緩存。
本文采用的算法靈活地利用了Huffman表的特點,消除了算法中的乘法運算,完成碼長的判斷只需要1個周期。把碼表的數(shù)據(jù)按照碼長分類從小到大排列,再把碼長相同的數(shù)據(jù)按照碼字的大小從小到大排列。每張表按照排列后的順序把碼字對應的解碼結(jié)果DR(Decoding Results)存入到ROM中。這樣既有利于查表,需要的ROM也是最小的,符合低功耗要求。查表的地址發(fā)生器由“長度匹配”模塊傳遞到的碼長得到1個基地址,碼長從輸入數(shù)據(jù)中截取連續(xù)的幾個與碼長相同位數(shù)的bit作為偏移地址,2個地址相加就是DR保存的地址[2]。