張俊濤,付芳琪,曹夢娜
(陜西科技大學電氣與信息工程學院,西安710021)
基于Vivado HLS的FFT IP核設計與實現
張俊濤*,付芳琪,曹夢娜
(陜西科技大學電氣與信息工程學院,西安710021)
研究基于Xilinx高層次綜合工具HLS設計FFT IP核的新方法,并在Zynq平臺上搭建音頻頻譜顯示系統用于對設計的FFT IP核進行測試。首先用MATLAB生成1 024點FFT算法所需要的旋轉因子,然后用C語言編寫FFT算法程序后經HLS綜合成IP核并進行了兩次優化,與優化前相比延遲時間節省了19%到40%,LUT資源節省18.5%。測試結果表明,所設計的FFT IP能夠成功地實現音頻信號的頻譜分析。
高層次綜合;FFT;IP核;設計;頻譜;測試
FFT算法在數字信號處理中占有非常重要的地位,用于對信號進行頻譜分析。FFT既可以通過軟件編程的方式實現,也可以用FPGA實現。由于FPGA具有并行處理的特點,因此基于FPFA實現的FFT具有更高的運算速度和可靠性。但設計FFT IP核需要掌握硬件描述語言,并在提高時序等性能方面需要進行反復仿真和優化,為滿足頻譜處理在精度和實時性方面需要,開發難度大。
HLS是Xilinx新一代開發平臺Vivado中內嵌的高層次綜合工具,通過C、C++或SystemC對信號或數字處理進行建模,然后通過HLS轉換成RTL模型,大大提高了FPGA開發效率,加速了FPGA在高性能數字信號處理領域的應用。
本文基于HLS設計FFT IP核,與傳統實現方法相比降低了設計難度,縮短了設計時間,并便于優化處理以提高速度和資源利用率。
FFT是離散傅里葉變換DFT的快速算法。FFT算法可分為兩大類,基于時域抽樣法和基于頻域抽樣法。本文使用基-2時域抽樣FFT算法,下面是該算法具體介紹。
1.1基-2時域抽樣FFT算法原理
時域抽樣法FFT處理N=2M的離散信號x(k),首先將變量k按奇偶分為兩列,每列長度為N/2。

考慮X1(k)和X2(k)具有周期性,周期為N/2,同時旋轉因子所以X(k)可以分解成前后長度為(N/2)的兩段,其結果如下式所示。

上式是一次分解后FFT算法,對于N=2M點離散信號來說可以將其進行log2N次分解來實現FFT算法,也就是說該算法由M級碟形運算構成,每一級有N/2個蝶形運算。M級FFT算法其復乘次數為復加次數為NL=NlogN,與
3) 對景也從一個側面體現出文化的滲透,它反映出特定階級的思想文化與價值觀念,它是一種符號、一種意象,記錄了一座城市的歷史.
2DFT算法相比復乘運算量大大減少,因此易于工程上實現[1-3]。
Vivado HLS工具的應用突破了以往開發FPGA時采用HDL文本語言設計系統造成的瓶頸,通過C、C++或System C可以對信號或系統實現直接建模,是FPGA開發的一種全新的設計理念和想法。開發人員通過HLS開發工具完成以All Programma?ble SOC為基礎、利用軟硬件協同設計方式的產品開發。利用HLS設計工具對FPGA進行開發時效率就能夠得到很大程度的提高,用戶不再需要具有特別扎實的硬件知識和熟練HDL編程就能夠建立數學模型,因此HLS在FPGA開發中將占據著重要的地位和實用價值,對數字信號的發展起到了極大的推動作用,加速了FPGA在高性能信號和數據領域的推廣。這種方法能減少FPGA的開發時間,還可以在很大程度上利用已經存在的可靠軟件代碼。
基于Vivado HLS進行設計的流程圖1所示,其中最關鍵的任務是利用C或C++語言編寫一個具備特定作用的函數和適用該設計的測試平臺,該平臺可以檢測搭建的系統的正確性和性能,然后再通過C仿真器對模型所具備的功能進行檢驗。若結果滿足對設計提出的需求,便使用Vivado HLS工具把C模型轉換為相應的RTL級模塊[4-5]。有了RTL模塊之后,就可以通過HLS內置的仿真器來檢驗建立的架構和功能。

