李 帥,易清明,石 敏
(暨南大學 電子工程系,廣東 廣州 510632)
目前,微處理器日益廣泛地運用到多種應用環境中,不同的應用對存儲器的設計及應用有不同的需求。如常見的用以匹配內核和主存的速度差異高速緩沖存儲器;存放計算機運行期間的大量程序和數據的主存儲器以及存放系統程序和大型數據文件及數據庫的外部存儲器。而在面對音視頻編解碼時,數據需要經過多種方式的處理,如果用傳統的單工作模式的存儲器,難免耗費資源過多。針對這種情況,可配置存儲器的設計,能夠根據應用需求動態地配置存儲器的工作模式,合理地對數據進行處理,提升系統性能。
筆者針對AVS視頻解碼器反掃描、反量化及反變換過程中對數據流不同的處理方式,設計了一種五模式可配置存儲器,用以節省資源,整合整個反掃描、反量化及反變換功能塊。
AVS(Audio Video coding Standard)標準是基于國內自主創新技術和國際公開技術所構建的音視頻編解碼壓縮標準[1-2],是一種適用于數字音視頻壓縮、解壓縮、處理和表示的技術方案。它的編碼效率與國際標準MPEG-4和H.264相當,廣泛應用于廣播、通信、電視、娛樂等各個領域。
本文提及的AVS視頻解碼器的設計與開發工作正是依據AVS視頻編解碼標準,其框架圖如圖1所示,主要包括碼流分割、熵解碼、反掃描反量化反變換、幀內預測、幀間預測以及環路濾波模塊。

依據AVS視頻編解碼標準,視頻流在經過熵解碼之后的絕大多數數據還需要經過反掃描、反量化、反變換單元的操作處理,尤其是在實時高清視頻序列中,該單元本身所需處理的數據量將會更加龐大。鑒于此,筆者設計了一種擁有5種工作模式的可配置存儲器。整個反掃描、反量化和反變換模塊的框架圖如圖2所示。

依據AVS視頻編解碼標準,分析反掃描、反量化和反變換過程中對數據流的操作,設計了如圖3所示的存儲器單元結構。

根據AVS標準所處理的數據特點,為了匹配AVS反變換所處理的8×8像素塊,整個五模式可配置存儲器被設計成1個8×8的存儲器陣列,即由64個上述基本單元排列組成。
每個單元都是通過1個選擇器控制1個寄存器,并且所有單元的工作模式同步,具體實現是通過配置不同的模式控制字,來選擇相應的工作模式。涉及到的5種工作模式分別是行訪問模式、列訪問模式、a掃描模式、b掃描模式以及保持模式。
AVS反變換處理的像素塊大小為8×8,如果按照常規方案中對每個系數逐個順序進行反變換的做法,處理速度會很慢,無法滿足當前實時處理高速視頻碼流的要求。因此,為了提高處理速度及編解碼效率,必須設計并行的反變換結構,如本文的“行列”結構,即重復使用同一個一維反變換單元[3]。
根據整數反變換的原理分析可知,要想通過復用一維整數反變換的做法來最終實現二維反變換操作,中間不得不加入相應的轉置操作[4]。AVS反變換需要的轉置單元不僅要能夠存儲一個塊的數據,而且還要按行或列并行的方式輸入輸出數據。這里設計的可配置存儲器能滿足這一需求,行訪問和列訪問模式實現了數據的行/列并行輸入輸出[5]。
根據AVS標準,在執行第一次一維反變換時,需要對可配置存儲器采用行訪問,從第一行并行讀出,最后一行并行輸入,數據需要由下至上移位;而在第二次一維反變換時,需要對可配置存儲器采用列訪問,從第一列并行輸出,最后一列并行輸入,即數據由右向左移位。兩次訪問的具體方式如圖4所示。

