VIVADO-FFT IP核学习记录

根据用户手册使用IP核

① 找到user guide / product guide 并打开

② 找到Customizing and Generating the Core(不同手册可能题目不一样),查看IP核的创建过程中各个参数的意义和设置方法。

③ 找到port description ,查看接口注释

根据网络教程使用IP核

       查找别人用IP核的经验、教程,快速上手。

一、FFT IP核 GUI界面

左边框信息是根据右边框选项确定的引脚和性能参数。

number of channels : 通道数,正常情况只需一个通道。

transform length : fft变换频点数(8~65536),点数越高,频率越准确,但占用的资源block rams越多,transform cycles 和 latency(延迟) 也就越大。

(解释:假设信号的真实频率为1MHz和7MHz,fft ip设置为采样频率50M,

当频点数2048时,每个频点数代表的频率为:50/2048 = 0.024414 M,最接近1MHz的频点为:1 / 0.024414 = 40.98 即第41个频点,该频率为:41 * 0.024414 = 1.00081M;同理算出最接近7MHz的频点为:7 / 0.024414 = 286.89 即第287个频点,该频率为:287 * 0.024414 = 7.0028 M;

当频点数1024时,每个频点数代表的频率为:50/1024 = 0.048828 M,最接近1MHz的频点为:1 / 0.048828 = 20.49 即第21个频点,该频率为:21 *0.048828 = 1.0248M;同理算出最接近7MHz的频点为:7 / 0.048828= 143.44 即第144个频点,该频率为:144 * 0.048828 = 7.0272 M;对比一下,频点数为2048,误差分别为:0.00081、0.0028;频点数为1024,误差分别为0.0248、0.0272;)

target clock frequency : 采样时钟频率,

architecture choice:FFT IP核的架构,不同选项会对latency和transform cycles产生影响。

(automatically select:勾选自动选择以选择满足指定目标数据吞吐量的最小实现,前提是FFT核心在FPGA上实现时达到指定的目标时钟频率。)

run time configurable transform length:选择运行时可配置或不可配置的变换长度。当转换长度不可在运行时配置时(即不勾选),核心使用更少的逻辑资源,并具有更快的最大时钟速度。一般不勾选

data format :数据格式,选择输入和输出数据样本是固定点格式,还是IEEE-754单精度(32位)浮点格式。当核心处于多通道配置时,浮点格式不可用。fixed point 固定点;floating point 浮点数 可以选fixed point

       scaling options: 未标度(unscaled):-所有整数位增长都被带到输出端,这可以使用更多的FPGA资源。缩放(scaled):用户定义的缩放时间表确定如何在FFT阶段之间缩放数据。

块浮点(block floating point):由核来确定最佳利用可用动态范围所需的缩放程度,并将缩放因子报告为块指数。不同的选择会改变S_AXIS_CONFIG-TDATA的接口情况,一般情况下,选block floating point即可

       rounding modes对输出的数据进行处理:truncation截断 convergent rounding:收敛舍入,四舍五入。选择convergent rounding可以避免直流偏置,但会增加slice使用率和时延。平时直接选truncation截断也是可以的。

       output ording natural order:正序  bit/digit reversed order :倒序,一般选择natural order。

       optional output fields 是否勾选 xk_index 即 意味着是否要带频谱峰值的坐标,可以勾选上。

Throttle Schemes选择性能和数据定时之间的折衷要求。实时模式通常提供更小、更快的设计,但对何时必须提供和使用数据有严格的限制;非实时模式没有这样的限制,但设计可能更大、更慢。一般选non real time即可

complex multipliers选择乘法器的结构,上面有注释,一个资源优化型(resource optimization),一个性能优化型(performance optimization)。

复数乘法器:有三个选项可用于自定义复数乘法器实现:

-使用CLB逻辑:所有复数乘法器都是使用切片逻辑构建的。这是

适用于性能要求较低的目标应用程序,或

目标设备具有很少的DSP切片。

-使用3乘法器结构(资源优化):所有复数乘法器

使用三实乘五加/减结构,其中乘法器使用

