流水线式快速傅里叶变换处理器的制作方法

文档序号:6416003阅读:571来源:国知局
专利名称:流水线式快速傅里叶变换处理器的制作方法
技术领域
本发明涉及一种快速傅里叶变换(FFT)处理器,具体地说,本发明涉及一种FFT流水线式处理器结构,它优化为最大限度地减少能耗和集成电路面积的要求。
傅里叶变换是一种周知的技术,它可用于分析随时间变化的信号。简单地说,傅里叶变换可将信号从随时间变化的格式转换成随频率变化的格式。逆傅里叶变换进行相反的转换。在用一系列按规则时间周期采样的连续信号样本以离散的形式表示一信号时,相应的傅里叶变换称为离散傅里叶变换(DFT)。
从较高层次上说,DFT是一种简单的算法。该算法包括步骤为输入函数的数字化数据点、用正弦和余弦函数乘各个数据点、在相应的累加器中对最终的积即用于正弦分量的积和由于余弦分量的积求和。在按这种方式处理了各个数据点时,用所处理的数据点的数量除正弦和余弦累加器。最终的数值是用于目前正测量的频率的正弦和余弦分量的均值。对所有的整数个频率重复这一过程,直至频率等于奈奎斯特频率的两倍。
更正式地说,可将DFT和逆DFT定义成如下F(f)=ΣT=0N-1f(T)WNfT-------------(1)]]>f(T)=1/NΣf=0N-1F(f)WN-fT------------(2)]]>其中F(f)=频率分量或变换值f(T)=时基数据点或逆变换N=数据点的数量T=离散的时间
f=离散的频率WN=e-j2π/n=Cos(2π/N)-jSin(2π/N)=“旋转因子”因此,旋转因子是一复数,在一般情况下,频率域和时间域函数均为复数,两个复数值的积会产以下的项(A+jB)(C+jD)=AC+jAD+jBC-BD=(AC-BD)+j(AD+BC)(3)项(A+jB)可例如看作是时间域函数,项(C+jD)可看作是WN即WN=Cos(2π/N)+jSin(2π/N)。
DFT的实际问题是要花很长时间进行计算。事实上,就N个数据点来说,执行DFT需要进行约N2次复杂操作。一次复杂操作包括计算出正弦和余弦函数、乘以数据点并将积加起来。这一问题在可能有数万个数据点要加以“实时”变换的应用中特别麻烦。另一方面,如果减少数据点的数量,则可成平方地减少操作的次数。因此,将数据序列分解成两个相等的部分并分别对各个部分进行处理可以节省一半的计算操作。这是用于推导出快速过傅里叶变换(FFT)的方法。将输入数据阵列分成越来越小阵列,以减少计算量,然后,用特征交叉模型来重新组合变换结果,所述特征交叉模型称为“蝶”,它实际是一种小型FFT。FFT中的蝶的长度称为FFT的“基数”(R)。因此,如果用多个小的DFT例如长度为2或4的蝶来取代大的DFT,则可显著地减少复杂操作的数量。即使操作的次数随DFT的长度的减小而降低,DFT长度的减少也要“花费”约N次操作,因此,对FFT来说有常见的NlogN次计算复杂性。
图1A示出了N=8个数据点阵列D0-D7的实例性FFT蝶信号流的图。将所述阵列的偶数分量输入给前4-点DFT(8-点DFT的长度的一半),将奇数数据点D1、D2、D5和D7输入给后4-点DFT。将这两个四点阵列的输出结合起来,以便通过第二次重复由四个频率分量构成的各个集合,然后将偶数和奇数集加到一起,而生成与八点DFT相对应的八点序列。但是,在求和之前,奇数DFT频率分量必须是异相的,因为,时间域中奇数项会移动一个数据点。可用多个数据块并用增量为π/4的零到2π的弧度范围表示上述相移。
这种分解-求解的方法可扩展成如图1B所示,在图1B中,将各个四-点DFF分解成两个2-点DFT。当然,必须在以后将四个2-点DFT组合成为两个4-点DFT,它们如上所述那样被组合成一个8-点DFT。这可以再减少整个处理时间几乎一半。
因此,可将8-点FFT输入数据分成仅由两个或四个数据点构成的子集,可对这些子集进行二或四点离散傅里叶变换。使变换后的输出乘以适当的“旋转因子”,然后使其经历另一次的二或四点傅里叶变换。
就许多信号处理系统和应用而言,对高速数字信号作实时FFT计算是很重要的。异步数字用户专用线路(ADSL)、数字音频广播(DAB)、数字视频广播(DVB)、正交分频多路调制(OFDM)是其中一种的多载体调制(MCM)方案、声纳、雷达、基于数据块的过滤和快速卷积、分样过滤器库、用于磁性存储器的均衡器、回声消除器以及多路均衡均为高速FFT应用的实例。FFT处理器还例如在数字移动蜂窝式无线电系统中有应用,在这种系统中,要最大限度地减少能耗和IC芯片的大小。能耗越大,就会产生越大的热量。对芯片大小来说,有一个上限,对特定的封装IC可使用多少能量来说也有一个上限。减少能耗可使用更便宜的封装IC芯片。在这些最重要的因素中,是考虑形成一种诸如FFT处理器之类的芯片处理器。
尽管例如就实时应用而言处理速度当然很重要,但是,能耗还会随所执行的乘法、加法和寄存器操作的次数而增加。IC芯片的面积会随象所使用的乘法器、加法器和寄存器之类的硬件组件的数量而增加。本发明的目的是最大限度地减少组件的数量和所执行的操作量,以便最大限度地减少IC芯片的面积和能耗。
存在有多种不同的方法去提高速度和/或最大限度地减少能耗和IC芯片面积需求。最成功的方法之一是使所说的处理过程成流水线。流水线式的处理器将计算负荷分成连续的处理级,以便进行并行处理。从本质上说,流水线操作可使得从处理器的前一处理级中获得的局部结果能在没有延迟的情况下被立即地用于下一个处理级。实时的流水线式处理器的处理速度必须与输入数据速率即用于连续操作的数据采集速度相匹配。这就意味着FFT流水线式处理器必须在N个时钟周期内计算N长度的DFT,因为,数据采集速度为每个周期一个样本。
以Shousheng He名义于1997年5月29日公布的WO97/19412公开了一种所提出的用于甚大规模积分(VLSI)的流水线式FFT结构。所提供的这种流水线式FFT结构是一种单通路、延迟-反馈(SDF)、基数-2的FFT,其中,分解旋转因子以形成基数-4结构,基数-22与基数-4算法有同样的乘法复杂性,但保持有基数-2的蝶结构。
WO97/19412中说明了He如何将所有的乘法器分解成简单或非简单乘法器。从结构上说,图2A示出了与HE所述相类似的实时流水线式FFT,它用于256个数据点即N=256。具体地说,将输入数据序列传给第一对蝶单元9和10。128个字的反馈寄存器1将蝶9的输出与其输入连起来。第二蝶单元10具有一64个字的反馈寄存器2。乘法器17将处理器包括蝶单元9和10的第一级与处理器包括蝶单元11和12的第二级连起来并用旋转因子W1(N)乘数据流。蝶单元9、11、13和15的结构分别不同于图2B和2C所述的蝶单元10、12、14和16。蝶单元11和12配备有反馈寄存器3和4,它们分别具有32个字和16个字的容量。位于处理器第二与第三级之间的乘法器17用旋转因子W2(N)乘数据流。处理器的第三级包括蝶13和14、8个字的反馈寄存器5以及4个字的反馈寄存器6。位于处理器的第三与第四级之间的乘法器用旋转因子W3(N)乘数据流。处理器的第四级包括蝶15和16、两个字的反馈寄存器7以及一个字的反馈寄存器8。输出序和X(K)源于处理器的第四级的输出。用时钟信号19来同步的二进制计数器18用作同步控制器和地址计数器,它可用于在处理器的各级之间所使用的旋转因子。图2B所示的BF2I型蝶包括两个加法器21、两个减法器22以及四个多路调制器23。所述多路调制器的操作受控于控制信号27。图2C所示的BF2Ⅱ型蝶在结构上与BF2Ⅰ型蝶相类似,但包括一2×2的转换器26和逻辑门24即带有逆输入的与门。控制信号25作用于与门24的逆输入。作用于多路调制器23的控制信号27还作用于与门24的非逆输入。来自与门24的输出驱动转换器26。
图2A中的基数-22的单延迟反馈FFT处理器的操作如下。在第一个N/2周期中,第一蝶模块中2至1多路调制器23转换至位置“0”,而蝶是空闲的。来自左面的输入数据被传至反馈位移寄存器,直至它们被填满。在下一个N/2周期中,多路调制器23转到位置“1”,蝶单元用输入的数据和存储在位移寄存器中的数据计算2-点DFT。
Z1(n)=x(n)+x(n+N/1)(4)0≤n<N/2Z1(n+N/2)=x(n)-x(n+N/2)(5)在加载时间序列的下一帧的头一半时,将蝶输出Z1(n)被传送以施加旋转因子,并将Z1(n+N/2)传回至要在下一个N/2周期中加以“多路调制”的位移寄存器。
除蝶输入序列的“距离”刚好为N/4且通过借助转换器26和受控加/减操作的实-虚交换来实现简单旋转因子乘法以外,第二蝶的操作与第一蝶的操作相类似。这就需要有来自同步计数器18的两位控制信号25和27。然后,数据经过一按75%利用率工作的全复数乘法器17,以逐字地形成基数4FFT的第一级结果。下一步的处理过程按在每个连续蝶处理级减半的输入距离重复这一方式。在N-1个时钟周期之后,按位反序的顺序输出整个的DFT变换结果X(K)。然后,在不暂停的情况下对变换的下一帧进行处理,因为在处理器的各级处有流水线式的处理。
HE的WO97/19412申请书认为,这种基数-22SDF FFT处理器结构对流水线式FFT计算来说是最佳的。但是,用本发明可使得FFT处理器的IC面积和能耗有更大的减少。
使用多个小型DFT(即FFT,分解-求解的原理)的大型DFT的计算是一种可用迭代或流水线式结构来实现的多级处理过程。尽管这种分解-求解策略节省了计算,但是,存在有在较少的处理级之间执行的数量有所增加的复数旋转因子乘法。从在各蝶处执行的旋转因子乘法是简单的角度来看,希望有两点或四点DFT/蝶,因为,乘法器的系数仅为±1或J。换句话说,对二或四点DFT中的各个变换来说,不需要复数乘法电路,而只需要“简单”乘法。在不用乘法器的情况下仅通过传递数据而无操作或通过改变符号或通过转换实和虚分量来执行简单乘法。换句话说,可避免非简单、计算费力的乘法。但是,对FFT中2-点与4-点DFT蝶级之间的旋转因子乘法来说,需要多次非简单复数乘法。
通常的想法是,当FFT的基数(即基本DFT计算单元的长度)增加至8、16或更大(即在分解求解法中将变换分成8、16或更多的分支)时,从每个高基数蝶(高基数FFT中的蝶)中所必须执行的非简单乘法的角度看,计算“成本”会显著地增加,从而会抵消通过蝶之间的数量有所减少的旋转因子乘法器所获得的收益。本发明人发现,情况并不一定是这样。与通常的想法相反,本发明用较少数量的低功率固定系数的乘法器在基数大于4的FFT中提供了一种非常有效且IC面积效率高的FFT处理器。利用某些旋转因子关系(以下将详细加以说明)可以仅使用较少量的固定系数乘法器。
因此,本发明涉及较高基数的快速傅里叶变换(FFT)处理器,同时能在有最小能耗的情况下仅使用最小的集成电部芯片面积去有效地执行快速傅里叶变换操作。最佳的是,本发明可用于任何基数大于4的FFT结构。示例性实施例使用了蝶模块,就实时的、流水线式FFT处理器结构而言,所述蝶模块具有8或16的长度。就基数-8的实现形式而言,用基数-23蝶处理器模块来形成上述FFT处理器。就基数-16的实现形式而言,用基数-24蝶处理器模块来形成上述FFT处理器。
在按基数-23所实现的基数-8示例性实施例中,用三个按流水线方式连在一起的2-点蝶单元来实现各个蝶模块。输入数据序列作用于这三个蝶单元之一的输入并经过这三个流水线式蝶单元的处理,以生成经过傅里叶变换的数据序列。每个蝶单元均包括一单个的延迟反馈寄存器。在基数-8蝶模块所需的这三种非简单旋转因子乘法(在蝶中这三种非简单旋转因子乘法均被执行多次)中,本发明仅用一个固定系数据乘法器电路实现了上述三种乘法。在按基数-24所实现的基数-16示例性实施例中,用四个按流水线方式连在一起的2-点蝶单元来实现各个蝶模块。在基数-16蝶模块所需的这九种非简单旋转因子乘法(在蝶中这九种非简单旋转因子乘法均被执行多次)中,本发明仅用两个固定系数据乘法器电路实现了上述九种乘法。
以下连同


