基于xilinx FPGA的 FFT IP使用例程说明文档(可动态配置FFT点数,可计算信号频率与幅度)

news2024/12/23 6:12:02

目录

    • 1 概述
    • 2 IP examples功能
    • 3 IP 使用例程
    • 3.1 IP设置
    • 3.2 fft_demo端口
    • 3.3 例程框图
    • 3.4 仿真结果
    • 3.5 仿真验证得出的结论
    • 4 注意事项
    • 5例程位置

1 概述

本文用于讲解xilinx IP 的FFT ip examples的功能说明,方便使用者快速上手。
参考文档:《PG109》

2 IP examples功能

本examples 是风中月隐编写的针对xilinx FFT IP的使用demo,通过仿真验证了以下功能:
1) 可动态配置FFT得点数;
2) 可出算出输入信号得频率;
3) 可计算出FFT得幅度峰值;
4) 验证了输入I/Q顺序对FFT输出结果得影响;
5) 验证了动态配置FFT点数得IP设置限制;
6) 验证了是否可连续输入数据;
7) 可看到FFT输出每个点的频率;
8) 推算了FFT IP输出结果与dB值的关系;
例程的平台:
1) 仿真硬件平台:XC7Z030-ffg676-2
2) FPGA开发平台:vivado2018.2

3 IP 使用例程

3.1 IP设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 fft_demo端口

在这里插入图片描述

3.3 例程框图

在这里插入图片描述
以上是测试得一个整体框图,其中得模块与信号含义如下:
1) DDS IP 产生cos/sin正弦信号,即模拟外部ADC采集得I/Q信号;
2) Tlast_cfg为信号根据FFT得采样点数产生tlast信号,匹配FFT IP得信号输入;
3) FFT IP 为FFT得具体计算,实部/虚部输入与输出对应;
4) 结果处理为:
a) DOUT= DOUT_RE^2 +DOUT_IM^2;
b) DOUT_MAX为DOUT得最大点得值,也就是输入信号得幅度;
c) DOUT_FRE为最大点得频率,也就是输入信号得频率;

3.4 仿真结果

目前测试得结果截图都是基于DDS产生得1MHZ信号;以下只说FFT得情况:
1) 输入FFT得din一段有一段无得情况,可以运算,结果如下:
a) 可看出FFT得点数(fft_transform_length)为1024;
b) FFT_OUT有一个最大值035b7xxx,最后fft_out_max也是这个值;
c) FFT_OUT最大值时fft_fre为976560(单位HZ),最后fft_out_fre也是这个值;
在这里插入图片描述

2) 输入FFT得din一直有得情况,可以运算,结果如下:
a) 可看出FFT IP输出得信号s_axis_data_tready一直为高;
b) 可看出FFT得点数(fft_transform_length)为1024;
c) FFT_OUT有一个最大值035b7xxx,最后fft_out_max也是这个值,但这个值得尾部数据不一定一致;
d) FFT_OUT最大值时fft_fre为976560(单位HZ),最后fft_out_fre也是这个值;
在这里插入图片描述

3) 输入FFT得I/Q与RE/IM不对应(交换)情况,可以运算,结果如下:
a) 可看出FFT得点数(fft_transform_length)为1024;
b) FFT_OUT有一个最大值035b7xxx,即fft_out_max得高位大小无变化;
c) FFT_OUT最大值时fft_fre为99023184(单位HZ),fft_fre_n为-976816(单位HZ);

在这里插入图片描述

4) 输入FFT得RE=有效信号,IM=0情况,可以运算,结果如下:
a) 可看出FFT得点数(fft_transform_length)为1024;
b) FFT_OUT有两个高点,且以中点FS/2对称;
c) FFT_OUT最大值出现在第二个高点(简称fS的后半区);
在这里插入图片描述

5) 输入FFT得RE=0,IM=有效信号情况,可以运算,结果如下:
a) 可看出FFT得点数(fft_transform_length)为1024;
b) FFT_OUT有两个高点,且以中点FS/2对称;
c) FFT_OUT最大值出现在第二个高点(简称fS的后半区);
在这里插入图片描述

