RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用OpenCL for FPGA設(shè)計(jì)200萬(wàn)點(diǎn)頻域?yàn)V波器

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:嵌入式計(jì)算設(shè)計(jì) ? 2022-06-09 16:21 ? 次閱讀

考慮在當(dāng)前 FPGA 架構(gòu)上創(chuàng)建一個(gè)支持 100 萬(wàn)到 1600 萬(wàn)個(gè)點(diǎn)的頻域濾波器,采樣率從每秒 1.2 億到 2.4 億個(gè)樣本。該示例著眼于使用 OpenCL 的 200 萬(wàn)點(diǎn)單精度頻域?yàn)V波器的設(shè)計(jì)決策選項(xiàng)。

這種濾波器使用數(shù)百萬(wàn)點(diǎn)一維 (1D) FFT 將其輸入轉(zhuǎn)換為頻域,將每個(gè)頻率和相位分量乘以一個(gè)單獨(dú)的用戶提供的值,然后將結(jié)果轉(zhuǎn)換回時(shí)域快速傅里葉變換。整個(gè)系統(tǒng)的總體目標(biāo)性能要求是每秒 1.5 億個(gè)樣本 (MSPS),在具有兩個(gè) DDR3 外部存儲(chǔ)器組的當(dāng)前一代 FPGA 上實(shí)現(xiàn) 200 萬(wàn)點(diǎn)的樣本大小。輸入和輸出通過(guò) 10 Gb 以太網(wǎng) (GbE) 直接進(jìn)入 FPGA。

該設(shè)計(jì)使用面向具有 Stratix V GSD8 FPGA 的 BittWare S5-PCIe-HQ 板的 Altera SDK for OpenCL FPGA 編譯器。使用 OpenCL 而不是低級(jí)語(yǔ)言有兩個(gè)原因:

第一個(gè)原因是設(shè)計(jì)數(shù)百萬(wàn)點(diǎn)濾波器需要構(gòu)建復(fù)雜但高效的外部存儲(chǔ)系統(tǒng)。使用較低級(jí)別的設(shè)計(jì)工具,創(chuàng)建單個(gè)塊,例如片上 FFT 或拐角轉(zhuǎn)角相對(duì)容易(特別是因?yàn)槊總€(gè) FPGA 供應(yīng)商都已經(jīng)提供了包含此類塊的庫(kù))。然而,創(chuàng)建外部存儲(chǔ)器系統(tǒng)通常需要大量的 HDL 工作。正如我們稍后會(huì)看到的,這種情況可能特別具有挑戰(zhàn)性,因?yàn)檎麄€(gè)系統(tǒng)的配置在一開(kāi)始是未知的。

選擇 OpenCL 的第二個(gè)原因是對(duì) FPGA 邏輯的主機(jī)級(jí)控制。對(duì)于這個(gè)設(shè)計(jì),從一開(kāi)始就很明顯,兩個(gè)完整副本的數(shù)百萬(wàn)點(diǎn) FFT 內(nèi)核無(wú)法容納在單個(gè)設(shè)備上,因此單個(gè)數(shù)據(jù)集必須至少通過(guò) FPGA 邏輯兩次才能產(chǎn)生最終輸出。協(xié)調(diào)這種共享,同時(shí)允許動(dòng)態(tài)改變數(shù)據(jù)集大小、乘法系數(shù),甚至完全改變 FPGA 功能以實(shí)現(xiàn)其他功能,最好留給 CPU。

使用面向 FPGA 的 OpenCL 編譯器解決了這兩個(gè)挑戰(zhàn),因?yàn)樗鼧?gòu)建了一個(gè)定制的高效外部存儲(chǔ)器系統(tǒng),同時(shí)允許對(duì) FPGA 邏輯進(jìn)行細(xì)粒度控制。

片上 FFT

對(duì)于這個(gè)設(shè)計(jì),假設(shè)我們已經(jīng)有一個(gè) FFT 內(nèi)核,可以處理完全適合 FPGA 的數(shù)據(jù)大?。ǚQ為“片上 FFT”),因?yàn)槊總€(gè) FPGA 供應(yīng)商都提供這樣的內(nèi)核。這樣的核心至少可以通過(guò)以下方式參數(shù)化:

數(shù)據(jù)類型(固定或單精度浮點(diǎn))

要處理的點(diǎn)數(shù) (N)

并行處理的點(diǎn)數(shù) (POINTS)

動(dòng)態(tài)支持更改要處理的點(diǎn)數(shù)

給定這樣一個(gè)片上 FFT 核,構(gòu)建整個(gè)系統(tǒng)需要兩個(gè)步驟:首先,構(gòu)建一個(gè)可以處理數(shù)百萬(wàn)點(diǎn)的 FFT 核,其次,將兩個(gè)這樣的核拼接在一起,并在它們之間進(jìn)行復(fù)雜的乘法運(yùn)算以創(chuàng)建整個(gè)系統(tǒng)。

數(shù)百萬(wàn)點(diǎn) FFT

使用外部存儲(chǔ)實(shí)現(xiàn) FFT 的經(jīng)典方法是圖 1 所示的六步算法,該算法將單個(gè)一維數(shù)據(jù)集視為二維 (2M = 2K x 1K)[1]。

圖 1:六步 FFT 算法的邏輯視圖。

pYYBAGKhrbGAWKhjAAJJ6ZWS2ow750.png

六步算法顯示了單獨(dú)的計(jì)算內(nèi)核和外部?jī)?nèi)存緩沖區(qū)?!癋etch”內(nèi)核從外部存儲(chǔ)器讀取數(shù)據(jù),可選擇轉(zhuǎn)置,并將其輸出到通道(在 OpenCL 2.0 命名法中也稱為“管道”)。在硬件中,通道被實(shí)現(xiàn)為具有編譯器計(jì)算深度的 FIFO?!捌?1D FFT”是未經(jīng)修改的供應(yīng)商的 FFT 內(nèi)核,使用通道獲取輸入并產(chǎn)生位反轉(zhuǎn)輸出?!稗D(zhuǎn)置”總是轉(zhuǎn)置從其輸入通道讀取的數(shù)據(jù),可選擇將其乘以特殊的旋轉(zhuǎn)因子,并以自然順序?qū)⑤敵鰧?xiě)入外部存儲(chǔ)器。

如圖所示,數(shù)據(jù)通過(guò) Fetch ? 1D FFT ? Transpose (F1T) 管道發(fā)送兩次以產(chǎn)生最終輸出。這為我們提供了第一個(gè)重要的設(shè)計(jì)選擇:要么擁有一個(gè) F1T 管道副本以節(jié)省空間,要么擁有兩個(gè)副本以獲得更高的吞吐量。

該算法的初始原型設(shè)計(jì)是在模擬器中完成的,以確保轉(zhuǎn)置和旋轉(zhuǎn)因子的地址操作是正確的。仿真器將 OpenCL 內(nèi)核編譯為 x86-64 二進(jìn)制代碼,可以在沒(méi)有 FPGA 的開(kāi)發(fā)機(jī)器上運(yùn)行。從模擬器到硬件編譯是一個(gè)輕松的步驟,因?yàn)槟M器中功能正確的代碼變成了硬件中功能正確的代碼,因此不需要模擬。

出于性能和面積原因,唯一需要修改的是 Fetch 和 Transpose 內(nèi)核使用的本地內(nèi)存系統(tǒng)。高效的轉(zhuǎn)置需要緩沖POINTS本地內(nèi)存中的列/行數(shù)據(jù)。OpenCL 編譯器分析 OpenCL 代碼中對(duì)本地存儲(chǔ)器的所有訪問(wèn),并創(chuàng)建針對(duì)該代碼優(yōu)化的自定義片上存儲(chǔ)器系統(tǒng)。在 POINTS=4 的情況下,原始轉(zhuǎn)置內(nèi)核有四次寫(xiě)入和四次讀取。一個(gè)雙泵的片上 RAM 塊最多可以服務(wù)四個(gè)單獨(dú)的請(qǐng)求,其中最多兩個(gè)是寫(xiě)入。為了支持四寫(xiě)四讀,片上存儲(chǔ)器需要同時(shí)復(fù)制并包含請(qǐng)求仲裁邏輯,這會(huì)導(dǎo)致區(qū)域膨脹和性能損失。但是,可以更改寫(xiě)入模式以使所有四個(gè)寫(xiě)入連續(xù)。OpenCL 編譯器將這四次寫(xiě)入分組為一次寬寫(xiě)入,只提供對(duì)本地內(nèi)存系統(tǒng)的五次訪問(wèn):一次寫(xiě)入和四次讀取。有了這樣的改變,