DCT變換產生的是1個二維數組,為進行傳輸,還須將其轉換為一維排列方式,掃描的過程正是實現這一轉換。由于AVS熵解碼對于游程對采用掃描倒敘的方式進行編碼,所以在解碼端的反掃描中須實現相應的逆操作。
傳統的反掃描實現方法是將經過熵解碼后得到的游程對(Run,Level)存儲到堆棧中,然后依次彈出堆棧進行反掃描,以便正確完成視頻編碼的逆操作,得到量化系數塊。這種方法相對古板,僅僅遵循標準的參考做法,既不利于掃描模式和量參的同步,也不利于熵解碼與反掃描、反量化、反變換模塊的銜接,流水作業性差。這里摒棄了傳統的做法,而是在存儲器陣列中整合了反掃描的操作,將熵解碼后的游程對按照解碼順序,直接順著編碼端的掃描方向,通過移位鏈的方式存儲到后續的8×8存儲陣列中。為此,本文存儲器設計了兩種掃描工作模式,分別兼顧AVS標準中所支持的兩種掃描模式,如圖5所示。
如圖5所示,標記了0~63的方塊對應的8×8可配置存儲器陣列,設計的兩種掃描工作模式為a掃描模式和b掃描模式,分別對應AVS標準里的之形掃描(Zig-Zag)和交替掃描[6-7],其中之形掃描是最常用的一種。當工作在掃描模式時,即按照圖5中標記的0,1,…,63的掃描順序,串行輸入數據被送入0標記寄存器,0標記寄存器內數據送入1標記寄存器,1標記寄存器內數據送入2標記寄存器,依次類推,62標記寄存器內數值送入63標記寄存器。整個數據的傳輸為并行處理,以同時完成64個存儲器的存儲過程。

保持模式,即鎖定已存入存儲器的數據,保持其不變。該模式下,存儲器是完成基本的數據儲存功能,提供AVS解碼器中其他模塊對數據的調用。
利用VCS平臺對整個反掃描、反量化和反變換模塊進行編譯,并作功能仿真,借助DVE波形查看器讀取生成波形,部分仿真波形如圖6所示。通過更改模式控制字mode[3:0]來配置存儲器的工作模式,a掃描模式、b掃描模式、行訪問模式、列訪問模式及保持模式對應的控制字分別為0001,0010,0100,1000和0000。由于存儲器的各種工作模式之間不存在時間重疊,因此通過合理規劃控制信息,安排模式切換,完全可以實現存儲單元的共享,大大節省了存儲空間。

依據AVS標準中反掃描、反量化及反變換的操作流程,結合時序控制,合理配置存儲器的工作模式,即可以實現對數據流的相應操作,仿真圖中對一組數據的處理周期內,存儲器的配置字變化過程為0000→0001(a掃描模式)→0100→1000。結果表明,該五模式可配置存儲器各模式之間的配合工作,實現了AVS反掃描、反量化及反變換功能塊之間的無縫鏈接,成功地輸出了一組組期望的8×8殘差矩陣,可供后續解析模塊恢復圖像使用。
筆者設計的五模式可配置存儲器,優勢在于為AVS解碼器的反掃描、反量化及反變換單元提供了共享的存儲空間,通過不同工作模式的轉化,不僅僅完成了基本的數據存儲功能,還利用存儲陣列中數據的移動為反掃描及反變換分擔了部分數據處理。該設計實現了反掃描、反量化和反變換的無縫鏈接,將其合并為一個流水線單元并行處理,省去了存儲中間結果所需的大量存儲器,加快了處理速度,能夠更高效地處理大規模的數據量,進一步滿足了高速視頻處理的需要。
[1]黃鐵軍.AVS標準的背景、進展與產業應用展望[J].信息技術與標準化,2003(9):4-8.
[2]黃鐵軍,高文.AVS標準制定背景與知識產權狀況[J].電視技術,2005,29(7):4-7.
[3]張丁,張明,鄭偉,等.一種高性能的適用于AVS的二維整數逆變換實現結構[D].杭州:浙江大學,2006.
[4]劉凌志,戎蒙恬,姜黎.一種并行結構的二維正/逆整數變換處理器[J].上海交通大學學報,2004,38(12):2048-2051.
[5]MALVAR H S,HALLAPURO A,KARCZEWICZ M,et al.Lowcomplexity transform and quantization in H.264/AVC[J].IEEE Transactions on Circuit and Systems for Video Technology,2003,13(7):598-603.
[6]張楚.AVS和H.264雙標準可變長解碼器設計[D].西安:西北工業大學,2007.
[7]生濱.AVS視頻編解碼芯片關鍵部件的體系結構研究與設計[D].哈爾濱:哈爾濱工業大學,2006.