小点数FFT旋转因子复数乘法加速器的制作方法

文档序号:14156298阅读:757来源:国知局

本发明属于超大规模集成电路(verylargescaleintegration,简称vlsi)设计范畴,提出一种小点数快速傅里叶变换(fastfouriertransform,简称fft)中旋转因子复数乘法加速器的vlsi结构。



背景技术:

快速傅里叶变换是离散傅里叶变换(discretefouriertransform,简称dft)的快速实现形式,也是数字信号处理领域中的重要算法之一,广泛应用于各种实时的时-频转换处理器中。由于其计算量大,为满足实时处理的需要,必须采用硬件电路实现以提升计算速度;而旋转因子复数乘法又是fft中最重要的运算单元之一,由于它占据fft所需硬件资源的70%,而且决定着fft整体架构的计算速度,因此设计出一种高效的旋转因子复数乘法加速器对提高系统性能具有重要意义。

在目前已有的旋转因子复数乘法电路结构中,各文献创新主要集中在复数乘法器实现的硬件效率上。文献[1]利用公式转换法减少了复数乘法器中实数乘法器的个数,硬件资源使用减小不明显,而且计算速度没有提升,导致系统性能不高。文献[2]用dsp核来实现旋转因子复数乘法,计算速度有很大的提升,但是dsp依然占用了较大的硬件资源。文献[3]中利用正则有符号数(canonicsigneddigit,简称csd)来实现复数乘法器,减少了二进制数中1的数目,节省了一部分硬件资源,但是计算速度不高,导致系统性能较低。由此可见,目前的旋转因子复数乘法器资源硬件消耗较大而且计算速度较慢,导致系统性能较差。

参考文献:

[1]b.zhouandd.hwang,"implementationsandoptimizationsofpipelinefftsonxilinxfpgas,"in2008internationalconferenceonreconfigurablecomputingandfpgas,2008,pp.325-330.

[2]b.zhou,y.peng,andd.h.wang,“pipelinefftarchitecturesoptimizedforfpgas,”ininternationaljournalofreconfigurablecomputing2009(5)·august2009doi:10.1155/2009/219140·source:doaj

[3]h.y.wang,j.j.wu,andc.w.chiu,"amodifiedpipelinefftarchitecture,"in2010internationalconferenceonelectricalandcontrolengineering,2010,pp.4611-4614.



技术实现要素:

本发明的目的是设计一种高效的旋转因子复数乘法加速器来解决目前多数fft中复数乘法器硬件开销大,计算速度慢等问题,从而提升系统性能。本发明的技术方案如下:

一种小点数fft旋转因子复数乘法加速器,其设计方法包括:

1)将每个旋转因子小数整体左移6位;

2)将移位后的每个二进制数进行舍入操作,使其近似为整数;

3)将每个整数向右移位,将其还原为原来的小数;

4)用移位相加的方式分别对每个整数进行电路设计,每个整数对应一个整常数乘法器;

5)接着利用二选一多路器将所有的整常数乘法器电路中相同的部分进行复用,进一步减少加法器数量;

6)在每一级加法器后插入寄存器,进行流水处理。

本发明设计了一种高效的fft旋转因子复数乘法加速器电路,使用“选择”“移位”“加减”操作替代了传统复数乘法器,降低了硬件资源消耗,提高了计算速度,提升了电路性能。

附图说明

图1为旋转因子1所对应的常复数乘法器电路结构图

图2为旋转因子0.7071-j0.7071所对应的常复数乘法器电路结构图

图3为旋转因子w8的常复数乘法加速器电路结构图

图4为旋转因子0.9239-j0.3827所对应的常复数乘法器电路结构图

图5为旋转因子w16的常复数乘法加速器电路结构图

图6为旋转因子0.9808-j0.1951所对应的常复数乘法器电路结构图

图7为旋转因子0.8315-j0.5556所对应的常复数乘法器电路结构图

图8为旋转因子w32的常复数乘法加速器电路结构图

具体实施方式

下面结合附图对本发明进行详细说明。

本发明为一种小点数(8点,16点,32点)fft旋转因子复数乘法加速器的电路结构设计。已知fft中的旋转因子复数乘法如下式:

(xre+jxim)(cosa-jsina)=(xrecosa+ximsina)+j(ximcosa-xresina)

