?

HEVC標準中整數變換的FPGA實現

2014-09-18 00:16普建龍吳景東
電視技術 2014年19期
關鍵詞:移位時鐘運算

普建龍,吳景東

(福州大學工業控制研究所,福建福州350108)

2010年,由ITU-T和ISO/IEC的專家聯合成立的JCT-VC(Joint Collaborative Team-Video Coding)開始著手于下一代視頻壓縮標準HEVC的研發[1]。HEVC目標是在H.264/AVC擴展檔次的基礎上,提高50%的壓縮率,然而其計算量和復雜度也大大增加[2],非常不利于其在硬件上的實施。

HEVC標準于2013年1月發布,有關HEVC中整數DCT在FPGA上實現的研究還比較少。Belghith和Park在文獻[3-4]中設計的結構只能支持部分TU塊,其MCM單元沒有采用任何優化方法。這兩種架構的時延也較大,不利于高清視頻的實時處理。Shen在文獻[5]中為IDCT(Inverse DCT)設計了能適應各種TU塊的結構,但每個周期只能處理4個樣本點。其復用了同一個1-D IDCT結構,時延變大。對大TU塊,該結構直接使用乘法操作,功耗大。Meher在文獻[6]中設計的結構將數據都進行了裁減,準確性下降,容易出現數據漂移現象。劉毅在文獻[7]中的設計,支持非方形的TU塊,而這已經被最新的標準去除了。

為了克服上述缺點,本文提出了一種能自適應各種TU塊的硬件架構,去除了原MCM中的常規乘法,并最大限度地找出復用單元,節省硬件資源。同時,按照HEVC標準[8]要求,最大限度地保證數據的準確性。實驗表明,該結構每個周期能處理32個樣本,最大時延只有32個時鐘周期,在184 MHz的時鐘頻率下,能實時處理60 f/s(幀/秒)、采樣率為4∶2∶0的UHD視頻序列。

1 硬件架構總體設計

整個算法采用6個模塊,如圖1所示。圖中,粗箭頭表示數據的流向,細箭頭表示控制信號,復位和時鐘信號在此省略。下面對各個模塊進行簡要介紹。

圖1 硬件架構的總體設計

Control模塊產生控制信號,控制整個流水線的進行。TU_size設置為0~3,分別標記本次運算時TU的大小(4×4~32×32)。同時用TU_size來設置enable1控制信號(包括 enable1_8,enable1_16,enable1_32),以選擇DCT_1中用于當前TU塊的運算單元。mode記錄上一個參與運算的TU塊的大小,并設置enable2控制信號(包括 enable2_8,enable2_16,enable2_32),選擇 DCT_2中的運算單元。require表示當前TU塊中的數據全部計算完畢,可以重新設置TU_size并輸入一組新的數據。在Control單元中,還有兩個標記信號:flag和flag_permission。flag由TU_size和mode中較大的數據決定,用于標記計算本TU塊所需要的周期。flag_permission控制本TU計算過程中,有多少次數據是有效的,無效的數據用0填充。h_v信號控制轉置模塊是按照行還是按列存儲。cnt則用來記錄正在處理的數據將存放在第幾行或者第幾列。

PN_1和PN_2分別對DCT_1和DCT_2模塊輸出的數據進行整理。當計算的TU塊為4×4時,PN_1和PN_2的輸出數據p_out0~3分別等于DCT_1和DCT_2輸出數據中的y0,y8,y16,y24,其他輸出數據都設為0。當 TU 塊為8×8時,p_out0~7 對應y0,y4,y8,y12,y16,y20,y24,y28,其他的也都是0。對于16×16和32×32的TU塊,PN_1和PN_2的輸入輸出方法也符合類似規律。

DCT_1,DCT_2和Transpose是本文的主要研究工作,將在下文詳細介紹。

2 DCT模塊設計

類似于H.264/AVC,HEVC采用了整數DCT,在簡化運算的同時,避免了視頻圖像的漂移現象。HEVC具有靈活的塊結構,能準確適應各種分辨率的視頻序列。TU塊是變換的基本單元,目前支持4×4,8×8,16×16和32×32四種大?。?]。較大的塊能更有效地處理高清視頻中相對平滑的區域。

HEVC中2-D(1-Dimensional)DCT也可以轉換為兩個1-D DCT來計算。1-D DCT模塊對應圖1中DCT_1和DCT_2。其區別在于輸入數據的位數。DCT_1的輸入數據為9位,即預測圖像與原圖像的殘差數據,DCT_2的輸入數據為16位,是經過了1-D DCT之后的數據。數據在1-D DCT運算的過程中需要裁減,以保證輸出的數據是16位。16位的數據既保持了數據的準確度,又能保證Transpose模塊大小適中[1]。

