針對(duì)幀內(nèi)預(yù)測(cè)的快速算法,由于DSP 架構(gòu)軟件順序執(zhí)行的局限性難以滿足實(shí)時(shí)性要求,而FPGA 以其高速的計(jì)算速度和強(qiáng)大的并行處理能力成為H.264 和AVS 編解碼的理想平臺(tái)。本文在FPGA 平臺(tái)上采用資源共享、高并行和多流水線結(jié)構(gòu)實(shí)現(xiàn)了亮度幀內(nèi)預(yù)測(cè)算法。該方法在分析AVS 幀內(nèi)亮度5 種預(yù)測(cè)模式的基礎(chǔ)上,將像素預(yù)測(cè)與模式判決在一個(gè)模塊中完成,并且利用各模式預(yù)測(cè)的相似性,實(shí)現(xiàn)運(yùn)算單元共享和多種模式并行執(zhí)行,兼顧了處理速度和實(shí)現(xiàn)代價(jià)。仿真及綜合結(jié)果表明該設(shè)計(jì)能夠完全滿足標(biāo)清(704×576,30f/s) 數(shù)字視頻的實(shí)時(shí)處理要求。
AVS(Audio Video Coding Standard) 標(biāo)準(zhǔn), 是《信息技術(shù)—先進(jìn)音視頻編碼》系列標(biāo)準(zhǔn)的簡(jiǎn)稱, 是由我國(guó)自主提出的數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn), 這個(gè)標(biāo)準(zhǔn)達(dá)到了當(dāng)前國(guó)際先進(jìn)水平。AVS 具有以下優(yōu)點(diǎn):(1) 性能高, 編碼效率是MPEG2的2 倍以上, 與H.264 的編碼效率處于同一水平;(2) 復(fù)雜度低, 算法復(fù)雜度比H.264 明顯低, 軟硬件實(shí)現(xiàn)成本都低于H.264;(3) 我國(guó)掌握主要知識(shí)產(chǎn)權(quán), 專利授權(quán)模式簡(jiǎn)單, 費(fèi)用低。AVS 視頻標(biāo)準(zhǔn)制定的目標(biāo)是: 適應(yīng)數(shù)字電視廣播、數(shù)字存儲(chǔ)媒體、因特網(wǎng)流媒體、多媒體通信等應(yīng)用中對(duì)運(yùn)動(dòng)圖像壓縮技術(shù)的需要,這就對(duì)編碼的實(shí)時(shí)性提出了很高的要求。
幀內(nèi)預(yù)測(cè)是AVS 編解碼中很重要的部分,其原理是利用圖像內(nèi)部相鄰像素間的相關(guān)性來(lái)降低編碼碼率,也就是通過(guò)減少空間冗余度來(lái)達(dá)到壓縮的目的。視頻編碼器幀內(nèi)預(yù)測(cè)部分的硬件架構(gòu)設(shè)計(jì)方案一般分為兩種。第一種是基于可重構(gòu)硬件電路的設(shè)計(jì)。這種電路結(jié)構(gòu)設(shè)計(jì)思想是根據(jù)幀內(nèi)預(yù)測(cè)各模式算法上的相似性,設(shè)計(jì)出能夠處理所有預(yù)測(cè)模式的可重構(gòu)的運(yùn)算單元。該運(yùn)算單元可根據(jù)預(yù)測(cè)模式的不同對(duì)輸入的數(shù)據(jù)選擇相應(yīng)的數(shù)據(jù)通路,從而達(dá)到資源的最優(yōu)化利用。由于該電路結(jié)構(gòu)是逐個(gè)處理各個(gè)模式的預(yù)測(cè),因此其缺點(diǎn)是處理速度慢。第二種設(shè)計(jì)方案是將具有相同預(yù)測(cè)值求解算法的預(yù)測(cè)模式共用同一個(gè)預(yù)測(cè)器,以優(yōu)化資源利用,文獻(xiàn) 采用了這種設(shè)計(jì)方案。本文參考第二種設(shè)計(jì)方案,提出了一種基于資源共享以及并行流水[7] 的幀內(nèi)預(yù)測(cè)編碼器硬件架構(gòu)。
1 AVS 幀內(nèi)預(yù)測(cè)模塊算法原理
AVS 的幀內(nèi)預(yù)測(cè)分為亮度(1uma) 和色度(chroma) 預(yù)測(cè)兩種,都是以8x8 的塊為單位進(jìn)行預(yù)測(cè)的。其中,亮度預(yù)測(cè)包括33 個(gè)參考像素點(diǎn),有5 種預(yù)測(cè)模式(如圖1 所示),Vertical預(yù)測(cè)模式、Horizontal 預(yù)測(cè)模式、DC 預(yù)測(cè)模式、Down_Left 預(yù)測(cè)模式和Down_Right 預(yù)測(cè)模式。圖1 標(biāo)示了AVS 幀內(nèi)預(yù)測(cè)模式的預(yù)測(cè)方向,標(biāo)號(hào)的對(duì)應(yīng)關(guān)系為:Vertical 模式( 模式值為0)、Horizontal 模式( 模式值為1)、DC 模式( 模式值為2)、Down_Left 模式( 模式值為3)、Down_Right( 模式值為4)。
色度預(yù)測(cè)包括17 個(gè)參考像素點(diǎn),有4 種預(yù)測(cè)模式,分別為:DC 模式( 模式值為0)、Horizontal 模式( 模式值為1)、Vertical模式( 模式值為2) 和Plane 模式( 模式值為3)。其中,DC模式、Horizontal 模式、Vertical 模式與亮度預(yù)測(cè)算法相同。
AVS 的幀內(nèi)預(yù)測(cè)模塊子塊級(jí)主要包括像素值預(yù)測(cè)和模式判決兩部分,實(shí)現(xiàn)的功能主要是在給出當(dāng)前塊的左邊像素,左上像素以及上邊像素的情況下按照各種模式預(yù)測(cè)的方法得到當(dāng)前塊的預(yù)測(cè)像素值。
AVS 編碼標(biāo)準(zhǔn)采用了計(jì)算預(yù)測(cè)塊和原始?jí)K之間的SAD 來(lái)尋找最合適的預(yù)測(cè)模式的方法。編碼器將所有的預(yù)測(cè)模式遍歷一遍,算出所有模式對(duì)應(yīng)的SAD 值,取其中擁有最小SAD的模式作為最終選擇的模式。
2 幀內(nèi)預(yù)測(cè)硬件設(shè)計(jì)與實(shí)現(xiàn)
2.1 幀內(nèi)預(yù)測(cè)模塊硬件設(shè)計(jì)方案
設(shè)計(jì)中,Blockjudge 子模塊的功能是由系統(tǒng)計(jì)數(shù)的BlockNum 變量判斷當(dāng)前塊在一幀圖像中的位置,從而決定當(dāng)前塊的相鄰塊邊緣像素的可用性。由圖2 可知,在給定輸入數(shù)據(jù)的情況下,多種模式并行掛起,由于預(yù)測(cè)是按一個(gè)時(shí)鐘預(yù)測(cè)一個(gè)像素進(jìn)行的,在預(yù)測(cè)完一個(gè)像素就進(jìn)計(jì)算一次絕對(duì)誤差計(jì)算,然后預(yù)測(cè)完下一個(gè)就將誤差累加,最終預(yù)測(cè)完成,SAD 的計(jì)算也完成。模式判決模塊完成的是在SAD 計(jì)算完后比較得出各模式下的SAD 最小值,按其對(duì)應(yīng)的預(yù)測(cè)模式即最佳預(yù)測(cè)模式選擇輸出對(duì)應(yīng)的預(yù)測(cè)數(shù)據(jù)。可見整個(gè)過(guò)程是多個(gè)模式并行,并且共享公共運(yùn)算單元,單個(gè)模式多級(jí)流水,從而提高資源利用率。
2.2 亮度預(yù)測(cè)模塊的VHDL 實(shí)現(xiàn)
幀內(nèi)亮度預(yù)測(cè)模塊的VHDL 實(shí)現(xiàn)主要涉及到四部分:讀寫數(shù)據(jù)單元, 運(yùn)算單元,數(shù)據(jù)比較單元,輸出單元。這四個(gè)部分分別對(duì)應(yīng)于狀態(tài)機(jī)(亮度幀內(nèi)預(yù)測(cè)模塊狀態(tài)機(jī)如圖3 所示)的streceive、 stcalculate、stcompare 和sttrans 狀態(tài)。狀態(tài)之間的轉(zhuǎn)換通過(guò)狀態(tài)計(jì)數(shù)器完成,預(yù)測(cè)輸出數(shù)據(jù)用于與當(dāng)前塊數(shù)據(jù)做殘差供DCT 使用,最佳模式輸出供熵編碼寫碼流。
系統(tǒng)的起始狀態(tài)是stidle 狀態(tài),當(dāng)使能en 置1 時(shí)轉(zhuǎn)到streceive 狀態(tài);streceive 狀態(tài)將接收的數(shù)據(jù)(總共接收97 個(gè)數(shù)據(jù),前64 個(gè)是8x8 塊的原始數(shù)據(jù),后33 個(gè)是參考數(shù)據(jù))分別暫存到RAM00 和RAM11 中,RAM00 中存儲(chǔ)的當(dāng)前塊數(shù)據(jù)用于與各種模式預(yù)測(cè)值進(jìn)行SAD 運(yùn)算,RAM11 中的數(shù)據(jù)用于得出預(yù)測(cè)數(shù)據(jù),同時(shí)在該狀態(tài)存儲(chǔ)預(yù)測(cè)模式V 和H 需要的參考數(shù)據(jù);當(dāng)使能en 置0 時(shí)進(jìn)入stcalculate 狀態(tài),在stcalculate 狀態(tài)將33 個(gè)參考數(shù)據(jù)中相鄰的三個(gè)數(shù)據(jù)按(a+2b+c+2)》》2 低通濾波, 得到31 個(gè)預(yù)測(cè)數(shù)據(jù)。并且存儲(chǔ)DDR 模式,DDL 模式,DC_LEFT 模式和DC_TOP 模式需要的預(yù)測(cè)數(shù)據(jù)。在stm4 狀態(tài)讀取DC_LEFT 和DC_TOP 的預(yù)測(cè)數(shù)據(jù)d 和e,同時(shí)進(jìn)行運(yùn)算(d+e)》》1 得到f, 將f 進(jìn)行限幅運(yùn)算clip(f), 從而得到DC 模式的預(yù)測(cè)值并將其存儲(chǔ);同時(shí)完成的有V,H,DDL,DDR的模式預(yù)測(cè)。預(yù)測(cè)過(guò)程按單像素進(jìn)行,即串行輸入串行輸出,SAD 的計(jì)算通過(guò)SAD《=SAD+ABS(a-b) 累加完成。各種模式下2 個(gè)時(shí)鐘完成一個(gè)像素值的存儲(chǔ)和絕對(duì)差值的計(jì)算;系統(tǒng)在stcompare 狀態(tài)通過(guò)冒泡排序法得到SAD 最小值minSAD,其對(duì)應(yīng)的模式即為最佳預(yù)測(cè)模式;sttrans 狀態(tài)完成最佳預(yù)測(cè)模式以及對(duì)應(yīng)的預(yù)測(cè)值輸出。
各種模式實(shí)現(xiàn)過(guò)程中的公共單元:
主要運(yùn)算單元:
l《=(a+b+b+c+2)》》2;
SAD《=SAD+ABS(a-b);
讀寫數(shù)據(jù)單元:
V,DC_TOP 是將8 個(gè)值按列賦值得到64 個(gè)數(shù)據(jù);H,DC_LEFT 是將8 個(gè)值按行賦值得到64 個(gè)數(shù)據(jù);DDL,DDR 是將15個(gè)值按照循環(huán)移位的方式給行賦值得到64 個(gè)數(shù)據(jù),都是通過(guò)循環(huán)嵌套計(jì)數(shù)器來(lái)完成。
色度預(yù)測(cè)的狀態(tài)圖與亮度類似,只是輸入的參考數(shù)據(jù)是17個(gè)。Plane 模式預(yù)測(cè)實(shí)現(xiàn)比較復(fù)雜,在給出輸入數(shù)據(jù)的情況下有一個(gè)預(yù)處理的過(guò)程,運(yùn)算量較大,預(yù)處理過(guò)程中得到的中間結(jié)果需要判斷正負(fù)號(hào),而且涉及到左移四位右移五位的運(yùn)算,因此數(shù)據(jù)位寬需要擴(kuò)展至16 位,最終的符號(hào)位才不會(huì)被移走,負(fù)數(shù)在運(yùn)算的過(guò)程中以補(bǔ)碼的形式存在,所以若符號(hào)位為1 則在右移后高位補(bǔ)1,反之則補(bǔ)0。
3 實(shí)驗(yàn)結(jié)果
本文設(shè)計(jì)是以8×8 塊為單元,采用VHDL 硬件描述語(yǔ)言實(shí)現(xiàn)了幀內(nèi)像素值預(yù)測(cè)以及模式判決模塊。設(shè)計(jì)中所采用的硬件處理平臺(tái)是Xilinx 公司的VidexII 系列FPGA xc2vp20,整個(gè)設(shè)計(jì)在ISE 10.1 環(huán)境下進(jìn)行。
3.1 功能仿真結(jié)果
仿真過(guò)程中我們將預(yù)測(cè)輸出內(nèi)容存儲(chǔ)到Pre_RAM 中,在每個(gè)子塊預(yù)測(cè)結(jié)束時(shí)打印至文本文件,同時(shí)將相同的視頻碼流加入到我們采用的軟件模型并打印與我們仿真相應(yīng)的部分內(nèi)容, 將兩者進(jìn)行比較。至模塊完成時(shí),已成功完成一個(gè)完整視頻碼流的數(shù)據(jù)對(duì)比,結(jié)果完全相同。
3.2 時(shí)序仿真結(jié)果
與功能仿真一樣, 我們將Pre_RAM 中存儲(chǔ)的內(nèi)容在每個(gè)塊預(yù)測(cè)結(jié)束時(shí)打印至文本文件, 同時(shí)將相同的視頻碼流加入到我們采用的軟件模型并打印與我們仿真相應(yīng)的部分內(nèi)容,將兩者進(jìn)行比較,結(jié)果也完全相同。由于篇幅限制圖4 僅給出了與圖5 對(duì)應(yīng)的同一亮度塊在軟件模型中的內(nèi)存數(shù)據(jù),8x8亮度塊預(yù)測(cè)的仿真結(jié)果如圖5 所示,圖中顯示的當(dāng)前狀態(tài)是stm4,stcompare 和sttrans,其中sum_v, sum_h, sum_dc,sum_dc_left, sum_dc_top, sum_ddl, sum_ddr 分別表示各
對(duì)應(yīng)模式下的SAD 值,log 表示最佳預(yù)測(cè)模式,dataout 表示最佳預(yù)測(cè)值,對(duì)比可知二者結(jié)果一致。
3.3 綜合
資源利用情況如圖6 所示,整個(gè)預(yù)測(cè)過(guò)程占用了328 個(gè)時(shí)鐘周期。而系統(tǒng)時(shí)鐘頻率在100MHZ 的情況下要達(dá)到實(shí)時(shí)時(shí)鐘周期需要控制在526 之內(nèi),顯然仿真結(jié)果表明該硬件結(jié)構(gòu)完全滿足標(biāo)清AVS 視頻實(shí)時(shí)編碼要求。
4 結(jié)束語(yǔ)
本文將AVS 幀內(nèi)亮度預(yù)測(cè)模塊的像素值預(yù)測(cè)和模式判決結(jié)合到一個(gè)模塊中在FPGA 平臺(tái)硬件實(shí)現(xiàn)。采用資源共享的設(shè)計(jì)思想,同時(shí)將各種模式并行執(zhí)行和流水處理,兼顧了時(shí)鐘和資源利用率。仿真結(jié)果表明,當(dāng)工作在155.927MHz 時(shí)鐘時(shí),可以實(shí)時(shí)處理704x576、4:2:0、30 幀/s 的視頻圖像。擁有中國(guó)自己的自主知識(shí)產(chǎn)權(quán)的數(shù)字音視頻編解碼標(biāo)準(zhǔn)(AVS),在技術(shù)和性能上處于國(guó)際先進(jìn)水平。本論文的研究?jī)?nèi)容對(duì)于AVS標(biāo)清視頻編碼芯片的設(shè)計(jì)有著實(shí)際的參考價(jià)值。
評(píng)論
查看更多