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

目录

    • 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核使用例程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL大表删除方案

1.问题 在生产环境中,执行大表删除操作时,很容易因为占用了大量io资源导致其他事务被阻塞,最终事务不断堆积导致MySQL挂掉。 2.drop命令 drop命令,MySQL主要干了两件事: 清除buffer pool缓冲(内存&…

Java控制台实现斗地主的洗牌和发牌功能

一、题目要求 有3个玩家:A,B,C。底牌有三张牌,每个人共17张牌,共(17*3354)张牌,实现洗牌与发牌,只在控制没有实现UI可视化。 二、思路 1、用List集合存储所有的扑克牌。…

表查询基础【mysql】【表内容 增,删,改,查询】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客MySQL之旅_花果山~程序猿的博客-CSDN博客Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我…

MTK下载AP

只升级选Firemare Upgrade ,点下载后,关机下插入USB

多线程案例(线程池)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:<计算坤是如何工作的>&#x1f649; &#x1f439;今日诗词:百年兴衰皆由人, 不由天&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

Android11热点启动和关闭

Android官方关于Wi-Fi Hotspot (Soft AP) 的文章&#xff1a;https://source.android.com/docs/core/connect/wifi-softap?hlzh-cn 在 Android 11 的WifiManager类中有一套系统 API 可以控制热点的开和关&#xff0c;代码如下&#xff1a; 开启热点&#xff1a; // SoftApC…

计算机设计大赛

目录 1.1需求分析 2.1概要设计 3.1软件界面设计&#xff1a; 4.1代码开源 1.1需求分析 1.1 产品开发本说明&#xff1a; 在如今每人都会扔出许多垃圾&#xff0c;在一些地方大部分垃圾能得到卫生填埋、焚烧等无害化处理&#xff0c;而更多的垃圾则是简单的掩埋&#xff…

3D牙科网格分割使用基于语义的特征学习与图变换器

文章目录 3D Dental Mesh Segmentation Using Semantics-Based Feature Learning with Graph-Transformer摘要方法实验结果 3D Dental Mesh Segmentation Using Semantics-Based Feature Learning with Graph-Transformer 摘要 本文提出了一种新颖的基于语义的牙科网格分割方…

计算机毕业设计 | SSM汽车租赁系统(附源码)

1&#xff0c; 概述 1.1 课题背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。用户生活水平的不断提高&#xff0c;日常生活中用户对汽车租赁系统方面的要求也在不断提高&#xff0c;需要汽车租赁系统查询的人数更是不断增加&#xff0c;使得汽车租赁系统的…

rockylinux 利用nexus 搭建私服yum仓库

简单说下为啥弄这个私服&#xff0c;因为自己要学习一些东西&#xff0c;比如新版的k8s等&#xff0c;其中会涉及到一些yum的安装&#xff0c;为了防止因网络问题导致yum安装失败&#xff0c;和重复下载&#xff0c;所以弄个私服&#xff0c;当然也有为了意外保障的想法&#x…

树形DP-AcWing 285. 没有上司的舞会-XMUOJ提瓦特庆典策划

题目 思路 话不多说&#xff0c;直接上代码 代码 /* AcWing 285. 没有上司的舞会-XMUOJ提瓦特庆典策划 --JinlongW-2024/05/26 */ #include <bits/stdc.h> using namespace std; const int N7000; int st[N];//标记是否有父亲结点 int happy[N]; int dp[N][2]; vect…

【AHK V2】设计模式之命令模式

目录 情景剧场什么是命令模式优缺点优点缺点 使用命令模式的步骤命令模式代码示例合理使用AI工具自动生成代码 情景剧场 我们来设想一个场景&#xff1a; 你进入一家餐馆&#xff0c;餐馆只有老板一个人&#xff08;老板即厨师&#xff09;。 “老板&#xff0c;一份小炒肉&am…

HCIP的学习(22)

BGP优化 [r1-bgp]peer 12.0.0.2 default-route-advertise ---BGP下放缺省路由&#xff0c;无论本地的路由表中是否存在缺省路由&#xff0c;都会向对等体下发一条下一跳为本地的缺省路由&#xff0c;从而减少网络中路由数量&#xff0c;节省对等体的设备资源 BGP协议优先级 缺…

Linux系统进程管理

系统进程管理 一、进程概述 1.1 什么是进程&#xff1f;进程管理需要做什么&#xff1f; 进程是已启动的运行实例&#xff0c;进程有以下组成部分&#xff1a; ​ 已分配内存的地址空间 ​ 进程ID ​ 程序的代码 ​ 进程状态 进程管理包括进程调度、中断处理、信号、进程…

从感知机到神经网络

感知机 一、感知机是什么二、用感知机搭建简单逻辑电路2.1 与门2.2 与非门2.3 或门 三、感知机的局限性3.1 异或门3.2 线性和非线性 四、多层感知机4.1 已有门电路的组合4.2 Python异或门的实现 五、感知机模型5.1 感知机模型5.2 感知机损失函数5.3 感知机学习算法 六、感知机原…

贪心-AcWing 1522. 排成最小的数字-XMUOJ石板序列

题目 思路 getline() 是 C 标准库中的一个函数&#xff0c;用于从输入流中读取一行文本&#xff0c;并将其存储为字符串。它可以从标准输入、文件流、字符串流等不同类型的输入流中读取数据。C中istringstream、ostringstream、stringstream详细介绍和使用_c istringstream-CS…

【网络技术】【Kali Linux】Wireshark嗅探(十五)SSDP(简单服务发现协议)报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客&#xff1a; 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;一&#xff09;ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探&#xff08;二&#xff09;TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

SpringMVC:创建一个简单的SpringMVC框架S

目录 一、框架介绍 两个重要的xml文件 SpringMVC执行流程 二、Vscode搭建SpringMVC框架 1、maven创建webapp原型项目 2、pom.xml下添加springmvc的相关依赖 3、在web.xml配置 4、springmvc.xml的配置 5、编写Controller控制器类 6、 编写JSP界面 7、项目结构图 一…

C++开发面试常问总结

一些面试总结 TCP粘包了解吗&#xff1f;解决办法&#xff1f;讲一下乐观锁悲观锁git中 git pull和git fetch的区别1.虚函数实现机制&#xff1a;2.进程和线程的区别&#xff1a;3.TCP三次握手、四次挥手&#xff1a;4.HTTP状态码&#xff0c;报头&#xff1a;5.智能指针&#…

Jeecg | 完成配置后,如何启动整个项目?

前端启动步骤&#xff1a; 1. 以管理员身份打开控制台&#xff0c;切换到前端项目目录。 2. 输入 pnpm install 3. 输入 pnpm dev 4. 等待前端成功运行。 可以看到此时前端已经成功启动。 后端启动步骤&#xff1a; 1. 启动 mysql 服务器。 管理员身份打开控制台&#…