PNG的硬件解碼加速設計
本文引用地址:http://m.ptau.cn/article/166979.htm
2 PNG解碼的軟硬件協(xié)調(diào)機制
整個PNG硬件解碼過程都是由軟件來調(diào)度的,在硬件解碼中若校驗到圖片數(shù)據(jù)出錯或解碼完成時,則PNG硬件模塊通過配置專門的寄存器給軟件檢查做中斷處理;當軟件檢測到這個寄存器信號使能時就產(chǎn)生中斷,就能即使關閉PNG硬件解碼模塊,在數(shù)據(jù)有誤的情況下節(jié)省了硬件解碼的功耗。
解碼前后數(shù)據(jù)的搬運機制是通過公用的AVI模塊(相當于FIF0實現(xiàn)輸入輸出數(shù)據(jù)的緩存)實現(xiàn)了PNG數(shù)據(jù)的搬運:解碼前,軟件通過調(diào)配AVI模塊從內(nèi)存中搬取壓縮數(shù)據(jù)給PNG硬件模塊做解碼;解碼后的數(shù)據(jù)經(jīng)過Resize模塊縮放后又可以利用AVI搬運給VGA做顯示,這種較優(yōu)的軟件調(diào)配機制,解決了該設計的軟硬件協(xié)調(diào)問題,可以在節(jié)省功耗的前提下實現(xiàn)高效率的解碼,具體的軟件硬件協(xié)調(diào)原理如圖2所示。
3 PNG解碼的總體硬件結構
PNG硬件解碼加速的整體結構主要由Bytesshift字符容器、PNG頭信息處理模塊、Inflate table建Huffman表模塊、Inflate fast快速解碼模塊、Lz77尋找匹配串模塊、Filter反濾波反交織模塊和Resize放大縮小模塊7大模塊組成。具體PNG解碼的硬件流程圖如圖3所示。
如圖3可見,PNG解碼的基本流程為:通過AVI模塊從總線上搬取壓縮數(shù)據(jù)到Bytesshift字符容器進行緩存,并轉(zhuǎn)換為壓縮比特流;通過PNG頭信息處理模塊保留下文件的頭信息,通過控制Inflate table模塊讀取碼長信息來建立Huffman表,并對壓縮數(shù)據(jù)進行解碼;解碼后的數(shù)據(jù)經(jīng)過Filter模塊進行反濾波和反交織等處理,然后發(fā)給Resize模塊做放大縮小處理后,并通過AVI模塊將最終解碼后的數(shù)據(jù)傳輸出去。其中,解碼核心模塊和Filter模塊通過采用了數(shù)據(jù)的流水線處理方式,也極大地提高了.PNG的解碼效率。
評論