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
    +关注

    关注

    73

    文章

    2192

    浏览量

    129929
  • 仿真
    +关注

    关注

    53

    文章

    4406

    浏览量

    137671
  • 快速傅立叶变换

    关注

    0

    文章

    3

    浏览量

    1575
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用AXI4接口IP核进行DDR读写测试

    本章的实验任务是在 PL 端自定义一个 AXI4 接口的 IP 核,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测试,读写的内存大小是 4K 字节。
    的头像 发表于 11-24 09:19 2762次阅读
    使用AXI4<b class='flag-5'>接口</b>IP核进行DDR读写<b class='flag-5'>测试</b>

    高压放大器如何解锁磁电机械天线的性能潜能

    实验名称: 磁电机械天线辐射性能测试实验 研究方向: 对称式磁电机械天线的设计、多物理场耦合建模、结构优化及辐射性能验证 实验目的: 该实验
    的头像 发表于 11-07 10:55 179次阅读
    高压放大器如何解锁磁电机械天线的性能潜能

    搭建soc时候,可以内部接并行的flash IP,写了控制接口,转换接口,这可行吗?

    搭建soc时候,可以内部接并行的flash IP,写了控制接口,转换接口,这可行吗?还需要怎加哪些模块呢
    发表于 11-06 07:40

    vivado仿真时GSR信号的影响

    利用vivado进行设计xilinx FPGA时,写完设计代码和仿真代码后,点击run simulation(启动modelsim进行仿真)。
    的头像 发表于 08-30 14:22 1017次阅读
    vivado<b class='flag-5'>仿真</b>时GSR信号的影响

    矩阵变换器-异步电机矢量控制系统仿真研究

    电机突加负载时的转矩波形等进行仿真仿真结果表明了采用组合控制策略的矩阵变换器-异步电机矢量控制系统具备良好的调速性能,并且较交-直-交电压型PWM 变频调速系统而言具有更多的优势。 纯分享帖,需要者
    发表于 06-04 14:48

    光学实验教具应用:迈克尔逊干涉仪实验

    中看到的现象,都可以在软件中进行精确地分析。 迈克尔逊实验的搭建相对复杂一些,因此采用笼式结构能够帮助实验快速地搭建光路。由于各种条件或误差限制,光路的调节总是不如软件仿真那样
    发表于 05-08 08:51

    光学实验教具应用:双缝干涉实验

    实验教具中的实验搭建 图1.实验教具光路搭建 图2.实验教具结果 4.实验总结 双缝干涉实验
    发表于 05-08 08:48

    EGBox Mini:一体式紧凑型实时仿真平台,适配多元实验场景

    实验模式 ,基于单台设备硬件在环测试(HIL)与快速控制原型开发(RCP)两大核心功能,通过不同型号的 EGBox Mini 设备对接,可构建完整的 RCP+HIL 闭环仿真系统,实现
    发表于 04-29 10:40

    旗舰型 / 紧凑型 / 掌上型三箭齐发,EGBox 打造行业全场景实时仿真解决方案

    历经多年技术研发与行业需求深耕,EasyGo半实物仿真事业部正式推出EGBox系列产品,覆盖工业研发测试、创新实验设计及高校教学实践全场景。该系列产品基于高性能FPGA/CPU+FPGA硬件架构打造
    的头像 发表于 03-12 12:30 888次阅读
    旗舰型 / 紧凑型 / 掌上型三箭齐发,EGBox 打造行业全场景实时<b class='flag-5'>仿真</b>解决方案

    Ludovic双螺杆挤出工艺仿真软件案例分享

    (能量平衡、停留时间分布、热-应力结果),帮助用户分析材料在挤出机中的变化规律。同时,软件特有的DoE实验设计功能,可快速筛选可行工艺,降低研发成本。
    的头像 发表于 02-08 16:31 1082次阅读
    Ludovic双螺杆挤出工艺<b class='flag-5'>仿真</b>软件案例分享

    快速上手RK3588常用接口测试

    前言:在之前的几期中,我们详细介绍了RK3588开发板的大部分基础功能调试方法,本期是针对常用通信接口以及IO口的测试,主要包括的调试内容有:USB2.0测试、CAN通信测试、UART
    的头像 发表于 12-26 08:33 4275次阅读
    <b class='flag-5'>快速</b>上手RK3588常用<b class='flag-5'>接口</b><b class='flag-5'>测试</b>

    车联网HIL仿真测试解决方案

    经纬恒润结合硬件在环技术、通信信息、云平台、场景仿真、车载单元仿真技术,开发了针对车联网V2N测试&V2X应用场景测试仿真系统,实
    的头像 发表于 12-24 14:24 978次阅读
    车联网HIL<b class='flag-5'>仿真</b><b class='flag-5'>测试</b>解决方案

    智能座舱HIL仿真测试解决方案

    ,实现了在实验室条件下的覆盖设计体验、功能验证、自动化运行、联合仿真测试环境,为智能座舱系统的测试、分析和研究提供了有利支持。
    的头像 发表于 12-24 11:08 1444次阅读
    智能座舱HIL<b class='flag-5'>仿真</b><b class='flag-5'>测试</b>解决方案

    智能驾驶HIL仿真测试解决方案

    经纬恒润推出的新一代自主研发的智能驾驶HIL仿真测试系统可提供:逼真的道路交通场景、高精度的车辆动力学模型和各智能驾驶传感器仿真/台架;实验管理、自动化
    的头像 发表于 12-23 10:54 1633次阅读
    智能驾驶HIL<b class='flag-5'>仿真</b><b class='flag-5'>测试</b>解决方案

    防水测试仪:快速测试技巧分享

    在产品质量控制中,防水性能检测是一个关键环节。作为一种专业的测试设备,防水测试仪可以帮助我们快速准确地评估产品的防水性能。然而,在实践中,掌握一些快速
    的头像 发表于 12-20 15:21 964次阅读
    防水<b class='flag-5'>测试</b>仪:<b class='flag-5'>快速</b><b class='flag-5'>测试</b>技巧分享