安 航
(西安電子科技大學微電子學院,西安710126)
基于Vivado HLS的Down Scaler視頻系統設計
安 航
(西安電子科技大學微電子學院,西安710126)
介紹一種基于FPGA的Down Scaler視頻系統設計。系統的核心部件采用Xilinx Kintex-7的板載XC7K325T芯片,系統設計使用Vivado工具,包括使用Vivado HLS進行Down Scaler模塊設計。首先按照Vivado HLS的代碼規范進行Down Scaler模塊的C/C++代碼編寫,然后利用編譯工具生成RTL級代碼和綜合結果Down Scaler IP核,最后將Down Scaler IP核與TPG、VDMA等Xilinx視頻IP核互連,構建實時視頻系統。在滿足實時性要求和FPGA資源消耗要求的條件下,該設計實現了對Down Scaler視頻算法從PC端軟件處理方式向FPGA平臺硬件處理方式的移植。
Vivado HLS;FPGA;Down Scaler;高層次綜合
在電子設計自動化領域,高層次綜合工具變得越來越受歡迎,其能夠將C/C++、SystemC、Matlab等高級語言的函數轉譯成RTL級的代碼,這一功能將數字電路設計的抽象層進一步提升。隨著嵌入式系統復雜程度的增加,高層次綜合工具開始深入電子系統尤其是嵌入式系統的設計流程。本文介紹一種基于Xilinx公司的高層次綜合工具Vivado HLS的Down Scaler視頻系統設計。
在過去20年,占主導地位的電子設計流程中,硬件設計人員需要手工完成從系統功能指標到RTL級代碼的所有工作。如今,這樣的設計流程開始變得困難,因為越來越多的功能可以被集成在一個芯片上,按照傳統的設計流程,開發人員獨自一人完成所有的功能變得越發困難,但因為設計功能的增多而增加設計團隊的人員數量,從經濟角度上看是不可行的,這意味著設計生產率必須有所提高。高層次綜合能夠通過從算法層到RTL層的自動化來提高設計生產率,從圖1(b)中可以看到,應用高層次綜合,系統設計從功能指標到自動化設計流程開端的距離縮短了。
在設計流程中,應用高層次綜合工具能夠給設計工作帶來以下便利:首先,需要設計人員編寫的代碼量顯著減少,在縮短開發周期的同時降低了錯誤率。其次,在如今的產品開發過程中,驗證所需的時間往往超過設計的時間,使用高層次綜合工具能夠縮短驗證時間,在高層次綜合工具生成設計代碼的同時,還能夠同時生成測試平臺代碼,可以直接通過測試數據來驗證設計代碼是否正確。
傳統的Down Scaler運算是在PC架構下進行的,以湯姆遜視頻網絡公司的產品THVN VS7000為例,其中的Down Scaler模塊是PC服務器中的一個C++應用程序,在進行運算處理前,視頻流的獲取通過一塊Black Magic板卡來實現,其接收到的每一幀圖像的像素信息通過PCI-e傳輸到PC服務器。服務器首先將像素信息存儲在3個不用的內存空間Y、U、V,之后應用程序Down Scaler對這3個空間的像素信息進行運算處理。本文描述的設計目標是使用FPGA中的一個Down Scaler IP核實現對視頻流的“硬件處理”,代替傳統PC端的Down Scaler C++程序對圖像進行“軟件處理”的方案,從而取消完整幀像素信息Y、U、V成分的預儲存步驟。

