VIVADO IP核整理(二)——FFT

目录

  • IP 核配置
  • IP 核接口
    • s_axis_config_tdata 配置
    • 输入输出端口描述
  • 仿真


参考:FFT IP核 详细介绍
参考:官方文档介绍

IP 核配置

在 IP Catalog 中搜索:Fast Fourier Transform

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

按照上图所示进行配置,下文对配置内容进行详述。

  • Configuration
    • Number of Channels:FFT 通道数,多通道即代表多帧数据同时进行 FFT 计算
    • Transform Length:FFT 长度
    • 当 Architecture Choise 选择 Automatically Select 时,Target Clock Frequency(期望的时钟频率)和 Target Data Throughput(期望的数据吞吐量)这两个参数用于确定使用的 FFT 架构
    • 四种 FFT 架构
      • Pipelined Streaming I/O:支持连续的数据流处理,具有最高的处理速度,但资源占用也最多。适用于对实时性要求高的应用
      • Radix-4 Burst I/O:资源占用比上级少,处理速度比上级慢
      • Radix-2 Burst I/O:资源占用比上级少,处理速度比上级慢
      • Radix-2 Lite Burst I/O:资源占用最少,但处理速度最慢。适用于对性能要求不高且资源非常有限的场景。
    • Run Time Configurable Transform Length:勾选后,可通过设置 s_axis_config_tdata 中 NFFT 字段的长度来改变 FFT 长度(需小于 Transform Length)
  • Implementation
    • Data Format:可选定点或浮点
    • Scaling Options:在 Radix-4 架构下,每经过一级蝶形运算,值会出现 3bit 的增长;Radix-2 则会出现 2bit 的增长,为避免溢出或资源浪费,需设置缩放模式
      • Scaled(缩放):可通过配置缩放因子控制每一级的缩放情况
      • Unscaled(未缩放):不对数据进行缩放,输出数据位宽会在计算过程中增长
      • Block Floating Point(块浮点缩放):在每个计算阶段动态调整缩放因子,相比于 Scaled 模式,块浮点模式会增加资源使用
    • Rounding Modes:Truncation(截断)、Convergent Rounding(收敛舍入,精度高但资源消耗大)
    • ACLKEN(使能信号)
    • ARESETn(复位信号)
    • Output ordering:
      • Natural Ordering:输出按顺序排列,已处理过
      • Bit/Digit Reversed Order:对于 8 点 FFT,输出顺序为 0、4、2、6、1、5、3、7,需自行后续处理
    • XK_INDEX:频谱索引
    • OVFLO:溢出指示信号
    • Throttle Scheme(节流方案):可选择 Non Real Time(非实时)或者 Real Time(实时)

IP 核接口

s_axis_config_tdata 配置

在这里插入图片描述

字段触发条件定义
NFFT勾选 Run Time Configurable Transform Length位宽 5 bit,数值为 log2(FFT点数)
CP_LEN勾选 Cyclic Prefix Insertion循环前缀长度
FWD/INV必选1 为 FFT,0 为 IFFT,每个 bit 对应一个 FFT 通道,第一通道放在最低位
SCALE_SCHScaling Options 选择 scaled 时配置缩放因子,具体方法见下文
PAD自动触发用于 8bit 对齐,当比特数不足 8 时,用零补齐

SCALE_SCH 配置方法:

  • 基于 Radix-2 架构,蝶形运算的阶数为 log₂(N),基于 Radix-4 和 Pipelined Streaming I/O 架构,蝶形运算的阶数为 log₄(N)
  • 对于 Radix-2 和 Radix-4 架构,为每一阶配置一个缩放因子,因子可选 3/2/1/0,每个因子占 2bit
  • 因子 3 对应缩放 1/8;因子 2 对应缩放 1/4;因子 1 对应缩放 1/2,一般而言,总放缩系数为 1/N
  • 例如,对应 Radix-4 架构的 128 FFT点数,位宽为 2 * ceil( log₄(N) ) = 8,缩放因子可以设置为 [1,2,2,2],高阶放在高位

输入输出端口描述

在这里插入图片描述