6) 输入FFT得RE/IM都有效,但配置的FFT点数(fft_transform_length=16384)大于IP中设置的FFT点数据(8192)的情况,可以运算但结果不对,结果如下:
a) 可看出设置FFT得点数(fft_transform_length)为16384,一次输入的数据点数也是16384;
b) FFT运算结果是分两个8192点输出的(因为有两次fft_fre_tlast拉高);
c) FFT_OUT有一个高点,在FS的前半区,且最大的值在第一次8192输出的最大值比第二次大;
d) FFT_OUT最大值处计算的FFT_FRE不对;
在这里插入图片描述

3.5 仿真验证得出的结论

1) FFT可以连续不断运算,即FFT的输入根据点数拉高tlast即可一直流水线输入输出;
2) 当FFT输入的信号为I/Q时,必须跟RE/IM对应上,否则输出的频率会不对,会以中心点(FS/2)对称;
3) 当输入只有一路实信号(非I/Q信号),给到RE或者IM都可以,差别不大,出现最高点的位置和大小都基本一样;
4) FFT的输入点数可以重新配置,但是不能超过IP界面设置的最大值,超过最大值会按IP设置的最大值分组出数据,且值可能不对;

4 注意事项

1) 一定要注意I/Q信号与FFT的RE/IM对应关系;
2) 输出的频率值是根据采样频率FS以及FFT点数N,换算出的,当采样频率变化时需要修改代码中FS的值;
3) FFT IP输出每个点的频率与采样频率FS以及FFT点数N的关系如下:
a) FFT的点数将采样率FS均分为了N等分,即一个点的分辨率为FS/N;
b) 而每个点number(0~(N-1))的频率即为number*(FS/N);
4) IP中设置的FFT的点数一般是根据项目需要设置最大值(不同的值消耗的FPGA资源差距很大);
5) FFT IP输出值与dB的换算关系为:当FFT的输出值为DOUT=DOUT_RE2+DOUT_IM2时,要换算成dB时还需要额外计算:10log10(DOUT);也等价于20log10(sqrt(DOUT));
6) 此外这个值假如要与实际ADC输入信号功率对等的话,还需要人工标定(偏差相同的值);
7) IP中的fwd_inv一定要设置为1才是FFT,否则设置0为IFFT;
8) IP中的nfft值与FFT的点数对应关系如下(可以看出本IP最大计算点数为65536):
在这里插入图片描述

5例程位置

xilinx FFT IP核使用例程

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

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

相关文章

推荐13款常用的Vscode插件,提高前端日常开发效率

1. Live Server Live Server 插件是一个用于前端开发的扩展,它的主要作用是提供一个本地开发服务器,以便实时预览和调试网页应用程序。其最大特点在于热重载,即开发者可实时预览代码效果。 因为Live Server 允许开发者在浏览器中实时预览您正…

Android Webview加载pdf文件无法缩放问题

WebView设置开启页面缩放: settings webView.getSettings(); settings.setSupportZoom(true); settings.setJavaScriptEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); settings.setBuiltInZoomControls(true); sett…

集成开发环境GoLand安装配置结合内网穿透实现ssh远程访问服务器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MOS选型及其参数解析

背景: 整理现有常用元器件选型,日后使用时针对性观看,生成列表链接如下: https://blog.csdn.net/caozhaokun/article/details/126069701 作者:Cayden 时间:2024/05/26 一、MOS选用现状 MOS是电路设计…

【Text2SQL】Spider 数据集

论文:Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task ⭐⭐⭐⭐⭐ EMNLP 2018, arXiv:1809.08887 Dataset: spider GitHub: github.com/taoyds/spider 一、论文速读 本文提出了 Text2SQL 方向的…

【机器学习】基于核的机器学习算法(Kernel-based Algorithms):原理,应用与优化

👀传送门👀 文章引言🔍🍀核函数的概念🚀基于核的算法原理💖基于核的算法应用🐟支持向量机(SVM)📕核主成分分析(KPCA) 🍀未…

创新实训2024.05.26日志:服务端接口实现——用户开启多个会话

1. 概念图 类似于Kimi,文心一言,chatGPT等市面上主流的大模型,我们的大模型也支持同一个用户的多个会话,并且提供支持联系上下文给出解答的能力。 2. 基于会话的对话 在langchain chatchat这个对langchain框架进行二次封装的第三…

汇编语言程序设计-5-流程转移与子程序

