VIVADO-FFT IP核学习记录

news2024/11/24 4:55:49

根据用户手册使用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核,都要注意输入输出数据的符号类型,提高测试速度。

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

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

相关文章

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

创建腾讯云存储桶---上传图片--使用cos-sdk完成上传

创建腾讯云存储桶—上传图片 注册腾讯云账号https://cloud.tencent.com/login 登录成功,选择右边的控制台 点击云产品,选择对象存储 创建存储桶 填写名称,选择公有读,私有写一直下一步,到创建 选择安全管理&#…

机器人制作开源方案 | 自主型收集餐盘机器人

作者:蔡佳怡、朱启会、郭晨杰、杨昊天、焦家辉 单位:西安外事学院 指导老师:杜喜昭、张燕 1. 产品说明 1.1 设计目的 对于如学校、工厂这种大型食堂,一般的收餐盘模式为用餐人用餐完毕后,把餐盘拿到最近的收餐盘点&…

5.清除SVN用户账号两种方式

常用的客户端又分为2种,第一种是安装在操作系统中的客户端,另外一种是Eclipse的插件 1.操作系统中的客户端 用的小乌龟,在小乌龟里面先把账户信息删除: 1、随便找一个目录,右键tortoiseSVN-------》setting--------…

【DPDK】Trace Library

概述 跟踪是一种用于了解运行中的软件系统中发生了什么的技术。用于跟踪的软件被称为跟踪器,在概念上类似于磁带记录器。记录时,放置在软件源代码中的特定检测点会生成保存在巨大磁带上的事件:跟踪文件。稍后可以在跟踪查看器中打开跟踪文件…

Windows XP安装SVN软件

SVN全称为SubVersion,是Apache开源软件协议下,一个用于代码分布式管理的工具,其孵化的软件产品是TortoiseSVN,该软件是带图形界面的代码管理工具,类似于Git,多了一个图形界面,方便鼠标操作。  …

【每日OJ —— 145. 二叉树的后序遍历】

每日OJ —— 145. 二叉树的后序遍历 1.题目:145. 二叉树的后序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:145. 二叉树的后序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样的效率太…

MATLAB - 评估拟合优度、评价拟合效果

系列文章目录 文章目录 系列文章目录前言一、如何评估拟合优度二、拟合优度统计2.1 SSE - 误差引起的平方和2.2 R 平方2.3 自由度调整 R 平方2.4 均方根误差 三、MATLAB - 评估曲线拟合度3.1 加载数据并拟合多项式曲线3.2 绘制拟合方程、数据、残差和预测范围图3.3 评估指定点3…

外包干了2个月,技术倒退2年。。。

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

c++--面向对象特性

1.面向对象指的是继承,封装,多态。 继承主要关注类的构造,赋值,析构。 以下对多态,封装进行补充说明。 2、多态 2.1.定义 a.赋值 派生类的指针,可以赋值给基类的指针。 派送类的对象,可以赋值给…

某60区块链安全之JOP实战二学习记录

区块链安全 文章目录 区块链安全Jump Oriented Programming实战二实验目的掌握对EVM逆向能力实验环境实验工具实验原理实验内容Jump Oriented Programming实战二 实验步骤Jump Oriented Programming实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中中Jum…

MySQL_1. mysql数据库介绍

shell脚本差不多快完结了接下来会为大家更新MySQL系列的相关的基础知识笔记,希望对大家有所帮助,好废话不多说,接下来开始正题! 1.mysql数据库介绍 mysql 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言…

C#,数值计算——计算实对称矩阵所有特征值与特征向量的三角分解与QL迭代法源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Computes all eigenvalues and eigenvectors of a real symmetric matrix by /// reduction to tridiagonal form followed by QL iteration. /// </summary> pu…

Linux磁盘阵列raid

RAID介绍 RAID &#xff08; Redundant Array of Independent Disks &#xff09;即独立磁盘冗余阵列&#xff0c;通常简称为磁盘阵列。简单地说&#xff0c; RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统&#xff0c;从而提供比单个磁盘更高的存储性能和数据冗余的技…

使用 javascript 模拟 git diff 命令实现文本文件差异比较

diff.html&#xff1a; <!DOCTYPE html> <html> <head><title>文件比较</title><meta charset"UTF-8"> </head> <body> <h1>文件比较</h1> <form><label for"file1">版本1&…

微服务1 springcloud学习笔记P1-P40

b微服务技术栈_哔哩哔哩_bilibili 文档资料: 链接&#xff1a;https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwdd03r 提取码&#xff1a;d03r 一 了解微服务技术 二 Eureka (1) Eureka配置 (2) 注册user-service (3) 总结 Ribbon 负载均衡 (1) 流程 三 nacos配置管理…

CFS三层靶机内网渗透

CFS三层靶机内网渗透 一、靶场搭建1.基础参数信息2.靶场搭建2.1网卡配置2.2Target1配置2.2.1 网卡配置2.2.2 Target1 BT配置 2.3Target2配置2.3.1 网卡配置2.3.2 Target2 BT配置 2.4Target3配置 二、内网渗透Target11.1信息收集1.1.1IP收集1.1.2端口收集1.1.3目录收集 1.2 webs…

思维模型 移情效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。情感迁移&#xff0c;爱屋及乌。 1 移情效应的应用 1.1 移情效应在市场营销中应用-多芬&#xff08;Dove&#xff09;“真美运动” 多芬&#xff08;Dove&#xff09;是一家知名的个人护理…

园区规划技术要点

&#xff08;一&#xff09;技术点介绍 1.WLAN&#xff1a;无线局域网WLAN&#xff08;Wireless Local Area Network&#xff09;是一种无线计算机网络&#xff0c;使用无线信道代替有线传输介质连接两个或多个设备形成一个局域网LAN&#xff08;Local Area Network&#xff09…

BUU UPLOAD COURSE 1

传一个cmd.php木马文件 访问一下这个图片地址 发现什么都没有&#xff0c;在hackbar里面连接一下我们的木马 然后看到了一些目录 然后直接查看flag就出来了 这里也可以用蚁剑去连接 直接访问地址&#xff0c;拿着地址去连接就行了。