JPEG解碼器IP核的設(shè)計與實現(xiàn)
1.2 碼流緩存模塊設(shè)計
JPEG碼流是變長碼,數(shù)據(jù)量大,如果采用傳統(tǒng)的解碼方法對碼字的每個比特進行處理,其輸出速率勢必不能滿足應(yīng)用要求。JPEG標(biāo)準(zhǔn)中數(shù)據(jù)編碼的最大碼長為26,而在標(biāo)志段解碼時要求碼長為8的整數(shù)倍,所以設(shè)計中采用兩個32位寄存器、一個32位桶形移位器、一個加法器和一個減法器的組合來實現(xiàn)該功能。其中,寄存器Rn負(fù)責(zé)從外部模塊讀取數(shù)據(jù),并和寄存器R1一起作為桶形移位器的輸入緩存。每個解碼周期,桶形移位器移出已解碼流的同時裝載新的待解碼流。減法器用于計算已處理碼長,傳送桶形移位器移位長度,判斷并控制R0的讀取和R1的更新。加法器用于碼流輸入時更新寄存器碼長和桶形移位器移位長度。這樣就為后續(xù)處理單元提供了連續(xù)不間斷的碼流,滿足了并行解碼處理的需求。
桶形移位器的輸出是32位,因此每個時鐘周期R0、R1必須為其提供32位的有效碼流。圖3所示給出了桶形移位器輸入緩存的更新示例。本文引用地址:http://m.butianyuan.cn/article/162053.htm
1.3 Huffman解碼模塊設(shè)計
Huffman碼是變長編碼,若采用傳統(tǒng)的解碼方法逐位讀人碼流,先判斷碼字長度,再進行解碼,效率較低,其解碼速率難以滿足應(yīng)用要求。本設(shè)計中提出了一種新的Huffman并行解碼硬件結(jié)構(gòu),Huffman符號表可配置,通用性強。用簡單的算術(shù)運算代替復(fù)雜的配對模式,解碼速度快、硬件成本低。
1.3.1 Huffman解碼算法分析
對于一組概率確定的符號,其最佳Huffman編碼有多種碼字分配方式。其中一種特殊的分配方式稱為單調(diào)編碼,這種編碼中長度相等的碼字在數(shù)值上是單調(diào)變化的,JPEG中Huffman編碼采用這種方式。單調(diào)編碼的單調(diào)性是指出現(xiàn)概率較大的符號其對應(yīng)的碼字的值一定小于概率小的符號對應(yīng)的碼字值。具體說來有兩個特性:
(1)在某一特定長度對應(yīng)的碼字集當(dāng)中,碼字大小是連續(xù)變化的。
(2)長度短的碼字Ck的值一定小于長度比它長的碼字Cm,且Ck一定小于Cm的前k位前綴。
根據(jù)單調(diào)編碼的特性,可以證明:對于一個長為X的碼字,其長為K(1≤KX)位前綴碼的值總是大于長度為K的最大碼字,同時其碼字總是小于長度為Y(Y>X)的最小碼字的K位前綴。這一結(jié)論表明當(dāng)把一串足夠長的碼流并行輸入碼長檢測器時,只可能得到惟一的有效碼長。
1.3.2 Huffman解碼模塊的硬件實現(xiàn)
對于一個給定長度L的碼字,可以用碼長為L的最小碼字和該碼字相對于最小碼字的偏差offset來表示。如果解碼器將相同碼長的解碼符號順序存儲在RAM或者寄存器陣列中,則可以由最小碼字的地址和偏差offset得到解碼符號。解碼符號的地址可由式(1)得到
在Huffman碼表定義DHT標(biāo)志段解碼時,可以得到各長度對應(yīng)的最小碼字Min Code、各最小碼字的地址Base Address和解碼符號Symbol,為了后續(xù)解碼需要,要將這些數(shù)據(jù)存入存儲器中。因為解碼包括了亮度DC系數(shù)、亮度AC系數(shù)、色度DC系數(shù)和色度AC系數(shù)4種情況,所以相應(yīng)地需要多個存儲器。
表1所示給出了本算法和其他算法的實現(xiàn)比較。可見,本算法的實現(xiàn)在速度和硬件成本綜合權(quán)衡之下比較有優(yōu)勢。
評論