Xilinx FFT使用说明和测试

news2024/11/18 5:54:36

Xilinx FFT使用说明和测试

  • 1 IP接口信号
  • 2 IP基本配置
  • 3 IP功能测试

本文主要介绍Xilinx FFT IP的使用方法

1 IP接口信号

FFT用于计算N点的DFT或者IDFT,N为2m,其中m=2~16。IP的输入输出接口如下表所示,主要包括时钟、复位信号,输入的配置信号,输入的原始数据,输出的变换结果,输出的变换状态,以及事件信号。确保所有的信号输入IP时都有确定的值,不然仿真的时候会出现“Failure: ERROR:add_1 must be in range [-1,DEPTH-1]”

接口说明
aclk时钟
aclken时钟使能
aresetn复位
s_axis_config_tready配置信号的tready信号
s_axis_config_tvalid配置信号的tvalid信号
s_axis_config_tdata配置信号的tdata信号
s_axis_data_tready输入信号的tready信号
s_axis_data_tvalid输入信号的tvalid信号
s_axis_data_tdata输入信号的tdata信号
s_axis_data_tlast输入信号的tlast信号
m_axis_data_tready输出信号的tready信号
m_axis_data_tvalid输出信号的tvalid信号
m_axis_data_tdata输出信号的tdata信号
m_axis_data_tuser输出信号的tuser信号
m_axis_data_tlast输出信号的tlast信号
m_axis_status_tready变换状态的tready信号
m_axis_status_tvalid变换状态的tvalid信号
m_axis_status_tdata变换状态的tdata信号
event_frame_start表征开始计算新的数据帧
event_tlast_unexpected表征没有在期望的地方收到tlast信号,如实际输入数据帧的点数不是期望的数量
event_tlast_missing在预期最后一拍没有收到tlast信号
event_fft_overflow数据输出通道存在数据溢出
event_data_in_channel_halt收到的输入数据的数量与预期的不符
event_data_out_channel_haltIP核有数据输出,但接收端没有准备好而无法输出
event_status_channel_haltIP核有状态信号输出,但接收端没有准备好而无法输出

在这里插入图片描述

  • 配置通道
    配置通道的数据格式如下图所示,由NFFT、CP_LEN、FWD_INV、SCALE_SCH字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。如果需要修改配置,需要对IP进行复位操作,这样s_axis_config_tready信号才会拉高。SCALE_SCH字段的配置也很重要,如果设置的不正确,IP计算的结果与Python计算的结果对不上。
名称宽度说明
NFFT5bitFFT变换的点数
CP_LENlog2(最大点数)在整个转换输出之前,从转换末尾开始作为循环前缀输出的样本数
CP_LEN可以是从0到比点大小小1的任意数
FWD_INV每个FFT数据通道1bit变换类型,1表示FFT,0表示IFFT
SCALE_SCHPipelined:2×ceil(NFFT/2)
Radix-4:2×ceil(NFFT/2)
Radix-2:2×NFFT
缩放因子,每级的缩放因子由2bit构成

在这里插入图片描述

  • 输入通道
    输入数据通道的数据格式如下图所示,tdata信号可以包含多个数据通道,每个数据通道又由数据的实部和虚部组成,同样需要进行8bit边界补足。
    在这里插入图片描述
  • 输出通道
    输出数据通道的数据格式如下图所示,tdata信号可以包含多个数据通道,每个数据通道又由数据的实部和虚部组成,同样需要进行8bit边界补足。
    在这里插入图片描述
  • 输出用户通道
    输出用户通道的数据格式如下图所示,由XK_INDEX、BLK_EXP、OVFLO字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。
名称宽度说明
XK_INDEXlog2(最大点数)输出数据的索引(unsigned 2’s complement)
BLK_EXP8每个通道一个,Block exponent (unsigned 2’s complement)
只有在block floating-point被使用时才有效
OVFLO1每个通道一个,表征算法是否溢出

在这里插入图片描述

  • 输出状态通道
    输出状态通道的数据格式如下图所示,由BLK_EXP、OVFLO字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。
名称宽度说明
BLK_EXP5每个通道一个,每个通道的scale量
OVFLO1每个通道一个,表征算法是否溢出

在这里插入图片描述

2 IP基本配置

添加XFFT IP,使用GUI对IP的各项参数进行配置,在Implementation Details可以查看配置后各个信号的参数格式。

  • Configuration
    • Number of Channel:输入输出通道的数量
    • Transform Length:FFT点数
    • Target Clock Frequency:工作频率,决定FFT计算延时
    • Architecture Choice:架构选择
    • Run Time Configurable Transform Length:勾选之后FFT点数由配置通道决定,即配置通道的数据包含NFFT字段

