成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

xilinx FFT IP的介紹與仿真

2020/06/29
185
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1 xilinx FFT IP 介紹

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

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

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

3)數(shù)據(jù)采樣精度 bx = 8 – 34

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

5)算術類型:

°無標度(全精度)定點

°定標定點

°浮點數(shù)

6)定點或浮點接口

7)蝴蝶后舍入或截斷

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

9)可選的運行時可配置轉(zhuǎn)換點大小

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

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

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

13)四種架構在內(nèi)核大小和轉(zhuǎn)換時間之間進行權衡

14)位精確的 C 模型和用于系統(tǒng)建模的 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 之類的常規(guī)控制信號以及事件信號之外,到內(nèi)核的所有輸入和輸出都通過 AXI4-Stream 通道進行傳輸。通道始終由 TVALID 和 TDATA 以及必填字段和可選字段(如 TREADY,TUSER 和 TLAST)組成。TVALID 和 TREADY 一起執(zhí)行握手以傳輸消息,其中有效負載為 TDATA,TUSER 和 TLAST。內(nèi)核對包含在 TDATA 字段中的操作數(shù)進行運算,并將結果輸出到輸出通道的 TDATA 字段中。

圖 2 AXI4-Stream 時序圖

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

2)s_axis_config_tdata 接口介紹

s_axis_config_tdata 接口攜帶配置信息 CP_LEN,F(xiàn)WD / INV,NFFT 和 SCALE_SCH。

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

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

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

SCALE_SCH 伸縮時間表:對于突發(fā) I / O 架構,伸縮時間表由每個階段的兩位指定,第一階段的伸縮由兩個 LSB 給出??s放比例可以指定為 3、2、1 或 0,代表要移位的位數(shù)。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. 前轉(zhuǎn) / 后轉(zhuǎn)

4.(可選)SCALE_SCH

舉例:

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

這給出了 19 位的向量長度。由于所有 AXI 通道必須與字節(jié)邊界對齊,因此需要 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 allclose allclc 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 的計算結果相比實部一樣,除虛部因為數(shù)據(jù)位的取舍問題以外,正數(shù)和負數(shù)部分順序相反。

賽靈思

賽靈思

賽靈思(英語:Xilinx)是一家位于美國的可編程邏輯器件的生產(chǎn)商。該公司發(fā)明了現(xiàn)場可編程邏輯門陣列,并由此成名。賽靈思還是第一個無廠半導體公司(Fabless)。28nm時代,賽靈思提出All Programmable 的概念,從單一的FPGA企業(yè)戰(zhàn)略轉(zhuǎn)型為All Programmable FPGA、 SoC 和 3D IC 的全球領先提供商。且行業(yè)領先的器件與新一代設計環(huán)境以及 IP 完美地整合在一起,可滿足客戶對可編程邏輯乃至可編程系統(tǒng)集成的廣泛需求賽靈思于1984年創(chuàng)建于美國加利福尼亞州的硅谷,總部位于硅谷核心的圣何塞,并在科羅拉多州、愛爾蘭、新加坡 印度、中國、日本擁有分支機構

賽靈思(英語:Xilinx)是一家位于美國的可編程邏輯器件的生產(chǎn)商。該公司發(fā)明了現(xiàn)場可編程邏輯門陣列,并由此成名。賽靈思還是第一個無廠半導體公司(Fabless)。28nm時代,賽靈思提出All Programmable 的概念,從單一的FPGA企業(yè)戰(zhàn)略轉(zhuǎn)型為All Programmable FPGA、 SoC 和 3D IC 的全球領先提供商。且行業(yè)領先的器件與新一代設計環(huán)境以及 IP 完美地整合在一起,可滿足客戶對可編程邏輯乃至可編程系統(tǒng)集成的廣泛需求賽靈思于1984年創(chuàng)建于美國加利福尼亞州的硅谷,總部位于硅谷核心的圣何塞,并在科羅拉多州、愛爾蘭、新加坡 印度、中國、日本擁有分支機構收起

查看更多

相關推薦

登錄即可解鎖
  • 海量技術文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄
lee
lee

從數(shù)字出發(fā),走進圖像世界,聆聽音頻的美妙旋律。從電路出發(fā),實現(xiàn)美妙的算法,展示代碼的美奐。從知識到實現(xiàn),歡迎大家關注公眾號FPGA開源工作室。

天峻县| 北流市| 蒙自县| 江山市| 昭觉县| 惠安县| 金门县| 临颍县| 阳泉市| 襄樊市| 株洲县| 罗源县| 嘉黎县| 息烽县| 西充县| 南漳县| 偃师市| 休宁县| 句容市| 荆门市| 东阳市| 塘沽区| 通渭县| 邵武市| 右玉县| 昌江| 卓资县| 九龙县| 房产| 伽师县| 射阳县| 鄂州市| 马山县| 台东市| 德兴市| 宁河县| 兴城市| 读书| 崇明县| 神农架林区| 上饶县|