圖1 Vivado HLS設計流程圖
從FFT原理可以看出,旋轉因子在計算中起著非常關鍵的作用。由于旋轉因子可表示為為求旋轉因子的值,必須計算正余弦函數值。在序列N很大的情況下,計算正余弦的運算量很大,直接影響FFT的運算速度,所以旋轉因子的產生方式以及產生所占用的時間會直接影響整個運算速度[6-7]。
本文首先用MATLAB產生所將需要的旋轉因子放在數組里存儲,然后使用Vivado HLS工具實現FFT算法并封裝成IP核。通過對存儲器進行查找獲取需要的旋轉因子值,以存儲空間來換取運算速度的的提高。
3.1旋轉因子的生成
本文采用查表法,利用MATLAB軟件生成所需要的旋轉因子的正弦系數與余弦系數并將它們保存在文檔中用于碟形單元計算,使以后計算1024點的FFT時可以直接調用,避免了進行碟形運算時才開始計算所需要的旋轉因子,這樣很大程度上減少計算復雜度節省了時間[10-12]。根據WN潛在的對稱性,因而只需要計算N/2長度的WN系數值就足夠,旋轉因子的正弦部分寫入到sin_data.dat文件中,余弦部分寫入到cos_data.dat文件中,生成旋轉因子的MATLAB代碼如下所示。

3.2利用HLS設計FFT IP核
由于HLS可以運行C/C++/System語言,本文直接使用C語言完成FFT算法編程,并對FFT算法進行優化,使其性能與速度都有所提升,將FFT算法轉換成硬件實現并創建FFT IP,供在Vivado中搭建音頻頻譜分析系統時使用。
(1)新建Vivado工程,利用Vivado HLS工具導入FFT設計的C源代碼fft.c,頭文件fft.h、旋轉因子sin_data.dat和cos_data.dat。部分代碼如下。

(2)導入共同的測試數據in.dat以及系統的測試程序fft_test.c。
(3)進行硬件配置,時鐘周期選擇10(ns),part se?lection選擇為:Zedboard,芯片型號為xc7z020clg484。
(4)運行“Run C simulation”命令執行C仿真,測試FFT程序設計的正確性。在運行c仿真的過程中,Console(控制臺)窗口內給出仿真過程相關的信息。圖2所示的是0~1 023共1 024點數據經過FFT運算后在控制臺打印的輸出結果。在保證測試數據相同情況下,利用MATLAB自帶FFT算法來驗證所設計算法正確性,圖3是調用MATLAB內自帶FFT函數輸出結果。通過對比分析由于精確度不一樣,在允許范圍內產生微小的誤差,證明算法設計是正確的。

圖2 控制臺打印結果

圖3 MATLAB仿真結果
(5)將FFT算法進行綜合,綜合成功后成功生成System C、VHDL、和Verilog格式的RTL文件。通過查看性能分析報告,Pipelined欄下面顯示“no”表示循環沒有實現流水線操作,訪問存儲器沒有執行優化操作,因此此處實現的FFT算法并未達到最優。使用HLS工具可以從粗優化、精優化、總線化3個方面對設計進行優化,實現算法從串行運算到并行運算的轉換,從而提高對數據的處理速度。優化完成后,對FFT算法再進行綜合。
①粗優化命令。對copy2add、stage1_loop循環執行pipeline流水線操作命令,該命令的作用是使函數執行方式由串行執行變為全并行執行,對頂層函數fft進行dataflow數據流粗粒度優化操作。
②精優化命令。根據要處理數據的類型和位寬,進行優化,降低資源消耗。本次設計中輸入數據為16 bit音頻信息,因此可以將輸入數據類型設置為uint16:即16 bit寬度的無符號整型數據,程序中的數據類型根據實際情況也設置成相應的類型。
③頂層函數的端口總線設置。為了提高對大量數據的處理速度,采用AXI4 Stream的方式來進行數據的處理,即CPU通過使用streaming方式直接和IP通信。
表1所示是運行FFT算法優化前后所占用的延遲和吞吐量信息,表2給出了該算法優化前后所占用的資源信息。通過觀察可以看出1024點的FFT算法延遲時間經過優化之后大大減少,資源占用除了BRAM_18K增多,FF和LUT均減少了很多,最終提高了FFT算法性能和資源利用率。