在这里插入图片描述

  • Implementation
    • Data Format:数据格式
      • Fixed Point:固定点
      • Floating Point:浮点
    • Scaling Options:缩放选项
      • Block Floating Point:块浮点
      • Scaled:定点缩放
      • Unscaled:全精度,无缩放
    • Rounding Modes:截断方式
      • Convergent Rounding: 将计算结果向着最近的整数舍入
      • Truncation:直接截断
    • Input Data Width:输入数据宽度,指的是单个实部或虚部的宽度
    • Phase Factor Width:相位因子宽度
    • Control Signals:控制时钟使能和复位信号
    • Output Order:输出顺序
      • Bit/Digit Reversed Order:按bit倒序
      • Natural Order:自然顺序
    • Cyclic Prefix Insertion:是否在输出数据中自动插入循环前缀
    • Optional Output Fields:输出用户通道和输出状态通道的数据是否包含XK_INDEX、OVFLO字段
    • Throttle Scheme:在性能和数据定时需求之间进行权衡。Real Time模式通常提供更小、更快的设计,但提供和使用数据有严格的限制。Non Real Time没有这样的限制,但设计可能更大更慢。

在这里插入图片描述

  • Detailed Implementation
    • Memory Option:寄存器类型选择
    • Optimize Options:资源和性能优化选项
      在这里插入图片描述

3 IP功能测试

  • FFT变换
    本例子计算信号f(t)=63sin(2π×50t)+63sin(2π×80t),该信号有两个频率点50和80Hz,幅度的变化范围为[-126,126]。首先需要对该信号进行采样,得到离散的序列,1s内采集256个采样点,得到离散化的数据点存入.coe文件中,作为BRAM的初始化文件,在测试时从BRAM中读出数据送入XFFT IP中进行计算。该测试工程可从GitHub下载。
    • 使用Python程序对f(t)信号进行计算的结果如下图所示,计算结果符合预期。
      在这里插入图片描述
      在这里插入图片描述

    • 使用Vivado进行仿真得到的结果如下图所示,计算的结果与Python的结果一致。
      在这里插入图片描述
      在这里插入图片描述

  • FFT与IFFT变换
    本例子计算信号f(t)=1022sin(2π×5t),该信号有一个频率点5Hz,幅度的变化范围为[-1022,1022]。首先需要对该信号进行采样,得到离散的序列,1s内采集256个采样点,得到离散化的数据点存入.coe文件中,作为BRAM的初始化文件,在测试时从BRAM中读出数据送入XFFT IP中进行计算。该测试工程可从GitHub下载。
    • 使用Python程序对f(t)信号进行计算的结果如下图所示,计算结果符合预期。
      • 原始信号的变化曲线
        在这里插入图片描述
      • 傅里叶变换
        在这里插入图片描述
      • 逆傅里叶变换
        在这里插入图片描述
    • 使用Vivado进行仿真得到的结果如下图所示,计算的结果与Python的结果一致。
      • 整体波形
        在这里插入图片描述
      • 傅里叶变换
        在这里插入图片描述
      • 逆傅里叶变换
        在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ApowerREC v1.2.7.10(多功能屏幕录屏工具)

ApowerREC是一款功能强大的屏幕录制软件,主要特点如下: 支持音画同步录制:可以录制电脑桌面操作、在线会议、娱乐视频等所有活动。提供多种录制模式:包括全屏录制、区域录制、画中画等多种录制视频模式,同时也可以支持…

05、Python -- 爬取ts文件格式视频思路

目录 第一步:爬取一段5秒视频找url代码结果第二步:下载整个视频的所有片段代码:结果:第三步:合成视频安装模块代码:结果简洁代码代码:结果:最终代码简洁前代码简洁后代码思路: 1、爬取视频,但是每次只能爬取一段5秒的视频。 2、一个视频有很多秒,所以需要爬取很多片…

11 结构型模式- 代理模式

结构性模式一共包括七种: 代理模式、桥接模式、装饰者模式、适配器模式、门面(外观)模式、组合模式、和享元模式。 1 代理模式介绍 软件开发中的代理: 代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到了中介的作用,它去掉客…

分享个包含各省、市、区的编码数据的在线静态资源脚本

在翻《SpringBootVue3》——十三尼克陈作者的大型前后端分离项目实战里面&#xff0c;在看到地址管理的部分时&#xff0c;发现了该作者记录有一个静态的地址资源脚本 这里做个记录&#xff0c;打点 一、引入js <script src"https://s.yezgea02.com/1641120061385/td…

Python----range方法(函数)

range 英 /reɪndʒ/ n. &#xff08;变动或浮动的&#xff09;范围&#xff0c;界限&#xff1b;视觉&#xff08;或听觉&#xff09;范围&#xff1b;v. &#xff08;在一定的范围内&#xff09;变化&#xff0c;变动&#xff1b;&#xff08;按一定位置或顺序&#x…

如何通过PAM禁止部分用户登录

如何通过 PAM 限制对 SSH 服务的根访问 如题。客户提出这样一个需求&#xff1a;限制和允许部分账号的SSH登录&#xff0c;限制名单可调。乍一看&#xff0c;这需求完全不合理啊&#xff1f;这又要改多少代码&#xff1f;但——PAM从脑海中一闪而过&#xff0c;想到一个办法&a…

Axi接口的DDR3:参数,时序,握手机制

