新聞中心

EEPW首頁 > 設計應用 > 使用面向FPGA的OpenCL設計兩百萬點頻域濾波器

使用面向FPGA的OpenCL設計兩百萬點頻域濾波器

作者:Dmitry Denisenko 時間:2015-11-09 來源:電子產品世界 收藏
編者按:快速傅里葉變換(FFT)是信號處理應用的基礎。FPGA供應商一直以來提供了運行良好的FFT庫,處理適配到FPGA片內存儲器中的大量數據。但是,如果數據規(guī)模太大,應該如何應對? 為解決這一問題,FPGA設計人員現在必須要做出設計決定,這些決定互相糾纏在一起,例如,片內FFT內核的配置選擇,其數量,它們怎樣連接并訪問外部存儲器,多個內核之間的同步等。分析所有這類設計決定就是要能夠很好的結合現有產品,在HDL中編程,這會非常耗時,而且?guī)砹诵阅軉栴}。采用OpenCL等高級編程語言,能夠很快的完成系統(tǒng)設計分析。本

除了復制一個片外FFT計算流水線,還將以下部件加入到系統(tǒng)中:

本文引用地址:http://2s4d.com/article/281882.htm

  1. 頻域的復數乘法被加入到第三個F1T模塊中。coef緩沖保存了兩百萬復數乘法系數。

  2. 增加了I/O輸入和I/O輸出內核,對萬兆以太網通道上的外部存儲器負載進行逼真的建模 。采用這些內核,能夠繼續(xù)純軟件開發(fā),在內核計算流水線完全優(yōu)化好之后,再集成以太網通道。I/O輸入內核在每一時鐘周期產生一個采樣,I/O輸出每一時鐘周期占用一個采樣。

  正如片外FFT試驗所示,只能適配兩個F1T模塊,采用POINTS=4。因此,要完成全部計算,數據要通過硬件兩次。對于2M點數,系統(tǒng)總吞吐量只有120 MSPS,低于目標150 MSPS。通過把數據長度減小到1M點,能夠適配POINTS=8版本,吞吐量達到198 MSPS。這表明,只要能夠讓POINTS=8版本適配2M點數,就還能提高性能!

  在圖2中,找出全流水線的優(yōu)化結構是整個設計過程的下一步。首先能夠提高的是去掉tmp3緩沖。兩邊都以同樣的方式訪問它(轉置寫和讀操作)。因此,可以通過通道把第二和第三個F1T模塊直接連接起來。這要求轉置內核將其輸出寫入到外部存儲器中,或者通道中,獲取內核也是相似的修改。這類修改是由主機動態(tài)控制的,因此,可以使用獲取內核的一個物理例化。注意,這改變了與外部存儲器的連接。但是,根本不用對此擔心——編譯器已經為系統(tǒng)生成了高效的定制外部存儲器互聯。

  進一步的改進是,把第二個轉置“T”從寫到tmp1改為從tmp1讀(tmp1中的數據以不同的方式存儲,但是效果一樣)。這樣,轉置就不需要本地存儲器緩沖了。

  原來是通過兩級來實現轉置的:第一,所需的數據被裝入到本地存儲器中,然后,使用轉置地址從本地存儲器讀取。為高效的使用這類流水線,編譯器自動將本地存儲器系統(tǒng)的緩沖加倍。以這種方式,流水線的裝入部分能夠將數據裝入到一個副本中,而讀部分能夠從另一副本讀取以前的數組。自動雙緩沖非常適合的轉置算法,但是太昂貴了。相反,重新編寫轉置內核。這一內核只需要一個緩沖,支持同時讀寫多個數據點。對這一轉置內核的介紹已經超出了本文的范圍。

  經過以上修改后,能夠采用POINTS=8配置適配2M點的FFT,吞吐量達到164 MSPS。

4 調度

  只能適配F1T的兩個副本。圖3顯示了怎樣調度數據流,以便完全利用流水線。注意,在穩(wěn)定狀態(tài)下,流水線交替處理第二和第三組數據,不需要額外的緩沖。由CPU上運行的主程序控制這種調度,使用動態(tài)分析工具進行驗證。

5 緩沖分配

  在系統(tǒng)中,主程序控制了包含那個緩沖區(qū)的DDR塊。DDR塊只要不是同時讀寫,在讀操作或者寫操作時的效率最高,因此,在兩個DDR塊之間按以下原則來分配5個緩沖:

  ? DDR塊#0分配input和tmp2。

  ? DDR塊#1分配tmp1、coef和out。

  給DDR塊分配一個緩沖就是在OpenCL主程序中修改一行代碼。編譯器和底層平臺完成其他任務。能夠自動完成這一過程,在2-DDR和4-DDR電路板上進行了試驗,為每一塊電路板找到緩沖到存儲器塊的最佳映射。

6 結論

  在本文中,介紹了怎樣使用為提供的Altera OpenCL SDK,設計2M點數。使用軟件類型的仿真對所有功能進行了驗證。每一個硬件編譯都能夠正確工作。并沒有打開硬件仿真器,也不用擔心時序收斂問題。

參考文獻:

  [1]D. H. Bailey. FFTs in external of hierarchical memory Proc. of ACM/IEEE Conf. on Supercomputing’89 (SC89), 1989, 234-242

  [2]FFT (1D) Off-Chip Design Example.[EB/OR] https://www.altera.com/support/support-resources/design-examples/design-software/opencl/fft-1d-offchip.html


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