榮耀程,袁 媛,朱炳強,何 蕓
(清華大學 電子工程系,北京 100084)
AVS視頻編碼標準是國內具備自主知識產權的視頻編碼標準,應用范圍包括高清晰度和高質量數字電視廣播、網絡電視、移動電視、視頻通信、數字存儲媒體等,其一般包括變換、量化、熵編碼、幀內預測、幀間預測、環路濾波等技術模塊[1-2]。
高效的視頻編碼器是AVS視頻編碼標準推廣及應用的關鍵。純軟件的實現方案難以滿足大尺度實時編碼的巨大的計算量需求,而基于ASIC的純硬件實現方案雖然在速度和功耗上更占優勢,但在復雜控制、功能靈活性上存在缺陷。為了最大限度地綜合利用軟件方法和硬件方法兩者的優勢,需要將軟硬件設計兩者密切結合起來,軟硬件協同設計方法已經引起了人們廣泛的關注,并在嵌入式系統中得到了應用[3-6]。軟硬件協同設計方法的關鍵是如何合理地進行軟硬件劃分,劃分沒有統一的標準,需要根據應用需求以及算法的復雜度等進行具體分析和設計。
AVS的碼流結構語法層次從高到低,依次是序列、圖像(幀/場)、條帶、宏塊、塊。通常基于AVS視頻編碼標準的編碼器以宏塊作為編碼流程中的基本單位。塊是宏塊的進一步劃分,作為預測、變換的基本單位。
考慮到編碼流程中數據結構的一致性,筆者提到的AVS視頻編碼器在進行系統級的軟硬件劃分時,根據數據結構的層次關系,以宏塊為界,將宏塊級的數據處理交給專用的VLSI硬件結構來實現,而宏塊級以上的任務交給可編程的RISC核(Micro Blaze)來完成。
如圖1所示,底層的專用VLSI硬件結構處理并行度較高的數據,進行復雜的計算,包括整像素運動搜索、亞像素運動搜索、幀內預測、變換、量化以及熵編碼。頂層的RISC核(Micro Blaze)主要完成的任務可以細分為兩個層次,由于兩個層次的任務具有并發性,無法用單獨的RISC核來完成,所以采用了兩個獨立的RISC核。上層RISC核,稱PicRisc,完成圖像級的編碼過程控制及參數設置、傳遞;下層RISC核,稱為MbRisc,完成宏塊級的編碼過程控制及參數設置、傳遞。

除了在系統級進行軟硬件劃分外,還對熵編碼模塊進行了軟硬件劃分。視頻編碼中需要進行熵編碼的內容有兩大類,一類是預測殘差塊的信息,另一類是其他語法元素的信息。在熵編碼模塊,殘差塊的熵編碼是由底層的專用VLSI硬件結構完成的,其他的語法元素由于符號率相對殘差塊較低,且熵編碼的方法細節與殘差塊的編碼細節不完全一致,因此用PicRisc對它們進行熵編碼,可以在不影響效率的同時簡化熵編碼模塊專用VLSI的硬件結構。
Micro Blaze[7]是Xilinx公司推出的32位RISC軟處理器核,它通過使用通用邏輯基元,而非FPGA中的硬專用模塊來實現。它在Virtex-4 FPGA中的工作頻率可達 160 MHz,處理速度超過 184 DMIPS(Dhrystone測試方法下的每秒百萬條指令),適合針對網絡、電信、數據通信、嵌入式和消費等市場的產品。基于Micro Blaze所能提供的良好性能,筆者所提到的軟硬件協同設計的AVS視頻編碼器選用Micro Blaze作為RISC核。
開發Micro Blaze處理器,使用的開發工具主要是Embedded Development Kit工具,包括XPS工具和SDK工具。XPS工具完成主要硬件設計調試工作,SDK工具用于設計和調試應用軟件。
可以利用EDK工具提供的BSB(Base System Builder)Wizard幫助用戶較快地構建硬件平臺。構建了基本的硬件結構以后,還需要通過總線接口、端口以及地址分配等對各個組件進行有效連接。
除了設計兩層Micro Blaze外,還需要添加額外的硬件來完成兩層Micro Blaze間的通信以及兩層MicroB-laze與底層專用VLSI硬件結構的通信。筆者采用了相對總線機制控制更加簡單的讀寫存儲器方式來完成上述通信任務,如圖2所示。

為了完成通信,需要添加額外的硬件模塊包括:
1)外部存儲器訪問控制器
exd_lmb_cntlr_Mb和exd_lmb_cntlr_Pic這兩個控制單元分別對應MbRisc和PicRisc,均可直接通過實例化lmb_bram_if_cntlr的IP核來實現。
2)塊存儲器的接口
customBRAMIF_Mb和customBRAMIF_Pic這兩個接口單元分別對應MbRisc和PicRisc,需要自定制IP核customBlockRAM interface,并實例化此IP核。最終形成的頂層MbRisc和PicRisc的硬件結構分別如圖3和圖4所示。


頂層RISC核(Micro Blaze)的硬件部分設計完成后,使用高級語言C編寫代碼,開發完成相應的軟件部分。兩層Micro Blaze的任務不同。PicRisc的軟件所需要完成的任務包括:
1)初始化和更新編碼參數
如圖像類型、圖像尺寸、量化參數、圖像編碼類型(I幀、P幀、B幀)更新編碼參數。
2)部分語法元素的熵編碼以及碼流合成
按照AVS標準文檔里所規定的碼流結構[1]來進行控制,如圖5所示。圖5中的block編碼的任務是由底層VLSI的熵編碼模塊完成的,此模塊將殘差塊熵編碼形成的比特流存儲在圖2所示的Block RAM中,最后PicRisc把殘差塊的比特流與其他語法元素的比特流合成為最終視頻編碼輸出的比特流。

MbRisc軟件所需要完成的任務主要是更新宏塊級的編碼參數,如宏塊計數,宏塊的量化參數等。
對軟硬件協同設計的編碼器進行仿真驗證時,除了需要將底層的VLSI結構以及頂層的兩個Micro Blaze實例化外,還需要將編寫好的軟件初始化寫入Micro Blaze的指令存儲器中,最終的仿真結果表明Micro Blaze工作正常,功能正確。
設計中采用的硬件平臺是Xilinx公司的virtex4-xc4vlx200-ff1513-10,整個設計在 ISE 9.2i和EDK 9.2i環境下進行。綜合后,兩個Micro Blaze共使用了1932個Slice,最高時鐘頻率可達147.435 MHz。
介紹了Micro Blaze嵌入式RISC核在AVS視頻編碼器軟硬件協同設計中的應用。利用Micro Blaze嵌入式RISC核以及基于Micro Blaze開發的軟件可以高效地完成相關處理任務,使本文所提到的AVS視頻編碼器兼顧了高效性和靈活性,為其對高清視頻源進行實時編碼提供了強有力的支持。
[1]GB/T 20090.2-2006,信息技術 先進音視頻編碼 第二部分:視頻[S].2004.
[2]虞露,胡倩,易峰.AVS視頻的技術特征[J].電視技術,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,FANUCCIL,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.