圖1 高層次綜合的Gasjki-Kuhn Y-chart圖描述[1]
2.1 模塊參數要求
視頻的縮小比例為2/3,像素的相位數為2,根據相位數、亮度色度、水平豎直的不同情況,共計有8個濾波窗,每個濾波窗包含11個參數,由Lanczos算法提前計算確定,“鏡像”處理針對圖像邊緣的5個像素點進行。
2.2 模塊設計關鍵點
2.2.1 計算單元
根據參數要求,Down Scaler模塊包括兩種BRAM計算單元,分別是Window和Linebuffer。Window是一個一維存儲空間,用來存儲11個像素點,Linebuffer是一個二維存儲空間,用來存儲11行像素點。Linebuffer在每一個工作頻率上接收新的輸入像素,之前的像素在每一個工作頻率上向存儲空間的下方移動一個位置,即最新接收的像素點總是存儲在Linebuffer中的初始位置。當Linebuffer填滿后,Downscaling運算開始,即通過Window存儲11個采樣像素,并對像素信息進行濾波運算。相比存儲一幀完整圖像后再進行運算的“軟件處理”方式,通過使用Linebuffer和Window作為“硬件處理”方式的存儲單元大幅降低了模塊對存儲空間的需求。“軟件處理”和“硬件處理”Down Scaler模塊的計算單元大小對比如表1所列。

表1 “軟件處理”和“硬件處理”Down Scaler模塊的計算單元大小對比
2.2.2 像素信息計算和鏡像運算整合
與傳統Down Scaler算法對像素分量Y、U、V進行區分后再做鏡像、濾波運算不同,本文中的Down Scaler對輸入的像素點信息直接進行鏡像和濾波運算,這樣做是為了簡化IP結構,更好地適應AXI4-Stream協議[2]。另外,傳統Down Scaler算法包含4個串行過程,分別是水平鏡像、水平縮小、豎直鏡像和豎直縮小,使用Vivado HLS工具的Dataflow模式將串行過程并行執行后,在不改變模塊工作頻率的條件下,只能夠滿足對1920×1080P/25 fps的視頻進行實時運算。為了進一步提高運算性能,需要進一步降低運算過程之間的數據依賴性。新的算法只包含兩個縮小過程,即水平縮小和豎直縮小,鏡像運算被整合在縮小運算中,并且只在需要的時刻進行。對鏡像運算的整合雖然增加了算法編寫的復雜程度,但是縮短了過程間的數據傳輸鏈路,使設計最終能夠達到性能參數要求,滿足對1920×1080P/60 fps的視頻進行實時運算。
3.1 系統參數要求
輸入視頻流為全高清視頻、1920×1080P/60 fps、YUV4:4:4格式,輸出視頻流為高清視頻、1080×720P/60 fps、YUV4:4:4格式,要求Down Scaler模塊的工作頻率等于輸入視頻像素頻率,即148.5 MHz。
3.2 Down Scaler視頻系統搭建
實時視頻系統架構可以分為兩大類,一類是不含幀緩存模塊的系統,另一類是包含幀緩存模塊的系統,本文中的Down Scaler視頻系統屬于第二類架構。
根據圖2所示的系統架構,使用IP integrator搭建的Down Scaler視頻系統,該系統用到以下IP核:
①Test Pattern Generator[3]——Xilinx IP核,用來產生不同格式的輸入視頻流;
②Down Scaler——Vivado HLS生成的IP核;
③AXI Video Direct Memory Access[4]、AXI Interconnect[5]、MIG 7 Series[6]——XilinxIP核,用來在DDR內存中構建幀緩存器;
④Clocking Wizard[7]——Xilinx IP核,用來生成系統時鐘信號;
⑤Proc Sys Reset——Xilinx IP核,用來生成系統重置信號;
⑥Video In to AXI4-S[8]、AXI4-S to Video Out[9]——Xilinx IP核,用來進行AXI4-Stream和視頻協議轉換;
⑦VTC(Video Timing Controller[10])——Xilinx IP核,用來檢測輸入視頻時鐘周期和產生輸出視頻時鐘周期。

