李 帥,易清明,石 敏
(暨南大學 電子工程系,廣東 廣州 510632)
目前,微處理器日益廣泛地運用到多種應用環(huán)境中,不同的應用對存儲器的設計及應用有不同的需求。如常見的用以匹配內(nèi)核和主存的速度差異高速緩沖存儲器;存放計算機運行期間的大量程序和數(shù)據(jù)的主存儲器以及存放系統(tǒng)程序和大型數(shù)據(jù)文件及數(shù)據(jù)庫的外部存儲器。而在面對音視頻編解碼時,數(shù)據(jù)需要經(jīng)過多種方式的處理,如果用傳統(tǒng)的單工作模式的存儲器,難免耗費資源過多。針對這種情況,可配置存儲器的設計,能夠根據(jù)應用需求動態(tài)地配置存儲器的工作模式,合理地對數(shù)據(jù)進行處理,提升系統(tǒng)性能。
筆者針對AVS視頻解碼器反掃描、反量化及反變換過程中對數(shù)據(jù)流不同的處理方式,設計了一種五模式可配置存儲器,用以節(jié)省資源,整合整個反掃描、反量化及反變換功能塊。
AVS(Audio Video coding Standard)標準是基于國內(nèi)自主創(chuàng)新技術和國際公開技術所構(gòu)建的音視頻編解碼壓縮標準[1-2],是一種適用于數(shù)字音視頻壓縮、解壓縮、處理和表示的技術方案。它的編碼效率與國際標準MPEG-4和H.264相當,廣泛應用于廣播、通信、電視、娛樂等各個領域。
本文提及的AVS視頻解碼器的設計與開發(fā)工作正是依據(jù)AVS視頻編解碼標準,其框架圖如圖1所示,主要包括碼流分割、熵解碼、反掃描反量化反變換、幀內(nèi)預測、幀間預測以及環(huán)路濾波模塊。
依據(jù)AVS視頻編解碼標準,視頻流在經(jīng)過熵解碼之后的絕大多數(shù)數(shù)據(jù)還需要經(jīng)過反掃描、反量化、反變換單元的操作處理,尤其是在實時高清視頻序列中,該單元本身所需處理的數(shù)據(jù)量將會更加龐大。鑒于此,筆者設計了一種擁有5種工作模式的可配置存儲器。整個反掃描、反量化和反變換模塊的框架圖如圖2所示。
依據(jù)AVS視頻編解碼標準,分析反掃描、反量化和反變換過程中對數(shù)據(jù)流的操作,設計了如圖3所示的存儲器單元結(jié)構(gòu)。
根據(jù)AVS標準所處理的數(shù)據(jù)特點,為了匹配AVS反變換所處理的8×8像素塊,整個五模式可配置存儲器被設計成1個8×8的存儲器陣列,即由64個上述基本單元排列組成。
每個單元都是通過1個選擇器控制1個寄存器,并且所有單元的工作模式同步,具體實現(xiàn)是通過配置不同的模式控制字,來選擇相應的工作模式。涉及到的5種工作模式分別是行訪問模式、列訪問模式、a掃描模式、b掃描模式以及保持模式。
AVS反變換處理的像素塊大小為8×8,如果按照常規(guī)方案中對每個系數(shù)逐個順序進行反變換的做法,處理速度會很慢,無法滿足當前實時處理高速視頻碼流的要求。因此,為了提高處理速度及編解碼效率,必須設計并行的反變換結(jié)構(gòu),如本文的“行列”結(jié)構(gòu),即重復使用同一個一維反變換單元[3]。
根據(jù)整數(shù)反變換的原理分析可知,要想通過復用一維整數(shù)反變換的做法來最終實現(xiàn)二維反變換操作,中間不得不加入相應的轉(zhuǎn)置操作[4]。AVS反變換需要的轉(zhuǎn)置單元不僅要能夠存儲一個塊的數(shù)據(jù),而且還要按行或列并行的方式輸入輸出數(shù)據(jù)。這里設計的可配置存儲器能滿足這一需求,行訪問和列訪問模式實現(xiàn)了數(shù)據(jù)的行/列并行輸入輸出[5]。
根據(jù)AVS標準,在執(zhí)行第一次一維反變換時,需要對可配置存儲器采用行訪問,從第一行并行讀出,最后一行并行輸入,數(shù)據(jù)需要由下至上移位;而在第二次一維反變換時,需要對可配置存儲器采用列訪問,從第一列并行輸出,最后一列并行輸入,即數(shù)據(jù)由右向左移位。兩次訪問的具體方式如圖4所示。
DCT變換產(chǎn)生的是1個二維數(shù)組,為進行傳輸,還須將其轉(zhuǎn)換為一維排列方式,掃描的過程正是實現(xiàn)這一轉(zhuǎn)換。由于AVS熵解碼對于游程對采用掃描倒敘的方式進行編碼,所以在解碼端的反掃描中須實現(xiàn)相應的逆操作。
傳統(tǒng)的反掃描實現(xiàn)方法是將經(jīng)過熵解碼后得到的游程對(Run,Level)存儲到堆棧中,然后依次彈出堆棧進行反掃描,以便正確完成視頻編碼的逆操作,得到量化系數(shù)塊。這種方法相對古板,僅僅遵循標準的參考做法,既不利于掃描模式和量參的同步,也不利于熵解碼與反掃描、反量化、反變換模塊的銜接,流水作業(yè)性差。這里摒棄了傳統(tǒng)的做法,而是在存儲器陣列中整合了反掃描的操作,將熵解碼后的游程對按照解碼順序,直接順著編碼端的掃描方向,通過移位鏈的方式存儲到后續(xù)的8×8存儲陣列中。為此,本文存儲器設計了兩種掃描工作模式,分別兼顧AVS標準中所支持的兩種掃描模式,如圖5所示。
如圖5所示,標記了0~63的方塊對應的8×8可配置存儲器陣列,設計的兩種掃描工作模式為a掃描模式和b掃描模式,分別對應AVS標準里的之形掃描(Zig-Zag)和交替掃描[6-7],其中之形掃描是最常用的一種。當工作在掃描模式時,即按照圖5中標記的0,1,…,63的掃描順序,串行輸入數(shù)據(jù)被送入0標記寄存器,0標記寄存器內(nèi)數(shù)據(jù)送入1標記寄存器,1標記寄存器內(nèi)數(shù)據(jù)送入2標記寄存器,依次類推,62標記寄存器內(nèi)數(shù)值送入63標記寄存器。整個數(shù)據(jù)的傳輸為并行處理,以同時完成64個存儲器的存儲過程。
保持模式,即鎖定已存入存儲器的數(shù)據(jù),保持其不變。該模式下,存儲器是完成基本的數(shù)據(jù)儲存功能,提供AVS解碼器中其他模塊對數(shù)據(jù)的調(diào)用。
利用VCS平臺對整個反掃描、反量化和反變換模塊進行編譯,并作功能仿真,借助DVE波形查看器讀取生成波形,部分仿真波形如圖6所示。通過更改模式控制字mode[3:0]來配置存儲器的工作模式,a掃描模式、b掃描模式、行訪問模式、列訪問模式及保持模式對應的控制字分別為0001,0010,0100,1000和0000。由于存儲器的各種工作模式之間不存在時間重疊,因此通過合理規(guī)劃控制信息,安排模式切換,完全可以實現(xiàn)存儲單元的共享,大大節(jié)省了存儲空間。
依據(jù)AVS標準中反掃描、反量化及反變換的操作流程,結(jié)合時序控制,合理配置存儲器的工作模式,即可以實現(xiàn)對數(shù)據(jù)流的相應操作,仿真圖中對一組數(shù)據(jù)的處理周期內(nèi),存儲器的配置字變化過程為0000→0001(a掃描模式)→0100→1000。結(jié)果表明,該五模式可配置存儲器各模式之間的配合工作,實現(xiàn)了AVS反掃描、反量化及反變換功能塊之間的無縫鏈接,成功地輸出了一組組期望的8×8殘差矩陣,可供后續(xù)解析模塊恢復圖像使用。
筆者設計的五模式可配置存儲器,優(yōu)勢在于為AVS解碼器的反掃描、反量化及反變換單元提供了共享的存儲空間,通過不同工作模式的轉(zhuǎn)化,不僅僅完成了基本的數(shù)據(jù)存儲功能,還利用存儲陣列中數(shù)據(jù)的移動為反掃描及反變換分擔了部分數(shù)據(jù)處理。該設計實現(xiàn)了反掃描、反量化和反變換的無縫鏈接,將其合并為一個流水線單元并行處理,省去了存儲中間結(jié)果所需的大量存儲器,加快了處理速度,能夠更高效地處理大規(guī)模的數(shù)據(jù)量,進一步滿足了高速視頻處理的需要。
[1]黃鐵軍.AVS標準的背景、進展與產(chǎn)業(yè)應用展望[J].信息技術與標準化,2003(9):4-8.
[2]黃鐵軍,高文.AVS標準制定背景與知識產(chǎn)權狀況[J].電視技術,2005,29(7):4-7.
[3]張丁,張明,鄭偉,等.一種高性能的適用于AVS的二維整數(shù)逆變換實現(xiàn)結(jié)構(gòu)[D].杭州:浙江大學,2006.
[4]劉凌志,戎蒙恬,姜黎.一種并行結(jié)構(gòu)的二維正/逆整數(shù)變換處理器[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].西安:西北工業(yè)大學,2007.
[7]生濱.AVS視頻編解碼芯片關鍵部件的體系結(jié)構(gòu)研究與設計[D].哈爾濱:哈爾濱工業(yè)大學,2006.