在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

調用HLS的FFT庫實現N點FFT(hls:fft)

FPGA之家 ? 來源:FPGA之家 ? 2023-07-07 09:08 ? 次閱讀

在HLS中用C語言實現8192點FFT,經過測試,實驗結果正確,但是時序約束不到100M的時鐘,應該是設計上的延時之類的比較大,暫時放棄這個方案,調用HLS中自帶的FFT庫(hls:fft)hls_fft.h。實際上,在HLS中調用該庫實現FFT,其實是Vivado中的那個FFT核實現的,但是HLS中的配置和給定輸入輸出數據比較方便,并且對其外部封裝其他類型的總線接口非常容易。

1.hls_fft.h初探

在HLS中打開示例例程 fft_single ,注意以下幾點:

(1)默認設定

【1】輸入數據和輸出數據的格式固定,必須采用16位定點復數數據,其中1bit表示整數,其他的表示小數部分,即輸入數據范圍 —1 ~ 1,輸出也是 —1 ~ 1;

【2】結構類型為流水線型;

【3】默認點數1024點,當不是這個點數時,除了修改頭文件的點數,還需要修改config里的參數才能重新配置IP核;

【4】默認輸入輸出16位定點,相位因子16位,如果需要改成浮點數輸入輸出,需要更改相位因子為24或25位,并且在config里面更改IP核的配置;

【5】HLS中的FFT的IP庫只處理復數類型complex的FFT數據。

【6】Xilinx FFT IP塊只對復數類型數據進行操作。盡管可以對把所有虛部都設為0的復數進行FFT,但是通過預處理數據可以更有效地執行FFT。

【7】HLS需要bit-reverse命令數據塊后端,所說的自然順序和一個O (N)轉換適用于FFT輸出提取的頻譜數據N-point真實數據集。注意,第一個輸出兩包第0個和512(純粹的)分別輸出頻譜數據的實部和虛部。

【8】設計是完全流水線,流設計高吞吐量;用于數據的連續處理,但具有節流功能(如果輸入停止,則停止)。

【9】AXI4-Stream接口用于連接IP Integrator (IPI)中的所有塊。

(2)在testbench中自己給輸入信號進行測試,先給定一個正弦信號,注意下面的賦值,在2016.2版本是可以直接給復數的實部和虛部賦值的,但是2018.2這種方式會報錯,需要采用下面的賦值函數來給一個復數賦值

a3f69d50-1c5c-11ee-962d-dac502259ad0.png

(3)scale放縮因子的設定

如果不設置放縮因子,輸入上述 —1 ~ 1的正弦信號后,輸出結果應該為

a4074448-1c5c-11ee-962d-dac502259ad0.png

可以看到,最大值在x[100]處,虛部已經到-503級別,不符合輸出數據的要求,在此過程中,需要對數據按照FFT的級數縮放,如下圖所示,示例中設置1024點的FFT的放縮因子為0X2AB,即 10 10 10 10 11,按照每2bit合在一起,即為 2 2 2 2 3,依次相加為(2+2+2+2+3)=11,放縮倍數為2^11=2048。

a4180378-1c5c-11ee-962d-dac502259ad0.png

具體scale的設置詳見PG109,翻譯過來就是:

對于突發I/O架構,每個階段的擴展調度由最低位的兩個LSBs指定,第一個階段的擴展調度由兩個最低位LSBs指定??s放可以指定為3、2、1或0,表示要移位的數目。例如:

【1】對于N =1024, Radix-4突發I/O是[1 0 2 3 2](從最后一級開始排序)

【2】對于N =128, x-2突發I/O或Radix-2 Lite Burst I/O,一種可能的擴展計劃是[1 1 1 1 1 0 1 2] (從最后階段到第一階段排序)。

對于流水線并行I/O架構(示例默認使用流水線型),每個Radix-2階段(從兩個LSBs開始)都使用兩位指定伸縮因子。例如:

【4】N = 256的縮放調度可以是[2 2 2 3]。當N不是4的冪時,最后階段的最大位增長為1位。例如,[0 2 2 2]或[1 2 2 2 2]對于N = 512是有效的擴展調度,但是[2 2 2 2 2]是無效的。對于這個轉換長度,SCALE_SCH的最高位的兩個MSB只能是00或01。此字段僅適用于按比例縮放的算術(不包括未縮放unscaled、塊浮點或單精度float)。

a42955ce-1c5c-11ee-962d-dac502259ad0.png

2.更改配置

(1)改成8192點FFT(2^13)

【1】更改最大支持點數FFT_NFFT_MAX=13,這時候FFT_LENGTH也隨之改變,效果為該FFT支持最大8192點(當設置為最大支持8192點時,4096/256等比8192小的點數也是支持的),并且本次運行點數時8192點。

a449bb2a-1c5c-11ee-962d-dac502259ad0.png

【2】修改config配置信息,將修改的點數寫進fft的配置,如果沒有110行的修改,那么實際上還是執行的1024點的FFT。

a4710a40-1c5c-11ee-962d-dac502259ad0.png

【3】修改放縮因子為0XAAB(8192點FFT,縮小8192倍,一般多少點設置多少倍,然后看overflow信號是否指示數據溢出,若溢出,則繼續增大縮放因子)

a497b08c-1c5c-11ee-962d-dac502259ad0.png

此后點擊運行,得到的結構范圍在 —1 ~ 1之間,將所有數據*8192,得到正常的數據,但是,因為前面的放縮實在每一級上的累計放縮,所以存在較大的誤差累積,通過和C語言double型正常未放縮執行的代碼對比,發現在輸出數據較小的地方誤差非常大,基本可以看成是錯的,在數據較大的地方,比如本例的100Hz的sin信號,在輸出xk_output[100] 處與實際結果誤差很小。

3.更改輸入輸出為float型,提高精度

對于單精度浮點型輸入,輸入數據時N維復數向量(雙32位浮點數),相位因子必須是24或者25位的定點數(PG109文檔)。

a4a9759c-1c5c-11ee-962d-dac502259ad0.png

a4c292c0-1c5c-11ee-962d-dac502259ad0.png

4.結果

a4f16366-1c5c-11ee-962d-dac502259ad0.png

a50fd436-1c5c-11ee-962d-dac502259ad0.png

a5217b96-1c5c-11ee-962d-dac502259ad0.png

???





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FFT
    FFT
    +關注

    關注

    15

    文章

    436

    瀏覽量

    59411
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137110
  • Vivado
    +關注

    關注

    19

    文章

    813

    瀏覽量

    66657
  • HLS
    HLS
    +關注

    關注

    1

    文章

    130

    瀏覽量

    24144

