赞
踩
Xilinx快速傅立叶变换(FFT IP)内核实现了Cooley-Tukey FFT算法,这是一种计算有效的方法,用于计算离散傅立叶变换(DFT)
引脚 | I/O | 功能 |
---|---|---|
aclk | I | 时钟信号 |
aresetn | I | 低电平同步复位信号 |
aclken | I | 时钟(IP核)使能信号,高有效 |
引脚 | I/O | 功能 |
---|---|---|
s_axis_config_tvalid | I | 通知IP核可从tdata读取配置数据 |
s_axis_config_tready | O | 已准备好接收配置数据,高有效 |
s_axis_config_tdata | I | 配置通道,并行输入 |
引脚 | I/O | 功能 |
---|---|---|
s_axis_data_tvalid | I | 通知IP核此时所有输入数据有效,每个上升沿读一次 |
s_axis_data_tready | O | IP核已准备好接收配置数据,高有效 |
s_axis_data_tdata | I | 数据通道,并行输入 |
s_axis_data_tlast | I | 最后一个输入数据时,手动拉高(该数据被读取后,数据将不被读取) |
引脚 | I/O | 功能 |
---|---|---|
m_axis_data_tvalid | O | 通知外部设备此时所有输出数据有效,每个上升沿出一个数据 |
m_axis_data_tready | I | 外设已准备好接收配置数据,高有效 |
m_axis_data_tdata | O | 数据通道,并行输出 |
m_axis_data_tuser | O | 将数据分为实部XK_RE与虚部XK_IM分别输出 |
m_axis_data_tlast | O | 最后一个输出数据时,自动拉高 |
引脚 | I/O | 功能 |
---|---|---|
s_axis_status_tvalid | O | 通知外部设备可读取tdata上的数据,与m_axis_data_tdata同步 |
s_axis_status_tready | I | 外设已准备好接收数据,高有效 |
s_axis_status_tdata | O | 数据指数和溢出标志,并行输出 |
引脚 | I/O | 功能 |
---|---|---|
event_frame_started | O | 新帧:在IP开始处理新帧时,出现一个周期的高电平 |
event_tlast_missing | O | 断帧:数据未满一帧但s_axis_dataLtlast却被拉高 |
event_tlast_unexpected | O | 错帧:数据满一帧但s_axis_dataLtlast却未被拉高 |
event_fft_overflow | O | 溢出:计算结果溢出,在使用缩放定点和单精度浮点时才会出现,仅当溢出是有效选项时才出现 |
event_data_in_channel_halt | O | IP核需要数据而输入端口不能够提供数据 |
event_data_out_channel_halt | O | IP核要输出数据但是输出缓冲区已满,只出现在非实时模式 |
event_status_channel_halt | O | IP核写状态寄存器但无法写入,只出现在非实时模式 |
标准化AXI4-Stream接口:
ACLK,ARESETN,ACLKEN -------- 常规控制信号
TVALID,TDATA -------- 必填通信字段
TREADY,TUSER,TLAST -------- 可选通信字段
TVALID由主机驱动,表示字段TDATA,TUSER,TLAST中的值有效
TREADY由从机驱动,表示从机已准备好接收数据
只有在TVALID,TREADY均为TRUE时,才发生数据传输
所有的AXI通道都必须与字节边界(8bits)对齐
占用:s_axis_config_tdata[ 7:0 ],8bits
NFFT = log2(最大变换点数)
不足8位的高位补0
占用:s_axis_config_tdata[ 15:8 ],8bits
从转换结束起,在输出整个转换之前,最初作为循环前缀输出的样本数。
CP_LEN可以是小于点大小的从零到一的任何数字。该字段仅在循环前缀插入时出现。
选择对应通道为 FFT变换 / IFFT变换
当FWD_INV = 1时,将计算正变换。如果FWD_INV = 0,则计算逆变换。
伸缩时间表:在每层蝶形单元输出上加权,按比例减小输出,只影响幅度,不影响相位
每两位SCALE_SCH对应1个阶段,SCALE_SCH[1 : 0]代表第一阶段。
Radix-2 Burst I/O或Radix-2 Lite Burst I/O为基2FFT,对应阶段数=NFFT = log2(最大变换点数)
每阶段缩小系数可为0-1-2-3,对应缩小倍数实际为0-2-4-8倍
每两位SCALE_SCH对应2个阶段,SCALE_SCH[1 : 0]代表第一、二阶段。
Pipelined,Streaming I/O,对应阶段数=NFFT = log4(最大变换点数)
当最大变换点数为4的幂时,每2个阶段缩小系数可为0-1-2-3,对应缩小倍数实际为0-2-4-8倍
当最大变换点数不为4的幂时,最后阶段缩小系数只能为0-1,对应缩小倍数实际为0-2倍
=====================================================
内容来源:pg109
参考手册:pg109
参考文章:https://mp.weixin.qq.com/s/r6VFiTjC4a3inro5adiwEA
参考配置视频:https://mp.weixin.qq.com/s/1TeuQuBGIEbSB-X_0KKnbg
仅供学习交流,后续给出Verilog驱动代码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。