H.264中二進制化編碼器的FPGA實現(xiàn)
第2級流水線包含6個模塊,分別代表6種二進制化方法。其中U編碼、mb_type/sub_mb_type語法元素編碼模塊較易實現(xiàn)。因為輸入語法元素的位寬為6位,數(shù)據(jù)量不大,分別按照其編碼方法制成碼表,且此碼表所耗資源不多,在硬件實現(xiàn)時以RAM的方式實現(xiàn),速度較快。對于UEGK0和UEGK3 編碼模塊的實現(xiàn),則需采用U編碼和EGK編碼相結合的硬件方式完成,具體基本結構如圖4所示。本文引用地址:http://www.biyoush.com/article/191909.htm
圖4中,首先由預處理器判斷目前比特所進行的編碼,在EGK編碼中,主要采用首一檢測及桶形移位技術實現(xiàn),最后將兩種編碼相加輸出。
對于UEGK0和UEGK3編碼模塊,只需選取不同閾值可實現(xiàn)。對于語法元素mb_qp_delta,采用有正負符號的EGK編碼,正負號由語法元素值的奇偶性決定。對于語法元素coded_block_patterm,則采用FL與TU相結合的編碼方式,因FL與TU編碼的數(shù)據(jù)量均不大,故采用查表方式實現(xiàn),這樣可提高速度,其中FL編碼的界限值為15,TU編碼的界限值為2。
第3級流水線的主要功能是選擇。第2級輸出包括已編元素(binary_value)和上下文模型參量(ctxOffset0、ctxOff-set),在第3級中,通過選擇信號(selector)對不同輸出作以選擇。第4級流水線為32位先進先出(FIFO)存儲器。對結果進行緩存,有利于下一級處理。
第5級為串行化器,主要對二進制化的數(shù)據(jù)進行處理,使其按位輸出,并將二進制化后的每一位加入其對應的上下文模型,以便后續(xù)處理。整個系統(tǒng)的輸出即為二進制化后的每位數(shù)據(jù)(sda)及其偏移(ctxIdxl)。
5 電路仿真及性能分析
該算法經(jīng)VC++仿真驗證,可對H.264標準中的主要檔次視頻碼流進行編碼,其結果與H.264標準程序JM8.6相同。電路結構采用Verilog語言進行RTL級描述,并用mod-elsim6.0軟件仿真,后仿真波形如圖5所示。
由圖5可看出,每個周期中,在使能信號有效的情況下,在時鐘的上升沿,可產(chǎn)生1 bit數(shù)據(jù)sda及相應的偏移量ctx-Idx1,滿足設計時序要求。電路在Spartan3 FPGA上綜合、布局布線,使用Synplify丁具進行綜合,最高時鐘頻率為100 MHz,影響時鐘頻率的關鍵路徑為先進先出存儲器模塊。將綜合好的edif電路網(wǎng)表文件輸入到后端FPGA廠商Xilinx的Foundation軟件進行布局布線,生成二進制流文件,邏輯單元為171,占總資源的4%。使用設計的電路對H.264標準中一些標準視頻序列進行測試,序列質量為QP=28,并與H.264標準程序JM8.6中二進制化部分的編碼時間比較,結果如表2所示。
綜上,本文對H.264編碼器二進制化部分的優(yōu)化使其在速度上較軟件實現(xiàn)有較大提升,資源占用率也較少。二進制化部分的硬件設計不僅能完成H.264標準中基本檔次的編碼,還有望應用于更大尺寸更高質量的實時視頻壓縮編碼。
6 結論
在對H.264標準中二進制化部分研究和分析的基礎上,提出其FPGA電路結構,采用并行結構及流水線方式設計電路。該結構經(jīng)Spartan3 FPGA實現(xiàn),其吞吐量為每周期1 bit,最大時鐘頻率為100 MHz,能夠滿足H.264中第3級及其以上檔次實時視頻編碼的要求。
評論