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