那曲檬骨新材料有限公司

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

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

3天內不再提示

Xilinx快速傅立葉變換接口及仿真測試實驗設計

454398 ? 來源:FPGA開源工作室微信公眾號 ? 作者:FPGA開源工作室微信 ? 2020-09-28 10:41 ? 次閱讀

1 xilinx FFT IP介紹

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

1)正向和反向復數FFT,運行時間可配置。

2)變換大小N = 2m,m = 3 – 16

3)數據采樣精度bx = 8 – 34

4)相位系數精度bw = 8 – 34

5)算術類型:

  • °無標度(全精度)定點
  • °定標定點
  • °浮點數

6)定點或浮點接口

7)蝴蝶后舍入或截斷

8)Block RAM或分布式RAM,用于數據和相位因子存儲

9)可選的運行時可配置轉換點大小

10)可擴展的定點核心的運行時可配置擴展時間表

11)位/數字反轉或自然輸出順序

12)用于數字通信系統的可選循環前綴插入

13)四種架構在內核大小和轉換時間之間進行權衡

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

15)有四種運算架構可供選擇

  • .Pipelined Streaming I/O
  • .Radix-4 Burst I/O
  • .Radix-2 Burst I/O
  • .Radix-2 Lite Burst I/O

2 FFT IP接口介紹

圖1 xilinx FFT IP

1)AXI4-Stream 介紹

AXI4-Stream接口帶來了標準化,并增強了Xilinx IP LogiCORE解決方案的互操作性。除了諸如aclk,acclken和aresetn之類的常規控制信號以及事件信號之外,到內核的所有輸入和輸出都通過AXI4-Stream通道進行傳輸。通道始終由TVALID和TDATA以及必填字段和可選字段(如TREADY,TUSER和TLAST)組成。TVALID和TREADY一起執行握手以傳輸消息,其中有效負載為TDATA,TUSER和TLAST。內核對包含在TDATA字段中的操作數進行運算,并將結果輸出到輸出通道的TDATA字段中。

圖2 AXI4-Stream時序圖

圖2顯示了在AXI4-Stream通道中的數據傳輸。TVALID由通道的源(主)端驅動,而TREADY由接收器(從屬)驅動。TVALID指示有效負載字段(TDATA,TUSER和TLAST)中的值有效。TREADY表示從機已準備好接收數據。當一個周期中的TVALID和TREADY均為TRUE時,將發生傳輸。主機和從機分別為下一次傳輸分別設置TVALID和TREADY。

2)s_axis_config_tdata接口介紹

s_axis_config_tdata接口攜帶配置信息CP_LEN,FWD / INV,NFFT和SCALE_SCH。

NFFT(變換的點大小):NFFT可以是最大變換的大小或任何較小的點大小。例如,1024點FFT可以計算點大小1024、512、256等。NFFT的值為log2(點大小)。該字段僅在運行時可配置的轉換點大小時出現。

CP_LEN(循環前綴長度):從轉換結束起,在輸出整個轉換之前,最初作為循環前綴輸出的樣本數。CP_LEN可以是小于點大小的從零到一的任何數字。該字段僅在循環前綴插入時出現。

FWD_INV:指示是執行前向FFT變換還是逆向FFT變換(IFFT)。當FWD_INV = 1時,將計算前向變換。如果FWD_INV = 0,則計算逆變換。

SCALE_SCH伸縮時間表:對于突發I / O架構,伸縮時間表由每個階段的兩位指定,第一階段的伸縮由兩個LSB給出。縮放比例可以指定為3、2、1或0,代表要移位的位數。N = 1024,Radix-4 Burst I / O的示例縮放計劃是[1 0 2 3 2](從最后階段到第一階段排序)。對于N = 128,Radix-2 Burst I / O或Radix-2 Lite Burst I / O,一個可能的擴展時間表是[1 1 1 1 0 1 2](從最后階段到第一階段排序)。對于流水線I / O架構,從兩個LSB開始,每兩對Radix-2級用兩位指定擴展時間表。例如,N = 256的縮放時間表可以是[2 2 2 3]。當N不是4的冪時,最后一級的最大位增長為一位。例如,對于N = 512,[0 2 2 2 2]或[1 2 2 2 2]是有效的縮放時間表,但是[2 2 2 2 2]無效。對于此變換長度,SCALE_SCH的兩個MSB只能為00或01。此字段僅可用于縮放算法(非縮放,塊浮點或單精度浮點)。

