[Vivado] IP核学习之Fast Fourier Transform

具体参考Xilinx文档,pg109-xfft Version9.1。

一、Fast Fourier Transform有什么用?

Fast Fourier Transform是Vivado中的IP核,即快速傅里叶变换(FFT)。IP核内部使用的Cooley-Tukey FFT算法,是一种计算效率高的离散傅立叶变换 (DFT)方法。
可实现正向和反向复数FFT(即IFFT),运行时间可配置。
• 变换大小N = 2 m 2^m 2m,m = 3-16。
• 数据采样精度bx = 8 - 34。
• 相位因数精度bw = 8 - 34。

二、Fast Fourier Transform怎么用?

配置参数设置

基本参数1
Number of Channels:通道数。可选通道数范围为1-12。多通道操作可用于三个突发I/O体系结构(即Radix-2 Burst I/O、Radix-2 Lite Burst I/O、Radix-4 Burst I/O结构)。
Transform Length:变换长度。选择所需的点大小。从8到65536范围内的所有2的幂是可用的。

Architecture Configuration:结构配置。
Target Clock Frequency(MHz):目标时钟频率(1-1000)。仅用于自动选择结构和计算延迟,但不保证IP核以指定的目标时钟频率运行。
Target Data Throughput(MSPS):目标数据吞吐量(1-1000)。仅用于自动选择结构和计算延迟,但不保证IP核以指定的目标数据吞吐量运行。

Architecture Choice:结构选项。有以下五种结构可选:

  1. Automatically Select:自动选择结构。以选择满足指定目标数据吞吐量的最小实现,前提是在FPGA上实现FFT内核时达到指定的目标时钟频率。
  2. Pipelined Streaming I/O:流水线I/O结构。支持点大小为8到65536。
  3. Radix-2 Burst I/O:Radix-2突发I/O结构。支持点大小为8到65536。
  4. Radix-2 Lite Burst I/O:Radix-2 Lite突发I/O结构。支持点大小为8到65536。
  5. Radix-4 Burst I/O:Radix-4突发I/O结构。支持点大小64到65536。

Run Time Configurable Transform Length:运行时间可配置变换长度,选中则表示选中s_axis_config_tdata中的NFFT字段,此时的Transform Length数值只是最大FFT点数,不代表实际运行时的FFT点数;反之,当转换长度不是运行时间可配置的时,FFT内核使用较少的逻辑资源并且具有更快的最大时钟速度。

实现参数设置

基本参数2
Data Format:数据格式。有两种数据格式可选:

  1. Fixed Point: 选择输入和输出数据样本是定点格式。
  2. Floating Point: 选择输入和输出数据样本是IEEE-754单精度 (32位) 的浮点格式。当FFT IP核处于多通道配置时,浮点格式不可用。

Scaling Options:缩放选项。对于所有体系结构,有三个选项可用:

  1. Block Floating point:块浮点。由核心决定需要多大的缩放才能充分利用可用动态范围,并将缩放因子报告为块指数。
  2. Scaled:缩放。用户定义的缩放计划决定如何在FFT级之间缩放数据。
  3. Unscaled:未缩放。所有整数位增长都被传递到输出。这样会使用更多的FPGA资源。

Rounding Modes:舍入模式。在蝶形的输出处,需要削减数据路径中的LSBs。

  1. Convergent rounding:收敛舍入。收敛舍入是一种无偏舍入方案,可以用避免DC偏差(直流偏差)。当一个数的小数部分正好等于二分之一时,如果该数是奇数,则收敛舍入向上舍入;如果该数是偶数,则向下舍入。由于额外的延迟,选择此选项会增加切片的使用。
  2. truncation:截断。在蝶形阶段之后截断,会引入DC偏差(直流偏差)。

Precision Options:精度选项。
Input Data Width:输入数据位宽。可独立配置为宽度从8到34位。当数据格式为浮点(Floating Point)格式时,输入数据宽度固定为32位。
Phase Factor Width:相位因子位宽。可独立配置为宽度从8到34位。当数据格式为浮点(Floating Point)格式时,相位因子宽度可以设置为24或25位,具体取决于所需的噪声性能和可用的资源。

Control Signals:控制信号。如果两者都被选中,同步清除优先于时钟启用。如果有一个未选中,则可以节省一些逻辑资源,并且获得更高的时钟频率。
ACLKEN:是否启用时钟使能。
ARESETn(active low):是否启用同步清除(低电平有效)。同步清除端,必须持续至少2个时钟周期才能生效。