將設(shè)計(jì)編譯到硬件后,就可以測(cè)量性能了。使用 FPGA 上的 F1T 流水線的單個(gè)副本,我們測(cè)量了 217 MSPS,POINTS=4 和 457 MSPS,POINTS=8,對(duì)于 400 萬(wàn)-點(diǎn) FFT[2]。POINTS=8 版本使用了兩倍的片上 Block RAM,并且此配置中的兩個(gè)副本不適合。這為我們提供了第一個(gè)要探索的設(shè)計(jì)維度——并行處理的點(diǎn)數(shù)與面積。

全過(guò)濾設(shè)計(jì)

現(xiàn)在我們有了數(shù)百萬(wàn)點(diǎn)的 FFT,我們準(zhǔn)備將整個(gè)設(shè)計(jì)放在一起。只需拼接兩個(gè)片外 FFT,我們就可以得到圖 2 中整個(gè)流水線的邏輯視圖。

圖 2:為簡(jiǎn)潔起見(jiàn),完整過(guò)濾器系統(tǒng)的此邏輯視圖顯示 F1T 管道表示為單個(gè)塊。

poYBAGKhrbqAeTMFAAIWicPJeQI958.png

除了復(fù)制單個(gè)片外 FFT 計(jì)算流水線外,系統(tǒng)還添加了以下部分:

頻域中的復(fù)數(shù)乘法被吸收到第三個(gè) F1T 塊中。coef緩沖區(qū)保存著兩百萬(wàn)個(gè)復(fù)數(shù)乘法系數(shù)。

添加了 I/O 輸入和 I/O 輸出內(nèi)核,以真實(shí)地模擬外部存儲(chǔ)器上 10 GbE 通道的額外負(fù)載。使用這些內(nèi)核,我們可以繼續(xù)純粹基于軟件的開(kāi)發(fā),并在核心計(jì)算管道完全優(yōu)化之前離開(kāi)以太網(wǎng)通道集成。內(nèi)核中的 I/O 每個(gè)時(shí)鐘周期生成一個(gè)樣本,而 I/O 輸出每個(gè)時(shí)鐘周期消耗一個(gè)樣本。

正如片外 FFT 的實(shí)驗(yàn)所示,我們只能擬合兩個(gè) F1T 塊,并且只能使用 POINTS=4。因此,數(shù)據(jù)必須通過(guò)硬件兩次才能進(jìn)行完整計(jì)算。這使我們的 200 萬(wàn)個(gè)點(diǎn)的整體系統(tǒng)吞吐量?jī)H為 120 MSPS,低于我們 150 MSPS 的目標(biāo)。但是,通過(guò)將數(shù)據(jù)大小減少到 100 萬(wàn)個(gè)點(diǎn),我們能夠擬合 POINTS=8 的版本并獲得 198 MSPS 的吞吐量。這表明,只要我們能制作一個(gè)適合 200 萬(wàn)個(gè)點(diǎn)的 POINTS=8 版本,性能還是有的。