表1 優化前后延遲和吞吐量信息

表2 優化前后資源占用情況
(6)將經過優化操作的FFT程序進行C/RTL聯合仿真,測試生成的RTL代碼的正確性,經過程序驗證可以得出和用C仿真相同的結果,表明C語言實現的RTL代碼是正確的。然后將生成的RTL代碼以IP的形式導出,供接下來在FPGA上進行頻譜分析時使用。
3.3HLS工具實現FFT IP核優勢
使用Vivado HLS高級綜合工具來實現FFT IP核優勢在于大大減少工作量,縮短FPGA開發周期。我們僅需要用C、C++、System C等高級語言來完成FFT算法描述,HLS工具負責將算法轉換成RTL級實現,將用高級語言描述的算法中的各個模塊按照一定的規則和傳統的硬件實現所需模塊進行一一的映射,而以往FPGA實現FFT IP核時需要考慮5個模塊即輸入選擇模塊、存儲模塊ROM、存儲模塊RAM、蝶形運算模塊、時序控制模塊在硬件上如何實現,這使設計變得復雜而且對不熟悉硬件描述語言的工程師而言更為困難增加了工作量。
搭建一個完整的頻譜顯示系統,以測試FFT IP核的正確性。系統主要包含FFT IP核、用于顯示的OLED IP核以及控制音頻信號采集的Audio IP構成。對設計的各個子模塊分別進行設計和驗證,最終搭建出完整的系統。通過軟硬件協同設計[8]這種方式設計并調試搭建的硬件系統和編寫的控制程序,完成軟件和硬件各自的設計之后,把兩個部分結合起來協同調試系統,隨機播放一段音頻信號,并由音頻輸出接口得到隨機的音頻信息,在經過硬件PL部分的FFTIP實現頻譜處理后傳送到OLED進行頻譜的實時顯示。完整的能夠實時顯示隨機音頻頻譜的硬件系統結構如圖4所示。

圖4 頻譜顯示系統結構圖
整體系統的搭建是在Vivado環境中完成的,系統測試是以軟硬件協同設計的思想來實現的。整個驗證過程包括硬件部分和軟件部分,硬件部分是在Vivado環境中搭建測試系統,軟件部分利用Vivado設計套件提供的SDK工具編寫頻譜顯示系統的驅動程序以及控制程序,然后是將硬件系統生成的比特流文件燒寫至開發板中,利用軟件編寫的程序進行運行方式的控制。
4.1音頻頻譜顯示系統搭建
在Vivado開發環境下搭建整體系統,利用自己創建的FFT IP、OLED IP、音頻IP以及Xilinx提供的IP來完成完整的頻譜顯示系統的搭建,將產生的比特流燒制Zynq系列的ZedBoard開發板上[9-10]。可以通過在OLED觀察音頻頻譜來判斷是否能夠正確的測試所設計的系統。圖5為使用自己設計FFT IP核搭建的音頻顯示系統。

圖5 使用自己設計FFT IP搭建頻譜顯示系統
利用SDK軟件將各個IP核的驅動模塊統一起來,組成一個完整的系統,進行音頻頻譜信息的顯示。
4.2系統測試及結果分析
在電腦上的播放器播放一段音頻,通過耳機輸出到開發板,經FFT IP核處理后在OLED上顯示出音頻信號的頻譜圖。圖6為自己設計FFT IP核頻譜分析結果。

