APP下载

点数可配置FFT 处理器ASIC 设计

2022-07-09孔令甲

电子技术与软件工程 2022年9期
关键词:碟形点数复数

孔令甲

(中国电子科技集团公司第十三研究所 河北省石家庄市 050000)

FFT 是离散傅立叶变换的快速处理算法。实际工程应用中,部分信号在时域上没有明显的特征,变换到频域,会表现出比较明显的特征。假设采样频率为Fs,信号频率F,采样点数为N,那么FFT 运算的结果就是N 点的复数。运算结果的每一个点对应着一个频率点,而这个点的模值,是该频率位置处的幅频特性。

实际运用中,系统在不同的场景中可能需要变换时序序列的处理长度,在高分辨率场合可能需要较长序列的FFT运算,而对实时处理能力较高的场合则对处理时间要求更高,则通过降低FFT 运算点数,来达到要求。实际应用中面临更快速或者更高精度的频谱分析要求,应此可配置点数的FFT 处理器具有较大的应用范围。

FFT 比较普遍的实现方法是基-2 和基-4FFT算法,radix-2 碟形算法由1 个复数乘法和2 个复数加法组成,而radix-4 碟形算法由3 个复数乘法和8 个复加组成。基2FFT 算法结构简单,实现难度相对较低,可以完成任意2点数据的FFT 运算。但是运算时间长,硬件消耗较大。基4算法相对处理速度更快,可以更好的满足实时性的要求,但是算法结构相对复杂,灵活性更差,只能完成4 的整数次幂的运算。

基于此,各研究者提出了运算速度更快和硬件消耗更小的改进算法。一些研究者提出了混合基、分裂基等高基混合基算法,可调节点数位宽、可调精度结构等方案来改善radix-2FFT 算法效率。

高基和混合基算法可以达到更高的运算速度和较小的硬件消耗,但是如果FFT 运算点数是不固定的,部分分裂基和高基算法无法同时适用不同点数的FFT 变换要求。

因此,本文基于基2FFT算法,提出了一种可配置点数的FFT 硬件实现结构。该算法实现结构简单,运算点数可配置,可以完成任意2点的FFT 运算。另外,由于其特殊的碟形运算结构,可以减少乘虚部操作带来的硬件消耗。

1 基2-FTT算法原理

1.1 基2 FFT算法

1.1.1 DFT

N 为离散傅立叶变换的序列长度。FFT 是DFT 的一种快速变换算法,大大减少了运算量,可以快速完成时域到频域的转换,完成频谱分析,在工程中有广泛的应用。基2 FFT 算法由于其算法简单,结构易于实现,应用广泛。

1.1.2 基2 FFT 算法

2 基-22FTT算法原理

由上式可知,基2-FFT 算法每一级运算包含两次碟形,第一级旋转因子乘法运算由乘虚部运算(*(-j))代替原来基2FFT 算法的复数运算,乘虚部运算只需要将实部和虚部互换,虚部取反即可完成运算,而复数乘法运算需要完成多次乘法和加法运算,大大减少了运算量。具体需要进行乘虚部运算的位置由当前运算级数和所处序列的位置共同决定。

根据以上公式推导可以得到基2-FFT 算法运算流图如图1 所示。

图1: 基22-FFT 算法运算流图

16 点基2FFT 算法需要完成两级运算,每级有2 组碟形运算组成,但是每级运算的第一组碟形运算的复数乘法由乘虚部运算(图中模块C)替代,乘虚部运算只需要将数据的实部和虚部互换,不存在乘法运算,大大减少了运算复杂度。每一级运算的碟形2 模块运算包含一次复数乘法运算,可以通过CORDIC 算法完成。基2FFT 算法运算流图结构与基2 FFT 算法基本类似,实现结果简单,模块可复用,硬件易于实现。

基2FFT 算法适用于2点的序列,其最后一级的形式由序列点数决定,如果N 为4 的整数次幂,最后一级包含碟形BFI 和BF2,如果N 只为2 的整数次幂,则最后一级只包含BF1。因此,运用基2FFT 算法设计的FFT 模块可以实现2点数的自由配置选择,可以用在可变点数的FFT处理器中。

3 可配置点数FFT设计

