RM新时代网站-首页

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

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

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

Xilinx FFT IP介紹與仿真測(cè)試

FPGA技術(shù)江湖 ? 來(lái)源:FPGA開源工作室 ? 作者:OpenSLee ? 2022-03-30 11:01 ? 次閱讀

1 Xilinx FFT IP介紹

Xilinx快速傅立葉變換(FFT IP)內(nèi)核實(shí)現(xiàn)了Cooley-Tukey FFT算法,這是一種計(jì)算有效的方法,用于計(jì)算離散傅立葉變換(DFT)。

1)正向和反向復(fù)數(shù)FFT,運(yùn)行時(shí)間可配置。

2)變換大小N = 2mm = 316

3)數(shù)據(jù)采樣精度bx = 834

4)相位系數(shù)精度bw = 834

5)算術(shù)類型:

°無(wú)標(biāo)度(全精度)定點(diǎn)

°定標(biāo)定點(diǎn)

°浮點(diǎn)數(shù)

6)定點(diǎn)或浮點(diǎn)接口

7)蝴蝶后舍入或截?cái)?/span>

8)Block RAM或分布式RAM,用于數(shù)據(jù)和相位因子存儲(chǔ)

9)可選的運(yùn)行時(shí)可配置轉(zhuǎn)換點(diǎn)大小

10)可擴(kuò)展的定點(diǎn)核心的運(yùn)行時(shí)可配置擴(kuò)展時(shí)間表

11)/數(shù)字反轉(zhuǎn)或自然輸出順序

12)用于數(shù)字通信系統(tǒng)的可選循環(huán)前綴插入

13)四種架構(gòu)在內(nèi)核大小和轉(zhuǎn)換時(shí)間之間進(jìn)行權(quán)衡

14)位精確的C模型和用于系統(tǒng)建模的MEX功能可供下載

15)有四種運(yùn)算架構(gòu)可供選擇

.Pipelined Streaming I/O

.Radix-4 Burst I/O

.Radix-2 Burst I/O

.Radix-2 Lite Burst I/O

2 FFT IP接口介紹

Xilinx FFT IP介紹與仿真測(cè)試

1 xilinx FFT IP

1)AXI4-Stream介紹

AXI4-Stream接口帶來(lái)了標(biāo)準(zhǔn)化,并增強(qiáng)了Xilinx IP LogiCORE解決方案的互操作性。除了諸如aclk,acclkenaresetn之類的常規(guī)控制信號(hào)以及事件信號(hào)之外,到內(nèi)核的所有輸入和輸出都通過(guò)AXI4-Stream通道進(jìn)行傳輸。道始終由TVALIDTDATA以及必填字段和可選字段(如TREADY,TUSERTLAST)組成。TVALIDTREADY一起執(zhí)行握手以傳輸消息,其中有效負(fù)載為TDATA,TUSERTLAST。內(nèi)核對(duì)包含在TDATA字段中的操作數(shù)進(jìn)行運(yùn)算,并將結(jié)果輸出到輸出通道的TDATA字段中。

Xilinx FFT IP介紹與仿真測(cè)試

2 AXI4-Stream時(shí)序圖

2顯示了在AXI4-Stream通道中的數(shù)據(jù)傳輸。TVALID由通道的源(主)端驅(qū)動(dòng),而TREADY接收器(從屬)驅(qū)動(dòng)。TVALID指示有效負(fù)載字段(TDATA,TUSERTLAST)中的值有效。TREADY表示從機(jī)已準(zhǔn)備好接收數(shù)據(jù)。當(dāng)一個(gè)周期中的TVALIDTREADY均為TRUE時(shí),將發(fā)生傳輸。主機(jī)和從機(jī)分別為下一次傳輸分別設(shè)置TVALIDTREADY。

2s_axis_config_tdata接口介紹

s_axis_config_tdata接口攜帶配置信息CP_LENFWD / INV,NFFTSCALE_SCH。

NFFT(變換的點(diǎn)大小)NFFT可以是最大變換的大小或任何較小的點(diǎn)大小。例如,1024點(diǎn)FFT可以計(jì)算點(diǎn)大小1024、512、256等。NFFT的值為log2(點(diǎn)大小)。該字段僅在運(yùn)行時(shí)可配置的轉(zhuǎn)換點(diǎn)大小時(shí)出現(xiàn)。