DSP切片。这减少了DSP切片计数,但使用了一些切片逻辑。这

结构可以利用DSP片预加器来减少或消除对

用于额外的片逻辑,并提高性能。

       butterfly arithmetic蝶形实现的自定义有两个选项:

-使用CLB逻辑:所有蝶形级都是使用片逻辑构建的。

-使用XtremeDSP切片:此选项强制使用DSP切片中的加法器/减法器来实现所有蝶形级。

       一般默认就行。

二、FFT IP核 引脚信息

引脚信号:

aclk:输入时钟(要用)

1.输出信号,用于指示设计逻辑:

s_axis_config_tready:输出信号,由IP核发出,表示准备好接受数据。要用

s_axis_data_tready:输出信号,表示Ip核准备好接收数据了。要用

m_axis_data_tdata:傅里叶变换后的频谱数据,包括实部XK_RE和虚部XK_IM。高位是虚部,低位是实部。(可以在IP核中看到)

m_axis_data_tvalid:表明可以输出有效数据。(有用)

m_axis_data_tuser:数据输出。坐标:携带频点坐标信息,如XK_INDEX、OVFLO和BLK_EXP。勾选了XK_INDEX才有。

m_axis_data_tlast:输出的最后一个数据(不怎么用的上)

2.输入信号,用于控制FFT IP核:

s_axis_config_tdata:输入信号,配置通道的TDATA。8‘d1:傅里叶变换;8’d0:逆变换

s_axis_config_tvalid:输入信号,1即输入有效,置1即可

s_axis_data_tdata:数据输入,要进行傅里叶变换的数据。要用

s_axis_data_tvalid:数据输入。要用

s_axis_data_tlast:数据输入。1表示当前数据是要计算的最后一个数据。除生成事件event_tlast_unexpected和event_tlast_missing事件外,核心不使用此项。这里置1就好(置0也可以。)

m_axis__tready:数据输入。由外部从机断言,以发出准备接受的信号,数据仅在非实时模式下存在。(置1即可)

3.事件接口

一般用不上,直接不连,综合时直接省略

m_axis_status_tdata:状态通道的TDATA。携带状态数据:BLK_EXP或OVFLO。(不连)

m_axis_status_tvalid:状态频道的TVALID。由核心断言,以表示它能够提供状态数据。(不连)

m_axis_status_tready:状态通道的TREADY。由外部从机断言,以发出准备接受的信号

数据仅在非实时模式下存在(得置1,不然IP输出结果出错)

event_frame_started:在核心开始处理新帧时断言。(不连)

event_tlast_unexpected:当核心在不是帧中最后一个的数据样本上看到s_axis_data_tlast High时断言。(不连)

event_tlast_missing:当帧的最后一个数据采样的s_axis_data_tlast为Low时断言。(不连)

event_status_channel_halt:当核心尝试将数据写入状态通道但无法写入时断言。仅在非实时模式下存在。(不连)

event_data_in_channel_halt:当核心从数据输入通道请求数据且无可用数据时断言。(不连)

event_data_out_channel_halt:当核心尝试将数据写入数据输出通道但无法写入时断言。仅在非实时模式下存在(不连)

三、FFT IP核 测试

1.理论设定:

信号1:1.564 M

信号2:6.25 M

混频:

6.25 – 1.564 = 4.686 M             

6.25+1.564=7.814M

故FFT后的信号频谱应该包含: 1.564 M,4.686 M6.25 M,7.814M

2.仿真设定:

DDS产生两个正弦信号:1.564 M,6.25 M:10位无符号数(由软件生成的大小为0~1023的正弦波)

两个正弦信号混频之后:20位无符号数

FFT输入设置:21位有符号数(符号位补0)

根据IP核信息补充输入数据虚部,截取输出数据实部与虚部:

求频谱强度:

3.仿真结果:

DDS产生两个正弦信号:dou_A dout_B

f=50/2048 * 128 = 1.574

f=50/2048 * 384 = 4.687

f=50/2048 * 512 =6.25

f=50/2048 * 640 = 7.812

