Xilinx 的FFT IP核使用方法(配置为FFT 、IFFT两种模式)
IP配置
- Configuration
- 配置通道数和FFT长度
- 时钟频率以及数据吞吐速率
- FFT的结构选择
- Srteaming , 可以对数据进行流水处理
- Radix-4 , 基4的迭代算法,使用资源比流水线结构多,但是转换时间长
- Radix-2, Radix-2 lite 都为基2的迭代算法,Radix-2 lite的资源占用更少,但是转换时间也更长。
- Run Time configuration transform length
可以动态改变配置信息。
- Implementation
- Data format(数据格式)
- 定点数或者浮点数
- Scaled option(缩放选项)
- Unscaled : 所有整数位的数据输出。这可以使用更多的FPGA资源。
- Scaled : 截取数据域输入数据位宽相同
- Block Floating-Point : 这种方式确定要充分利用可用的动态范围需要多大的缩放,并以块指数的形式报告缩放因子。
- Rounding Modes
- 截位方式:Truncation ,收敛截位。收敛舍入如果该数是奇数则向上舍入,如果该数是偶数则向下舍入
- Precision(精度)
- 数据输入位宽
- 相位因子位宽:该位宽越大输出噪声越小,但是占用资源越多
- Control Signals
- 时钟使能信号
- 复位信号
- Output Ordering
- 输出数据选择是位/数字反转顺序或自然顺序。基于Radix-2的体系结构(流水I/O、Radix-2 Burst I/O和Radix-2 Lite Burst I/O)提供了位反转排序,基于Radix-4的体系结构(Radix-4 Burst I/O)提供了数字反转排序。对于流水I/O架构,选择自然顺序输出顺序会增加内核使用的内存。对于Burst I/O体系结构,选择自然顺序输出会增加整体转换时间
- Optional Output Fields
- XK_INDEX 输出数据的通道数,也即是XK 的下标,
- OVFLO 标识数据输出通道和状态通道。
- Throttle Schemes
- 实时模式通常提供更小、更快的设计,但对何时必须提供和使用数据有严格的限制。非实时模式没有这样的限制,但设计可能更大、更慢。更多细节请参见控制FFT核心。
- Data format(数据格式)
- Detaild implementation
- Memory option
- 选择数据存储的存储器类型
- Optimize options
- Complex multipliers
- Use CLB logic: 所有的复乘法器都是用片逻辑构造的。这适用于性能要求较低的目标应用程序,或DSP片较少的目标设备。
- Use 3-multiplier structure: 所有复杂乘法器都使用三实乘、五加减结构,其中乘法器使用DSP片。这减少了DSP片数,但使用了一些片逻辑。该结构可以利用DSP片预加器,减少或消除对额外片逻辑的需要,提高性能。
- Use 4-multiplier structure : 所有的复数乘法器都使用四个实数乘法,两个加减法结构,利用DSP片。这种结构以牺牲更多专用乘法器为代价获得了最高的时钟性能。在有DSP片的设备中,加/减操作在DSP片中实现。
- Complex multipliers
- Memory option
s_axis_config_tdata(配置信息)
- FWD/INV
- 0 时做FFT, 1时做逆FFT
- NFFT
- FFT的点数,The value of NFFT is log2 (point size),例NFFT=3时。做8点FFT
- CP_LEN
- 循环前缀长度:在整个变换输出之前,从变换结束开始作为循环前缀初始输出的样本数量。CP_LEN可以是小于点大小的0到1之间的任何数字。此字段仅在循环前缀插入时出现。
- SCALE_SCH
- 当FFT核被配置为处理浮点数据时,不需要伸缩计划(SCALE_SCH被忽略)。浮点数据的规范化和缩放在内部处理。
- 对于Burst I/O架构,伸缩调度为每个阶段指定两个比特,第一个阶段的伸缩由两个lsb给出。缩放可以指定为3、2、1或0,这表示要移位的比特数。N =1024,基数-4突发I/O的扩展调度示例为[1 02 3 2](从最后一级到第一级排序)。对于N =128, Radix-2突发I/O或Radix-2 Lite突发I/O,一种可能的扩展计划是[1 1 1 1 1 0 12](从最后一级到第一级排序)。
- 对于流水I/O体系结构,伸缩调度为每一对基数-2阶段指定两个比特,从两个lsb开始。例如,N = 256的伸缩调度可以是[2 2 2 3]。当N不是4的幂时,最后阶段的最大比特增长为1位。例如,对于N = 512,[0 2 2 2]或[1 2 2 2 2]是有效的伸缩调度,但[2 2 2 2 2]是无效的。对于这个转换长度,SCALE_SCH的两个msb只能是00或01。此字段仅在缩放算术(非缩放、块浮点或单精度浮点)时可用。
仿真结果
信号输入输出:
信号 |
方向 |
定义 |
s_axis_config_tdata |
in |
配置参数 |
s_axis_config_tvalid |
in |
|
s_axis_config_tready |
out |
|
s_axis_data_tdata |
in |
输入数据(复数) |
s_axis_data_tvalid |
in |
数据有效信号 |
s_axis_data_tready |
out |
|
s_axis_data_tlast |
in |
标识每帧的最后一个数据 |
m_axis_data_tdata |
out |
数据输出(复数) |
m_axis_data_tuser |
out |
输出数据的下标 |
m_axis_data_tvalid |
out |
数据有效 |
m_axis_data_tready |
in |
|
m_axis_data_tlast |
out |
标识最后一个数据 |
event_frame_started |
out |
当开始处理一个新帧时,该事件信号被断言为单个时钟周期。这个信号允许你计算帧数,并在需要时将核心的配置同步到特定的帧。 |
event_tlast_unexpected |
out |
当没有接收到一帧的最后一个数据而s_axis_data_tlast拉高时,这表明输入数据的长度与IP核预设的数据不匹配,输入数据长度小于预设的长度 |
event_tlast_missing |
out |
当接收到一帧的最后一个数据而s_axis_data_tlast没有拉高时,这表明输入数据的长度与IP核预设的数据不匹配,输入数据长度大于预设的长度 |
event_status_channel_halt |
out |
每当核心需要向data Output通道写入数据,但由于通道中的缓冲区已满而无法写入时,都会断言此事件。当发生这种情况时,核心处理将停止,所有活动将停止,直到通道缓冲区中有可用空间为止。框架没有损坏。 事件引脚仅在非实时模式下可用。 |
event_data_in_channel_halt |
out |
当IP核需要来自数据输入通道的数据但没有可用数据时,在每个周期断言此事件。 |
event_data_out_channel_halt |
out |
每当核心需要向Status通道写入数据,但由于通道上的缓冲区已满而无法写入时,都会断言此事件。当发生这种情况时,核心处理将停止,所有活动将停止,直到通道缓冲区中有可用空间为止。框架没有损坏。事件引脚仅在非实时模式下可用。 |
FFT仿真结果
时钟频率为160M,正弦波频率为160M/8=20M,FFT(128点)之后在第16根谱线达到最大值,频率为160M/128*16=20M。
当输入一个负频时,代表的频率为160M/128*(128-112)= -20M
IFFT仿真结果
将参数FWD/INV置1就变成了IFFT运算,将IP核配置为IFFT模式,将前面的输出作为IFFT的输入进行仿真,
输出的正弦信号个周期占据8个160M的时钟,说明该正弦信号的频率为:160M/8=20M,与做FFT输入的信号相同,说明IFFT运算结果正确。
Xilinx 的FFT IP核使用方法(配置为FFT 、IFFT两种模式)相关推荐
- Xilinx的FIR IP核使用方法(参数重构改变滤波器形式)
FIR IP核可配置为极点系数为0的横向滤波器结构 IP 核配置 Filter coefficients 这里配置滤波器的类型,在Filter type中可将滤波器配置为单比率.抽取.插值滤波器.对于 ...
- FFT IP核调用与仿真之FFT数学分析
对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...
- FPGA数字信号处理(八)Quartus FFT IP核实现
本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...
- 频谱仪的更改ip_【正点原子FPGA连载】第五十一章 基于FFT IP核的音频频谱仪-摘自【正点原子】开拓者 FPGA 开发指南 (amobbs.com 阿莫电子论坛)...
本帖最后由 正点原子 于 2020-10-24 15:19 编辑 203429z6c3os33t8albi33.png (66.36 KB) 2019-7-28 15:14 上传 第五十一章 基于FF ...
- FPGA数字信号处理(九)Vivado FFT IP核实现
该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...
- Xilinx HLS FFT IP核运行时动态配置FFT长度
如上图所示,xilinx hls的fft ip核不仅可以计算固定长度的FFT变换,还可以在运行时动态配置fft变换长度,但其可配置的长度仅限于小于等于最大长度的所有可能的2的幂,即若该fft ip可支 ...
- FFT IP核调用与仿真之SCALE压缩因子设置
关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的 ...
- Xilinx DDR3 —— MIG IP核的读写仿真(APP接口)
在上一篇中Xilinx DDR3 -- MIG IP核的配置(APP接口),已经观看了Xilinx官方提供的MIG IP核读写例程仿真波形,本着学习的目的,本篇开始自己编写MIG IP核读写程序,用于 ...
- Vivado中的FFT IP核使用(含代码)
本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilog ...
最新文章
- python之接口开发
- Arduino学习笔记35
- 七月算法--12月机器学习在线班-第七次课笔记—最大熵
- 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...
- c ++查找字符串_C ++朋友功能| 查找输出程序| 套装2
- 图解集合6:LinkedHashMap
- kali linux 自动登录,Kali Linux SSH登录故障处理
- 布谷鸟过滤器java使用_一种基于布谷鸟过滤器的云平台隐私保护方法与流程
- 夜神模拟器 Nox Player 雷电模拟器 掉线 连不上 运行不显示的解决方案
- 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
- python实现电话簿
- web安全—万能密码登录(跳过密码验证)
- 手机 9006 端口 不断的闪掉
- 小明加密通道进入_如何利用PS通道去除面部雀斑
- Python自动签退脚本
- KVG制作-【Arduino指纹解锁 智能家居系列-01】DIY自制的智能门禁,AS608指纹解锁+红外线遥控解锁。附演示视频。
- PHP苹果支付以及事件通知-周期订阅实现
- 概率算法c 语言,c语言概率算法简介(Introduction to probabilistic algorithms for c languages).doc...
- MT6771_MT6762_ISP_Tuning_Introduction
- 微型计算机原理孙力娟课后答案,微型计算机原理与接口技术s答案