Vivado官方FFT-IP核_Fast Fourier Transform v9.0

Chapter 1: Overview

  • FFT核计算N点前向DFT或反DFT(IDFT),其中N可以是2“,m = 3-16。
  • 对于定点输入,输入数据是N个复数值的向量,表示为双b位二进制补码数,即b,数据样本的每个实部和虚部的位,其中b是在8到34位的范围内。类似地,相位因子bw可以是8到34位宽。
  • 对于单精度浮点输入,输入数据是N个复数值的向量,表示为双32位浮点数,相位因子表示为24位或25位定点数。
  • 所有存储器都使用Block RAM或分布式RAM进行片上存储。 N元素输出向量使用b表示输出数据的每个实部和虚部的比特。输入数据以自然顺序呈现,输出数据可以是自然或位/数字反转顺序。数据输入和输出的复杂性质是FFT算法固有的,而不是实现。
  • 有三种算术选项可用于计算FFT:
    ·全精度非标定算法
    ·缩放定点,您可以在其中提供缩放计划
    ·块浮点(运行时调整后的缩放)
  • 点大小N,正向或反向变换的选择,缩放调度和循环前缀长度是运行时可配置的。可以在逐帧的基础上改变变换类型(正向或反向),缩放调度和循环前缀长度。更改磅值会重置核心。
  • 提供四种架构选项:流水线流I / O,Radix-4突发I / O,Radix-2Burst I / O和Radix-2 Lite突发I / O.有关每个体系结构的详细信息,请参阅体系结构

Algorithm

  • FFT内核使用Radix-4和Radix-2分解来计算DFT。对于突发I / O架构,使用时间抽取(DIT)方法,而频率抽取(DIF)方法用于流水线流I / O架构。
  • 当使用Radix-4分解时,N点FFT由loga(N)级组成,每级包含N / 4个Radix-4蝶形。不是4的幂的点大小需要额外的Radix-2阶段来组合数据。使用Radix-2分解的N点FFT具有log2(N)级,每级包含N / 2个Radix-2蝶形。
  • 通过共轭相应的正向FFT的相位因子来计算逆FFT(IFFT)。

Chapter 2: Product Specification

在这里插入图片描述

  • aclk:上升沿时钟

  • aclken:高电平有效时钟使能(可选)

  • aresetn:Active-Low同步清除(可选,始终优先于aclken),需要两个周期的最小aresetn有效脉冲

  • s_axis_config_tvalid:配置通道的TVALID,由外部主设备断言,表示它能够提供数据

  • s_axis_config_tready:TREADY用于配置通道,由核心断言,表示它已准备好接受数据

  • s_axis_config_tdata:配置通道的TDATA,携带配置信息:CP_LEN,FWD / INV,NFFT和SCALE SCH,请参阅运行时变换配置

  • s_axis_data_tvalid:数据输入通道的TVALID,外部主设备使用它来表示它能够提供数据

  • s_axis_data_tready:TREADY用于数据输入通道,核心使用它来表示它已准备好接受数据

  • s_axis_data_tdata:数据输入通道的TDATA,携带未处理的样本数据:XN_RE和XN_IM,请参阅数据输入通道

  • s_axis_data_tlast:TLAST用于数据输入通道,由外部主机在帧的最后一个样本上断言。核心不使用此项,除非生成事件事件“意外”和事件“丢失”事件

  • m_axis_data_tvalid:数据输出通道的TVALID。由核心断言,表明它能够提供样本数据。

  • m_axis_data_tready:TREADY用于数据输出通道,由外部从设备断言,表示它已准备好接受数据。仅存在于非实时模式。

  • m_axis_data_tdata:数据输出通道的TDATA。携带已处理的样本数据XK_RE和XK_IM。请参阅数据输出通道。

  • m_axis_data_tuser:TUSER用于数据输出通道。携带额外的每个样本信息,例如XK_INDEX,OVFLO和BLK_EXP。请参阅数据输出通道。

  • m_axis_data_tlast:TLAST用于数据输出通道。由帧的最后一个样本上的核心断言。

  • m_axis_status_tvalid:状态通道的TVALID。由核心断言,表示它能够提供状态数据。

  • m_axis_status_tready:状态通道的TREADY。由外部从设备断言,表示它已准备好接受数据。仅存在于非实时模式

  • m_axis_status_tdata:状态通道的TDATA。携带状态数据:BLK_EXP或OVFLO。请参阅状态频道。

  • event_frame_started:当P核开始处理一个新帧。

  • event_tlast_unexpected:数据未满一帧而 s_axis_data_tlast却置高

  • event_tlast_missing:数据满一帧而 s_axis_data_tlast却保持低电平

  • event_fft_overflow:计算结果溢出,在使用缩放定点和单精度浮点时才会出现,仅当溢出是有效选项时才出现

  • event_data_in_channel_halt:IP核需要数据而输入端口不能够提供数据

  • event_data_out_channel_halt:IP核要输出数据但是输出缓冲区已满,只出现在非实时模式

  • event_status_channel_halt:IP核写状态寄存器但无法写入,只出现在非实时模式

  • 注意:所有AXI4-Stream端口名称均为小写,但为了便于可视化,本文档在引用端口名称后缀(如TDATA或TLAST)时使用大写。

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

Chapter 3: Designing with the Core

CONFIG_CHANNEL

TDATA Fields

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

  • NFFT: 变换的点大小,NFFT可以是最大变换的大小或任何较小的点大小。例如,1024点FFT可以计算点大小1024,512,256等。 NFFT的值是log2,(点大小)。该字段仅与运行时可配置的变换点大小一起出现。有关更多信息,请参见变换大小
    在这里插入图片描述

  • CP_LEN:循环前缀长度:在输出整个变换之前,最初作为循环前缀输出的变换结尾的样本数。 CP_LEN可以是从零点大小到零的任何数字。该字段仅存在循环前缀插入。有关更多信息,请参阅循环前缀插入。

  • 循环前缀插入占用FFT输出的一部分,并将其作为变换开头的前缀。结果输出数据包括循环前缀(输出数据末尾的副本),后跟完整的输出数据,全部按自然顺序排列。循环前缀插入仅在输出排序为自然顺序时可用

  • 当使用循环前缀插入时,可以逐帧设置循环前缀的长度而不中断帧处理。循环前缀长度可以是从0到1点的任意数量的样本。循环前缀长度由配置通道中的cp_LEN字段设置。例如,当N = 1024时,循环前缀长度可以是0到1023个样本,并且CP_LEN值001001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值