Xilinx FFT使用说明和测试

编程入门 行业动态 更新时间:2024-10-23 16:29:21

Xilinx FFT<a href=https://www.elefans.com/category/jswz/34/1769912.html style=使用说明和测试"/>

Xilinx FFT使用说明和测试

Xilinx FFT使用说明和测试

  • 1 IP接口信号
  • 2 IP基本配置
  • 3 IP功能测试

本文主要介绍Xilinx FFT IP的使用方法

1 IP接口信号

FFT用于计算N点的DFT或者IDFT,N为2m,其中m=2~16。IP的输入输出接口如下表所示,主要包括时钟、复位信号,输入的配置信号,输入的原始数据,输出的变换结果,输出的变换状态,以及事件信号。确保所有的信号输入IP时都有确定的值,不然仿真的时候会出现“Failure: ERROR:add_1 must be in range [-1,DEPTH-1]”

接口说明
aclk时钟
aclken时钟使能
aresetn复位
s_axis_config_tready配置信号的tready信号
s_axis_config_tvalid配置信号的tvalid信号
s_axis_config_tdata配置信号的tdata信号
s_axis_data_tready输入信号的tready信号
s_axis_data_tvalid输入信号的tvalid信号
s_axis_data_tdata输入信号的tdata信号
s_axis_data_tlast输入信号的tlast信号
m_axis_data_tready输出信号的tready信号
m_axis_data_tvalid输出信号的tvalid信号
m_axis_data_tdata输出信号的tdata信号
m_axis_data_tuser输出信号的tuser信号
m_axis_data_tlast输出信号的tlast信号
m_axis_status_tready变换状态的tready信号
m_axis_status_tvalid变换状态的tvalid信号
m_axis_status_tdata变换状态的tdata信号
event_frame_start表征开始计算新的数据帧
event_tlast_unexpected表征没有在期望的地方收到tlast信号,如实际输入数据帧的点数不是期望的数量
event_tlast_missing在预期最后一拍没有收到tlast信号
event_fft_overflow数据输出通道存在数据溢出
event_data_in_channel_halt收到的输入数据的数量与预期的不符
event_data_out_channel_haltIP核有数据输出,但接收端没有准备好而无法输出
event_status_channel_haltIP核有状态信号输出,但接收端没有准备好而无法输出

  • 配置通道
    配置通道的数据格式如下图所示,由NFFT、CP_LEN、FWD_INV、SCALE_SCH字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。如果需要修改配置,需要对IP进行复位操作,这样s_axis_config_tready信号才会拉高。SCALE_SCH字段的配置也很重要,如果设置的不正确,IP计算的结果与Python计算的结果对不上。
名称宽度说明
NFFT5bitFFT变换的点数
CP_LENlog2(最大点数)在整个转换输出之前,从转换末尾开始作为循环前缀输出的样本数
CP_LEN可以是从0到比点大小小1的任意数
FWD_INV每个FFT数据通道1bit变换类型,1表示FFT,0表示IFFT
SCALE_SCHPipelined:2×ceil(NFFT/2)
Radix-4:2×ceil(NFFT/2)
Radix-2:2×NFFT
缩放因子,每级的缩放因子由2bit构成

  • 输入通道
    输入数据通道的数据格式如下图所示,tdata信号可以包含多个数据通道,每个数据通道又由数据的实部和虚部组成,同样需要进行8bit边界补足。
  • 输出通道
    输出数据通道的数据格式如下图所示,tdata信号可以包含多个数据通道,每个数据通道又由数据的实部和虚部组成,同样需要进行8bit边界补足。
  • 输出用户通道
    输出用户通道的数据格式如下图所示,由XK_INDEX、BLK_EXP、OVFLO字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。