CP_LEN(循環(huán)前綴長(zhǎng)度):從轉(zhuǎn)換結(jié)束起,在輸出整個(gè)轉(zhuǎn)換之前,最初作為循環(huán)前綴輸出的樣本數(shù)。CP_LEN可以是小于點(diǎn)大小的從零到一的任何數(shù)字。該字段僅在循環(huán)前綴插入時(shí)出現(xiàn)。

FWD_INV:指示是執(zhí)行前向FFT變換還是逆向FFT變換(IFFT)。當(dāng)FWD_INV = 1時(shí),將計(jì)算前向變換。如果FWD_INV = 0,則計(jì)算逆變換。

SCALE_SCH伸縮時(shí)間表:對(duì)于突發(fā)I / O架構(gòu),伸縮時(shí)間表由每個(gè)階段的兩位指定,第一階段的伸縮由兩個(gè)LSB給出。縮放比例可以指定為3、210,代表要移位的位數(shù)。N = 1024Radix-4 Burst I / O的示例縮放計(jì)劃是[1 0 2 3 2](從最后階段到第一階段排序)。對(duì)于N = 128,Radix-2 Burst I / ORadix-2 Lite Burst I / O,一個(gè)可能的擴(kuò)展時(shí)間表是[1 1 1 1 0 1 2](從最后階段到第一階段排序)。對(duì)于流水線I / O架構(gòu),從兩個(gè)LSB開始,每?jī)蓪?duì)Radix-2級(jí)用兩位指定擴(kuò)展時(shí)間表。例如,N = 256的縮放時(shí)間表可以是[2 2 2 3]。當(dāng)N不是4的冪時(shí),最后一級(jí)的最大位增長(zhǎng)為一位。例如,對(duì)于N = 512,[0 2 2 2 2][1 2 2 2 2]是有效的縮放時(shí)間表,但是[2 2 2 2 2]無(wú)效。對(duì)于此變換長(zhǎng)度,SCALE_SCH的兩個(gè)MSB只能為0001。此字段僅可用于縮放算法(非縮放,塊浮點(diǎn)或單精度浮點(diǎn))。

s_axis_config_tdata接口格式:

1.(可選)NFFT加填充

2.(可選)CP_LEN加填充

3.前轉(zhuǎn)/后轉(zhuǎn)

4.(可選)SCALE_SCH

Xilinx FFT IP介紹與仿真測(cè)試

舉例:

內(nèi)核具有可配置的轉(zhuǎn)換大小,最大大小為128點(diǎn),具有循環(huán)前綴插入和3個(gè)FFT通道。內(nèi)核需要配置為執(zhí)行8點(diǎn)變換,并在通道01上執(zhí)行逆變換,并在通道2上執(zhí)行前向變換。需要4點(diǎn)循環(huán)前綴。這些字段采用表中的值。

Xilinx FFT IP介紹與仿真測(cè)試

這給出了19位的向量長(zhǎng)度。由于所有AXI通道必須與字節(jié)邊界對(duì)齊,因此需要5個(gè)填充位,從而s_axis_config_tdata的長(zhǎng)度為24位。

Xilinx FFT IP介紹與仿真測(cè)試

3)相關(guān)標(biāo)志信號(hào)

Xilinx FFT IP介紹與仿真測(cè)試

3 xilinx FFT IP仿真測(cè)試

FFT的長(zhǎng)度選擇8點(diǎn),x輸入序列為x=[1,2,3,4,5,6,7,8];

Matlab驗(yàn)證:

clear allclose allclc x = [1,2,3,4,5,6,7,8];y =fft(x,8);realy=real(y);imagy=imag(y);

Xilinx FFT IP介紹與仿真測(cè)試

Y的實(shí)部輸出為realy=[36,-4,-4,-4,-4,-4,-4,-4];

Y的虛部輸出為imagy=[0,9.6569,4,1.6569,0,-1.6569,-4,-9.6569];

FPGA仿真驗(yàn)證:

1)IP的設(shè)置

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

2)仿真頂層