即仿真结果:1.562 M,4.687 M,6.25 M,7.812 M

相比理论值:1.564 M,4.686 M6.25 M,7.814M

由于精度为50/4096 MHz = 0.012M,所以计算出来的频率有一点小小的偏差,属于正常范围。

四、总结:

1. 仿真结果不对时,可以先把该IP核的所有信号加入仿真波形中检查,看看信号有无XZU状态,是否合理,并进行修改后看是否有变化。

2. 数据的类型:有符号数/无符号数 对于信号处理,特别是对于FFT来说影响还是挺大的,要确定输入的波形是正确的(比如fft要求输入为有符号数,那么输入有符号数波形应该与预想的波形一致),才能得到正确的频谱。

3. FFT IP核要求输入为有符号数,而正弦信号为无符号数时,除了增加一位符号位(0)外,还可以先通过运算把无符号数转换为有符号数,再输入FFT。

4.无论是FFT,还是乘法器或是其他IP核,都要注意输入输出数据的符号类型,提高测试速度。

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

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

相关文章

Python中PyQt5可视化界面通过拖拽来上传文件

注:这个窗口提供了一个快速上传文件的小tips,如果需要对上传的文件进行进一步处理的可以在“processFiles”函数或者编写其它函数进行扩充就可以。 1、需要安装模块 pip install PyQt5 2、运行效果 1、通过拖拽的方式上传需要的文件到窗口,会…

06 g2o 学习

文章目录 06 g2o 学习6.1 概念6.2 框架简介6.3 代码示例 06 g2o 学习 6.1 概念 g2o(General Graphic Optimization)是基于图优化的库。图优化是把优化问题表现成图的一种方式。一个图由若干个顶点(Vertex),以及连接这这些顶点的边(Edge)组成。用顶点表示优化变量&…

2024品牌营销为何需要提供“情绪价值”和“感官滋养”?徐礼昭

什么是情绪价值? 品牌营销在当今市场中,已经超越了单纯的产品推广和销售,更多地涉及到提供“情绪价值”和“感官滋养”。 情绪价值是指产品或服务能够引发的消费者情感反应和共鸣,从而满足消费者情感需求的一种价值。它与产品的…

蓝桥杯 动态规划

01 数字三角形 #include<bits/stdc.h> using namespace std; const int N105; using lllong long; ll a[N][N],dp[N][N]; int main(){int n;cin>>n;for(int i1;i<n;i){for(int j1;j<i;j){cin>>a[i][j];}}for(int i5;i>1;i--){for(int j1;j<i;j){…

解决SecureFX的中文乱码问题

SecureFX的乱码截图 一般出现乱码问题&#xff0c;看起来会很烦&#xff0c;所以&#xff0c;我们要干掉它。 解决步骤&#xff1a; 1&#xff0c;在SecureFX中&#xff0c;选择“选项”-“全局选项”&#xff0c;打开对话框&#xff0c;不同的版本可能会显示略有不同&#x…

【Openstack Train】十五、glance命令合集

本文介绍了glance组件的常用命令。关于openstack的安装&#xff0c;可以参考以下内容&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装 【Openstack Train安装】四、MariaDB/RabbitMQ 安…

【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)spring boot项目搭建、vue项目搭建、微信小程序项目搭建

项目笔记为项目总结笔记,若有错误欢迎指出哟~ 【项目专栏】 【java+vue+微信小程序项目】从零开始搭建——健身房管理平台(1)项目搭建 持续更新中… java+vue+微信小程序项目】从零开始搭建——健身房管理平台 项目简介Java项目搭建(IDEA)1.新建项目2.项目类型3.项目设置4…

Springboot养老院信息管理系统的开发-计算机毕设 附源码 27500

Springboot养老院信息管理系统的开发 摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;…

「Swift」类淘宝商品瀑布流展示

前言&#xff1a;需要做一个类似于淘宝商品页面的瀑布流展示 结构分析&#xff1a; ps&#xff1a;图片来源 思路分析&#xff1a; 该瀑布流主要还是基于UICollectionView进行展示&#xff0c;只是在cell展示的UICollectionViewFlowLayout需要进行相应调整和自定义&#xff…

