PNG的硬件解碼加速設計
本文引用地址:http://cafeforensic.com/article/166979.htm
4 PNG核心解碼模塊的硬件結構
由于編碼長度可變和編碼長度不統(tǒng)一,解碼時若按位比較來查找Huffman表會消耗很多時間,且PNG數據流中Huffman編碼的最長碼長為9。因此,為了實現快速查表解碼,本算法中將碼長小于9的Huffman樹的葉結點作為父結點來擴展到9層,即擴展出來的葉結點信息都同父結點一樣,每次用固定的9比特壓縮數據作為地址去查表。這樣可以保證在每一個時鐘內都可以查找到相應的字符值,就可以極大地提高硬件解碼的效率。以前面的Huffman樹為例子(如圖4所示),簡單地將第4層以內的葉結點補充到第4層,即把整個Huffman二叉樹補滿,則在第4層的子葉結點的長度和字符信息都同父結點一樣。
這種擴展Huffman樹的方法,可以實現迅速查找Huffman表,得到相應的字符值和匹配的組合信息值,對解出匹配的組合信息值,則根據LZ77原則還原出解碼數據作為輸出。
該設計中的硬件解碼核心模塊可參考圖5。這種硬件結構的優(yōu)點是利用擴展碼表的方法實現快速解碼。核心解碼的基本流程為:每次用固定的9 b壓縮數據作為地址去查表,查出包含有碼長和字符信息的葉結點,并根據碼長信息從字符容器模塊移出使用過的壓縮數據,并等待新進的壓縮數據與字符容器剩余的壓縮數據組成新的9 b數據作為查表地址。在下一個時鐘重復查表的過程,以此方式反復查表直至Huffman解碼結束。
5 仿真和綜合結果
經Modelsim 6.3仿真提取出解碼后數據,在Matlab工具中進行對原圖顯示與該設計解碼后提取出的圖像數據進行對比,比較結果完全一致,并且在驗證平臺上比較其對應的原始圖像數據也完全吻合,因此,該硬件設計能夠完全不失真的恢復PNG圖像數據。
在設計中,使用臺積電90 nlTl的工藝庫,在100 MHz的頻率下對PNG解碼核心模塊用DC進行綜合,結果如表1所示。(其中面積大小和功耗不包括RAM的面積和讀寫RAM的功耗)
6 結 語
這里討論了PNG解碼加速的硬件實現方法。其中分析了LZ77和Huffman兩種算法的硬件解碼原理,以及采用補滿Huffman樹的機制實現快速查表解碼,并運用較優(yōu)的軟硬件協(xié)調機制,在節(jié)省功耗前的前提下實現PNG硬件解碼加速。
評論