91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

使用OpenCL for FPGA設(shè)計200萬點頻域濾波器

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:嵌入式計算設(shè)計 ? 2022-06-09 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

片上 FFT

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

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

要處理的點數(shù) (N)

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

動態(tài)支持更改要處理的點數(shù)

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

數(shù)百萬點 FFT

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

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

pYYBAGKhrbGAWKhjAAJJ6ZWS2ow750.png

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

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

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

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

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

全過濾設(shè)計

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

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

poYBAGKhrbqAeTMFAAIWicPJeQI958.png

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

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

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

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

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

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

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

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

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

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

調(diào)度

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

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

pYYBAGKhrcKAbZ35AATz4VGrdVg895.png

緩沖區(qū)分配

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

DDR bank #0 獲得輸入和tmp2

DDR bank #1 獲取tmp1、coef和out

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

結(jié)論

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

作者:Dmitry Denisenko,Mykhailo Popryaga

審核編輯:郭婷

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

    關(guān)注

    162

    文章

    8410

    瀏覽量

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

    關(guān)注

    11

    文章

    753

    瀏覽量

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

    關(guān)注

    2

    文章

    1010

    瀏覽量

    45664
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    交流單相濾波器與三相濾波器的核心區(qū)別解析

    在電力系統(tǒng)中,濾波器的應(yīng)用至關(guān)重要,而單相濾波器和三相濾波器是其兩大主要類別。這兩種濾波器并非僅因相位數(shù)量不同,而是在設(shè)計原理、核心功能和應(yīng)用領(lǐng)域上存在根本性差異。理解這些差異是進(jìn)行正
    的頭像 發(fā)表于 02-04 15:53 ?191次閱讀

    萬點數(shù)據(jù)如何穩(wěn)定采集?基于 BL118 Node-RED 的工業(yè)邊緣匯聚方案

    在智慧工廠、能源管理、園區(qū)級監(jiān)控項目中,**“上萬點數(shù)據(jù)采集”**已經(jīng)不是什么極端需求,而是越來越常見的日常場景。PLC 越來越多、儀表越來越密、數(shù)據(jù)頻率越來越高,但真正讓項目頭疼的,從來不是“點數(shù)
    的頭像 發(fā)表于 01-21 17:46 ?1112次閱讀
    上<b class='flag-5'>萬點</b>數(shù)據(jù)如何穩(wěn)定采集?基于 BL118 Node-RED 的工業(yè)邊緣匯聚方案

    通信系統(tǒng)中濾波器的種類及特點(1)

    濾波器在通信系統(tǒng)中無處不在,從體積上看,有尺寸龐大的腔體濾波器,有中等的SAW濾波器,還有較小的表貼濾波器。從功能上看,毫無疑問,每種濾波器
    的頭像 發(fā)表于 12-29 09:17 ?6152次閱讀
    通信系統(tǒng)中<b class='flag-5'>濾波器</b>的種類及特點(1)

    BL116:為萬點采集時代打造的工業(yè)網(wǎng)關(guān)

    “上萬點數(shù)據(jù)”? 鋇錸技術(shù)推出的? BL116 萬點采集工業(yè)物聯(lián)網(wǎng)關(guān) ,正是為這個時代而生的。 它不是“常規(guī)網(wǎng)關(guān)”的加強版,而是一臺為高密度數(shù)據(jù)采集、強穩(wěn)定運行和多協(xié)議互聯(lián) 專門設(shè)計的工業(yè)數(shù)據(jù)樞紐 。 1 不是強,而是更強:為 10000數(shù)據(jù)點
    的頭像 發(fā)表于 12-25 16:33 ?186次閱讀
    BL116:為<b class='flag-5'>萬點</b>采集時代打造的工業(yè)網(wǎng)關(guān)

    華碧實驗室助力天通瑞宏濾波器產(chǎn)品順利通過AEC-Q200認(rèn)證

    近日, 華碧實驗室 協(xié)助 天通瑞宏科技有限公司 自主研發(fā)的車規(guī)級濾波器產(chǎn)品順利通過 AEC-Q200 檢測認(rèn)證, 這是天通瑞宏濾波器產(chǎn)品研發(fā)實力的又一次印證,標(biāo)志著 天通瑞宏 在智能網(wǎng)聯(lián)汽車時代邁出
    的頭像 發(fā)表于 10-23 11:07 ?319次閱讀
    華碧實驗室助力天通瑞宏<b class='flag-5'>濾波器</b>產(chǎn)品順利通過AEC-Q<b class='flag-5'>200</b>認(rèn)證

    有源濾波器與無源濾波器的區(qū)別

    濾波器是根據(jù)電路參數(shù)對電路頻帶寬度的影響而設(shè)計出來的工程應(yīng)用電路,濾波器種類很多,有源濾波器和無源濾波器的區(qū)別我們最簡單的分別辦法是看看是否需要電源,在作用上最大的區(qū)別在于有源
    的頭像 發(fā)表于 06-18 09:03 ?1821次閱讀

    GNSS 低噪聲放大器前端模塊,集成前濾波器和后濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()GNSS 低噪聲放大器前端模塊,集成前濾波器和后濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有GNSS 低噪聲放大器前端模塊,集成前濾波器和后濾波器的引腳圖、接線圖、封裝手
    發(fā)表于 06-06 18:34
    GNSS 低噪聲放大器前端模塊,集成前<b class='flag-5'>濾波器</b>和后<b class='flag-5'>濾波器</b> skyworksinc

    濾波器廠家分享:開關(guān)插座式濾波器線材連接和彈片安裝小技巧

    在電子設(shè)備應(yīng)用中,開關(guān)插座式濾波器能有效濾除干擾信號,保障設(shè)備穩(wěn)定運行。而線材連接和彈片安裝這兩個環(huán)節(jié),對濾波器的性能發(fā)揮起著關(guān)鍵作用。下面就為大家分享一些實用的小技巧。 線材連接小技巧 線材連接前
    的頭像 發(fā)表于 06-06 15:01 ?762次閱讀

    測量電子電路設(shè)計(濾波器篇)

    主要介紹如何從放大了的信號中除去有害噪聲,提取有用信號的濾波技術(shù)。書中介紹處理低頻信號所必需的RC濾波器、有源濾波器、LC濾波器,以及低頻濾波器
    發(fā)表于 05-17 16:54

    Sky5? 低電流 GNSS LNA 前端模塊,集成前置濾波器和后置濾波器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()Sky5? 低電流 GNSS LNA 前端模塊,集成前置濾波器和后置濾波器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有Sky5? 低電流 GNSS LNA 前端模塊,集成前置濾波器和后置
    發(fā)表于 05-14 18:31
    Sky5? 低電流 GNSS LNA 前端模塊,集成前置<b class='flag-5'>濾波器</b>和后置<b class='flag-5'>濾波器</b> skyworksinc

    基于 FPGA 的任意波形發(fā)生+低通濾波器系統(tǒng)設(shè)計

    第一部分 設(shè)計概述 1.1 設(shè)計目的 本次設(shè)計包括基于FPGA的任意波形發(fā)生設(shè)計實現(xiàn)和基于FPGA的低通濾波器設(shè)計實現(xiàn)。 波形發(fā)生是一種
    發(fā)表于 05-07 15:34

    濾波器與電容器的小貼士:實用指南與注意事項

    范圍內(nèi)提取信號(如無線電接收機(jī)的調(diào)諧)。 帶阻濾波器 :抑制特定頻率干擾(如濾除電源線上的50Hz/60Hz工頻噪聲)。 關(guān)注截止頻率與滾降速率 截止頻率 :決定濾波器開始衰減信號的頻率。 滾降速率 (dB/octave):表
    的頭像 發(fā)表于 03-27 09:26 ?1015次閱讀

    高帶通TSIF集成濾波器

    低通濾波器 高通濾波器 帶通濾波器 帶阻濾波器 全通濾波器 濾波器類型 作用 頻率特性 應(yīng)用場景
    的頭像 發(fā)表于 03-20 15:42 ?951次閱讀
    高帶通TSIF集成<b class='flag-5'>濾波器</b>

    電源濾波器的主要應(yīng)用領(lǐng)域有哪些

    設(shè)備的工作狀態(tài),同時防止其他設(shè)備產(chǎn)生的電磁噪聲通過電源線傳播。電源濾波器通過阻抗適配網(wǎng)絡(luò)工作,其輸入、輸出側(cè)與電源和負(fù)載側(cè)的阻抗適配越大,對電磁干擾的衰減效果越顯著。濾波器可以對電源線中特定頻率的頻或該頻
    的頭像 發(fā)表于 03-05 16:41 ?1230次閱讀