`timescale 1ns / 1ps
 module tb_fft_top(     );    reg aclk;                            reg [7 : 0] s_axis_config_tdata;    reg         s_axis_config_tvalid;            wire        s_axis_config_tready;           wire [31 : 0] s_axis_data_tdata;      reg         s_axis_data_tvalid;              wire        s_axis_data_tready;             reg         s_axis_data_tlast;               wire [31 : 0] m_axis_data_tdata;    wire        m_axis_data_tvalid;             reg         m_axis_data_tready;      wire        m_axis_data_tlast;    reg [15:0] real_data;    reg [15:0] imag_data;    wire [15:0] real_dataout;    wire [15:0] imag_dataout;    reg [9:0]  cnt;    assign s_axis_data_tdata={real_data,imag_data};    assign real_dataout = m_axis_data_tdata[31:16];    assign imag_dataout = m_axis_data_tdata[15:0];    initial begin      aclk = 0;      s_axis_config_tdata=8'b0;      s_axis_config_tvalid=1'b0;      s_axis_data_tvalid=1'b0;      s_axis_data_tlast=1'b0;      real_data=16'd0;      imag_data=16'd0;      cnt = 0;      m_axis_data_tready=1'b1;      #1000;      s_axis_config_tdata=8'b0000_0001;      s_axis_config_tvalid=1'b1;      #10;      s_axis_config_tdata=8'b0000_0000;      s_axis_config_tvalid=1'b0;      #1000;      repeat(8)begin        s_axis_data_tvalid=1'b1;        real_data=real_data+16'd1;        cnt=cnt+1;        if(cnt==8) s_axis_data_tlast=1'b1;        #10;      end      s_axis_data_tvalid=1'b0;      s_axis_data_tlast=1'b0;      real_data=16'd0;      #1000;      $stop;    end    always #(5) aclk= ~aclk;fft_top Ufft_top(      .aclk(aclk),                                                // input wire aclk      .s_axis_config_tdata(s_axis_config_tdata),                  // input wire [7 : 0] s_axis_config_tdata      .s_axis_config_tvalid(s_axis_config_tvalid),                // input wire s_axis_config_tvalid      .s_axis_config_tready(s_axis_config_tready),                // output wire s_axis_config_tready      .s_axis_data_tdata(s_axis_data_tdata),                      // input wire [31 : 0] s_axis_data_tdata      .s_axis_data_tvalid(s_axis_data_tvalid),                    // input wire s_axis_data_tvalid      .s_axis_data_tready(s_axis_data_tready),                    // output wire s_axis_data_tready      .s_axis_data_tlast(s_axis_data_tlast),                      // input wire s_axis_data_tlast      .m_axis_data_tdata(m_axis_data_tdata),                      // output wire [31 : 0] m_axis_data_tdata      .m_axis_data_tvalid(m_axis_data_tvalid),                    // output wire m_axis_data_tvalid      .m_axis_data_tready(m_axis_data_tready),                    // input wire m_axis_data_tready      .m_axis_data_tlast(m_axis_data_tlast)                      // output wire m_axis_data_tlast                 );endmodule

3)仿真結(jié)果

Xilinx FFT IP介紹與仿真測(cè)試

Xilinx FFT IP介紹與仿真測(cè)試

Vivado最終的仿真結(jié)果為

Real=[36,-4,-4,-4,-4,-4,-4,-4];

Imag=[0,-10,-4,-2,0,1,4,9];

matlab的計(jì)算結(jié)果相比實(shí)部一樣,除虛部因?yàn)閿?shù)據(jù)位的取舍問(wèn)題以外,正數(shù)和負(fù)數(shù)部分順序相反。

原文標(biāo)題:Xilinx FFT IP的介紹與仿真

文章出處:【微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    5269

    瀏覽量

    126599
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2167

    瀏覽量

    121299
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1701

    瀏覽量

    149502
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4070

    瀏覽量

    133552

原文標(biāo)題:Xilinx FFT IP的介紹與仿真

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    xilinx fft ip v7.1 仿真數(shù)據(jù)于matlab 仿真數(shù)據(jù)用很大差距,求指教

    xilinx fft ip v7.1 仿真數(shù)據(jù)于matlab 仿真數(shù)據(jù)用很大差距,求指教
    發(fā)表于 10-14 20:48

    xilinx FPGA的FFT IP核的調(diào)用

    有沒(méi)有大神可以提供xilinx FPGA的FFT IP核的調(diào)用的verilog 的參考程序,最近在學(xué)習(xí)FFTIP核的使用,但是
    發(fā)表于 12-25 17:05

    fft ip仿真問(wèn)題

    仿真fft ip核時(shí) 輸出信號(hào)一直為0,檢查了輸入波形,應(yīng)該沒(méi)有問(wèn)題,大家?guī)兔纯窗奢斎胧怯蓃om里面的mif文件產(chǎn)生的信號(hào)。
    發(fā)表于 11-21 10:44

    xilinx FFT ip仿真的誤差太大?

    用的xilinxFFT 9.1版本的ip核 , 仿真出來(lái)的結(jié)果和我MATLAB算出來(lái)的結(jié)果差的很多,也沒(méi)有倍數(shù)關(guān)系,scaled因數(shù)改了好幾次,沒(méi)有溢出,波形大致相同,但是數(shù)值上差的
    發(fā)表于 07-10 16:16

    基于FPGA的FFT和IFFT IP核應(yīng)用實(shí)例

    FFT IP核進(jìn)行運(yùn)算,輸出FFT結(jié)果的實(shí)部和虛部分別存儲(chǔ)在fft_result_real.txt和fft_result_image.txt
    發(fā)表于 08-10 14:30

    【Mill】Xilinx ip FFT變換,為什么你的matlab數(shù)據(jù)無(wú)法嚴(yán)格比對(duì)?——無(wú)線通信連載

    的數(shù)據(jù)是可以完全嚴(yán)格比對(duì),如果設(shè)計(jì)中存在不能完全比對(duì)的情況,要特別注意相關(guān)參數(shù)是否匹配,尤其是縮放因子。一.Xilinx FFT IP介紹1.總體特性 ?
    發(fā)表于 02-16 07:36

    利用FFT IP Core實(shí)現(xiàn)FFT算法

    利用FFT IP Core實(shí)現(xiàn)FFT算法 摘要:結(jié)合工程實(shí)踐,介紹了一種利用FFT IP Co
    發(fā)表于 01-16 10:04 ?6912次閱讀
    利用<b class='flag-5'>FFT</b> <b class='flag-5'>IP</b> Core實(shí)現(xiàn)<b class='flag-5'>FFT</b>算法

    基于Xilinx_FPGA_IP核的FFT算法的設(shè)計(jì)與實(shí)現(xiàn)

    利用FPGA的IP核設(shè)計(jì)和實(shí)現(xiàn)FFT算法
    發(fā)表于 05-24 14:14 ?37次下載

    FFT變換的IP核的源代碼

    Xilinx FPGA工程例子源碼:FFT變換的IP核的源代碼
    發(fā)表于 06-07 11:44 ?10次下載

    XilinxIP:1024點(diǎn)FFT快速傅立葉變換

    Xilinx FPGA工程例子源碼:XilinxIP:1024點(diǎn)FFT快速傅立葉變換
    發(fā)表于 06-07 15:07 ?51次下載

    Modelsim仿真帶有Qsys的FFT和NCO的工程的方法

    因?yàn)樽詮?3.0開始,就開始有Qsys了,而關(guān)于FFT和NCO的仿真特別麻煩,網(wǎng)上有關(guān)資料又少之又少,所以特寫此教程介紹怎么使用modelsim工具仿真附帶有QSYS的
    發(fā)表于 02-27 19:02 ?45次下載

    Xilinx FIR IP介紹仿真

    Xilinx FIR IP介紹仿真 1 xilinx fir ip 簡(jiǎn)介 1)符合 AXI4
    的頭像 發(fā)表于 10-30 12:29 ?889次閱讀

    如何進(jìn)行FFT IP配置和設(shè)計(jì)

    Xilinx Vivado設(shè)計(jì)套件中提供的FFT IP為例,簡(jiǎn)要說(shuō)明如何進(jìn)行FFT IP配置和設(shè)計(jì)。
    的頭像 發(fā)表于 07-22 10:21 ?2418次閱讀

    Xilinx FFT IP核到FPGA實(shí)現(xiàn)OFDM

    筆者在校的科研任務(wù),需要用FPGA搭建OFDM通信系統(tǒng),而OFDM的核心即是IFFT和FFT運(yùn)算,因此本文通過(guò)Xilinx FFT IP核的使用總結(jié)給大家開個(gè)頭,詳細(xì)內(nèi)容可查看官方文檔
    的頭像 發(fā)表于 07-10 10:43 ?1393次閱讀
    從<b class='flag-5'>Xilinx</b> <b class='flag-5'>FFT</b> <b class='flag-5'>IP</b>核到FPGA實(shí)現(xiàn)OFDM

    Vivado中FFT IP核的使用教程

    本文介紹了Vidado中FFT IP核的使用,具體內(nèi)容為:調(diào)用IP核>>配置界面介紹>>IP核端
    的頭像 發(fā)表于 11-06 09:51 ?723次閱讀
    Vivado中<b class='flag-5'>FFT</b> <b class='flag-5'>IP</b>核的使用教程
    RM新时代网站-首页