基於FPGA的幀內預測編碼器硬體架構設計詳解

2020-11-24 電子發燒友

基於FPGA的幀內預測編碼器硬體架構設計詳解

工程師青青 發表於 2018-07-17 10:42:00

針對幀內預測的快速算法,由於DSP 架構軟體順序執行的局限性難以滿足實時性要求,而FPGA 以其高速的計算速度和強大的並行處理能力成為H.264 和AVS 編解碼的理想平臺。本文在FPGA 平臺上採用資源共享、高並行和多流水線結構實現了亮度幀內預測算法。該方法在分析AVS 幀內亮度5 種預測模式的基礎上,將像素預測與模式判決在一個模塊中完成,並且利用各模式預測的相似性,實現運算單元共享和多種模式並行執行,兼顧了處理速度和實現代價。仿真及綜合結果表明該設計能夠完全滿足標清(704×576,30f/s) 數字視頻的實時處理要求。

AVS(Audio Video Coding Standard) 標準, 是《信息技術—先進音視頻編碼》系列標準的簡稱, 是由我國自主提出的數字音視頻編解碼技術標準, 這個標準達到了當前國際先進水平。AVS 具有以下優點:(1) 性能高, 編碼效率是MPEG2的2 倍以上, 與H.264 的編碼效率處於同一水平;(2) 複雜度低, 算法複雜度比H.264 明顯低, 軟硬體實現成本都低於H.264;(3) 我國掌握主要智慧財產權, 專利授權模式簡單, 費用低。AVS 視頻標準制定的目標是: 適應數位電視廣播、數字存儲媒體、網際網路流媒體、多媒體通信等應用中對運動圖像壓縮技術的需要,這就對編碼的實時性提出了很高的要求。

幀內預測是AVS 編解碼中很重要的部分,其原理是利用圖像內部相鄰像素間的相關性來降低編碼碼率,也就是通過減少空間冗餘度來達到壓縮的目的。視頻編碼器幀內預測部分的硬體架構設計方案一般分為兩種。第一種是基於可重構硬體電路的設計。這種電路結構設計思想是根據幀內預測各模式算法上的相似性,設計出能夠處理所有預測模式的可重構的運算單元。該運算單元可根據預測模式的不同對輸入的數據選擇相應的數據通路,從而達到資源的最優化利用。由於該電路結構是逐個處理各個模式的預測,因此其缺點是處理速度慢。第二種設計方案是將具有相同預測值求解算法的預測模式共用同一個預測器,以優化資源利用,文獻 採用了這種設計方案。本文參考第二種設計方案,提出了一種基於資源共享以及並行流水[7] 的幀內預測編碼器硬體架構。

1 AVS 幀內預測模塊算法原理

AVS 的幀內預測分為亮度(1uma) 和色度(chroma) 預測兩種,都是以8x8 的塊為單位進行預測的。其中,亮度預測包括33 個參考像素點,有5 種預測模式(如圖1 所示),Vertical預測模式、Horizontal 預測模式、DC 預測模式、Down_Left 預測模式和Down_Right 預測模式。圖1 標示了AVS 幀內預測模式的預測方向,標號的對應關係為:Vertical 模式( 模式值為0)、Horizontal 模式( 模式值為1)、DC 模式( 模式值為2)、Down_Left 模式( 模式值為3)、Down_Right( 模式值為4)。

色度預測包括17 個參考像素點,有4 種預測模式,分別為:DC 模式( 模式值為0)、Horizontal 模式( 模式值為1)、Vertical模式( 模式值為2) 和Plane 模式( 模式值為3)。其中,DC模式、Horizontal 模式、Vertical 模式與亮度預測算法相同。

AVS 的幀內預測模塊子塊級主要包括像素值預測和模式判決兩部分,實現的功能主要是在給出當前塊的左邊像素,左上像素以及上邊像素的情況下按照各種模式預測的方法得到當前塊的預測像素值。

AVS 編碼標準採用了計算預測塊和原始塊之間的SAD 來尋找最合適的預測模式的方法。編碼器將所有的預測模式遍歷一遍,算出所有模式對應的SAD 值,取其中擁有最小SAD的模式作為最終選擇的模式。

2 幀內預測硬體設計與實現

2.1 幀內預測模塊硬體設計方案

設計中,Blockjudge 子模塊的功能是由系統計數的BlockNum 變量判斷當前塊在一幀圖像中的位置,從而決定當前塊的相鄰塊邊緣像素的可用性。由圖2 可知,在給定輸入數據的情況下,多種模式並行掛起,由於預測是按一個時鐘預測一個像素進行的,在預測完一個像素就進計算一次絕對誤差計算,然後預測完下一個就將誤差累加,最終預測完成,SAD 的計算也完成。模式判決模塊完成的是在SAD 計算完後比較得出各模式下的SAD 最小值,按其對應的預測模式即最佳預測模式選擇輸出對應的預測數據。可見整個過程是多個模式並行,並且共享公共運算單元,單個模式多級流水,從而提高資源利用率。

