H.264/AVC中CAVLC編碼器的硬件設計實(shí)現
(5)寫(xiě)碼字。
非零系數級的碼字為“前綴碼字+后綴碼字”,前綴碼字為prefix個(gè)0后緊跟一個(gè)1(即前綴碼字為1,碼長(cháng)為prefix+1),后綴碼字值為suffix,碼長(cháng)為levelsuffixsize。
依據圖3編碼流程,level編碼所需的時(shí)鐘周期與TC和T1之差有關(guān),不同的數據塊所需的時(shí)鐘周期不同,而編碼前需經(jīng)過(guò)掃描和統計。當非零系數較多時(shí),level編碼采用傳統的串行方式所需的時(shí)鐘周期可能比統計模塊所耗要多,導致不穩定的吞吐量。另一方面,獲得level的碼字需知道該系數的prefix、suffix以及l(fā)evelsuffixsize,而levelsuffixsize的大小是自適應變化的,與上一個(gè)已編碼系數的絕對值大小有關(guān),這給并行處理帶來(lái)了一定困難。為此,采用并行處理和兩級流水線(xiàn)相結合的結構并行處理2個(gè)非零系數,如圖4所示。第一級初始化suffixlength,求coeffs的絕對值及中間變量levelcode;第二級更新suffixlength,計算prefix,suffix和levelsuffixlength。模塊coeffs SIPO buffer實(shí)現串行輸入并行輸出,輸入輸出關(guān)系如圖5所示。
3 實(shí)驗驗證分析
Level編碼電路結構采用Verilog HDL語(yǔ)言描述,在ModelSim SE 6.0上進(jìn)行仿真,使用Synplicity公司的Synplify Pro完成綜合過(guò)程。最后采用Xilinx公司VirtexⅡ系列的xc2v250 FPGA進(jìn)行實(shí)現和驗證。
圖6給出了ModelSim的仿真波形,其結果與JVT校驗軟件模型JM16.2[7]的值一致。從圖6可以看出,并行編碼TC-T1個(gè)level值比串行方式節省(TC-T1)/2個(gè)時(shí)鐘周期,當非零系數較多時(shí),也能獲得穩定的吞吐量。表1給出了Synplify Pro綜合的硬件資源報告。系統允許的最高時(shí)鐘頻率為158.1 MHz,硬件資源消耗如表1所示。綜上所述,本設計滿(mǎn)足H.264實(shí)時(shí)高清視頻編碼的要求。
評論