選擇圖 2 中完整流水線的優(yōu)化結(jié)構(gòu)是整個(gè)設(shè)計(jì)過(guò)程的下一步。我們可以做的第一個(gè)改進(jìn)是刪除tmp3緩沖區(qū)。雙方以相同的方式訪問(wèn)它(轉(zhuǎn)置寫(xiě)入和讀?。?,因此第二個(gè)和第三個(gè) F1T 塊可以通過(guò)通道直接連接。這需要讓 Transpose 內(nèi)核將其輸出寫(xiě)入外部存儲(chǔ)器或?qū)懭胪ǖ?,并?duì) Fetch 進(jìn)行類似的更改。這種變化是由主機(jī)動(dòng)態(tài)控制的,因此可以使用單個(gè)物理 Fetch 實(shí)例。請(qǐng)注意,這會(huì)改變我們與外部存儲(chǔ)器的連接,但我們完全不必?fù)?dān)心這一點(diǎn),因?yàn)?OpenCL 編譯器總是為我們的系統(tǒng)生成高效的自定義外部存儲(chǔ)器互連。

進(jìn)一步的改進(jìn)是將第二個(gè)轉(zhuǎn)置“T”從寫(xiě)入tmp1移動(dòng)到從tmp1讀?。╰mp1中的數(shù)據(jù)存儲(chǔ)方式不同,但最終效果相同)。這消除了對(duì)轉(zhuǎn)置使用的一個(gè)本地內(nèi)存緩沖區(qū)的需要。盡管這種改變并不難實(shí)施,但我們決定放棄它以代替更激進(jìn)的想法。

我們最初的轉(zhuǎn)置實(shí)現(xiàn)分兩個(gè)階段完成:

首先將所有需要的數(shù)據(jù)加載到本地內(nèi)存中,然后使用轉(zhuǎn)置地址從本地內(nèi)存中讀取。為了有效利用這樣的管道,OpenCL 編譯器會(huì)自動(dòng)對(duì)本地內(nèi)存系統(tǒng)進(jìn)行雙緩沖。這樣,管道的加載部分可以將數(shù)據(jù)加載到一個(gè)副本中,而讀取部分可以從另一個(gè)副本中讀取先前的數(shù)據(jù)集。

這種自動(dòng)雙緩沖對(duì)我們的轉(zhuǎn)置算法來(lái)說(shuō)是正確的,但它很昂貴。相反,我們將轉(zhuǎn)置內(nèi)核重寫(xiě)為就地。這樣的內(nèi)核只需要一個(gè)緩沖區(qū),并且支持同時(shí)讀取和寫(xiě)入多個(gè)數(shù)據(jù)點(diǎn)(但是關(guān)于這個(gè)轉(zhuǎn)置內(nèi)核我們將在另一時(shí)間詳細(xì)描述)。

通過(guò)這些更改,我們能夠在 POINTS=8 配置中安裝 200 萬(wàn)點(diǎn) FFT,并實(shí)現(xiàn) 164 MSPS 吞吐量。

調(diào)度

只有兩個(gè) F1T 副本可以容納,但圖 3 顯示了如何安排數(shù)據(jù)流以充分利用管道。請(qǐng)注意,在穩(wěn)定狀態(tài)下,管道會(huì)在一次處理兩個(gè)和三個(gè)數(shù)據(jù)集之間交替,而無(wú)需額外的緩沖區(qū)。此調(diào)度由在 CPU 上運(yùn)行的主機(jī)程序控制,并使用 Dynamic Profiler 工具進(jìn)行驗(yàn)證。

圖 3:在內(nèi)核調(diào)度方面,“0”是 F1T 管道的第一個(gè)物理副本,“1”是第二個(gè)副本。紫色箭頭通過(guò)管道跟隨單個(gè)數(shù)據(jù)集。

pYYBAGKhrcKAbZ35AATz4VGrdVg895.png

緩沖區(qū)分配

在 OpenCL 系統(tǒng)中,主機(jī)程序控制哪個(gè) DDR bank 包含哪些緩沖區(qū)。由于 DDR bank 在讀取或?qū)懭霑r(shí)效率最高,但不是兩者兼而有之,因此我們可以將五個(gè)緩沖區(qū)拆分為兩個(gè) DDR bank,如下所示:

DDR bank #0 獲得輸入和tmp2

DDR bank #1 獲取tmp1、coef和out