2.2 亮度預測模塊的VHDL 實現

幀內亮度預測模塊的VHDL 實現主要涉及到四部分:讀寫數據單元, 運算單元,數據比較單元,輸出單元。這四個部分分別對應於狀態機(亮度幀內預測模塊狀態機如圖3 所示)的streceive、 stcalculate、stcompare 和sttrans 狀態。狀態之間的轉換通過狀態計數器完成,預測輸出數據用於與當前塊數據做殘差供DCT 使用,最佳模式輸出供熵編碼寫碼流。

系統的起始狀態是stidle 狀態,當使能en 置1 時轉到streceive 狀態;streceive 狀態將接收的數據(總共接收97 個數據,前64 個是8x8 塊的原始數據,後33 個是參考數據)分別暫存到RAM00 和RAM11 中,RAM00 中存儲的當前塊數據用於與各種模式預測值進行SAD 運算,RAM11 中的數據用於得出預測數據,同時在該狀態存儲預測模式V 和H 需要的參考數據;當使能en 置0 時進入stcalculate 狀態,在stcalculate 狀態將33 個參考數據中相鄰的三個數據按(a+2b+c+2)》》2 低通濾波, 得到31 個預測數據。並且存儲DDR 模式,DDL 模式,DC_LEFT 模式和DC_TOP 模式需要的預測數據。在stm4 狀態讀取DC_LEFT 和DC_TOP 的預測數據d 和e,同時進行運算(d+e)》》1 得到f, 將f 進行限幅運算clip(f), 從而得到DC 模式的預測值並將其存儲;同時完成的有V,H,DDL,DDR的模式預測。預測過程按單像素進行,即串行輸入串行輸出,SAD 的計算通過SAD《=SAD+ABS(a-b) 累加完成。各種模式下2 個時鐘完成一個像素值的存儲和絕對差值的計算;系統在stcompare 狀態通過冒泡排序法得到SAD 最小值minSAD,其對應的模式即為最佳預測模式;sttrans 狀態完成最佳預測模式以及對應的預測值輸出。

各種模式實現過程中的公共單元:

主要運算單元:

l《=(a+b+b+c+2)》》2;

SAD《=SAD+ABS(a-b);

讀寫數據單元:

V,DC_TOP 是將8 個值按列賦值得到64 個數據;H,DC_LEFT 是將8 個值按行賦值得到64 個數據;DDL,DDR 是將15個值按照循環移位的方式給行賦值得到64 個數據,都是通過循環嵌套計數器來完成。

色度預測的狀態圖與亮度類似,只是輸入的參考數據是17個。Plane 模式預測實現比較複雜,在給出輸入數據的情況下有一個預處理的過程,運算量較大,預處理過程中得到的中間結果需要判斷正負號,而且涉及到左移四位右移五位的運算,因此數據位寬需要擴展至16 位,最終的符號位才不會被移走,負數在運算的過程中以補碼的形式存在,所以若符號位為1 則在右移後高位補1,反之則補0。

3 實驗結果

本文設計是以8×8 塊為單元,採用VHDL 硬體描述語言實現了幀內像素值預測以及模式判決模塊。設計中所採用的硬體處理平臺是Xilinx 公司的VidexII 系列FPGA xc2vp20,整個設計在ISE 10.1 環境下進行。

3.1 功能仿真結果

仿真過程中我們將預測輸出內容存儲到Pre_RAM 中,在每個子塊預測結束時列印至文本文件,同時將相同的視頻碼流加入到我們採用的軟體模型並列印與我們仿真相應的部分內容, 將兩者進行比較。至模塊完成時,已成功完成一個完整視頻碼流的數據對比,結果完全相同。

3.2 時序仿真結果

與功能仿真一樣, 我們將Pre_RAM 中存儲的內容在每個塊預測結束時列印至文本文件, 同時將相同的視頻碼流加入到我們採用的軟體模型並列印與我們仿真相應的部分內容,將兩者進行比較,結果也完全相同。由於篇幅限制圖4 僅給出了與圖5 對應的同一亮度塊在軟體模型中的內存數據,8x8亮度塊預測的仿真結果如圖5 所示,圖中顯示的當前狀態是stm4,stcompare 和sttrans,其中sum_v, sum_h, sum_dc,sum_dc_left, sum_dc_top, sum_ddl, sum_ddr 分別表示各

對應模式下的SAD 值,log 表示最佳預測模式,dataout 表示最佳預測值,對比可知二者結果一致。

3.3 綜合