Output Ordering Options:输出排序选项。

  1. Bit/Digit Reversed Order:位/数字逆序。基于Radix-2的体系结构 (流水线I/O,Radix-2突发I/O和Radix-2 Lite突发I/O) 提供位逆序排序,基于Radix-4的体系结构 (Radix-4突发I/O) 提供数字逆序排序。
  2. Natural Order:自然顺序。对于流水线I/O架构,选择自然顺序输出排序会导致内核使用的内存增加。对于突发(Burst)I/O体系结构,选择自然顺序输出会增加整体转换时间,因为需要单独的卸载阶段。
    Cyclic Prefix Insertion:循环前缀插入。如果输出排序是自然顺序,则可以选择循环前缀插入。循环前缀插入适用于所有架构,通常用于OFDM无线通信系统。

Optional Output Fields:可选输出字段。
XK_INDEX:输出序列序号。数据输出通道中的可选字段。由m_axis_data_tuser端口输出。
OVFLO:溢出标志位。数据输出通道和状态通道中的可选字段。由m_axis_data_tuser端口或是m_axis_status_tdata端口输出。

Throttle Scheme:节流方案。选择性能和数据定时之间的权衡要求。
Real Time: 实时模式。通常给出更小和更快的设计,但对何时必须提供和使用数据有严格的约束。
Non Real Time: 非实时模式。没有实时模式那样的约束,但设计可能更大、更慢。

详细实现参数设置

基本参数3
Memory Options:存储器选项。
Data and Phase Factors:数据和相位因子。对于突发(Burst)I/O架构,块RAM和分布式RAM都可用于数据和相位因子存储。数据和相位因子存储可以在分布式RAM中,用于所有点的大小(包括1024点);在流水线I/O结构中,数据可以部分存储在块RAM中

### 回答1: Vivado FFT Block 是 Vivado 高级综合工具中的一个模块,用于进行浮点数的快速傅里叶变换(FFT)计算。 FFT是一种常见的信号处理算法,用于将信号从时域转换为频域,并且它在数字信号处理和通信系统中有广泛的应用。Vivado FFT Block 内部实现了快速傅里叶变换算法,可以在 FPGA 上高效地进行浮点数的 FFT 计算。 Vivado FFT Block 的主要特点包括: 1. 高性能:它利用 FPGA 硬件资源实现了高度并行的计算,能够以很高的速度执行大规模的 FFT 计算。 2. 可配置性:Vivado FFT Block 提供了多种配置选项,可以根据应用需求灵活地选择 FFT 点数、数据宽度以及其他参数。 3. 易用性:Vivado 工具提供了图形化的界面,可以方便地设置 Vivado FFT Block 的参数,并且可以通过高级综合工具自动生成对应的 RTL 代码。 4. 可扩展性:Vivado FFT Block 可以与其他 Vivado 模块和 IP 核进行组合,以构建更复杂的数字信号处理系统。 使用 Vivado FFT Block 进行浮点数 FFT 计算的基本流程包括: 1. 在 Vivado 工程中导入 Vivado FFT IP 核。 2. 在 Vivado IP Packager 中对 FFT IP 核进行配置,包括 FFT 点数、数据宽度等。 3. 在 Vivado Block Design 中将 Vivado FFT IP 核添加到设计中,并连接输入输出信号。 4. 运行 Vivado 高级综合工具,将设计综合为 RTL 代码,并根据需要进行优化。 5. 将生成的 RTL 代码综合为比特流文件,下载到目标 FPGA 平台上进行验证和调试。 总之,Vivado FFT Block 提供了方便、高性能的浮点数 FFT 计算功能,使得在 FPGA 上实现数字信号处理应用更加简单和高效。 ### 回答2: Vivado FFT块是Xilinx Vivado设计套件中提供的一种用于处理浮点数数据的快速傅里叶变换模块。 快速傅里叶变换(FFT)是一种常用的信号处理算法,用于将时域上的信号转换为频域上的信号。FFT能够提供高效的计算速度和性能,在很多应用领域,如通信、音频处理和图像处理中都有广泛的应用。Vivado FFT块是对FFT算法进行硬件加速的实现。 Vivado FFT块基于FPGA(现场可编程门阵列)技术,可以快速且高效地进行浮点数FFT运算。它提供了灵活的配置选项,可以根据特定的应用需求进行定制。Vivado FFT块支持不同的数据宽度和精度,可以处理单精度浮点数和双精度浮点数数据。 Vivado FFT块的输入和输出接口都采用流式数据传输,可以实现高吞吐量的数据处理。它还支持使用DMA(直接内存访问)引擎进行数据传输,进一步提高了数据传输的效率。 Vivado FFT块还提供了一些额外的功能,如变换方向的选择、数据重排和零填充等。这些功能可以根据具体的算法要求进行配置。 总之,Vivado FFT块是一种用于实现浮点数FFT计算加速的模块。它在Vivado设计套件中提供了高性能和灵活性,并且可以根据特定的应用需求进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奕天者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值