面向嵌入式的可重构FFT的硬件实现
发布时间:2021-09-25 11:08
针对实时嵌入式应用,提出了一种采用Radix-2算法的可重构FFT硬件加速器结构。该结构一次可并行处理16点FFT,且可在不改变电路结构的情况下,通过修改相应的配置信息来实现16-1 024点FFT。该结构的硬件利用率为100%,整个设计采用Synopsys VCS仿真,在100 MHz工作频率下,对于1 024点16位复数定点FFT仅需要38.6μs,与Cortex M4的DSP相比速度提升了94%以上。经DC综合结果表明在SMIC 0.11μm工艺中,该结构的核心面积为0.98 mm2,可用于嵌入式设备中。
【文章来源】:电子设计工程. 2020,28(21)
【文章页数】:6 页
【部分图文】:
32点DIT FFT的数据流程图
可以看出一共有5个阶段,每个阶段有16个蝶形运算,每个蝶形运算实际上是长度为2的DFT,并且是FFT的基本计算块。图1给出了32点DIT FFT算法中蝶形运算的数据流程图。从图1中可以看到,在前一阶段的计算完成之前,每个阶段都无法进行。因此,在每个阶段中,产生大量中间结果并且需要存储。在一个标准N点FFT实现中,有log2N个计算阶段,每个阶段有N次加载和N次存储操作,如果所有这些数据都存储在存储器中,这可能会大大降低FFT算法的性能。为了打破阶段之间的数据依赖性并降低存储压力,尝试将计算分成小的独立计算。基于分组循环调用的概念,调整FFT数据流以获得分层和细粒度的FFT处理单元。以32点FFT为例,将其重建为规则的结构,如图2所示。FFT的stage0首先被分成两个组,有两个独立的16点FFT变换组。stage1至stage4按照顺序被分别作为第三组至第十组,按照从上到下,从左至右的规则依次计算。每一级的组数是由N/16来控制的,每一组的计算都循环调用这8个基2蝶形运算单元,一次可并行处理16个点。这样可以实现嵌入式应用中面积与性能的平衡。
可循环调用架构图
本文编号:3409617
【文章来源】:电子设计工程. 2020,28(21)
【文章页数】:6 页
【部分图文】:
32点DIT FFT的数据流程图
可以看出一共有5个阶段,每个阶段有16个蝶形运算,每个蝶形运算实际上是长度为2的DFT,并且是FFT的基本计算块。图1给出了32点DIT FFT算法中蝶形运算的数据流程图。从图1中可以看到,在前一阶段的计算完成之前,每个阶段都无法进行。因此,在每个阶段中,产生大量中间结果并且需要存储。在一个标准N点FFT实现中,有log2N个计算阶段,每个阶段有N次加载和N次存储操作,如果所有这些数据都存储在存储器中,这可能会大大降低FFT算法的性能。为了打破阶段之间的数据依赖性并降低存储压力,尝试将计算分成小的独立计算。基于分组循环调用的概念,调整FFT数据流以获得分层和细粒度的FFT处理单元。以32点FFT为例,将其重建为规则的结构,如图2所示。FFT的stage0首先被分成两个组,有两个独立的16点FFT变换组。stage1至stage4按照顺序被分别作为第三组至第十组,按照从上到下,从左至右的规则依次计算。每一级的组数是由N/16来控制的,每一组的计算都循环调用这8个基2蝶形运算单元,一次可并行处理16个点。这样可以实现嵌入式应用中面积与性能的平衡。
可循环调用架构图
本文编号:3409617
本文链接:https://www.wllwen.com/kejilunwen/wltx/3409617.html