5. 流程转移与子程序 文章目录 5. 流程转移与子程序5.0 导学5.1 “转移”综述5.2 操作符offset5.3 jmp指令5.4 其他转移指令-jcxz、loop5.5 call指令和ret指令5.6 call和ret的配合使用5.7 mul指令5.8 汇编语言的模块化程序设计5.9 寄存器冲突的问题-子程序标准框架5.10 标志寄存…

postgresql|数据库|闪回插件e-maj的部署和使用

前言: E-Maj 是 PostgreSQL 数据库的一个扩展插件,它的全称为 "Elementary Majordomo"。这个扩展的主要功能是为数据库中的表集提供细粒度的写入日志记录和时间旅行能力。这意味着使用 E-Maj 的用户可以在数据库的特定子集上实现事务的回滚&a…

python列表元素的增减之道:删除篇

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、前言 二、删除元素的基本方法 1. 使用remove()方法 2. 使用pop()方法 3. 使用del语句…

mars3d的V2版本的Video2D与V3版本的Video2D实现数据快速迁移

场景: 目前是v2和v3的两个相机视角的不同格式,在Mars3d的V2的旧数据想可以快速迁移到V3版本。 V2版本的数据: {"camera": {"fov": 1.0471975511965976,"dis": 20,"stRotation": 0,"showFrust…

第 33 次CCF认证

1. 词频统计 题目描述 样例输入 代码 #include <bits/stdc.h>using namespace std;int main() {int n,m;cin>>n>>m;vector<int> ans1(m,0),ans2(m,0);while (n --) {int t;cin>>t;vector<int> vis(m1,0);for (int i 1;i < t;i ) {i…

这样的直男程序员,活该你单身一万年!

#分享下相亲时遇到过哪些奇葩现象# 这样的直男程序员&#xff0c;活该你单身一万年&#xff01; 在丛丛脱单小程序上相亲&#xff0c;遇到一个程序员妹纸&#xff0c;于是有了如下的真实故事&#xff1a; 妹子说她是程序员来着&#xff0c;想着我也是程序员&#xff0c;就想交…

【HMGD】STM32/GD32 CAN通信

各种通信协议速度分析 协议最高速度(btis/s)I2C400KCAN1MCAN-FD5M48510MSPI36M CAN协议图和通信帧 CubeMX CAN配置说明 CAN通信波特率 APB1频率 / 分频系数 /&#xff08;BS1 BS2 同步通信段&#xff09;* 1000 ​ 42 / 1 / (111) * 1000 ​ 14,000 KHz ​ 1400000…

1.4 Mac 电脑 Clion 安装教程

目录 1 安装 2 激活 3 汉化 1 安装 去 https://www.jetbrains.com/clion/download/other.html 下载: 也可以直接到链接进行下载:https

DOS学习-目录与文件应用操作经典案例-comp

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 案例 1: 基本比较 案例 2: 十进制显示差异 案例 3: 字符形式显…

1-Django开端--学生管理系统

目录 项目结构 前端页面: add_data.html class_data.html index.html apps.py models.py views.py settings,py urls.py ...实现简略的身架... 项目结构 前端页面: add_data.html --添加数据. {% extends index/index.html %}{% block content %} <div class&qu…

基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测

本文旨在基于机器学习方法&#xff0c;对一线城市租房价格进行预测分析&#xff0c;并使用Matplotlib可视化、随机森林、一元线性回归和多元线性模型进行模型对比。通过爬取北京链家二手房数据作为研究对象&#xff0c;探讨了租房价格与各种因素之间的关系&#xff0c;阐述了研…

实时计算及异构计算随笔笔记

3、异构计算的典型应用 异构计算并不神秘&#xff0c;目前已渗透各个领域&#xff0c;不仅是PC领域&#xff0c;也包括了手持移动设备领域、行业领域&#xff0c;甚至是云计算、分布式计算领域。事实上&#xff0c;异构计算至少在应用端&#xff08;前台&#xff09;并不像它的…

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 &#xff08;1&#xff09;面向机器语言 计算机处理信息的早期语言是所谓的机器语言&#xff0c;使用机器语言进行程序设计需要面向机器来编写代码&#xff0c;即需要针对不同的机器编写诸如0101 1100这样的指令序列。 &#xff08;2&#x…