將緩沖區(qū)分配給 DDR bank 是 OpenCL 主機(jī)程序中的一行更改。編譯器和底層平臺(tái)負(fù)責(zé)其余的工作。鑒于這種自動(dòng)化,我們可以在 2-DDR 和 4-DDR 板上進(jìn)行試驗(yàn),以找到每個(gè)板的緩沖區(qū)到 bank 的最佳映射。

結(jié)論

本文介紹如何使用 Altera OpenCL SDK for FPGA 設(shè)計(jì) 200 萬(wàn)點(diǎn)頻域?yàn)V波器。所有功能驗(yàn)證均使用軟件樣式的仿真完成,并且每個(gè)硬件編譯都能正常工作。我們沒(méi)有打開(kāi)硬件模擬器,也從不擔(dān)心時(shí)序收斂。

作者:Dmitry Denisenko,Mykhailo Popryaga

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    161

    文章

    7795

    瀏覽量

    177992
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    712

    瀏覽量

    65318
  • 模擬器
    +關(guān)注

    關(guān)注

    2

    文章

    874

    瀏覽量

    43208
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    模擬低通濾波器的設(shè)計(jì)方法有哪些

    減小。 設(shè)計(jì)步驟 : 使用 buttord 函數(shù)計(jì)算濾波器的階數(shù)和截止頻率。 使用 buttap 函數(shù)生成濾波器的極點(diǎn)和零點(diǎn)(對(duì)于巴特沃斯濾波器,只有極點(diǎn),沒(méi)有零
    的頭像 發(fā)表于 11-26 10:07 ?345次閱讀

    emi濾波器是什么濾波器

    EMI濾波器(Electromagnetic Interference Filter)是一種用于抑制電磁干擾(EMI)的濾波器。電磁干擾是指在電子設(shè)備中由于電磁波的傳播而產(chǎn)生的干擾信號(hào),這些干擾信號(hào)
    的頭像 發(fā)表于 08-25 15:59 ?993次閱讀

    濾波器的零點(diǎn)和極點(diǎn)與s參數(shù)有關(guān)嗎

    濾波器的零點(diǎn)和極點(diǎn)是濾波器設(shè)計(jì)中的重要概念,它們與濾波器的頻率響應(yīng)密切相關(guān)。 濾波器的基本概念 濾波器
    的頭像 發(fā)表于 08-21 14:54 ?1070次閱讀

    全通濾波器零極點(diǎn)的特點(diǎn)有哪些

    全通濾波器(All-pass filter)是一種特殊的濾波器,其主要特點(diǎn)是在頻域內(nèi)具有相位失真,但幅度響應(yīng)是平坦的。全通濾波器在信號(hào)處理、通信、音頻處理等領(lǐng)域有著廣泛的應(yīng)用。 一、零
    的頭像 發(fā)表于 08-21 14:42 ?1091次閱讀

    零極點(diǎn)怎么判斷濾波器類型

    傳遞函數(shù)的分母為零的頻率點(diǎn)。在頻域中,零點(diǎn)和極點(diǎn)分別對(duì)應(yīng)濾波器的幅度和相位特性。 1.1 零點(diǎn)點(diǎn)
    的頭像 發(fā)表于 08-21 14:32 ?2327次閱讀

    陷波濾波器怎么進(jìn)行濾波

    陷波濾波器(Notch Filter)是一種電子濾波器,其主要功能是在特定頻率點(diǎn)迅速衰減輸入信號(hào),以達(dá)到阻礙此頻率信號(hào)通過(guò)的濾波效果。這種濾波器
    的頭像 發(fā)表于 08-21 14:04 ?604次閱讀

    陷波濾波器和超前滯后濾波器的差別是什么

    是一種可以在某一個(gè)頻率點(diǎn)迅速衰減輸入信號(hào),以達(dá)到阻礙此頻率信號(hào)通過(guò)的濾波效果的濾波器。它屬于帶阻濾波器的一種,但阻帶非常狹窄,通常其階數(shù)必須是二階(含二階)以上。 原理:陷波
    的頭像 發(fā)表于 08-21 11:18 ?625次閱讀

    iir濾波器和fir濾波器的優(yōu)勢(shì)和特點(diǎn)

    IIR濾波器和FIR濾波器是數(shù)字信號(hào)處理領(lǐng)域中兩種非常重要的濾波器類型。它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。本文將介紹IIR濾波器和FIR
    的頭像 發(fā)表于 07-19 09:28 ?1387次閱讀

    高通濾波器和低通濾波器判別方法

    高通濾波器和低通濾波器是信號(hào)處理領(lǐng)域中非常重要的兩種濾波器。它們?cè)诟鞣N應(yīng)用中都有廣泛的應(yīng)用,如音頻處理、圖像處理、通信系統(tǒng)等。 一、濾波器的基本概念 1.1
    的頭像 發(fā)表于 07-15 11:15 ?1205次閱讀

    低通濾波器、高通濾波器、帶通濾波器的簡(jiǎn)單介紹

    在信號(hào)處理領(lǐng)域,濾波器是一種重要的電子元件或算法,用于從復(fù)雜信號(hào)中提取或抑制特定頻率成分。其中,低通濾波器、高通濾波器和帶通濾波器是最常見(jiàn)的三種濾波
    的頭像 發(fā)表于 07-09 18:04 ?1.6w次閱讀
    低通<b class='flag-5'>濾波器</b>、高通<b class='flag-5'>濾波器</b>、帶通<b class='flag-5'>濾波器</b>的簡(jiǎn)單介紹

    梳狀濾波器的相關(guān)知識(shí)

    請(qǐng)參考我們前一篇文章《數(shù)字濾波器(1)——陷波濾波器》的引言段落。我們還是圍繞著下面的兩個(gè)公式展開(kāi)。公式中,(式-1)時(shí)時(shí)域的差分方程;(式-2)時(shí)z復(fù)頻域的系統(tǒng)函數(shù)形式。
    的頭像 發(fā)表于 06-13 10:11 ?1625次閱讀
    梳狀<b class='flag-5'>濾波器</b>的相關(guān)知識(shí)

    濾波器濾波的本質(zhì):信號(hào)時(shí)頻特性的選擇與處理|維愛(ài)普電源濾波器

    濾波器濾波的本質(zhì)是信號(hào)的時(shí)頻特性處理,即根據(jù)信號(hào)中不同頻率成分的特性,對(duì)信號(hào)進(jìn)行選擇性處理,以達(dá)到去除噪聲、干擾和雜波等目的,從而提高信號(hào)的質(zhì)量和穩(wěn)定性。 濾波器頻域上進(jìn)行操作
    的頭像 發(fā)表于 06-11 11:05 ?436次閱讀
    <b class='flag-5'>濾波器</b><b class='flag-5'>濾波</b>的本質(zhì):信號(hào)時(shí)頻特性的選擇與處理|維愛(ài)普電源<b class='flag-5'>濾波器</b>

    巴特沃斯濾波器是模擬濾波器

    巴特沃斯濾波器是一種模擬濾波器,也是一種在頻域設(shè)計(jì)中常用的濾波器類型。
    的頭像 發(fā)表于 05-22 15:39 ?770次閱讀

    高通濾波器、低通濾波器、帶通濾波器怎樣測(cè)幅頻特性?

    高通濾波器、低通濾波器、帶通濾波器怎樣測(cè)幅頻特性? 高通濾波器、低通濾波器和帶通濾波器是常用的
    的頭像 發(fā)表于 03-28 17:28 ?5005次閱讀

    5g濾波器調(diào)試方法有哪些

    5G濾波器調(diào)試方法主要包括以下幾種常見(jiàn)的方法: 一、頻域頻域法是一種基于頻率響應(yīng)特性的濾波器調(diào)試方法。它通過(guò)對(duì)信號(hào)的頻譜進(jìn)行分析,確定頻率成分的幅度和相位信息,從而對(duì)
    的頭像 發(fā)表于 12-27 11:44 ?1441次閱讀
    RM新时代网站-首页