其中(xre+jxim)为输入数据;(cosa+jsina)为旋转因子。所有旋转因子需要提前计算出来存储在rom中供乘法计算使用,故此乘法的特点是一乘数已知。根据此特点,本发明设计了常复数乘法加速器来代替传统复数乘法器,常复数乘法加速器的常系数即为旋转因子。

另外,本发明提出“系数放大法”来设计常复数乘法加速器,其设计思路如下:在前人的工作中,通常情况下会把设计重心放在如何设计和改进常复数乘法加速器的电路结构,目的是高效的实现“移位相加”电路;而本发明则是将设计重心放在“常系数的选择”上,即不对常系数做任何限制,任其成倍的放大或缩小,将任何可能的系数都考虑进来,从而达到对常系数进行完全自由的选择,最终的目的当然是可以尽量减少加速器中所需加法器的数量,从而降低资源消耗,缩短关键路径,提升电路性能。

本发明的具体实现步骤如下:已知fft中的所有旋转因子都是小数,通过移位相加来实现小数常数乘法器会使用较多数量的加法器,而实现整常数乘法器仅仅通过移位就能实现,故可以大大减少加法器的使用量。

1)本发明首先将每个旋转因子小数整体左移6位;

2)将移位后的每个二进制数进行舍入操作,使其近似为整数,此整数的特点是可以通过最少的移位相加操作就可以实现其对应的常数乘法器;

3)将每个整数向右移位,将其还原为原来的小数;

4)用移位相加的方式分别对每个整数进行电路设计,每个整数对应一个整常数乘法器;

5)接着利用二选一多路器将所有整常数乘法器电路中相同的部分进行复用,进一步减少加法器数量;

6)最后在每一级加法器后插入寄存器,进行流水处理,缩短关键路径,提高计算速度,从而达到加速的效果。

旋转因子w8中所有旋转因子如表1所示:

表1w8的所有旋转因子

从表1中可以看出,w8共有四组旋转因子,其中当0<θ<π/4时,旋转因子为1和0.7071-j0.7071两组,分别对应着两组常复数乘法,分别为:

1·(x+jy)=(x+jy)

(0.7071-j0.7071)·(x+jy)=(0.7071x+0.7071y)+j(0.7071y-0.7071x)

当π/4<θ<2π时,旋转因子系数为-0.7071-j0.707,根据旋转因子的对称性,此系数的实部是0<θ<π/4之间系数实部的符号取反,所以此时并不需要第三组常复数乘法,只要在0<θ<π/4之间两组常复数乘法的基础上,对输入、输出数据的实、虚部进行交换和取反即可。

表2为w8中[0,π/4]之间两组旋转因子左移6位后的近似系数值c+js。

表2w8中旋转因子左移6位(扩大26)后的近似值

旋转因子1左移6位后为64,其对应的常复数乘法可以用移位来实现,电路结构如图1;

旋转因子0.7071-j0.7071左移6位后为45-j45,其对应的常复数乘法可以通过移位相加来实现,电路结构如图2;

最后使用二选一多路选择器将前面两电路进行合并,并用寄存器进行流水线处理,便可以得到w8的常复数乘法加速器,如图3所示。可以看出,使用6个加法器,10个寄存器和2个选择器就实现了w8旋转因子的复数乘法操作;另外由于移位操作的延迟可以忽略不计,故此加速器的关键路径约为1个加法器。

其中控制信号signal1控制着加速器电路的输出,如表3所示。

表3控制信号signal1控制加速器电路输出

(1)旋转因子w16中所有旋转因子如表4所示。

表4w16中所有旋转因子

从表4中可以看出,w16共有7组旋转因子,其中当0<θ<π/4时,旋转因子为1,0.9239-j0.3827和0.7071-j0.7071三组,分别对应着三组常复数乘法,分别为:

1·(x+jy)=(x+jy)

(0.9239-j0.3827)·(x+jy)=(0.9239x+0.3827y)+j(0.9239y-0.3827x)

(0.7071-j0.7071)·(x+jy)=(0.7071x+0.7071y)+j(0.7071y-0.7071x)

根据旋转因子的对称性,π/4<θ<2π之间的旋转因子的实、虚部是0<θ<π/4之间旋转因子实、虚部的交换和符号取反,所以此时并不需要额外的常复数乘法器,只要在0<θ<π/4之间两组常复数乘法的基础上,对输入、输出数据实、虚部进行交换和取反即可。