医药行业:轻松学会超低温冰箱技能

超低温冰箱在医疗、科研和生物领域中扮演着至关重要的角色&#xff0c;用于存储和保护对温度极为敏感的样品和药品。 然而&#xff0c;由于这些冰箱内的温度波动可能导致样品的损坏&#xff0c;因此对超低温冰箱的监控变得至关重要。 客户案例 医疗研究机构 上海某医疗研究机…

【Seata源码学习 】篇六 全局事务提交与回滚

【Seata源码学习 】篇六 全局事务提交与回滚 全局事务提交 TM在RPC远程调用RM后,如果没有出现异常&#xff0c;将向TC发送提交全局事务请求io.seata.tm.api.TransactionalTemplate#execute public Object execute(TransactionalExecutor business) throws Throwable {// 1. …

大文件分片上传、分片进度以及整体进度、断点续传【前端原生、后端 Koa、Node 原生】(一)

分片进度 效果展示&#xff0c;一个分片是 500MB 的 这个分片大小是 10MB 的 大文件分片上传 效果展示 前端 思路 前端的思路&#xff1a;将大文件切分成多个小文件&#xff0c;然后并发给后端。 页面构建 先在页面上写几个组件用来获取文件。 <body><input ty…

网工学习7-配置 GVRP 协议

7.1GARP概述 GARP(Generic Attribute Registration Protocol)是通用属性注册协议的应用&#xff0c;提供 802.1Q 兼容的 VLAN 裁剪 VLAN pruning 功能和在 802.1Q 干线端口 trunk port 上建立动态 VLAN 的功能。 GARP 作为一个属性注册协议的载体&#xff0c;可以用来传播属性…

(1w字一篇理解透Unsafe类)Java魔法类:Unsafe详解

Java魔法类 Unsafe 文章导读&#xff1a;(约12015字&#xff0c;阅读时间大约1小时)1. Unsafe介绍2. Unsafe创建3. Unsafe功能3.1内存操作3.2 内存屏障3.3 对象操作3.4 数组操作3.5 CAS操作3.6 线程调度3.7 Class操作3.8 系统信息 4. 总结 JUC源码中的并发工具类出现过很多次 …

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

netcore swagger 错误 Failed to load API definition

后端接口报错如下&#xff1a; 前端nswag报错如下&#xff1a; 根据网上查询到的资料说明&#xff0c;说一般swagger这种错误都是控制器里有接口代码异常造成的&#xff0c;通常是接口没有加属性Attribute&#xff0c; 比如[HttpPost("Delete")]、[HttpGet("Del…

基于ssm的疫苗预约系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于ssm的疫苗预约系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

从这7点重构品牌企业的业务中台系统|徐礼昭

文&#xff5c;徐礼昭 &#xff08;商派市场负责人&#xff0c;RRL重构零售实验室负责人&#xff09; 重构或者升级企业的数字化系统究竟有多重要&#xff1f; 笔者列举两个简单的数字化项目案例&#xff0c;数据仅供大家参考—— &#xff08;1&#xff09;某连锁企业线上云店…

【OpenCV】计算机视觉图像处理基础知识

目录 前言 推荐 1、OpenCV礼帽操作和黑帽操作 2、Sobel算子理论基础及实际操作 3、Scharr算子简介及相关操作 4、Sobel算子和Scharr算子的比较 5、laplacian算子简介及相关操作 6、Canny边缘检测的原理 6.1 去噪 6.2 梯度运算 6.3 非极大值抑制 6.4 滞后阈值 7、Ca…

mockito加junit实现单元测试笔记

目录 一、简介1.1 单元测试的特点1.2 mock类框架使用场景1.3 常用mock类框架1.3.1 mockito1.3.2 easymock1.3.3 powermock1.3.4 JMockit 二、mockito的单独使用2.1 mock对象与spy对象2.2 初始化mock/spy对象的方式初始化mock/spy对象第1种方式初始化mock/spy对象第2种方式初始化…