s_axis_config_tdata接口格式:

1.(可選)NFFT加填充

2.(可選)CP_LEN加填充

3.前轉/后轉

4.(可選)SCALE_SCH

舉例:

內核具有可配置的轉換大小,最大大小為128點,具有循環前綴插入和3個FFT通道。內核需要配置為執行8點變換,并在通道0和1上執行逆變換,并在通道2上執行前向變換。需要4點循環前綴。這些字段采用表中的值。

這給出了19位的向量長度。由于所有AXI通道必須與字節邊界對齊,因此需要5個填充位,從而s_axis_config_tdata的長度為24位。

3)相關標志信號

3 xilinx FFT IP的仿真測試

FFT的長度選擇8點,x輸入序列為x=[1,2,3,4,5,6,7,8];

Matlab驗證:

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


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

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

FPGA仿真驗證:

1)IP的設置

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)仿真結果

Vivado最終的仿真結果為

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

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

與matlab的計算結果相比實部一樣,除虛部因為數據位的取舍問題以外,正數和負數部分順序相反。

編輯:hfy

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

    關注

    71

    文章

    2171

    瀏覽量

    122128
  • 仿真
    +關注

    關注

    50

    文章

    4124

    瀏覽量

    133987
  • 快速傅立葉變換

    關注

    0

    文章

    3

    瀏覽量

    1472