2.1 DCT總體結構

圖2詳細描述了1-D DCT模塊的設計?!埃迹肌焙汀埃荆尽狈謩e表示算術左移和算術右移。B4,B8,B16,B32分別表示輸入 Transform4×4,Transform8×8,Transform16×16,Transform32×32單元的數據的位數,不包括符號位。這些參數的使用,不僅簡化了設計過程(DCT_1模塊通過簡單的參數配置就能用于DCT_2模塊),而且能保證被處理數據的準確性。圖中有3個enable信號(包括enable8,enable16和enable32),由TU塊的大小決定其取值,分別控制 Transform8×8,Transform16×16和Transform32×32三個單元的輸入數據。如果enable信號為1,則對應單元選擇蝶形加法器,否則使用移位器。由于任何大小的TU塊在變換時都會調用Transform4×4單元,故該單元無需enable信號。該結構利用了HEVC標準中變換核[8]的特性,使較大的TU塊在做變換時,能復用較小TU塊的變換單元。

圖2 DCT模塊的詳細設計

經過綜合后,DCT_1和DCT_2模塊中各單元所占資源如表1所示。各單元寄存器使用量為0,未在表中列出。表1中同時列舉了文獻[7]中的資源使用情況,其在Altera CycloneII上進行了綜合??梢钥吹?,本文的資源使用量明顯減少。

表1 本結構和文獻[7]中DCT模塊中各單元資源占用量

2.2 MCM單元和加法樹

乘法運算在FPGA中資源占用量和能耗非常大,所以要將所有的矩陣乘法運算換成移位和加法操作,以減少硬件資源,縮小設計面積。

MCM算法在其他有關整數DCT的文獻中也有較多的應用,下文以最復雜的單元來詳細介紹MCM單元的優化過程。假設輸入MCM32單元的數據為M,表2中xM表示x與M的乘積。為了書寫方便,假設移位操作的優先級比加法操作高。

表2 常規方法MCM32單元運算量

由表中數據可知,若無單元復用,該MCM32單元需要移位操作46次,加法操作37次。通過仔細分析移位和加法操作,可以發現,該運算中許多單元都是可以復用的。下面對該結構進行一些改進,用一些臨時變量保留復用單元的值,并在之后的運算中直接使用,如表3所示,正體部分表示臨時變量。

統計結果表明,經過優化后,MCM32單元只需進行10次移位和14次加法操作,分別節省了78.3%和62.2%的運算量。

MCM單元計算出的結果,還要經過加法樹AddTree的處理。由于兩個位數較少的數相加,綜合后得到的加法器資源消耗更少,故對上述15個數采用不同的位數來存儲,每次計算時選擇位數較少的兩個數進行加法操作。

表3 改進后MCM32單元運算量

3 Transpose模塊

Transpose模塊在整個設計中至關重要,它使得DCT_1和DCT_2模塊能夠同時進行運算。具體實現時,采用標準測試程序HM12.1[9]中的方法,先按列計算一維(1-D)的DCT,其結果再按行進行第二維的DCT運算。具體流程如圖3所示。

圖3 Transform模塊數據處理流程

Transpose模塊中寄存器初始化為0,并假設當前處理的是32×32大小的TU塊。首先輸入一列數據,經過DCT_1模塊之后,將數據按列存放于Transpose模塊中,如圖3中1所示。32個時鐘周期之后,數據填滿Transpose模塊中的寄存器,如圖3中2所示。該階段表明當前TU塊經過DCT_1模塊運算完畢,Transpose模塊中存放著用于DCT_2模塊運算的數據,并且Control模塊可以接收一組新的數據用于DCT_1模塊計算。如圖3中3所示,按行取出用于DCT_2模塊的數據,新接收的數據依然按列在DCT_1中運算,但結果按行來存儲。運用脈沖觸發的特性,每次存取操作都可在一個周期內完成。當Transpose模塊中原來的數據被取完之后,新的TU塊經過DCT_1模塊運算的結果也就保存在Transpose模塊之中了,如圖3中4所示。之后重復上述操作就可以實現兩個DCT模塊的流水線操作。