利用基2FFT 算法完成可配置点数FFT 处理器芯片设计。由于设计目标要求点数可配置同时具有较高的运算速度,因此采用串行流水线SDF 结构完成可配置点数FFT 设计。串行流水线SDF 结构可以达到较快的运算速度和实时连续分析处理能力,但相应的硬件消耗相对较高,这里可以通过合适的定点运算和其他设计弥补。基于基2-FFT 算法设计的点数可配置FFT 结构框图如图2 所示。

图2: FFT 硬件实现结构框图

FFT 处理器运算点数通过控制电路配置(必须满足2),之后根据配置的运算点数,时序控制电路根据当前的运算序列数产生各级碟形运算的旋转因子,同时通过时序控制模块内部的状态机,配置碟形运算单元各级的存储单元数。最终根据当前配置点数选择相应的FFT 计数终点和碟形运算输出位置。以1024 点数据处理为例,时序数据为实数,实时输入FFT 处理器,处理器将前512 组数据寄存在RAM中,在接收到512 个数据之后开始第一级BF1 运算,运算结果给第一级BF2 寄存,到768 个数据,第一级BF2 开始碟形运算。时序1024 点数据输入完成开始第二组1024 点时域数据输入寄存,依次类推,完成1024 点FFT 运算。输出结果为复数,实时更新频域分析结果,可以进行幅度、相位、复数等多种形式选择输出。

不同点数基2FFT 算法运算点数和运算级数BF1/BF2关系如表1 所示。

从表1 可知,FFT 处理器通过选择运算级数和最后一级的BFI 或BF2 来改变FFT 运算点数,完成频谱分析。FFT模块的内部计数器计数终点根据控制电路输入的点数配置。4096 点基2-FFT 运算由6 级运算完成,每级包含两级碟形运算,碟形运算1(BF1)之后不需要进行旋转因子的复数乘法运算,部分点进行乘虚部操作(x(k)*-j),减少了运算量。

表1: 运算点数和运算级数BF1/BF2 关系

具体实现时设计采用按频域抽取FFT 算法,因此输入数据是正序的,输出为倒序,在一组数据频谱分析完成好,首先进行幅度、相位等信息求取,幅度求取模块可以复用复数乘法模块,简化设计。然后输入给频域结果倒序处理模块,完成数据的倒序处理,之后再将结果寄存,根据要求等待用户读取相应的结果。

4 结果分析

利用上文介绍的基2FFT 算法和可配置点数的串行流水线结构完成FFT 的硬件实现。编写VERILOG 代码,完成逻辑综合和后端版图设计,后仿验证时序和功能无误。采用0.18um 工艺完成设计,芯片部分版图如图3 所示。

图3: 芯片部分版图

对芯片进行装配测试,完成芯片的测试,评估其性能,分别测试2MHz信号的2048、1024、512、256的频谱分析结果,芯片的部分测试结果如图4 所示。

图4: 测试结果

从图4 可以看出芯片可以正确完成不同点数的频谱分析,运算结果一致。同时将本设计和部分参考文献的设计结果对比如表2 所示。

表2: 结果对比

从表2 中可见,本设计的计算时间和面积综合指标比较均衡,计算时间较快,可以完成FFT 运算点数自由配置,功能更加完全,芯片面积受最终流片工艺节点制约较多。

5 结论

本设计基于基2FFT 算法提出了一种可变换点数的FFT 硬件实现结构,利用基2-FFT 算法最后一级碟形运算可以根据运算点数选择的特点,利用串行SDF 结构完成了4096~256 点,序列点数可调的FFT 芯片设计。

该种结构实现方式简单,可以完成2 的整数次幂的点数FFT 运算,芯片测试结果输入信号位宽12bit,FFT 处理SQNR 可以达到50.65dB,计算时间90.02us,量化信噪比较高,同时运算速度较快,可以很好的满足实际运用需求。

猜你喜欢

碟形点数复数
碟形弹簧内锥角的计算
评析复数创新题
赣江尾闾碟形湖水体季节性分布特征
求解复数模及最值的多种方法
数系的扩充和复数的引入
复数
无针式碟形静电纺丝喷头不同圆周倾角的模拟与试验
看不到的总点数
画点数
破解“心灵感应”