端口方向定义
s_axis_config_tdataIN配置数据
s_axis_config_treadyOUT表示已准备好接收配置数据
s_axis_config_tvalidIN表示配置数据输入有效
s_axis_data_tdataIN输入数据,[31:16]为虚部,[15:0]为实部
s_axis_data_tlastIN表示输入结束,当 N 点数据输入完后置高
s_axis_data_treadyOUT为高时表示 FFT 模块可以接收数据
s_axis_data_tvalidIN表示数据输入有效
m_axis_data_tdataOUT输出频谱数据,[31:16]为虚部,[15:0]为实部
m_axis_data_tlastOUT表示输出结束,当 N 点数据输出完后置高
m_axis_data_treadyIN表示从设备已准备好数据接收
m_axis_data_tvalidOUT表示数据输出有效

仿真

  • s_axis_config_tdata = 16’b10101001_1_0000000; 高八位是缩放因子,低八位是 FWD/INV 和用于补齐的零,如果不使用缩放因子的话,将其配置为 8’b0000_0001
  • s_axis_data_tdata [31:16]为虚部,[15:0]为实部,均为有符号数

在这里插入图片描述

  • 输入信号是频点为 2MHz的单载波,采样率是 64MHz
  • s_axis_data_tvalid 要与第一个信号输入的同时拉高,在最后一个信号输出后拉低
  • s_axis_data_tlast 是在最后一个信号的所在时钟周期拉高

在这里插入图片描述

  • m_axis_data_tuser 是频谱索引,m_axis_data_tuser * fs / N 为真实的频点,即 4 * 64M / 128 = 2MHz,与输入设置的相符

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

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

相关文章

【计算机基础】任意进制转换方法详解

文章目录 一、通用进制转换(整数部分)1. R进制转十进制(整数)2. 十进制转R进制(整数)二、通用进制转换(小数部分)1. 十进制小数转R进制2. R进制小数转十进制三、二进制与十进制互转(整数部分)1. 二进制转十进制(整数)2. 十进制转二进制(整数)四、二进制与十进制互…

鼠标交互初体验:点击屏幕生成彩色气泡(EGE 库基础)

在图形编程领域,实现与用户的交互是让程序变得生动有趣的关键环节。对于初学者来说,使用合适的图形库能大幅降低开发难度,快速实现创意想法。EGE 库作为一款简单易用且功能强大的 C/C 图形库,特别适合新手入门图形交互编程。本文将…

Office 三大组件Excel、Word、Access 里 VBA 区别对比

以下是Excel、Word和Access在VBA中的主要区别对比及详细说明: 核心对象模型 Excel Workbook(工作簿)→ Worksheet(工作表)→ Range(单元格区域) 核心围绕单元格数据处理,如 Cells(1,1).Value = "数据" Word Document(文档)→ Range(文本范围)→ Paragrap…

【上位机——MFC】对象和控件绑定

对象和控件绑定 将控件窗口和类对象绑定具有两大作用 如果和数据类对象绑定,对象和控件可以进行数据交换。 如果和控件类对象绑定,对象就可以代表整个控件。 与数据类型对象绑定的使用 数据类型对象和控件可实现数据交互重写父类成员虚函数DoDataExch…

Excel处理控件Aspose.Cells教程:压缩Excel文件完整指南

Excel 电子表格是管理、分析和可视化数据的有效工具,但随着文件复杂度的增加,它们很快就会变得臃肿。无论是由于数据集庞大、嵌入图片、格式过多还是隐藏工作表,Excel 文件的大小都可能迅速膨胀,导致打开速度变慢、难以通过电子邮…

软考【软考高级QA】

软考高级QA 1.操作系统管理和调度进程时,有哪些状态?(5种)2.操作系统管理和调度进程时,会进行哪些状态转换? 1.操作系统管理和调度进程时,有哪些状态?(5种) …

神经网络基础-从零开始搭建一个神经网络

一、什么是神经网络 人工神经网络(Articial Neural Network,简写为ANN)也称为神经网络(NN),是一种模仿生物神经网络和功能的计算模型,人脑可以看做是一个生物神经网络,由众多的神经元连接而成,…

Golang 接口 vs Rust Trait:一场关于抽象的哲学对话

一、引言 在现代编程语言中,接口(Interface) 和 Trait 是实现多态和抽象行为的关键机制。它们允许我们定义行为契约,让不同的类型共享相同的语义接口,从而提升代码的复用性和扩展性。 Go 和 Rust 分别代表了两种截然…