圖2 Down Scaler視頻系統架構
至此,一個基于Vivado HLS的Down Scaler視頻系統設計完成。
本設計選取Xilinx Kintex-7評估板作為開發平臺,使用高層次綜合工具Vivado HLS進行Down Scaler模塊的設計、仿真和驗證,使用Vivado進行實時視頻系統構建,在滿足實時性要求和FPGA資源消耗要求下,實現了對Down Scaler視頻算法從PC端軟件處理向FPGA平臺硬件處理的移植。經測試,由TPG生成的1080P視頻流經過本文設計的Down Scaler系統,成功輸出了720P視頻流,Down Scaler的性能滿足了設計要求。
隨著系統設計和算法日益復雜,新的設計方法——高層次綜合開始出現并將逐漸取代傳統的硬件系統設計方法,成為系統設計的主流方式。未來的設計者可以從算法的角度直接下降到硬件平臺來完成硬件開發,對于復雜的算法,這一方法將大幅縮短開發周期,顯著降低代碼量,同時也為算法工程師和軟件工程師打開了硬件設計的大門。
[1]Wim Meeus,Kristof Van Beeck,Toon Goedemé,et al.An overview of today’s high-level synthesis tools[J].Design Automation for Embedded System,2012,16(3):31-51.
[2]ARM.AMBA 4 AXI4-Stream Protocol Specification[EB/ OL].[2016-05].http://infocenter.arm.com/help/index. jsp?topic=/com.arm.doc.ihi0051a/index.html.
[3]Xilinx.LogiCORE IP Test Pattern Generator v5.0[EB/OL]. [2016-05].http://www.xilinx.com/support/answers/ 56929.html.
[4]Xilinx.LogiCORE IP AXI Video Direct Memory Access v6.0 [EB/OL].[2016-05].http://www.xilinx.com/support/documentation/ip_documentation/axi_vdma/v6_0/pg020_axi_vdma. pdf.
[5]Xilinx.LogiCORE IP AXI Interconnect v2.0[EB/OL]. [2016-05].http://www.xilinx.com/support/documentation/ip_documentation/axi_interconnect/v2_0/pg059-axi-interconnect.pdf.
[6]Xilinx.7 Series FPGAs Memory Interface Solutions v1.9 and v1. 9a[EB/OL].[2016-05].http://www.xilinx.com/support/documentation/ip_documentation/ug586_7Series_MIS.pdf.
[7]Xilinx.LogiCORE IP Clocking Wizard v5.0[EB/OL].[2016-05].http://www.xilinx.com/support/documentation/ip_ documentation/clk_wiz/v5_0/pg065-clk-wiz.pdf.
[8]Xilinx.LogiCORE IP Video In to AXI4-Stream v3.0[EB/ OL].[2016-05].http://www.xilinx.com/support/documentation/ip_documentation/v_axi4s_vid_out/v3_0/pg044_v_axis_ vid_out.pdf.
[9]Xilinx.LogiCORE IP AXI4-Stream to Video Out v3.0[EB/ OL].[2016-05].http://www.xilinx.com/support/documentation/ip_documentation/v_axi4s_vid_out/v3_0/pg044_v_axis_ vid_out.pdf.
[10]Xilinx.LogiCORE IP Video Timing Controller v6.0[EB/ OL].[2016-05].http://www.xilinx.com/support/documentation/ip_documentation/v_tc/v6_0/pg016_v_tc.pdf.
[11]徐家惠,戚海峰,高健,等.基于Vivado HLS的AC97音頻系統設計[J].實驗室研究與探索,2014,32(12):35-38.
安航(工程師),研究方向為嵌入式系統開發與應用。
Down Scaler Video System Based on Vivado HLS
An Hang
(School of Microelectronics,Xidian University,Xi'an 710126,China)
The design of Down Scaler video system based on FPGA is introduced.The key component of the system is XC7K325T chip on Xilinx Kintex-7 board,and Vivado design suite is used to design,including the use of Vivado HLS for Down Scaler module design.Firstly,the Down Scaler is described with C/C++language according to the specifications of Vivado HLS.Then,the RTL model and the IP core are generated by the Vivado HLS tool.Finally,a real-time video system is built by connecting the Down Scaler IP core and other Xilinx IP cores such as TPG and VDMA.The design transforms the Down Scaler video algorithm from the PC-based software processing method to the FPGA-based hardware processing method under the condition of meeting the requirementsof real-time performance and FPGA resource consumption.
Vivado HLS;FPGA;Down Scaler;high-level synthesis
TN791
:A
薛士然
2016-05-27)