参考 AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事&#xff1f;_axi wrap-CSDN博客 还有官方手册&#xff0c;名字太长想起来再写。 Transaction/Burst/Transfer/Beat Transaction指一次传输事务&#xff0c;实际上包括了address phase, data phase与response ph…

Git版本管理及使用规范

git是目前为止版本管理的最常用工具之一&#xff0c;利用git的功能&#xff0c;可以很容易的实现版本的发布和留档&#xff0c;让原本杂乱的版本管理问题变得较为简单。 Git分支管理和常用流程 Git的常用分支包括&#xff1a;tag(git的功能&#xff0c;并不是真正的分支)、ma…

测试报告和结果分析 —— allure整合pytest生成测试报告

一、生成HTML测试报告的三种方式&#xff1a; 1、unittest和HTMLTestRunner整合 2、allure和pytest整合 3、Jenkins中安装allure插件&#xff08;Jenkins安装插件出错&#xff0c;不能正常使用&#xff09; 二、allure整合pytest生成html测试报告&#xff1a; 1.下载allur…

云服务介绍

云服务 1.概念 云服务&#xff0c;顾名思义就是云上的服务&#xff0c;简单的来说就是在云厂商&#xff08;例如 AWS、阿里云&#xff09;那里买的服务。 目前国内云厂商有阿里云、腾讯云、华为云、天翼云、Ucloud、金山云等等&#xff0c;国外有亚马逊的 AWS、Google 的 GC…

C++ 读MTK代码 综测校准 PSU经典接口读各种型号开关电源电压或电流 visa

为啥要使用接口&#xff1f;因为有多个电源&#xff0c;接口都相似的。再加型号上层很少改动(类型切换)或不用改。 为啥要使用友元&#xff1f;友元函数的主要作用是允许外部函数或类访问被声明为友元的类的私有成员。 如果不使用友元怎么做&#xff1f;最后回答。 1.C定义dl…

SpringBoot Web 分层解耦

目录 分层解耦三层架构介绍代码拆分 分层解耦耦合问题解耦思路 IOC&DIIOC&DI入门IOC详解bean的声明组件扫描 DI详解 在SpringBoot Web请求响应这篇文章的案例中提到&#xff0c;解析XML数据&#xff0c;获取数据的代码&#xff0c;处理数据的逻辑的代码&#xff0c;给页…

教你如何给『linux』打补丁

前言 我们在参与某些开源项目的过程当中&#xff0c;经常会遇到漏洞之类的问题&#xff0c;需要我们打补丁解决。尤其是 Linux 源码&#xff0c;源码代码量较多&#xff0c;在修改完内核并发布新内核的时候&#xff0c;基本采用补丁的方式进行发布&#xff0c;而不是将整个内核…

【LeetCode刷题】2两数相加

2. 两数相加 JAVA代码 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xf…

MAC-设置mysql开机自启动

mac 设置mysql开机自启动 - MoonyHee - 博客园

学习网络编程No.8【应用层协议之HTTP】

引言&#xff1a; 北京时间&#xff1a;2023/10/9/13:03&#xff0c;一晃好多天过去了&#xff0c;9月14号的文章终于在昨天发出去了&#xff0c;也是许久没有更文了&#xff0c;国庆放假期间由于各种原因&#xff0c;在王者峡谷和铲子世界遨游的不亦乐乎&#xff0c;有待改善…

Ubuntu deadsnakes 源安装新版 python

前言 适用于 Ubuntu 安装 python3.11 等新版本。 因为比较常用并且不想重新编译就记录一下&#xff0c;方便以后面向CV安装。 安装 添加 deadsnakes ppa 源 sudo add-apt-repository ppa:deadsnakes/ppa更新 apt sudo apt update安装 python3.11 sudo apt install python…

Node编写获取用户信息接口

目录 前言 初始化路由模块 使用postman发送get获取用户信息请求 初始化路由处理函数模块 获取用户基本信息 前言 在前两篇文章中已经介绍了如何编写用户注册接口以及用户登录接口&#xff0c;这篇文章介绍如何获取用户信息&#xff0c;本篇文章建立在Node编写用户登录接口…

国民技术N32G031 keil开发环境搭建

国民技术N32G031 keil开发环境搭建 目录 国民技术N32G031 keil开发环境搭建1 keil uVison5安装2 安装N32G031的pack包3 JLink添加Device&#xff08;非必须&#xff09;结束语 1 keil uVison5安装 这个网上的教程大把&#xff0c;我这里就不说了&#xff0c;同学们自行下载安装…

图像压缩(2)《数字图像处理》第八章 8.1节 基础知识

图像压缩&#xff08;1&#xff09;《数字图像处理》第八章8.1节基础知识 一. 前言二.引言三.基础知识8.1.1 编码冗余8.1.2 空间冗余和时间冗余8.1.3 不相关的信息8.1.4图像信息的度量8.1.5保真度准则8.1.6 图像压缩模型8.1.7 图像格式、容器和压缩标准四. 小结 一. 前言 始于…