java实现一个操作日志模块功能,怎么设计

为了设计一个高效、可靠且可扩展的操作日志模块,可以结合 ​AOP(面向切面编程)​、异步处理​(多线程或MQ)以及合理的存储策略,具体方案如下: ​1. 技术选型与架构设计​ ​​(1) AOP 实现非侵…

【论文阅读】HunyuanVideo: A Systematic Framework For Large Video Generative Models

HunyuanVideo: A Systematic Framework For Large Video Generative Models 原文摘要 研究背景与问题 视频生成的变革性影响:近期视频生成技术的进步深刻改变了个人生活与行业应用。 闭源模型的垄断:主流视频生成模型(如Runway Gen-3、Luma …

在ubuntu中brpc框架安装

下载最新release版本, 稳定性好, 网址链接。 一、解压源码包 # 解压到当前目录 tar -xzvf brpc-1.12.1.tar.gz# 进入解压后的目录 cd brpc-1.12.1二、安装编译依赖(Ubuntu/Debian) sudo apt update sudo apt install -y g make…

《深入理解 Java 虚拟机》笔记

文章目录 最近笔记内存管理执行子系统程序编译、代码优化 老版本 最近笔记 内存管理 执行子系统 程序编译、代码优化 老版本

【Linuc】深入理解 Linux 文件权限

文章目录 一、权限基础解析1. 权限三元组2. 权限类型与数字映射二、查看文件权限三、修改权限实战1. chmod 命令符号模式数字模式(推荐)2. chown 修改归属四、特殊权限机制1. SetUID (Set User ID)2. SetGID (Set Group ID)3. Sticky Bit五、高级权限管理1. 默认权限控制2. A…

RabbitMq学习(第一天)

文章目录 1、mq(消息队列)概述2、RabbitMQ环境搭建3、java基于AMQP协议操作RabbitMQ4、基于Spring AMQP操作RabbitMQ5、代码中创建队列与交换机①、配置类创建②、基于RabbitListener注解创建 6、RabbitMQ详解①、work模型②、交换机1、Fanout(广播)交换机2、Direct(定向)交换机…

缓存置换:用c++实现最不经常使用(LFU)算法

在探讨缓存置换算法时,我们曾详细解读过LRU(Least Recently Used)算法,它凭借 “最近最少使用” 的策略在缓存管理领域大放异彩。今天,让我们将目光聚焦于另一种重要的缓存置换算法 ——LFU(Least Frequent…

深度学习模型的部署实践与Web框架选择

引言 在深度学习项目的完整生命周期中,模型训练只是第一步,将训练好的模型部署到生产环境才能真正发挥其价值。本文将详细介绍模型部署的核心概念、常见部署方式以及三种主流Python Web框架的对比分析,帮助开发者选择最适合自己项目的技术方…

多功能气体检测报警系统,精准监测,守护安全

在化学品生产、石油化工、矿山、消防、环保、实验室等领域,有毒有害气体泄漏风险严重威胁工作人员和环境安全。化工企业生产中易产生大量可燃有毒气体,泄漏达一定浓度易引发爆炸、中毒等重大事故;矿井下瓦斯、一氧化碳等有害气体的浓度实时监…

lvgl多语言设置

搭建开发环境 安装node.js 安装node.js,点击进入官网地址 安装lv_i18n lv_i18n项目地址:Github:https://github.com/lvgl/lv_i18ngit运行命令安装lv_i18n:npm i lv_i18n -g。测试命令:lv_i18n -h 搭建过程报错 …

线程池技术

线程池基本概念 线程池就是在任务还没有到来前,预先创建一定数量的线程放入空闲列表。这些线程都是处于阻塞状态,不消耗CPU,但占用较小的内存空间。 当新任务到来时,缓冲池选择一个空线程,把任务传入此线程中运行&…

Go语言中的并发编程--详细讲解

文章目录 Go语言并发编程**简单介绍**goroutine channel 实现并发和并行for循环开启多个协程Channel管道goroutine 结合 channel 管道**goroutine 结合 channel打印素数**单向管道Select多路复用Goroutine Recover解决协程中出现的PanicGo中的并发安全和互斥锁 Go语言并发编程 …