本发明的上述特点和目的(以及其它特点和目的),附图中图1A是一快速傅里叶变换(FFT)蝶的流程图,其中,用两个4-点DFT来执行8-点DFT操作;图1B是一双蝶FFT流程图,它用于实现8-点DFT;图2A是就N=256的基数-22单个延迟反馈(SDF)流水线式FFT处理器结构;图2B是图2A所示的基数-22SDF流水线式FFT处理器中使用的第一个2点蝶结构的图;图2C是图2A所示的基数-22SDF流水线式FFT处理器中使用的第二个蝶结构的图;图3是依照本发明一个示例性实施例的基数-23单通路延迟反馈实时流水线式FFT处理器的图;图4是示出了在实现图3所示的基数-23FFT时使用的基数-23蝶;图5是示出了复数平面中用于基数-8和基数-16DFT蝶模块的旋转因子的向量图;图6是用固定系数乘法器所实现的图4所示基数-23蝶的图;图7示出了用于实现W18旋转因子乘法的一个示例性固定系数乘法器;图8是依照本发明另一个示例性最佳实施例的基数-24单通路延迟反馈实时流水线式FFT处理器的图;图9A是与图8中基数-24流水线式FFT处理器的各个处理级中所使用的16-点FFT相对应的基数-24蝶模块的图;图9B是示出了不用乘法器实现的图9A中所示的简单旋转因子乘法的图;图9C是示出了由多个非简单的基数-16旋转因子乘法构成的固定系数乘法器的实现形式,它可用于图9A所示的基数-24蝶;图10示出了一示例性固定系数乘法器,它实现了用于多种基数-16旋转因子的乘法;图11是一曲线图,它示出了用不同基数FFT处理器实现的4096-点FFT的FFT能耗;图12是一曲线图,它示出了用不同基数FFT处理器实现的4076FFT的FFT集成电路(IC)的面积消耗。
在以下的说明中,为说明起见而不是为了进行限制,说明了特定的细节,诸如特定的实施例、技术、硬电路、装置等,以便能对本发明加以全面的理解。例如,本发明的最佳示例性实施例是用于基数-23和基数-24流水线式FFT处理器的。但是,这些实施例和结构仅是示例性的,本技术的专家可以看出,可用不脱离这些特定细节的其它实施例来实现本发明。在其它的情况下,略去了对周知DFT/FFT方法、装置和技术的详细说明,以避免因不必要的详节妨碍了对本发明的说明。
如上所述,对DFT/FFT计算的通常想法是,用基数-8或基数-16FFT处理器什么都不能得到,因为,计算量不显著地降低。FFT领域中的某些专家还认为,分解-基数FFT是最有效的,因为,就计算长度为2n的DFT而且,它使用了周知的最少次数的非简单操作。与通常的想法及这些论点相反,本发明人发现,用较高基数FFT处理器具体说是基数-8和基数-16的FFT处理器、用固定系数乘法器并用旋转因子之间的某些优势关系去减少固定系数乘法器的实际数量,以实现必要的旋转因子乘法,可在降低能耗和集成电路(IC)芯片表面面积方面获得显著的收益。的确,尽管就IC芯片面积或能量要求而言对较高基数的简单外推不一定导致更高的效率,但本发明用复数平面中的旋转因子对称、旋转因子的分解以及固定系数乘法器去实现IC芯片和能耗方面的显著高的效率。
示例性基数-8FFT处理器用诸如图3所示的实例之类的用于N=4096数据点阵列的基数-23单通路延迟反馈(SDF)流水线式FFT处理器结构来最佳地实现本发明基数-8FFT处理器的第一个示例性实施例。图3中的四个8-点蝶中的每个蝶均由三个流水线式2-蝶构成。将输入数据序列x(n)输入给第一基数-23蝶模块110。来自各个基数-23(8)BF模块的输出是输入给上述模块的8-点FFT,其中,频率分量0-7按位颠倒的次序0、4、2、6、1、5、3、7输出。该输出与乘法器200相连,以便与第一旋转因子乘数W4096n*k相乘,其中,就各个n和从0至(4096/8-1)=511的k值而言,n为按位颠倒次序(见上)的0至7。因此,将4096个旋转因子值存储在旋转ROM260中,所述因子值的约1/8(512)是简单的。
旋转积作用于第二基数-23蝶模块120,在乘法器220中使输出序列与第二旋转因子乘数W512n*k相乘,其中,就各个n和从0至(4096/82-1)=63的k值而言,n为按位颠倒次序的0至7。将4096个旋转因子值存储在旋转ROM270中,所述因子值的约1/8是简单的。
在第二基数-23蝶模块140中处理旋转积。在乘法器240中使输出与第三旋转因子乘数W64n*k相乘,其中,就各个n和从0至(4096/83-1)=7的k值而言,n为按位颠倒次序(重复64次)的0至7,将所述旋转因子值存储在旋转ROM280中。在最后一个基数-23蝶模块160中处理旋转积,以形成经傅里叶变换的输出序列X(K)。
各蝶模块110、120、140和160均包括三个反馈通路。具体地说,蝶模块110包括第一反馈通路,它具有一2048-字的反馈寄存器;第二反馈通路,它具有一1020-字的反馈寄存器;以及,第三反馈通路,它具有一512-字的反馈寄存器。蝶模块120包括第一反馈通路,它包括有一256-字的寄存器440;第二反馈通路,它包括有一128-字的反馈寄存器420;以及,第三反馈通路,它包括有一64-字的反馈寄存器400。第三蝶模块140包括第一反馈通路,它包括有一32-字的寄存器540;第二反馈通路,它包括有一16-字的反馈寄存器520;以及,第三反馈通路,它包括有一8-字的反馈寄存器500。蝶模块160包括第一反馈通路,它包括有一4-字的寄存器640;第二反馈通路,它包括有一2-字的反馈寄存器620;以及,第三反馈通路,它包括有一1-字的反馈寄存器600。二进制计数器820由时钟信号800来同步。该二进制计数器用作一同步控制器和地址计数器,它用于FFT处理器的各级之间所使用的全部因子。各反馈寄存器均提供延迟的X样本,因此,可在不同时间对数据进行处理。
蝶模块110、120、140和160中的每一个均包括三个流水线式2-点蝶单元(BF2)。每个蝶模块均可实现基数-8(即8-点)FFT算法,但该基数-8蝶被“分解”成三个级联的基数-2蝶单元。蝶模块160例如包括一第一蝶单元160A,它与第二蝶单元160B相连,第二蝶单元160B又与第三蝶单元160C相连。每个蝶单元160A-160C的内部结构均与图2A所示的相似。另一种蝶单元的实现形式可使用图2B所示的结构,以使j和-l与实/虚位移及加/减位移相乘。但是,也可以用其它方法来实现简单乘法。
每个蝶单元均由同步控制器和地址计数器分别用时标脉冲2、1和0来加以同步。每个蝶单元均包括一单通路反馈延时循环和寄存器。蝶单元160A包括一四字反馈寄存器64。蝶单元160B包括一个2-字反馈寄存器620,蝶单元160C包括一个1-字反馈寄存器600。
图4可推广用于使用长度为4X、2X和X的反馈寄存器的任何基数-23蝶单元,其中,X=1、8、64、512等。序列或系数是在数据经过图4所示的乘法器时要乘以的值。所说的序列在变成下一个值之前被处理X次。X的值取决于将基数-8蝶放置在流水线链路中的什么位置处。就最右侧的模块160而言,X=1;就最左侧的模块110而言,X=512;就模块120而言,X=64。
参照图1A所示的蝶结构,多个蝶单元的输出仅乘以包括+1、-1、+j、-j的简单乘数。但是,也可以用无操作、符号变化或实/虚分量“交换”来实现上述简单乘法(无乘法器)。用蝶模块之间的动态乘法器(如图2A中的动态乘法器)来实现非简单旋转因子乘法(如W1(n)、W2(n)、W3(n))。
因此,通常的FFT处理器用动态乘法器来进行旋转因子乘法。动态乘法器从下述意义上来说是“动态的”即如果该动态乘法器执行输入数据字“A”与系数字“B”之间的乘法,则字“B”的数字值可改变成任何实际值。虽然就输出序列乘以不同旋转因子系数值而言是灵活的,但是,尽管可用较小的IC面积来实现动态乘法器,但动态乘法器会消耗相当量的能量。在固定系数乘法器中,字“B”的数字值是恒定的。
实践中,通过使要相乘的多种形式的两个二进制字位移然后将位移后的形式加在一起,从而实现二进制的乘法。由于对固定系数乘法器来说上述数据字之一是周知的,所以,乘法器不必执行任何其它乘法。结果,固定系数乘法器仅包括动态乘法器中所使用的硬件的约一半。此外,可将周知的数据字记录成非常有效的格式,因此,与动态乘法器相比,可显著地减少固定系数的能耗。固定系数乘法器的缺点在于,对各种不同系数而言,需要一独立的乘法器。因此,随不同的固定系数乘法器的数量的增加,会消耗IC芯片的表面面积。
随蝶模块的长度增加至8和16,蝶模块之间的旋转因子乘法器的数量会减少。但是,经过乘法器的必须乘以旋转因子的数据的百分比会增加。还有,在各蝶模块中执行的旋转因子乘法的次数也会增加。就基数-4FFT而言,经过各个四点蝶模块之间的75%的数据点必须乘以旋转因子。就基数-8FFT而言,所述百分比会增加至87.5%,就基数-16FFT而言,所述百分比会增加至93.75%。
蝶模块之间的动态乘法器所执行的旋转因子乘法的减少了的次数和各蝶模块中用于基数有所增加的FFT的旋转因子乘法次数的增加的净效应是所执行的乘法总数有较少的减少。可用本发明的方法来减少较高基数FFT的蝶模块的中使用的不同旋转因子值的个数。在给定了各蝶模块中执行的较少数量的不同值、非简单旋转因子乘法的情况下,本发明可用比动态乘法器消耗更少能量的固定系数乘法实现了这些乘法。随着各蝶模块中执行的不同值、非简单旋转因子乘法的次数的增加,从所消耗的有所增加的IC芯片面积角度看,固定系数乘法器在这种情况下会变得不太有吸引力。
本发明可通过(1)利用旋转因子在复数平面内的对称性以及(2)分解旋转因子来减少各蝶模块中执行的不同值、非简单旋转因子乘法的次数。以下连同图5所示的旋转因子向量图来说明上述两种技术。
在复数平面内可将旋转因子看作是具有数量“1”和特定相位角的向量。因此,将向量乘以旋转因子等价于将该向量旋转弧度为2πn/N的相位角。图5中可以看出,就基数-8蝶模块而言,旋转因子W80对应于简单的实值“1”。旋转因子W82对应于简单的虚值“-j”。旋转因子W81对应于非简单的复数值 。旋转因子W83对应于非简单的复数值 。注意W81与W83之间的对称性。唯一的差别是,它们的实数分量的符号是不同的。利用上述对称关系,相同的乘法器电路例如W81可用来执行用于W81与W83两者的非简单复数旋转因子乘法,对上述因子中的一个而言仅需要改变符号。
另外,可按如下方式分解旋转因子W83∶W83=W81·W82。可用同样的W81乘法器电路来实现旋转因子W83,随后是用符号改变和实与虚分量交换来实现的简单乘法即W82=-j,通过利用旋转因子对称性或者通过将非简单旋转因子分解成共用因子,可减少专门的固定系数乘法器电路的数量,从而进一步将较高基数FFT处理器所需的IC芯片面积的数量减至最小。
因此,上述第一示例性实施例中的本发明使用了基数-8蝶模块,该模块用固定系数乘法器来执行各基数-8蝶模块中的非简单旋转因子。而且,利用旋转因子的对称或分解,可用最少的固定系数乘法器硬件来实现非简单旋转因子乘法。如前所述,每个基数-8蝶均需要与旋转因子W81、W82和W83的旋转因子乘法。不用乘法器执行旋转因子W83乘法,因为该乘法是简单的,也就是说,可用改变符号和实与虚分量交换来实现与-j的乘法。用相同的固定系数乘法电路来实现W81和W83旋转因子乘法。
图6示出了用简单乘法和单个固定系数乘法器电路实现的图4的基数-23蝶模块160。可根据所示的用于各旋转因子处理级650和660的旋转因子序列将适当的部件接入信号处理通路。处理级650包括一固定系数乘法器和简单旋转因子乘法。通过仅将信号处理通路连到所示的两个节点之间,可实现乘法“1”。当蝶单元160A的输出需要乘以非简旋转因子W81时,就将固定系数乘法器700接入上述信号处理通路。这种接入操作可受控于同步控制器820通过对控制器号进行解码并因此而对开关进行控制而产生的时标信号。处理级660和670包括可开关的处理通路,它们可用于乘以“1”的简单乘法和框720所示的乘以-j的乘法。
图7示出了用于旋转因子W81的固定系数乘法器的一种有效实现形式。记住W81=1/2(1-j)]]>和W83=1/2(-1-j)]]>。尽管将图6中的信号处理通路显示为一信号线,但是,本技术的专家应该认识到,数据序列是包括实(I)和虚(Q)分量的复数。因此,图7示出了I和Q信号处理通路。因此,用两个比两个动态乘法器消耗更少能量的固定系数乘法器800和820来实现I和Q信号乘以1/ 的两种乘法。实与虚分量在加法器840中相加并输出,同时在用于W81的减法器860中从虚分量中减去实分量。同样的乘法器电路可用于旋转因子W83乘法,并对实分量改变符号。
示例性基数-24FFT处理器图8示出了本发明的第二实例性最佳实现形式。图8中的实时流水线式FFT处理器100是除FFT操作以基数-16FFT算法为基础而不是以基数-8算法为基础以外都与图3中基数-23SDF结构相类似的基数-24单通路延迟反馈(SDF)处理器结构。将N=4096点的输入数据序列X(N)输入给第一基数-24蝶模块1020。来自各个R-24(16)BF模块的输出是输入给上述模块的16-点FFT,其中,频率分量按位颠倒的次序输出。该输出与乘法器1100相连,以便与第一旋转因子乘数W4096n*k相乘,其中,就各个n和从0至(4096/16-1)=255的k值而言,n为按位颠倒次序(见上)的0至15。因此,将4096个旋转因子值存储在旋转ROM1120中,所述因子值的约1/16(256)是简单的。
在第二基数-24蝶模块1040中处理旋转积,并在乘法器1140中将该旋转积乘以第二旋转因子乘数W256n*k,其中,就各个n和从0至(4096/162-1)=15的k值而言,n为按位颠倒次序的0至15,它重复6次。将这些旋转因子值存储在旋转ROM1160中。在最后一个基数一24蝶模块1060中处理旋转积,以形成经变换的序列X(K)。
基数-16蝶模块102O包括四个2-点FFT蝶,每个蝶均具有一单反馈通路和相应的反馈寄存器1200、1220、1240和1260。蝶模块1040包括四个反馈寄存器1300、1320、1340和1360。蝶模块1060包括四个反馈寄存器1400、1420、1440和1460。FFT处理器根据一同步和地址生成器1520所接收的时钟信号1500进行操作,所述同步和地址生成器1520对各蝶模块以及各模块中的各蝶单元的操作进行控制。
图9A说明了图8所示的基数-24(16)蝶单元中的一个。四个2-点FFT蝶1060a、1060b、1060c和1060d按所示的流水线方式连在一起。蝶单元1060A包括一存储有8X字的单通路反馈寄存器1460,其中,就蝶模块1060而言,X=1;就蝶模块1040而言,X=16;就蝶模块1020而言,X=256。蝶单元1060B包括一4X字反馈寄存器1440,蝶单元1060C包括一2X字反馈寄存器1420,蝶单元1060D包括一X字反馈寄存器1400。除它们的反馈先进先出(FIFO)存储器有相应不同长度以外,上述四个2-点蝶单元可以是相同的。
基数-16蝶需要下列旋转因子乘法W161、W162、W163、W162、W164、W166、W163、W166和W169。图5将这些旋转因子显示为复数平面内的向量。通过按下述方式分解这些基数-16旋转因子,可以简化旋转因子乘法W163=W16-1·W164,其中,W164=-jW169=W161·W168,其中,W164=-1W162=W81,W166=W83=W81·W162。
因此,基数-16蝶中的某些旋转因子本身或它们的分解旋转因子分量仅为简单乘法从而不用乘法器来加以实现。此外,如图5所示,W161和W16-1相对实轴是对称的,因此,可通过改变虚分量的符号,从W161中生成W16-1。所以,可用相同的固定系数乘法器来实现W161和W16-1旋转因子乘法。就W162和W166而言,所需的另一个专门固定系数乘法器是用于实现非简单旋转因子乘法的乘法器。如前所述,可用诸如图7所示的乘法器之类的单个W81乘法器来实现上述两种旋转因子乘法。结果,可用刚好两个固定系数乘法器电路来实现基数-16蝶模块的所有旋转因子乘法,而其余的乘法/操作则是简单的例如是改变符号、乘以1以及实与虚分量交换。
参照图9A-9C,蝶单元1060a和1060b以及1060c和1060d通过为1和-j的简单旋转因子乘法相连。图9B示出了标号1600和1680处的简单旋转因子乘法。蝶单元1060b与1060c通过两个非简单旋转因子乘法器1620和1640以及一简单复数旋转因子乘法器1660相连。图9C示出3如何用固定系数乘法器来实现上述非简单旋转因子乘法。不是用相应的固定系数乘法来实现各类型的基数-16旋转因子乘法,而是用旋转因子的对称性和分解来将固定系数乘法器的数量减少至仅为两个。
图10说明了这种有效的实现形式,其中,固定系数乘法器以可切换的方式受控,以实现非简单旋转因子乘法。I和Q通道被提供给IQ变换器1720,该变换器受控于同步控制器生成的控制信号1880。如果旋转因子乘法是W161,则IQ变换器1720和IQ变换器1820(也受控于信号1880)使I和Q数据直接经过,或者,如果旋转因子乘法是W16-1,则IQ变换器1720和IQ变换器1820如图所示那样切换I和Q通路。在相应的固定系数乘法器1740和1760中处理来自IQ变换器1720的I和Q通路输出,以实现乘以两个不同固定数的乘法、A-B和A+B(A是实分量,B是虚分量)。根据控制信号1880在IQ变换器1820中处理来自部件1740和1760的输出,而I和Q的输出则提供给加法器1840和1860。在减法器1780中减去原始输出的I和Q信号,并在固定系数乘法器180使上述I和Q信号乘以虚分量B。根据控制信号1880的状态,加上来自部件1800的输出或者从输入的I和Q信号中减去上述输出。因此,可用图10所示的同样的三个乘法器1740、1760和1800来执行用于非简单旋转因子W16X的若干值的乘法。
图11和12所示的曲线图说明了本发明的优点。图11示出了4096点数据序列的FFT处理器的能耗与包括基数2、4、8和16在内的FFT基数长度的曲线图。使用大于4的基数、利用旋转因子的对称性和/或旋转因子的分解并使用固定系数乘法器,本发明能获得非常低的能耗,同时还能使IC面积消耗变低。
具体地说,如果全都使用动态乘法器,那么,通过将FFT处理器的基数增加到基数-4以上,就基数-8而言可以将能耗减少12%,就基数-16而言可以将能耗减少5%。如果使用了专用的动态乘法器,则依照本发明第一示例性实施例,就基数-8FFT处理器而言可获得最小的能耗。如果将专用的动态乘法器用于基数-16FFT处理器,则就基数-8而言能耗实际会增加而不是减少。但是,如果在FFT处理器中使用固定系数乘法器而不是动态乘法器,可以显著地节省IC面积和能耗。依照本发明,如果在所说的蝶中使用了固定系数乘法器,则基数-16FFT处理器具有所有四种所说明的基数的最佳的最低能耗和非常低的面积消耗,(只有基数-8FFT处理器有略低的面积消耗)。
尽管连同目前认为是最实用和最佳的实施例说明了本发明,但是,应该认识到,本发明并不局限于所公开的实施例,相反,本发明用于涵盖包括在后附权利要求的精神和范围内的各种改进形式和等价结构。例如,固定系数乘法器、旋转因子的对称性和/或旋转因子的分解可用于这样的FFT处理器,这种处理器具有除8或16以外长度的蝶单元。尽管示例性实施例使用了流水线式处理结构,但是,本发明也可应用于其它的FFT处理器结构例如迭代结构,所以,本发明并不局限于特定的FFT处理器结构。
权利要求
1.一种用最小集成电路芯片面积形成的快速傅里叶变换(FFT)处理器,它用于有效地执行低能耗快速傅里叶变换操作,所述处理器包括一个或多个离散傅里叶变换(DFT)模块,它们具有大于4的长度,每个DFT模块均包括一固定系数乘法器电路,它同于执行旋转因子乘法;其中,由各DFT模块来处理输入数据流,以生成变换后的输出数据序列。
2.如权利要求1的FFT处理器,其特征在于,各DFT模块的长度为8。
3.如权利要求1的FFT处理器,其特征在于,各DFT模块的长度为16。
4.如权利要求1的FFT处理器,其特征在于,各DFT模块中的旋转因子乘法包括非简单乘法和简单乘法,并且,用固定系数乘法器来执行非简单乘法。
5.如权利要求4的FFT处理器,其特征在于,在没有执行无操作、改变符号或变换实和虚分量的乘法器的情况下执行所述简单乘法。
6.如权利要求4的FFT处理器,其特征在于,用相同的固定系数乘法器电路来执行不同的非简单旋转因子值的乘法。
7.如权利要求4的FFT处理器,其特征在于,将至少一个非简单旋转因子分解成两个分量旋转因子,以减少不同非简单旋转因子值的数量。
8.如权利要求4的FFT处理器,其特征在于,用至少两个非简单旋转因子之间的对称关系来减少不同非简单旋转因子值的数量。
9.如权利要求2的FFT处理器,其特征在于,仅用一个固定系数乘法电路来实现各8-点DFT模块中的所有非简单旋转因子乘法。
10.如权利要求9的FFT处理器,其特征在于,所述一个固定系数乘法电路包括实和虚分量乘法器,在第一加法器中将实分量乘法器的输出加至虚分量乘法器的输出,在第二加法器中从虚乘法器输出中减去实乘法器的输出。
11.如权利要求3的FFT处理器,其特征在于,每个16-点DFT模块均用两个固定系数乘法器电路来执行所有的非简单旋转因子乘法。
12.如权利要求11的FFT处理器,其特征在于,每个16-点DFT模块中的两个固定系数乘法器电路均包括第一固定系数乘法器电路,它具有实和虚分量乘法器,在第一加法器中将实分量乘法器的输出加至虚分量乘法器的输出,在第二加法器中从虚乘法器输出中减去实乘法器的输出;以及第二固定系数乘法器电路,它具有实和虚分量变换器,这些变换器对一个旋转因子乘法来说转换至第一状态,对另一个旋转因子乘法来说转换至第二状态。
13.一种用FFT处理器来计算快速傅里叶变换(FFT)的方法,所述处理器是用最小集成电路芯片面积形成的,以便用减少的能耗有效地执行快速傅里叶变换操作,所述方法包括下列步骤用多个处理模块来形成上述FFT处理器,每个处理模块均具有大于4的长度,每个处理模块均包括一固定系数乘法器,它用于执行旋转因子乘法;以及在各个处理模块中处理输入数据流,以生成变换后的输出数据序列。
14.如权利要求13的方法,其特征在于,各处理模块的长度为8。
15.如权利要求13的方法,其特征在于,各处理模块的长度为16。
16.如权利要求13的方法,其特征在于,该方法还包括将各处理器模块中的旋转因子乘法分成非简单乘法和简单乘法;以及用一个或多个固定系数乘法器来执行非简单乘法。
17.如权利要求16的方法,其特征在于,在没有执行无操作、改变符号或转换实与虚分量的乘法器的情况下执行简单旋转因子乘法。
18.如权利要求16的方法,其特征在于,该方法还包括在各处理模块中用与各个不同非简单旋转因子值乘法相对应的固定系数乘法器电路来执行不同的非简单旋转因子值的乘法。
19.如权利要求16的方法,其特征在于,该方法还包括在各处理模块中用相同的固定系数乘法器电路来执行不同的非简单旋转因子值的乘法。
20.如权利要求16的方法,其特征在于,该方法还包括将至少一个非简单旋转因子分解成两个分量旋转因子,以减少不同非简单旋转因子值的数量。
21.如权利要求16的方法,其特征在于,该方法还包括用至少两个非简单旋转因子之间的对称关系来减少不同非简单旋转因子值的数量。
22.如权利要求14的方法,其特征在于,该方法还包括仅用一个固定系数乘法电路来实现各8-点处理模块中的所有非简单旋转因子乘法,以便执行各8-点处理模块中的所有非简单旋转因子乘法。
23.如权利要求15的方法,其特征在于,该方法还包括仅用两个固定系数乘法电路来实现各16-点处理模块中的所有非简单旋转因子乘法,以便执行各16-点处理模块中的所有非简单旋转因子乘法。
24.一种用最小集成电路芯片面积形成的快速傅里叶变换(FFT)处理器,它用于有效地执行低能耗快速傅里叶变换操作,所述处理器包括一个或多个离散傅里叶变换(DFT)模块,每个DFT模块均具有三个连在一起的2-点蝶单元;以及用连接两个2-点蝶单元的一个固定系数乘法器电路实现的一个或多个旋转因子乘法器;其中,由上述三个蝶单元来处理输入数据流,以生成变换后的输出数据序列。
25.如权利要求24的FFT处理器,其特征在于,所述FFT处理器是流水线式的,带有流水线寄存器,它位于各蝶单元之间,并且,各个2-点蝶单元均包括一位于输出与输入之间的反馈通路。
26.如权利要求25的FFT处理器,其特征在于,所述反馈通路是一单延迟反馈通路,并且,每个DFT模块包括三个反馈寄存器,每个寄存器均包合有不同长度的反馈序列。
27.如权利要求26的FFT处理器,其特征在于,DFT模块通过一动态乘法器与旋转因子存储器相连,因此,使来自蝶模块之一的输出在于相邻DFT模块中被处理之前乘以从动态乘法器内的旋转因子存储器中检索出来的旋转因子。
28.如权利要求24的FFT处理器,其特征在于,在不用乘法器电路的情况下执行简单旋转因子乘法。
29.如权利要求28的FFT处理器,其特征在于,用无操作、用改变符号操作或实与虚分量交换操作来执行简单旋转因子乘法。
30.如权利要求24的FFT处理器,其特征在于,所述固定系数乘法电路包括实和虚分量乘法器,在第一加法器中将实分量乘法器的输出加至虚分量乘法器的输出,在第二加法器中从虚输出中减去实输出。
31.如权利要求24的FFT处理器,其特征在于,用相同的固定系数乘法器电路来执行要在各个DFT模块中加以执行的所有非简单旋转因子乘法。
32.一种用最小集成电路芯片面积形成的快速傅里叶变换(FFT)处理器,它用于有效地执行低能耗快速傅里叶变换操作,所述处理器包括一个或多个离散傅里叶变换(DFT)模块,每个DFT模块均具有四个连在一起的2-点蝶单元;以及用一固定系数乘法器电路实现的一个或多个旋转因子乘法器,它们将上述2-点蝶单元中的两个连接起来;其中,由上述三个蝶单元来处理输入数据流,以生成变换后的输出数据序列。
33.如权利要求32的FFT处理器,其特征在于,所述FFT处理器是流水线式的,带有流水线寄存器,它位于各蝶单元之间,并且,各个2-点蝶单元均包括一位于输出与输入之间的反馈通路。
34.如权利要求33的FFT处理器,其特征在于,所述反馈通路是一单延迟反馈通路,并且,每个DFT模块包括四个反馈寄存器,每个寄存器均包含有不同长度的反馈序列。
35.如权利要求32的FFT处理器,其特征在于,在不用乘法器电路的情况下执行简单旋转因子乘法。
36.如权利要求35的FFT处理器,其特征在于,用无操作、用改变符号操作或实与虚分量交换操作来执行简单旋转因子乘法。
37.如权利要求32的FFT处理器,其特征在于,第一固定系数乘法电路包括第一实和虚分量乘法器,在第一加法器中将上述第一实分量乘法器的输出加至第一虚分量乘法器的输出,在第二加法器中从虚乘法器输出中减去实乘法器输出。
38.如权利要求37的FFT处理器,其特征在于,第二固定系数乘法电路包括实和虚分量变换器,这些变换器对一个旋转因子乘法来说转换至第一状态,对另一个旋转因子乘法来说转换至第二状态。
39.如权利要求38的FFT处理器,其特征在于,用所述第一和第二固定系数乘法器电路来执行要在各个DFT模块中加以执行的所有非简单旋转因子乘法。
40.一种用FFT处理器来计算快速傅里叶变换(FFT)的方法,所述处理器是用最小集成电路芯片面积形成的,以便用减少的能耗有效地执行快速傅里叶变换操作,所述方法包括下列步骤用一个或多个处理模块来形成上述FFT处理器,每个处理模块均实现按流水线的方式连在一起的三个2-点蝶单元以及通过一固定系数乘法器电路连接的至少两个蝶单元;使输入数据流作用于上述三个蝶单元中第一个单元的输入并对该输入数据流进行处理;在上述三个蝶单元中第二个单元内处理前述第一蝶单元的输出;以及在上述三个蝶单元中第三个单元内处理前述第二蝶单元的输出,以生成输出数据序列。
41.如权利要求40的方法,其特征在于,该方法还包括用相同的固定系数乘法器来执行不同的非简单旋转乘法。
42.如权利要求41的方法,其特征在于,用上述固定系数乘法器来执行用于各处理模块的所有非简单旋转因子乘法。
43.一种用FFT处理器来计算快速傅里叶变换(FFT)的方法,所述处理器是用最小集成电路芯片面积形成的,以便用减少的能量有效地执行快速傅里叶变换操作,所述方法包括下列步骤用一个或多个处理模块来形成上述FFT处理器,每个处理模块均具有按流水线的方式连在一起的四个2-点蝶单元以及通过一固定系数乘法器电路连接的至少两个蝶单元;使输入数据流作用于上述四个蝶单元中第一个单元的输入并对该输入数据流进行处理;在上述四个蝶单元中第二个单元内处理前述第一蝶单元的输出;在上述四个蝶单元中第三个单元内处理前述第二蝶单元的输出;以及在上述四个蝶单元中第四个单元内处理前述第二蝶单元的输出,以生成输出数据序列。
44.如权利要求43的方法,其特征在于,该方法还包括用相同的固定系数乘法器来执行不同的非简单乘法。
45.如权利要求43的方法,其特征在于,用两个固定系数乘法器来执行用于各处理模块的所有非简单旋转因子乘法。
全文摘要
用离散傅里叶变换(DFT)蝶模块来形成快速傅里叶变换(FFT)处理器,所述蝶模块在最佳示例性实施例均具有大于4的长度。在一第一示例性实施例中,所述FFT处理器使用了长度-8的蝶。在一第二示例性实施例中,所述FFT处理器使用了长度-16的蝶。此外,用低能耗固定系数乘法器来执行各蝶模块中的非简单旋转因子乘法。通过分解简单和非简单旋转因子并利用旋转因子在复数平面中的对称性和/或旋转因子的分解,可减少不同非简单旋转因子乘法的数量。依照上述和其它因子,本发明可用最小的能耗和IC芯片表面面积来构成FFT处理器。
文档编号G06F17/14GK1290369SQ9881392
公开日2001年4月4日 申请日期1998年12月18日 优先权日1998年1月21日
发明者R·B·赫尔贝里 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1