資源利用情況如圖6 所示,整個預測過程佔用了328 個時鐘周期。而系統時鐘頻率在100MHZ 的情況下要達到實時時鐘周期需要控制在526 之內,顯然仿真結果表明該硬體結構完全滿足標清AVS 視頻實時編碼要求。

4 結束語

本文將AVS 幀內亮度預測模塊的像素值預測和模式判決結合到一個模塊中在FPGA 平臺硬體實現。採用資源共享的設計思想,同時將各種模式並行執行和流水處理,兼顧了時鐘和資源利用率。仿真結果表明,當工作在155.927MHz 時鐘時,可以實時處理704x576、4:2:0、30 幀/s 的視頻圖像。擁有中國自己的自主智慧財產權的數字音視頻編解碼標準(AVS),在技術和性能上處於國際先進水平。本論文的研究內容對於AVS標清視頻編碼晶片的設計有著實際的參考價值。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於FPGA的RCN226絕對式編碼器通信接口設計
    為了減小體積,絕對式編碼器一般採用串行通信方式輸出絕對編碼,針對伺服電機控制等高端場合,為了滿足快速的電流環、速度環、位置環的控制需要,編碼輸出的速度又應該非常快,這些不利因素都對絕對式編碼的接收增加了難度。 絕對式編碼器廠家大多為其編碼器配套了接收晶片,實現串行編碼到並行編碼的轉換,便於控制器的讀取操作。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 系統硬體分為語音信號的採集和播放,基於dsp的語音識別,fpga動作指令控制、步進電機及其驅動、dsp外接快閃記憶體晶片,jtag口仿真調試和鍵盤控制幾個部分。
  • 基於FPGA的結構光圖像中心線提取
    利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。實驗表明採用FPGA 實現圖像處理的專用算法能滿足圖像數據進行實時準確提取的要求。基於數字圖像處理的特點是處理的數據量非常大,處理非常耗時。所以本文研究了在FPGA上用硬體描述語言實現圖像的中心線提取算法,採用了極值法、閾值法和重心法相結合的中心線提取方法。通過功能模塊的硬體化,以便高速提取結構光中心線。結果表明,實驗系統達到了基於視頻速度的應用要求。
  • 基於TMS320DM6446的H.264編碼器實現與優化
    詳細介紹了以TMS320DM6446DSP為核心的視頻編碼系統的硬體設計,並重點研究了H.264編碼器在以TMS320DM 6446為目標的CCS平臺上的移植和優化工作。2 視頻編碼系統硬體設計2.1 DSP的選型 DSP選用TI公司的Davinci媒體處理專用器件TMS320DM6446(簡稱DM6446)。它採用ARM+DSP雙核架構,包含一個TMS320C64x+核心和一個ARM926EJ-S核心。
  • 一種基於FPGA高性能H.264變換量化結構設計
    264的變換量化算法設計一種基於FPGA的高性能變換量化處理結構,該結構採用流水線操作和分時復用技術。結果顯示,該設計既節省了資源,又保證了效率;能夠同時處理整個4× 4塊的全部16個殘差輸入數據,並在236個時鐘內完成對1個宏塊的殘差數據從輸入到反變換輸出重建值的完整變換量化過程。
  • 基於FPGA與有限狀態機的高精度測角系統的設計與實
    光電編碼器按編碼方式主要分為兩類:增量式與絕對式。由於增量式光電編碼器成本低、測角的精度高,因此本系統的增量式光電編碼器選用Renishaw公司的高精度圓光柵。然而,由於機械振動或抖動等原因,增量式編碼器的輸出脈衝會出現抖動毛刺的現象,因此需要在對編碼器輸出脈衝進行計數的過程中採取有效的方法來去掉抖動幹擾。
  • 基於FPGA的伺服驅動器分周比設計與實現
    光電編碼器是目前最常用的檢測器件。光電編碼器分為增量式、絕對式和混合式。其中,增量式以其構造簡單,機械壽命長,易實現高解析度等優點,已被廣泛採用。增量式光電編碼器輸出有A,B,Z三相信號,其中A相和B相相位相差90°,Z相是編碼器的「零位」,每轉只輸出一個脈衝。在應用中,經常需要對A相、B相正交脈衝按照一定的比例,即分周比進行分頻。
  • 賽靈思推出Spartan-6 FPGA系列
    賽靈思公司的Virtex-6 和Spartan-6 FPGA系列是賽靈思及其第三方合作夥伴網絡所倡導的「目標設計平臺」的可編程硬體基礎。這一平臺可幫助電子系統生產商利用集成硬體和軟體可編程能力來迎接當前經濟形勢下所面臨的財務、市場和技術挑戰。
  • 基於FPGA的無損圖像壓縮系統設計
    編者按:  摘要:本文簡要介紹了圖像壓縮的重要性和常用的無損圖像壓縮算法,分析了快速高效無損圖像壓縮算法(FELICS)的優勢,隨後詳細分析了該算法的編碼步驟和硬體實現方案,最後公布了基於該方案的FPGA性能指標。
  • 基於STM32F4x9的LCD顯示設計,硬體設計指南
    本文圍繞STM32F4x9微控制器完成了液晶顯示的硬體設計,並介紹了基於這一硬體平臺以及STemWin的軟體應用開發。  1基於STM32F4x9的LCD顯示系統架構  電子系統中液晶顯示的性能不僅取決於微控制器內置LCD TFT液晶控制器的驅動能力,通常包括對最大顯示解析度、屏幕刷新速度以及像素數據格式的支持,同樣取決於數據在存儲器和液晶控制器之間的傳輸能力和顯示圖像數據處理的靈活性。
  • 一種基於Arduino的光電編碼器檢測儀設計方案
    其硬體系統也是高度模塊化的,在核心控制板的外圍有開關量輸入/輸出模塊、各種模擬量傳感器輸入模塊、總線類傳感器的輸入模塊,還有網絡通信模塊[1-2].Arduino有自己特有的程式語言。其語法規則類似C/C++語言,IDE環境和語言把單片機與硬體相關的一些參數都參數化並進行了很好的封裝,把埠都打包,寄存器、地址指針之類的基本不用管,大大降低了軟體開發難度。
  • 基於ARM的旋轉編碼器採集模塊設計
    本文引用地址:http://www.eepw.com.cn/article/271736.htm  本文針對旋轉編碼器在工業現場中的應用,基於LPCI768硬體平臺,設計出一種旋轉編碼器採集模塊,該模塊內部具有高精度分析、整形、解碼電路,可同時對2路編碼器輸入信號進行分析、解碼。經過處理的旋轉信號通過高性能處理器進行採集及數字濾波。
  • 基於FPGA的OFDM系統設計與實現
    4.2 幀到達檢測同步模塊  對於幀到達檢測同步系統,要求儘可能在較短的時間內建立同步,並且在幀同步建立後應有較強的抗幹擾能力。在本文的幀同步信號提取電路的建模與設計中,是以7位巴克碼識別器作為幀同步碼組的。在同步系統處於捕獲階段時,設置自動判決門限為7;在幀同步建立以後,則把判決門限降為6,這樣做的目的一方面是減少假同步的概率,另一方面是為了減少漏同步的概率。
  • 基於fpga二維小波變換核的實時可重構電路
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/266432.htm  2.1 項目名稱及摘要:  基於fpga二維小波變換核的實時可重構電路  現場可編程門陣列為可進化設計提供了一個理想的模板
  • 基於FPGA的多波束成像聲納整機硬體電路設計
    數位訊號處理模塊輸出的波束在100 m的量程範圍內具有58.007 Mbps的數據傳輸率,本系統採用2倍以上的設計餘量,通過千兆網來實現波束數據的網絡傳輸。設計中採用Xilinx公司的Vitex-5 FX70T的FPGA為平臺,基於該晶片內部的PowerPC440硬核處理器,在該處理器上移植VxWorks作業系統,完成數據的網絡傳輸功能。片上系統的設計框圖如圖6所示。
  • 如何設計基於ARM的旋轉編碼器採集模塊?
    本文針對旋轉編碼器在工業現場中的應用,基於LPCI768硬體平臺,設計出一種旋轉編碼器採集模塊,該模塊內部具有高精度分析、整形、解碼電路,可同時對2路編碼器輸入信號進行分析、解碼。經過處理的旋轉信號通過高性能處理器進行採集及數字濾波。
  • 基於FPGA的四通道視頻縮放引擎的研究及設計
    數字視頻縮小和放大(簡稱縮放)是視頻處理的一個重要分支,是基於對數字視頻每幀圖像的處理來實現的。常見的縮放算法有最近鄰域法、雙線性插值法、拋物線插值法、雙三次插值法和牛頓插值法等基於多項式的插值算法[1],較容易在FPGA硬體上實現;也有B樣條插值法、基於小波插值和有理插值等比較複雜的算法,難以在FPGA上實現。近年來隨著液晶平板顯示器件的廣泛應用,對於定標器的研究越來越多且研究成果也很豐富。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 聲納圖像動態範圍擴展與FPGA實現
    基於課題組研製的多波束成像聲納原理樣機的研製,分析了數據動態範圍壓縮導致圖像細節丟失的原因及其對成像質量的影響,採用JPL快速平方根近似算法改善了開方運算FPGA實現過程的資源佔用和系統延時。最後,對改進設計方案進行了實驗驗證,通過多波束成像聲納系統的消聲水池實驗證明了本文動態範圍擴展方法的有效性和可行性,系統成像質量改善明顯,達到優化設計的預期目標。