榮耀程,袁 媛,朱炳強,何 蕓
(清華大學(xué) 電子工程系,北京 100084)
AVS視頻編碼標(biāo)準(zhǔn)是國內(nèi)具備自主知識產(chǎn)權(quán)的視頻編碼標(biāo)準(zhǔn),應(yīng)用范圍包括高清晰度和高質(zhì)量數(shù)字電視廣播、網(wǎng)絡(luò)電視、移動電視、視頻通信、數(shù)字存儲媒體等,其一般包括變換、量化、熵編碼、幀內(nèi)預(yù)測、幀間預(yù)測、環(huán)路濾波等技術(shù)模塊[1-2]。
高效的視頻編碼器是AVS視頻編碼標(biāo)準(zhǔn)推廣及應(yīng)用的關(guān)鍵。純軟件的實現(xiàn)方案難以滿足大尺度實時編碼的巨大的計算量需求,而基于ASIC的純硬件實現(xiàn)方案雖然在速度和功耗上更占優(yōu)勢,但在復(fù)雜控制、功能靈活性上存在缺陷。為了最大限度地綜合利用軟件方法和硬件方法兩者的優(yōu)勢,需要將軟硬件設(shè)計兩者密切結(jié)合起來,軟硬件協(xié)同設(shè)計方法已經(jīng)引起了人們廣泛的關(guān)注,并在嵌入式系統(tǒng)中得到了應(yīng)用[3-6]。軟硬件協(xié)同設(shè)計方法的關(guān)鍵是如何合理地進(jìn)行軟硬件劃分,劃分沒有統(tǒng)一的標(biāo)準(zhǔn),需要根據(jù)應(yīng)用需求以及算法的復(fù)雜度等進(jìn)行具體分析和設(shè)計。
AVS的碼流結(jié)構(gòu)語法層次從高到低,依次是序列、圖像(幀/場)、條帶、宏塊、塊。通?;贏VS視頻編碼標(biāo)準(zhǔn)的編碼器以宏塊作為編碼流程中的基本單位。塊是宏塊的進(jìn)一步劃分,作為預(yù)測、變換的基本單位。
考慮到編碼流程中數(shù)據(jù)結(jié)構(gòu)的一致性,筆者提到的AVS視頻編碼器在進(jìn)行系統(tǒng)級的軟硬件劃分時,根據(jù)數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系,以宏塊為界,將宏塊級的數(shù)據(jù)處理交給專用的VLSI硬件結(jié)構(gòu)來實現(xiàn),而宏塊級以上的任務(wù)交給可編程的RISC核(Micro Blaze)來完成。
如圖1所示,底層的專用VLSI硬件結(jié)構(gòu)處理并行度較高的數(shù)據(jù),進(jìn)行復(fù)雜的計算,包括整像素運動搜索、亞像素運動搜索、幀內(nèi)預(yù)測、變換、量化以及熵編碼。頂層的RISC核(Micro Blaze)主要完成的任務(wù)可以細(xì)分為兩個層次,由于兩個層次的任務(wù)具有并發(fā)性,無法用單獨的RISC核來完成,所以采用了兩個獨立的RISC核。上層RISC核,稱PicRisc,完成圖像級的編碼過程控制及參數(shù)設(shè)置、傳遞;下層RISC核,稱為MbRisc,完成宏塊級的編碼過程控制及參數(shù)設(shè)置、傳遞。
除了在系統(tǒng)級進(jìn)行軟硬件劃分外,還對熵編碼模塊進(jìn)行了軟硬件劃分。視頻編碼中需要進(jìn)行熵編碼的內(nèi)容有兩大類,一類是預(yù)測殘差塊的信息,另一類是其他語法元素的信息。在熵編碼模塊,殘差塊的熵編碼是由底層的專用VLSI硬件結(jié)構(gòu)完成的,其他的語法元素由于符號率相對殘差塊較低,且熵編碼的方法細(xì)節(jié)與殘差塊的編碼細(xì)節(jié)不完全一致,因此用PicRisc對它們進(jìn)行熵編碼,可以在不影響效率的同時簡化熵編碼模塊專用VLSI的硬件結(jié)構(gòu)。
Micro Blaze[7]是Xilinx公司推出的32位RISC軟處理器核,它通過使用通用邏輯基元,而非FPGA中的硬專用模塊來實現(xiàn)。它在Virtex-4 FPGA中的工作頻率可達(dá) 160 MHz,處理速度超過 184 DMIPS(Dhrystone測試方法下的每秒百萬條指令),適合針對網(wǎng)絡(luò)、電信、數(shù)據(jù)通信、嵌入式和消費等市場的產(chǎn)品?;贛icro Blaze所能提供的良好性能,筆者所提到的軟硬件協(xié)同設(shè)計的AVS視頻編碼器選用Micro Blaze作為RISC核。
開發(fā)Micro Blaze處理器,使用的開發(fā)工具主要是Embedded Development Kit工具,包括XPS工具和SDK工具。XPS工具完成主要硬件設(shè)計調(diào)試工作,SDK工具用于設(shè)計和調(diào)試應(yīng)用軟件。
可以利用EDK工具提供的BSB(Base System Builder)Wizard幫助用戶較快地構(gòu)建硬件平臺。構(gòu)建了基本的硬件結(jié)構(gòu)以后,還需要通過總線接口、端口以及地址分配等對各個組件進(jìn)行有效連接。
除了設(shè)計兩層Micro Blaze外,還需要添加額外的硬件來完成兩層Micro Blaze間的通信以及兩層MicroB-laze與底層專用VLSI硬件結(jié)構(gòu)的通信。筆者采用了相對總線機制控制更加簡單的讀寫存儲器方式來完成上述通信任務(wù),如圖2所示。
為了完成通信,需要添加額外的硬件模塊包括:
1)外部存儲器訪問控制器
exd_lmb_cntlr_Mb和exd_lmb_cntlr_Pic這兩個控制單元分別對應(yīng)MbRisc和PicRisc,均可直接通過實例化lmb_bram_if_cntlr的IP核來實現(xiàn)。
2)塊存儲器的接口
customBRAMIF_Mb和customBRAMIF_Pic這兩個接口單元分別對應(yīng)MbRisc和PicRisc,需要自定制IP核customBlockRAM interface,并實例化此IP核。最終形成的頂層MbRisc和PicRisc的硬件結(jié)構(gòu)分別如圖3和圖4所示。
頂層RISC核(Micro Blaze)的硬件部分設(shè)計完成后,使用高級語言C編寫代碼,開發(fā)完成相應(yīng)的軟件部分。兩層Micro Blaze的任務(wù)不同。PicRisc的軟件所需要完成的任務(wù)包括:
1)初始化和更新編碼參數(shù)
如圖像類型、圖像尺寸、量化參數(shù)、圖像編碼類型(I幀、P幀、B幀)更新編碼參數(shù)。
2)部分語法元素的熵編碼以及碼流合成
按照AVS標(biāo)準(zhǔn)文檔里所規(guī)定的碼流結(jié)構(gòu)[1]來進(jìn)行控制,如圖5所示。圖5中的block編碼的任務(wù)是由底層VLSI的熵編碼模塊完成的,此模塊將殘差塊熵編碼形成的比特流存儲在圖2所示的Block RAM中,最后PicRisc把殘差塊的比特流與其他語法元素的比特流合成為最終視頻編碼輸出的比特流。
MbRisc軟件所需要完成的任務(wù)主要是更新宏塊級的編碼參數(shù),如宏塊計數(shù),宏塊的量化參數(shù)等。
對軟硬件協(xié)同設(shè)計的編碼器進(jìn)行仿真驗證時,除了需要將底層的VLSI結(jié)構(gòu)以及頂層的兩個Micro Blaze實例化外,還需要將編寫好的軟件初始化寫入Micro Blaze的指令存儲器中,最終的仿真結(jié)果表明Micro Blaze工作正常,功能正確。
設(shè)計中采用的硬件平臺是Xilinx公司的virtex4-xc4vlx200-ff1513-10,整個設(shè)計在 ISE 9.2i和EDK 9.2i環(huán)境下進(jìn)行。綜合后,兩個Micro Blaze共使用了1932個Slice,最高時鐘頻率可達(dá)147.435 MHz。
介紹了Micro Blaze嵌入式RISC核在AVS視頻編碼器軟硬件協(xié)同設(shè)計中的應(yīng)用。利用Micro Blaze嵌入式RISC核以及基于Micro Blaze開發(fā)的軟件可以高效地完成相關(guān)處理任務(wù),使本文所提到的AVS視頻編碼器兼顧了高效性和靈活性,為其對高清視頻源進(jìn)行實時編碼提供了強有力的支持。
[1]GB/T 20090.2-2006,信息技術(shù) 先進(jìn)音視頻編碼 第二部分:視頻[S].2004.
[2]虞露,胡倩,易峰.AVS視頻的技術(shù)特征[J].電視技術(shù),2005,29(7):8-11.
[3]PAULIN P G,LIEM C,CORNERA M,et al.Embedded software in realtime signal processing systems,application and architecture trends[J].Proceedings of the IEEE,1997,85(3):419-435.
[4]CHEN Towei,HUANG Yuwen,CHEN Tungchien,et al.Architecture design of H.264/AVC decoder with hybrid task pipelining for high de?nition videos[C]//Proc.ISCAS 2005.[S.l.]:IEEE Press,2005:2931-2934.
[5]JANGSK,LEEJ,CHOIGY,etal.Hardware-softwareco-implementation of a H.263 video codec[J].IEEE Transactions on Consumer Electronics,2000,46(1):191-200.
[6]CHIMIENTIAA,F(xiàn)ANUCCIL,LOCATELLICR,etal.VLSIarchitecture for a low-power video codec system[J]. Microelectronics Journal,2002,33(5-6):417-427.
[7]Xilinx.Micro Blaze soft processor core[EB/OL].[2010-01-19].http://www.xilinx.com/tools/microblaze.htm.