收藏 人收藏

    評論

    相關推薦

    車聯網HIL仿真測試解決方案

    經緯恒潤結合硬件在環技術、通信信息、云平臺、場景仿真、車載單元仿真技術,開發了針對車聯網V2N測試&V2X應用場景測試仿真系統,實
    的頭像 發表于 12-24 14:24 ?257次閱讀
    車聯網HIL<b class='flag-5'>仿真</b><b class='flag-5'>測試</b>解決方案

    智能座艙HIL仿真測試解決方案

    ,實現了在實驗室條件下的覆蓋設計體驗、功能驗證、自動化運行、聯合仿真測試環境,為智能座艙系統的測試、分析和研究提供了有利支持。
    的頭像 發表于 12-24 11:08 ?503次閱讀
    智能座艙HIL<b class='flag-5'>仿真</b><b class='flag-5'>測試</b>解決方案

    智能駕駛HIL仿真測試解決方案

    經緯恒潤推出的新一代自主研發的智能駕駛HIL仿真測試系統可提供:逼真的道路交通場景、高精度的車輛動力學模型和各智能駕駛傳感器仿真/臺架;實驗管理、自動化
    的頭像 發表于 12-23 10:54 ?631次閱讀
    智能駕駛HIL<b class='flag-5'>仿真</b><b class='flag-5'>測試</b>解決方案

    傅立葉變換在機器學習中的應用 常見傅立葉變換的誤區解析

    傅里葉變換在機器學習中的應用 傅里葉變換是一種將信號分解為其組成頻率分量的數學運算,它在機器學習中的應用日益廣泛。以下是一些主要的應用領域: 信號處理 : 音頻處理:傅里葉變換有助于識別音頻信號中
    的頭像 發表于 12-06 17:06 ?320次閱讀

    傅立葉變換與時域信號的關系 傅立葉變換在音頻信號處理中的應用

    傅里葉變換與時域信號的關系 傅里葉變換是一種數學工具,它能夠將時域信號(即隨時間變化的信號)轉換為頻域信號(即隨頻率變化的信號),或者將頻域信號轉換回時域信號。這種轉換關系使得我們能夠更加深入地理
    的頭像 發表于 12-06 17:02 ?589次閱讀

    傅立葉變換在圖像處理中的作用

    傅里葉變換在圖像處理中發揮著至關重要的作用。以下是傅里葉變換在圖像處理中的幾個主要作用: 一、圖像增強與去噪 去噪 :圖像中的噪聲通常表現為高頻分量。通過傅里葉變換,可以將圖像從空間域轉換到頻率域
    的頭像 發表于 12-06 16:55 ?707次閱讀

    傅立葉變換與拉普拉斯變換的區別

    傅里葉變換與拉普拉斯變換在信號處理中都是非常重要的工具,但它們之間存在一些顯著的區別。以下是對這兩種變換區別的介紹: 定義域與適用范圍 傅里葉變換 : 定義域:傅里葉
    的頭像 發表于 12-06 16:52 ?730次閱讀

    傅立葉變換的基本概念 傅立葉變換在信號處理中的應用

    傅里葉變換的基本概念 傅里葉變換是一種數學變換,它能夠將滿足一定條件的某個函數表示成三角函數(正弦和/或余弦函數)或者它們的積分的線性組合。這種變換在不同的研究領域有多種變體形式,如連
    的頭像 發表于 12-06 16:48 ?486次閱讀

    ESD應用手冊:汽車版現代化接口保護概念、測試仿真

    電子發燒友網站提供《ESD應用手冊:汽車版現代化接口保護概念、測試仿真.pdf》資料免費下載
    發表于 11-19 14:38 ?0次下載

    經典傅里葉變換快速傅里葉變換的區別

    經典傅里葉變換快速傅里葉變換(FFT)在多個方面存在顯著的區別,以下是對這兩者的比較: 一、定義與基本原理 經典傅里葉變換 : 是一種將滿足一定條件的某個函數表示成三角函數(正弦和/
    的頭像 發表于 11-14 09:37 ?514次閱讀

    EasyGo實時仿真丨PCS儲能變流器控制仿真應用

    EasyGo 半實物仿真平臺代替實物設備進行測試的可行性與精確性。 實驗基于EasyGo CBox快速原型控制器的CPU+FPGA硬件架構,我們在CBox的CPU中部署控制算法和設置U
    發表于 09-20 10:17

    EasyGo實時仿真丨三相永磁同步電機開環實驗仿真應用

    實驗測試進行對比,以驗證利用EasyGo 半實物仿真平臺代替實物電機進行測試的可行性與精確性。 實驗基于EasyGo CBox
    發表于 08-23 09:58

    EasyGo實時仿真丨三相永磁同步電機開環實驗仿真應用

    “CBox體積小巧,功能強大。CPU+FPGA的雙模塊建模方式使得仿真結構更加清晰,配合EasyGoDeskSim圖形化上位機軟件,仿真測試輕松上手。”——中國石油大學(華東)某實驗
    的頭像 發表于 08-22 18:20 ?1195次閱讀
    EasyGo實時<b class='flag-5'>仿真</b>丨三相永磁同步電機開環<b class='flag-5'>實驗</b><b class='flag-5'>仿真</b>應用

    如何在ModelSim中添加Xilinx仿真

    今天給大俠帶來在FPGA設計應用中如何在ModelSim中添加Xilinx仿真庫,話不多說,上貨。 注意:ModelSim一定要安裝在不帶空格的目錄下,即不要安裝在“Program
    發表于 07-03 18:16

    仿真測試包含哪些內容

    在當今科技快速發展的時代,仿真測試作為一種重要的技術手段,被廣泛應用于各個領域。無論是航空航天、汽車制造、醫學仿真,還是建筑設計、國防軍事以及城市交通等,
    的頭像 發表于 05-17 14:32 ?1170次閱讀
    大发888信誉平台| 百家乐官网娱乐网站| 百家乐官网顺序| 太阳城百家乐168| 大发888投注鸿博博彩| 百家乐官网娱乐城返水| 网络百家乐最安全| 本溪棋牌娱乐网| 百家乐官网娱乐官网| 百家乐五星宏辉怎么玩| 德令哈市| 乐九百家乐游戏| 德州扑克保险| 跨国际百家乐官网的玩法技巧和规则 | 大发888充值100元| 缅甸百家乐官网赌博现场下载 | 爱赢娱乐| 百家乐官网存200送200| 大发888游戏注册送98| 百家乐官网技术辅助软件| 华泰百家乐的玩法技巧和规则 | 大发888洗码| 线上百家乐官网的玩法技巧和规则| 威尼斯人娱乐场钓鱼网站| 太阳城百家乐官网杀猪吗| 百家乐透明发牌机| 网上百家乐官网大赢家筹码| 威尼斯人娱乐城赌博网| 百家乐官网追注法| 大发888老虎机下载| 百家乐官网娱乐网77scs| 大发888唯一官网| 中华百家乐官网的玩法技巧和规则 | 网上百家乐官网网址| 百家乐赌场彩| 百家乐官网翻天youtube | 15人百家乐官网桌| 利来国际| 百家乐注册开户送彩金| 真人百家乐官网海立方| 洛克百家乐的玩法技巧和规则|