圖6 自己設計FFT IP頻譜分析結果
結果表明使用HLS高層次綜合工具設計的FFT IP能夠完成對信號的頻譜處理并輸出頻譜信息,說明HLS高層次設計工具在實際應用中能夠發揮重大的作用,在已有IP不能滿足設計要求時,不用使用傳統HDL語言生成IP的方法,使用Vivado HLS工具進行算法設計優化生成RTL級模型最后以IP-XACT等多種可以讓別的Xilinx工具識別并接受的類型格式輸出并轉化為IP的方式,可以顯著的提高生產效率。
利用Vivado高層次綜合工具HLS使用C語言進行FFT算法編程仿真優化并封裝成IP核,充分體現了Vivado HLS的優勢,為不熟悉HDL語言人員提供一種新的設計思路。另外,由于所設計的FFT IP核輸入部分可以是實數,而且FFT IP核本身可以進行倒序輸入順序輸出,因此與Xilinx提供的FFT IP核相比,不需要進行數據的前處理和后處理。
[1]王華英,于夢杰,劉飛飛,等.基于快速傅里葉變換的四種相位解包裹算法[J].強激光與粒子束,2013,25(5):1129-1133.
[2]楊晶,康寧,王元慶.基于低成本FPGA的FFT設計實現[J].電子器件,2013,36(4):506-509.
[3]陳天峰,師劍軍,崔瓊.基于數據重復的快速傅里葉算法改進[J].探測與控制學報,2013,35(5):79-82.
[4]James Hrica.利用賽靈思Vivado HLS實現浮點設計[J].今日電子,2013(1):34-38.
[5]徐家惠,戚海峰,高健,等.基于Vivado HLS的AC97音頻系統設計[J].實驗室研究與探索,2014,33(12):36-37.
[6]顧艷麗,周洪敏.基于FPGA的新型高速FFT算法研究與實現[J].電子器件,2008,31(4):1249-1251.
[7]陳豐,潘翔.基于FFT的矩形陣波束形成算法[J].傳感技術學報,2006,19(6):2588-2590.
[8]唐守龍,劉昊,陸生禮,等.淺談SoC設計中的軟硬件協同設計技術[J].電子器件,2002,25(2):183-186.
[9]黃翔,王小華,黃學新.基于FPGA的頻譜分析儀的設計與研制[J].微型機與應用,2011,30(24):20-22.
[10]Abdullah S S,Nam H,Mcdermot M,et al.A High Throughput FFT Processor with no Multipliers[C]//Computer Design,2009. ICCD 2009.IEEE International Conference on.IEEE,2009:485-490.
[11]Xiao X,Oruklu E,Saniie J.Reduced Memory Architecture for CORDIC-Based FFT[C]//Circuits and Systems(ISCAS),Proceed?ings of 2010 IEEE International Symposium on.IEEE,2010:2690-2693.
[12]Malashri A,Paramasivam C.Low Power and Memory Efficient FFT Architecture Using Modified CORDIC Algorithm[C]//Infor?mation Communication and Embedded Systems(ICICES),2013 International Conference on.IEEE,2013:1041-1046.

張俊濤(1966-),男,漢族,陜西西安人,教授,碩士生導師,研究方向為軟件無線電、信號與信息處理、EDA技術及應用;

付芳琪(1990-),女,山西運城人,碩士研究生,研究方向為信號與信息處理、EDA技術及應用,1297412322@qq.com。
Design and Implementation of FFT IP Core Based on Vivado HLS
ZHANG Juntao*,FU Fangqi,CAO Mengna
(Shaanxi University of Science and Technology Institute of Electric and Information Engineering,Xi'an 710021,China)
A new method of designing FFT IP core based on Xilinx high-level synthesis tool HLS is studied,and a audio spectral display test system is built for testing the FFT IP core.First twiddle factors of 1 024-point FFT algo?rithm aregenerated with MATLAB.Then FFT algorithm program written in C language is integrated into the IP core and is optimized twice.Compared with the previous optimization the delay time has saved 19%to 40%,LUT re?sources have saved 18.5%.The test result shows that FFT IP core successfully implements spectral analysis of the audio signal.
high-level synthesis;FFT;IP core;design;spectrum;test
TN851
A
1005-9490(2016)02-0374-05
EEACC:614010.3969/j.issn.1005-9490.2016.02.026
2015-06-02修改日期:2015-07-14