原文標題:FPGA實現OFDM通信——FFT與IFFT(2)——調用HLS的FFT庫實現N點FFT(hls:fft)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA實現OFDM通信——FFT與IFFT應用實現

    HLS需要bit-reverse命令數據塊后端,所說的自然順序和一個O (N)轉換適用于FFT輸出提取的頻譜數據N-point真實數據集。注意,第一個輸出兩包第0個和512(純粹的)分
    發表于 08-03 09:23 ?1766次閱讀
    FPGA<b class='flag-5'>實現</b>OFDM通信——<b class='flag-5'>FFT</b>與IFFT應用<b class='flag-5'>實現</b>

    第28章 ST官方匯編FFT應用

    轉dsp系列教程本章主要講解ST官方匯編FFT的應用,包括1024,256和64FFT
    發表于 09-28 08:08

    第32章 實數FFT實現

    轉dsp系列教程本章主要講解實數的浮點和定點Q31,Q15的實現。關于這部分的知識和函數的計算結果上,官方的文檔有一些小錯誤,在章節中會跟大家詳細講述,還有一個要注意的問題,調用實數FFT
    發表于 09-28 09:53

    HLSFFT的反向輸入算法不能實現

    你好, 我想在HLS實現反向輸入和自然輸出算法。 但是,結果始終是: 我的代碼是:void reverse_fft(compnum xin [FFT_SIZE]){ const in
    發表于 03-06 12:48

    ST官方匯編FFT的應用

    第29章 STM32F407移植匯編定點FFT(64,256和1024)本章主要講解ST官方匯編
    發表于 08-10 08:03

    ST官方匯編FFT的應用

    第29章 STM32F429移植匯編定點FFT(64,256和1024)本章主要講解ST官方匯編
    發表于 08-11 06:44

    匯編FFT的應用

    第29章 STM32H7移植匯編定點FFT(64,256和1024)本章主要講解ST官方匯編FF
    發表于 08-17 08:33

    【KV260視覺入門套件試用體驗】 硬件加速之—使用PL加速FFT運算(Vivado)

    Cable)調試FPGA邏輯 三、硬件加速之—使用PL加速FFT運算(Vivado) 四、硬件加速之—使用PL加速矩陣乘法運算(Vitis HLSFFT(Fast Fourier
    發表于 10-02 22:03

    利用FFT IP Core實現FFT算法

    利用FFT IP Core實現FFT算法 摘要:結合工程實踐,介紹了一種利用FFT IP Core實現
    發表于 01-16 10:04 ?6925次閱讀
    利用<b class='flag-5'>FFT</b> IP Core<b class='flag-5'>實現</b><b class='flag-5'>FFT</b>算法

    fft原理及實現

    FFT是一種DFT的高效算法,稱為快速傅立葉變換(fast Fourier transform)。FFT算法可分為按時間抽取算法和按頻率抽取算法,先簡要介紹FFT的基本原理。從DFT運算開始,說明
    發表于 12-19 16:18 ?206次下載

    stm32 fft使用注意事項

    stm32 fft使用方法 與 注意事項
    發表于 11-02 10:55 ?0次下載

    基于STM32芯片的128FFT

    STM32F103芯片使用DSP進行FFT運算的資料與程序。
    發表于 06-07 16:32 ?0次下載

    基于新型FPGA的FFT設計與實現

    基于新型FPGA的FFT設計與實現設計方法。
    發表于 06-17 17:07 ?48次下載

    STM32的FFT官方資料包下載

    STM32的FFT官方資料包下載
    發表于 12-10 15:30 ?84次下載

    調用HLSFFT實現NFFT

    HLS中用C語言實現8192FFT,經過測試,實驗結果正確,但是時序約束不到100M的時鐘,應該是設計上的延時之類的比較大,暫時放棄這個方案,調
    的頭像 發表于 07-11 10:05 ?1123次閱讀
    <b class='flag-5'>調用</b><b class='flag-5'>HLS</b>的<b class='flag-5'>FFT</b><b class='flag-5'>庫</b><b class='flag-5'>實現</b><b class='flag-5'>N</b><b class='flag-5'>點</b><b class='flag-5'>FFT</b>
    主站蜘蛛池模板: 国产成人亚洲毛片| aa视频在线| 色多多在线观看视频| 国产精品福利一区| 午夜综合网| 丁香婷五月| 久久成人国产精品青青| 欧美在线视频二区| 天天摸天天碰色综合网| 国产热| 2021成人国产精品| 久久99热久久精品| 色黄网| 日本欧美一区二区三区免费不卡| 男人午夜网站| 美女扒开腿让男人桶尿口| 在线天堂网| 一级毛片子| 一级女性黄 色生活片| 四虎影院www| 色五月天天| 日韩三| 日本特级黄色大片| 日本特级淫片免费| 激情在线视频| 国产三级网站在线观看| 国产主播在线播放| 国产资源在线播放| 天天躁夜夜躁狠狠躁躁| 日韩手机看片| 久久看精品| 国产美女作爱全过程免费视频| 欧美激情第一欧美在线| 成人啪啪网站| 天天色成人网| 高清一区二区三区免费| 四虎免费影院4hu永久免费| 久久精品视频99精品视频150| 激情理论| 手机在线免费观看视频| 国产网站大全|