关键词:快速傅里叶变换;流水线结构;可重配置
快速傅里叶变换(FFT)算法在无线通信、语音识别、图像处理、数字滤波和频谱分析领域有着广泛应用.其中Cooley-Tukey算法具有原址运算的特点,易于硬件实现.基于此算法实现的流水线结构FFT处理器在实时专用处理器中得到了广泛应用.Bi和Jones提出一种固定1024点流水线FFT处理器结构,该结构在运算的每级只采用一个复数乘法器.基于此结构Hasan设计了一种能够进行16,64,256和1024点FFT运算的可变点流水线FFT处理器,增强了处理器运用的灵活性.但该处理器结构所需的中间数据及旋转因子存储容量较大,各级的地址控制逻辑比较复杂,运算时间较长,不适于对速度和面积要求越来越高的应用场合作者提出了一种实时可重配置的FFT处理器.该处理器采用小点数内部流水和大点数二维化处理结构,通过控制各处理模块实现4,16,64,256和1 024点复数FFT运算,并给出了该结构与Hasan结构的性能比较.
1 可重配置FFT算法原理
N个样本点的离散博里叶变换(DFT)表达式为
式(2)表明,计算组合数N=r1 r2点DFT等价于先求出r2组r1点的DFT,其结果乘以旋转因子后,再计算r1组r2点的DFT.
基-4时间抽取FFT算法中,16点FFT运算可以分为两级,第1级基本运算是4点序列的DFT.因此,如果只取16点FFT运算的第1级运算便可同时完成4点FFT运算.
2 可重配置FFT处理器的实现
2.1 系统设计
FFT处理器由数据输入单元、固定64点FFT、流水处理单元、中间乘旋转因子单元、4和16点FFT可变流水处理单元及数据输出单元组成.如图1所示.
在进行FFT运算时,单元选择控制逻辑根据需要变换长度N激活相应的处理单元.
根据式(2)对1 024点输入数据进行FFT运算,首先数据输入单元要按照N=rlr2=64×16完成对输入1 024点数据的分解,然后固定64点FFT流水处理单元完成16次64点运算.运算结果分别与1024个中间旋转因子相乘,然后乘旋转因子单元完成对这1 024个结果的整形,并使用4点和16点可变处理单元完成64次16点变换.数据输出单元完成对结果进行最后整形并同时输出1个块浮点溢出检测指数和1 024个数据结果.同理对于256点的FFT运算,数据输入单元按照N=r1r2=64×4进行分解运算即可.
2.2 地址生成
可重配置FFT处理器包括输入数据地址产生单元、64点数据旋转因子地址产生单元、中间乘旋转因子地址产生单元、中间数据存取地址产生单元、4,16点FFT数据及旋转因子地址产生单元和输出数据地址产生单元.每个单元都由计数器和地址变换器构成,每周期产生一组地址.由于采用的是Cooley-Tukey算法同址运算规则,倒序输入正序输出.因此针对不同长度的FFT运算,地址变换器只需要对计数器的输出值进行不同的变形即可.
由于要实现的最大运算点数为1 024,同时采用流水乒乓存储结构,因此输入、中间、输出单元的地址深度为2,则这3个地址产生器中的计数器为11位,最高位作为乒乓选择控制位.产生的各个单元地址如图2所示.中间数据地址产生单元只需要生成256点和1 024点数据地址即可.中间数据存地址即为输入数据地址.输出数据地址只需要产生4,16,256和1 024点数据地址.256个旋转因子可从1 024个旋转因子中抽取得到.产生的中间旋转因子地址如图3所示.
4,16和64点FFT处理器采用Hansan结构,它们的存储容量远小于一个整1 024点所需的存储容量.为了加快数据访问时间,同时减少存储器容量,16点FFT运算所需的旋转因子值可以直接存储为常数. FFT同时采用块浮点定标方式,以提高运算精度.
3 ASIC验证及性能分析
使用VHDL硬件编程语言在RTL级对可重配置FFT处理器进行了代码描述.基于SMIC 0.18μm标准单元工艺库,用Synopsys DesignCompiler综合工具进行逻辑综合,使用Astro 工具进行版图规则及布局布线;用仿真工具VCS进行逻辑动态仿真,用参数提取工具Star-RCXT提取寄生参数并使用静态时序分析工具PrimeTime对整个设计系统进行静态时序分析.处理器的ASIC版图如图4所示存储器按照图1所示数据流的方向排放,以便于逻辑单元布局布线.处理器版图采用了3层电源环结构.采用该结构一方面可增加管脚供电能力,另一方面也可有效减小芯片面积(处理器芯片面积为3.6mm×3.7mm)