名称宽度说明
XK_INDEXlog2(最大点数)输出数据的索引(unsigned 2’s complement)
BLK_EXP8每个通道一个,Block exponent (unsigned 2’s complement)
只有在block floating-point被使用时才有效
OVFLO1每个通道一个,表征算法是否溢出

  • 输出状态通道
    输出状态通道的数据格式如下图所示,由BLK_EXP、OVFLO字段,以及为了凑够8bit补足的PAD字段构成,各字段的含义如下表所示。
名称宽度说明
BLK_EXP5每个通道一个,每个通道的scale量
OVFLO1每个通道一个,表征算法是否溢出

2 IP基本配置

添加XFFT IP,使用GUI对IP的各项参数进行配置,在Implementation Details可以查看配置后各个信号的参数格式。

  • Configuration
    • Number of Channel:输入输出通道的数量
    • Transform Length:FFT点数
    • Target Clock Frequency:工作频率,决定FFT计算延时
    • Architecture Choice:架构选择
    • Run Time Configurable Transform Length:勾选之后FFT点数由配置通道决定,即配置通道的数据包含NFFT字段

  • Implementation
    • Data Format:数据格式
      • Fixed Point:固定点
      • Floating Point:浮点
    • Scaling Options:缩放选项
      • Block Floating Point:块浮点
      • Scaled:定点缩放
      • Unscaled:全精度,无缩放
    • Rounding Modes:截断方式
      • Convergent Rounding: 将计算结果向着最近的整数舍入
      • Truncation:直接截断
    • Input Data Width:输入数据宽度,指的是单个实部或虚部的宽度
    • Phase Factor Width:相位因子宽度
    • Control Signals:控制时钟使能和复位信号
    • Output Order:输出顺序
      • Bit/Digit Reversed Order:按bit倒序
      • Natural Order:自然顺序
    • Cyclic Prefix Insertion:是否在输出数据中自动插入循环前缀
    • Optional Output Fields:输出用户通道和输出状态通道的数据是否包含XK_INDEX、OVFLO字段
    • Throttle Scheme:在性能和数据定时需求之间进行权衡。Real Time模式通常提供更小、更快的设计,但提供和使用数据有严格的限制。Non Real Time没有这样的限制,但设计可能更大更慢。

  • Detailed Implementation
    • Memory Option:寄存器类型选择
    • Optimize Options:资源和性能优化选项

3 IP功能测试

  • FFT变换
    本例子计算信号f(t)=63sin(2π×50t)+63sin(2π×80t),该信号有两个频率点50和80Hz,幅度的变化范围为[-126,126]。首先需要对该信号进行采样,得到离散的序列,1s内采集256个采样点,得到离散化的数据点存入.coe文件中,作为BRAM的初始化文件,在测试时从BRAM中读出数据送入XFFT IP中进行计算。该测试工程可从GitHub下载。
    • 使用Python程序对f(t)信号进行计算的结果如下图所示,计算结果符合预期。

    • 使用Vivado进行仿真得到的结果如下图所示,计算的结果与Python的结果一致。

  • FFT与IFFT变换
    本例子计算信号f(t)=1022sin(2π×5t),该信号有一个频率点5Hz,幅度的变化范围为[-1022,1022]。首先需要对该信号进行采样,得到离散的序列,1s内采集256个采样点,得到离散化的数据点存入.coe文件中,作为BRAM的初始化文件,在测试时从BRAM中读出数据送入XFFT IP中进行计算。该测试工程可从GitHub下载。
    • 使用Python程序对f(t)信号进行计算的结果如下图所示,计算结果符合预期。
      • 原始信号的变化曲线
      • 傅里叶变换
      • 逆傅里叶变换
    • 使用Vivado进行仿真得到的结果如下图所示,计算的结果与Python的结果一致。
      • 整体波形
      • 傅里叶变换
      • 逆傅里叶变换

更多推荐

Xilinx FFT使用说明和测试

本文发布于:2023-12-03 20:25:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1657280.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:使用说明   测试   Xilinx   FFT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!