表5为w16中[0,π/4]之间三组旋转因子左移6位后的近似系数值c+js。

表5w16中旋转因子扩大26后的近似值表

旋转因子1左移6位后为64,其对应的常复数乘法可以用移位来实现,电路结构如图1;

旋转因子0.7071-j0.7071左移6位后为45-j45,其对应的常复数乘法可以通过移位相加来实现,电路结构如图2;

旋转因子0.9239-j0.3827左移6位后为60-j24,其对应的常复数乘法可以通过移位相加来实现,电路结构如图4;

最后使用二选一多路选择器将上面三个电路进行合并,并用寄存器进行流水线处理,可以得到w16的常复数乘法加速器,如图5所示。可以看出,使用6个加法器,18个寄存器和8个选择器就实现了w16旋转因子的复数乘法操作;另外由于移位操作的延迟可以忽略不计,故此加速器的关键路径约为1个加法器。

其中控制信号signal2,signal3,signal4,signal5控制着加速器电路的输出,如表6所示。

表6控制信号signal2,signal3,signal4,signal5控制加速器电路输出

(3)旋转因子w32中所有旋转因子如表7所示。

表7w32的所有旋转因子

从表7中可以看出,w32共有15组旋转因子,其中当0<θ<π/4时,旋转因子为1,0.9808-j0.1951,0.9239-j0.3827,0.8315-j0.5556和0.7071-j0.7071五组,分别对应着5组常复数乘法,分别为:

1·(x+jy)=(x+jy)

(0.9808-j0.1951)·(x+jy)=(0.9808x+0.1951y)+j(0.9808y-0.1951x)

(0.9239-j0.3827)·(x+jy)=(0.9239x+0.3827y)+j(0.9239y-0.3827x)

(0.8315-j0.5556)·(x+jy)=(0.8315x+0.5556y)+j(0.8315y-0.5556x)

(0.7071-j0.7071)·(x+jy)=(0.7071x+0.7071y)+j(0.7071y-0.7071x)

根据旋转因子的对称性,π/4<θ<2π之间的旋转因子的实、虚部只是0<θ<π/4之间旋转因子实、虚部的交换和符号取反,所以此时并不需要额外的常复数乘法器,只要在0<θ<π/4之间五组常复数乘法的基础上,对输入、输出数据的实、虚部进行交换和取反即可。

表8为w32中[0,π/4]之间5组旋转因子左移6位后的近似系数值c+js。

表8w32中旋转因子扩大26后的近似值表

旋转因子1左移6位后为64,其对应的常复数乘法可以用移位来实现,电路结构如图1;

旋转因子0.7071-j0.7071左移6位后为45-j45,其对应的常复数乘法可以通过移位相加来实现,电路结构如图2;

旋转因子0.9239-j0.3827左移6位后为60-j24,其对应的常复数乘法可以通过移位相加来实现,电路结构如图4;

旋转因子0.9808-j0.1951左移6位后为63-j12,其对应的常复数乘法可以通过移位相加来实现,电路结构如图6;

旋转因子0.8315-j0.5556左移6位后为54-j36,其对应的常复数乘法可以通过移位相加来实现,电路结构如图7;

最后使用二选一多路选择器将图6和图7中的两电路进行合并,并用寄存器进行流水线处理,如图8所示。图5和图8中的电路共同组成了w32的常复数乘法加速器。可以看出,w32常复数乘法加速器使用14个加法器,32个寄存器和14个选择器就实现了w32的旋转因子的复数乘法操作;另外由于移位操作的延迟可以忽略不计,故关键路径约为1个加法器。

其中控制信号signal6,signal7,signal8控制着加速器电路的输出,如表6所示。

表9控制信号signal6,signal7,signal8控制加速器电路输出

本发明还对提出的w8,w16和w32旋转因子加速器在fpga上综合并进行了分析,各加速器的硬件开销和性能如表10所示。

表10本发明设计w8,w16和w32旋转因子加速器在virtex-6上的资源开销及性能比较

从表10中可以看出,本发明的旋转因子乘法加速器所需的lut和slices资源较少,而且最大时钟频率较高,转换时间较短,所以电路性能较好。因此,本发明所设计的旋转因子乘法加速器降低了硬件资源消耗,提高了计算速度,提升了电路性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1