a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > JPEG解碼器IP核的設計與實現

JPEG解碼器IP核的設計與實現

作者: 時間:2011-05-24 來源:網絡 收藏

因為Huffman編碼是無損壓縮,不存在誤差,所以Huffman解碼出來的數據也是沒有誤差的。本采用一個簡潔的Mealy型狀態機,狀態轉移如圖4所示。圖5所示是相應的Huffman解碼硬件結構圖。

本文引用地址:http://www.j9360.com/article/162053.htm

e.jpg


接下來結合圖4和圖5介紹Huffman并行解碼流程。
(1)初始化狀態(IDLE):復位或圖像壓縮數據解碼完成時進入的狀態,初始化相關寄存器。
(2)解碼狀態1(S1):首先寄存從碼流緩沖模塊輸入26位圖像碼流,將高16位輸入碼長檢測單元,與Min Code Memory中存儲的各長度最小碼字并行比較,碼長檢測單元由選擇器、比較器和一個16選4的選擇器組成,得到碼字的長度L。接著由碼長為L的Huffman碼與相應長度的最小碼字Min(L)計算出偏移量offset,從Base Address Memory中取出最小碼字Min(L)的地址Base Address,將兩者輸入8位加法器中,由式(1)可計算出該碼字對應的解碼符號地址。然后根據這個地址從Symbol Memory中取出解碼符號,對DC來說是SSSS,對AC來說是RRRRSSSS。同時將移位寄存器中的碼字左移L位,將高11位編碼輸入到幅值寄存器中。
(3)解碼狀態2(S2):將解析出的字長SSSS和碼長L輸入到5位加法器中,得出本次解碼總位長,輸出到碼流緩沖模塊,用于重新定位碼流,更新輸入數據。將幅值寄存器的高SSSS位選擇輸入一個12位中間寄存器的低位,該中間寄存器的高(12-SSSS)位移入幅值寄存器的最高位的相反值,若得到的中間寄存器的最高位為“1”,按.標準,要再加1。這樣解析出來的就是頻率系數,即DCT系數,對于DC來說就是差值DIFF。解析完幅值后,進行DC/AC系數解碼。
DC/AC系數解碼:計數器用于計算解析系數在塊數據中的位置。若計數器值為零,表示解析出來的是DC系數的差值DIFF,要根據亮度色度選擇信號選擇相應DCk-1,根據DCk=DIFF+DCk-1計算出DC值,并且更新DCk-1。若計數器值不為零,表示解析出來的是AC值,接下來對應的有4個分支:1)若(RRRR,SSSS)=(0,0),表示此圖像塊解碼結束,輸出塊解碼結束標志DecOneBlock,并清零計數器;2)若(RRRR,SSSS)=(15,0),表示連續16個零系數,計數器加16,不輸出;3)若SSSS不為零,且計數器值+RRRR=62,表示解析出來的是圖像塊的最后一個系數,計數器清零,并輸出塊解碼結束標志DecOneBlock和DCT系數值;4)普通AC系數,計數器加1,輸出計數器的值和DCT系數值。
1.4 反量化模塊
在Huffman解碼后沒有采用標準的先反Z字形重排再反量化的流程,而是先進行反量化操作。如此只要Huffman解碼有DCT系數輸出時才需要進行反量化運算,能減少無效操作,降低功耗。
反量化運算時先將相應的量化系數保存在寄存器陣列中,在Huffman解碼模塊有DCT系數輸入時,按其地址取出相應的量化系數,相乘后輸出到后級反Z字形重排模塊。
1.5 反Z字形重排模塊設計
根據模塊輸入數據的特點,提出了一種優化的硬件結構。因為一個8×8圖像塊經DCT變換后非零系數個數一般不超過總數據量的10%,所以設計中為寄存器陣列的每個寄存器都設定一個一位的使能標志,在初始化時先將寄存器陣列中寄存器和相應標志位都賦零值,在輸入值為非零值時才寫入相應地址,并置位對應的使能標志,這樣在寫入數據時不需要進行零數據的存儲,而在輸出數據時只要根據使能標志就能判斷是要讀寄存器陣列還是直接輸出零,所以可以減少對存儲器的讀寫操作,加快數據處理速度。
反Z字形重排模塊不僅要接收反量化后的系數,對其進行反Z字形重排,同時要對圖像塊數據進行一次行列轉置,這樣可以節省2個寄存器陣列,降低硬件成本。為了提高運算并行度,提高解碼速率,滿足后級模塊數據要求,反Z字形重排模塊中采用了兩個64×14位雙端口寄存器陣列,進行乒乓操作。



關鍵詞: 實現 設計 IP 解碼器 JPEG

評論


相關推薦

技術專區

關閉