此處需要解決一個問題:上述示例中,如果第2次輸入的TU塊大小為4×4,理應只需4個時鐘周期就能完成1-D DCT運算(在DCT_1模塊中),但是Transpose模塊中存放的32×32的矩陣,需要32個周期取出,若此時更新了TU塊,并輸入新的數據,則Transpose中剩余的數據就會因被覆蓋而丟失。為了防止該現象發生,在Control模塊中設置了一個mode值,如第1節所述,該值用來記錄上次參與DCT運算的TU塊的大小。通過比較TU_size和mode的值來設計flag標記信號,控制本次變換所需的周期。所以上述示例中,第2次輸入的4×4的TU塊實際需要經過32個時鐘周期才算完成了1-D DCT的運算過程。

Transpose模塊由1 024個16位的寄存器組構成,用有限狀態機(Finite-State Machine,FSM)控制數據的行列轉換。經過綜合后,ALUT使用量為11 800,寄存器使用量為16 384。

4 實驗結果

實驗所用代碼通過Verilog HDL編寫,并在Altera Arria GX EP1AGX90EF1152C上進行綜合。

本結構綜合后的數據如表4所示,其他相關文獻給出的數據也在表中列出,以便對比。因相關文獻中沒有具體說明或者未使用相應資源,表中有些數據未給出。DCT和IDCT的區別在標準[8]中有詳細闡述,此處將IDCT的文獻也列出,作為參考。

從表4可以發現,相對于Belghith,Park,Shen設計的結構,本結構具有明顯的優勢,不僅能支持各種TU塊,而且具有較高的吞吐率。Meher的結構綜合后的數據同樣比較優越,但其在計算過程中,直接忽略數據的低比特位,導致數據的準確性下降。

實驗表明,在不明顯增加資源占用量的情況下,本結構的時延更小,數據處理能力更強。在184 MHz的時鐘下,即使是最壞的情況,本結構也能實時處理60 f/s的UHD視頻序列。

表4 資源占用量對比

5 結論

本文針對FPGA的特性,通過充分優化MCM和AddTree單元以減少資源使用量。兩個DCT模塊采用參數配置的方法,配合enable信號來選擇移位和加減法操作,能最大限度地保持數據的準確性。文中設計了一種新的Transpose模塊,使得兩個1-D DCT模塊能同時運算,并能適應各種TU塊的變換。該結構將數據處理時延控制在32個時鐘周期內,處理能力和實用性更強。

:

[1] HAN G J,OHM J R,HAN W J,et al.Overview of the high efficiency video coding(HEVC)standard[J].IEEE Trans.Circuits and Systems for Video Technology,2012(22):1649-1668.

[2]蔡曉霞,崔巖松,鄧中亮,等.下一代視頻編碼標準關鍵技術[J].電視技術,2012,36(2):80-84.

[3] BELGHITH F,LOUKIL H,MASMOUDI N.Efficient hardware architecture of a modified 2-D transform for the HEVC standard[J].International Journal of Computer Science and Application,2013,2(4):1308-1312.

[4] PARK J S,NAM W J,HAN S M,et al.2-D large inverse transform(16x16,32x32)for HEVC(High Efficiency Video Coding)[J].Journal of Semiconductor Technology and Science,2012,12(2):203-211.

[5] SHEN S,SHEN W,FAN Y,et al.A Unified 4/8/16/32-point integer IDCT architecture for multiple video coding standards[C]//Proc.International Conference on Multimedia and Expo(ICME).Melbourne:IEEE Press,2012:788-793.

[6] MEHER P K,PARK S Y,MOHANTY B K,et al.Efficient integer DCT architectures for HEVC[J].IEEE Trans.Circuits and Systems for Video Technology,2013,24(1):1-11.

[7]劉毅,羅軍,黃啟俊,等.HEVC整數DCT變換與量化的FPGA實現[J].電視技術,2013,37(11):12-14.

[8] International Telecommunication Union.Recommendation ITU -T H.265[EB/OL].[2014-02-10].http://www.itu.int/rec/T-RECH.265-201304-I,.

[9] Joint Collaborative Team on Video Coding(JCT-TV).HEVC Test Model HM-12.1 [EB/OL].[2014-02-20].https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-12.1.

猜你喜歡
移位時鐘運算
MDT診療模式在顳下頜關節盤不可復性盤前移位中的治療效果
重視運算與推理,解決數列求和題
別樣的“時鐘”
古代的時鐘
有趣的運算
再生核移位勒讓德基函數法求解分數階微分方程
大型總段船塢建造、移位、定位工藝技術
“整式的乘法與因式分解”知識歸納
微小移位的B型股骨假體周圍骨折的保守治療
有趣的時鐘
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合