CN105988973B - 快速傅里叶变换/快速傅里叶变换的方法和电路 - Google Patents
快速傅里叶变换/快速傅里叶变换的方法和电路 Download PDFInfo
- Publication number
- CN105988973B CN105988973B CN201510079003.3A CN201510079003A CN105988973B CN 105988973 B CN105988973 B CN 105988973B CN 201510079003 A CN201510079003 A CN 201510079003A CN 105988973 B CN105988973 B CN 105988973B
- Authority
- CN
- China
- Prior art keywords
- fft
- data
- ifft
- calculated
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Abstract
一种快速傅里叶变换/快速傅里叶变换的方法和电路,包括:将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;通过累加或者累减一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中基数表示FFT/IFFT计算的并行计算的短DFT序列的长度;将FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;进行FFT/IFFT计算,包括:进行短DFT序列计算包括:从存储器中取出相应数据,直接将相应数据送入短DFT序列计算器进行计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;重复短DFT序列计算,直至整个FFT/IFFT计算结束。
Description
技术领域
本发明涉及频率变换,尤其涉及快速傅里叶变换/快速傅里叶变换的方法和电路。
背景技术
大点数的DFT计算一般都采用FFT算法的蝶形架构。通常地,“蝶形”出现在Cooley–Tukey FFT算法中,其递归地将大小为n=rm的DFT分解为r个大小为m的较小的DFT变换,其中,r是变换的“基”(radix)。这些较小的DFT然后通过大小为r的蝶形架构组合在一起,在与单位根(也称为旋转因子)相乘之前,该蝶形架构本身是大小为r的DFT(在对应的子变换的输出上进行m次计算)。
传统的排列方式中,数据本身的先后顺序并没有任何规律,必须经过一系列的重新排列,组合为正确的数据顺序后才能进行蝶形计算,且对于每次蝶形计算数据都要根据当前计算的次数调整排列顺序。在数字电路实现上,该调整排列顺序的操作是通过一系列的选择控制逻辑来完成的。这种结构消耗了大量的资源且处于数据关键路径上,对于电路的面积和速度都有负面影响,对线道资源紧张的结构的影响更大(如在FPGA上的设计)。
发明内容
一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的方法,包括:将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度;将所述FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;进行所述FFT/IFFT计算,包括:进行短DFT序列计算包括:从所述存储器中取出相应数据,直接将所述相应数据送入短DFT序列计算器进行计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。
一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路,包括:地址计算单元,被配置为将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;所述地址计算单元还被配置为通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度;接口单元,被配置为将所述FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;FFT/IFFT计算单元,被配置为进行所述FFT/IFFT计算,包括:短DFT序列计算器,用于:从所述存储器中取出相应数据,经过修正旋转因子修正取出的相应数据,直接对所述相应数据进行计算短DFT序列计算,直接原址将计算后的数据送回存储器;重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。
一种接收机,包括上述的快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路。
一种信号发生器,包括上述的快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路。
附图说明
本发明通过所附的附图用示例形式展示。附图应当被理解为作为示例而非限制的,本发明的范围是由权利要求所限定的。在附图中,相同的附图标记代表相同的组件。
图1示出了根据本发明的一个实施例的方法流程图。
图2示出了包含用于修正的乘法器的FFT计算电路。
图3示出了对图2的多个乘法器的优化的FFT计算电路框图。
图4示出了对图3的多个乘法器进行合并以后的FFT计算电路框图
图5示出了根据本发明的一个实施例的多路复用器的示意图。
图6示出了根据本发明的一个具体实施例的电路的装置框图。
图7示出了根据本发明的另一个实施例的电路装置框图。
图8示出了根据本发明的另一个实施例的电路装置框图。
图9示出了根据本发明的另一个实施例的电路装置框图。
具体实施例
本发明的多个方面及例子将在此被描述。接下来的说明为这些例子的全面理解及可行的说明提供了具体的细节。但是本领域技术人员将理解本发明可在缺少许多这些细节的情形下被实施。此外,一些众所周知的结构和功能将不会被具体地显示或描述,以避免不必要地模糊相关说明。
首先,需要将待进行FFT计算的输入数据均匀地排放在各自对应的存储器中,排列方法一般以数据的地址按2n模异或(⊕)(也即,将数据的地址以基数(radix,以下也称为“基”)取模,再进行异或计算)或者其他计算得到数据排放在对应的以存储器序号指示的存储器中。
图1示出了根据本发明的一个实施例的方法流程图。在图1的方法100包括:在块110中,将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址。
然后,方法100在块120中通过累加或者累减该一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中基数(radix)表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度,例如,如果参与一次蝶形短DFT序列运算为8点,则基为8。
具体地,令数据的地址为Addr,该地址可能是正序地址,也可能是反序地址,该地址的二进制表示为Addr=bn-1bn-2bn-3...b0(1),其中n=log2(N),N为FFT序列长度,每一位bn-1,bn-2...b0表示二进制的数位。若采用基r的FFT算法,则存储器的块数为r块,序号m0,....mr-1。数据A按互斥规则排列在序号为M的存储器中。则按照本发明的计算方法采用模加或者模减的计算方法,则M的表达方式为:
M=(br-1br-2…b0)r+(b2r-1b2r-2…br)r+...+(bn-1bn-2…b(l-1)r)r或者
M=(br-1br-2…b0)r-(b2r-1b2r-2…br)r-...-(bn-1bn-2…b(l-1)r)r,l×log2(R)=n。
其中,括号外右下角的r表示该数字是r进制,r为FFT计算的基数。
更具体地,数据的地址也可以采用另一种方式进行表示-
Addr=Bs-1Bs-2Bs-3....B1B0,B是以r为基的数字。(2)
例如,基(radix)8的512点的FFT变换,数据的地址可以表示为B2B1B0,其中,B2,B1,B0均为八进制的数字,而结合式(1),将各个数位B转换为二进制的b,可以分别表示为:B2=bn-1bn-2bn-3=b8b7b6,B1=bn-4bn-5bn-6=b5b4b3,B0=b2b1b0。
数据所要存储至的对应的存储器位置的序号可以表示为bank序号,也即为进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中,bank_num=(Bs-1+Bs-2+Bs-3+.....+B1+B0)r,其中,B=bi-1bi-2..b1b0,i=log2(r)(3)
以下表一显示了对于完全循环移位情形如何获取对应的存储器的序号:
表一
然后,将FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置。
我们理解,在FFT蝶形计算中,可能会计算多级FFT。在第S级的任一次蝶形计算中,所需要的数据地址为Ar,
先令i=log2(r),r为FFT算法的基。
Ar=bn-1bn-2...bisqi-1qi-2...q0bi(s-1)-1...b0,其中qi-1qi-2...q0=v,v=0,1,2,3....,r-1。公式中的bi,qi均表示二进制数,而v表示一个r进制数。
由此可得知所需数据存放的存储器的序号为
Mr=(bR-1bR-2…b0)+/-…+/-v+/-…(bn-1bn-2…b(l-1)R)(4),将上式中公共项提出Mconst=(bR-1bR-2…b0)+/-...+/-(bn-1bn-2…b(l-1)R)(l≠s),其中l×log2(r)=n。其中,Mconst表示参与同一次计算的其他相同的位。r代表的是短DFT序列运算单元的长度,例如8点,16点等。R=log2(r),表示r的以2为底的对数。
Mr=Mconst+/-v,其中,v=0,1,2,3....,r-1。因此,所需的数据必然都在不同的存储器中,因为r是不同的。
由此可以得出计算方式的变化仍然保持互斥的性质。但是当r连续变化的时候,可以看到Mr也是连续变化的,这就使得按照Mr连续取出的数据与参与计算的顺序有着相同的顺序,不过是初始点不同,这就构成了循环移位的性质。本发明的实施例正是利用DFT的这种性质推导出完全省略reorder模块的数学方法和实现架构。
例如,以r8-32K FFT中的第三级中的一次8点FFT为例,参与计算的数据的地址为A0,A1……A7,Mc为根据本发明的实施例的存储器的序号
A0=000_001_000_100_000
Mc=000+001+000+100+000=(101)2
A1=000_001_001_100_000
Mc=000+001+001+100+000=(110)2
A2=000_001_010_100_000
Mc=000+001+010+100+000=(111)2
A3=000_001_011_100_000
Mc=000+001+011+100+000=(000)2
A4=000_001_100_100_000
Mc=000+001+100+100+000=(001)2
A5=000_001_101_100_000
Mc=000+001+101+100+000=(010)2
A6=000_001_110_100_000
Mc=000+001+110+100+000=(011)2
A7=000_001_111_100_000
Mc=000+001+111+100+000=(100)2
本领域技术人员可以理解,虽然上述例子以累加进行举例,本发明也同样适用于累减。
表二是以存储器的序号来表示数据
表二
由表二可以看出根据本发明的实施例的数据产生了循环移位的性质。
以下推导过程说明了发明实施例的数学等效性。
DFT的基本公式
DFT的基本性质
令(2)、(3)式中l=m,我们可以得到下式
式(8)显示出经过一定的数学变换,可以用X[n]序列的循环移位序列X[n-s]经过一个标准的DFT过程,得到X[n]的DFT结果-X[k]序列的移位序列X[k-s]。
结合本实施例中的地址排列的方式,可以推断出即便没有重新排序模块也是可以得到正确的结果的。
然后,在块130中,方法100将FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置。
然后,在块140中,方法100进行所述FFT/IFFT计算。
具体地,在块140中,方法100从存储器中取出相应数据,经过修正旋转因子修正取出的相应数据,直接将相应数据送入短DFT序列计算器进行计算,直接原址将计算后的数据送回存储器;重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。本领域技术人员可以理解,整个FFT/IFFT计算结束也即完成了所有级的计算。
本发明的该实施例主要是改变地址排列的方式,采用模加或是模减的方式,在保持数据读取互斥的前提下,使得数据排列的顺序并非是随机没有规律的,而是与需要的数据顺序存在循环移位的特性。换言之,计算的存储器位置的序号是在一次短序列DFT计算中使用的数据序号的循环移位。数学上利用DFT的时间移位性质和频率移位性质使得数据并不需要重新排列就可以进入计算单元,且计算单元输出数据也不需要重新排列就可以完成整个FFT,且仍然是同址计算,因而不需要增加任何存储器。换言之,对于每次运算,通过短DFT序列运算单元的端口,按照编号从对应编号的存储器中取出数据,不需要重新排列顺序后再送到所述短DFT序列运算单元端口;然后按照输出端口的序号将运算单元运算的结果送入对应编号的存储器中,实现同址计算。
可选地,在另一个实施例中,需要对FFT结果进行一定的修正,从而实现同址计算,使得开销进一步降低。
例如,图2示出了包含用于修正的乘法器的FFT计算电路。其中,以矩形图案标记的一列乘法器表示也即,对应以上式(8)中的以椭圆形图案标记的一列乘法器表示旋转因子(Twiddle factor),也即对应于上式(8)中的以菱形图案标记的一列乘法器表示也即对应于以上式(8)中的以三角形图案标记的一列乘法器表示也即对应于以上式(8)中的
具体地,表示第一修正因子,
旋转因子(Twiddle factor)可以表示为:
Wtwiddle=exp(-j×(Bi×(Bi-1Bi-2....B1B0)×r^(s-i))×2pi/N)(9)
第二修正因子可以表示为
其中,
因此,
如图2所述,首先以第一修正因子调整待进行短DFT序列计算的数据,然后以以旋转因子处理修正后的序列,然后将经处理的序列送入短DFT序列计算器进行计算,最后以第二修正因子调整经过DFT计算后的数据。其中,B=(∑Bs)r,s≠i-1,i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2....Bi....B1B0,Bi=0,1,2…r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
图3示出了对图2的多个乘法器的优化的FFT计算电路框图。为了进一步优化电路结构,在该实施例中,调整了保存数据的存储器的位置。也即,将原来位于各个虚线框中的存储器bank移动至位于实线框中的各个存储器bank。此外,将本级的后两个修正因子(以菱形图案标记的乘法器和三角形图案标记的乘法器)与下一级的前两个因子(以矩形图案标记的乘法器和以椭圆形图案标记的乘法器)合并。
将图3与图2进行对比,可以发现,图3中移动了存储器的位置,将两级之间的因子合并了在了一起。因为存储器只是暂存数据,并不参与计算,所以移动存储器的位置,不会影响计算结果。由于旋转因子(也称为相位因子)的特殊性质,四个旋转因子的乘积只是其角度的简单的叠加。因此,只要修正原旋转因子的查表的地址,就可以完成四个因子相乘的计算,极大地简化了电路结构,使得本发明的实施例的优势大大提高。由于第一级的旋转因子始终是常数1,所以第一级只需要在数据输入时加入简单的变换就可以。最终的电路架构示意图如图4所示。
图4示出了对图3的多个乘法器进行合并以后的FFT计算电路框图。图4中,将图3中的四个乘法器合并成一个乘法器,节省了电路中的元件资源。尽管图4示出了两组存储器,本领域普通技术人员应该能够理解,图4中示意的两组存储器实际上是一组。
如果计算第i级,数据的地址为Bs-1Bs-2....Bi....B1B0,其中Bi=0,1,2…r-1
设定:
B=(∑Bs)r,(s≠i-1),
C=(∑Bs)r,(s≠i),
以及
Wtwiddle=exp(-j×(Bi+1×(BiBi-1....B1B0)×r^(s-i))×2pi/N) (9);
W(-sk,r)=exp(j×(B×k)r×2pi/r),k=0,1,2…r-1 (10)
W(-sn’,r)=exp(j×(C×n)r×2pi/r),n=0,1,2…r-1 (11)
W(s2,r)=exp(-j×(B×B)r×2pi/r) (12)
进行以下修正:Wtotal=Wtwiddle×W(-sk,r)×W(-sn’,r)×W(s2,r)(13)
然后,将这些因子进行结合,并以基N对它们进行归一化:
Index=Bi+1×(BiBi-1....B1B0)×r^(s-i)+[(B×k)r+(C×n)r+(B×B)r]×(N/r)(14)
因此,W=exp[(-j×(Bi+1×(BiBi-1....B1B0)×r^(s-i))×2pi/N)+(j×(B×k)r×2pi/r)+(j×(C×n)r×2pi/r)+(-j×(B×B)r×2pi/r)](15)
上述各式中,(B×k)r中的下标r表示对r取模。例如,B=3,k=4,r=8,则B×k=12,B×k的结果对r取模为4。其他类似的下标表示相同的含义。
换言之,在一个实施例中,如图4所示,以旋转因子调整FFT/IFFT计算后的数据,也即对FFT或IFFT计算单元的计算结果乘以其中旋转因子表示为exp[(-j×(Bi+1×(BiBi-1....B1B0)×r^(s-i))×2pi/N)+(j×(B×k)r×2pi/r)+(j×(C×n)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1,C=(∑Bs)r,s≠i,i表示FFT/IFFT计算的级,数据具有地址为Bs-1Bs-2....Bi....B1B0,Bi=0,1,2…r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
对于第一级(stage),由于上述式子(15)中的有些因子等于1,也即Wtwiddle=1,因此,对于第一级,修正因子可以进一步简化为:
数据在初次写入时按照公式(16)进行修正。注意到,如图4所示的乘法器是将图3的当前级的两个乘法器和下一级的两个乘法器进行合并。
旋转因子的修正是根据公式(8)中的要求,修改查表的地址,只需要在原方案的地址上加一个R bit的加法器即可,修正值由控制器控制。注意到,旋转因子对应的公式为因此,只需要对旋转因子的高R比特通过查表进行加法计算,得到修正的索引,利用修正的索引中的旋转值,就可以对旋转因子进行修正。另外注意到,在实际操作中,乘法器的相乘的计算,转换为相位相加,实际进行的是加法操作,通过查表即可以得到修正值。
在本发明的至少一个实施例中,当一组数据包括在非第一级计算的数据,方法还包括从相应的存储器位置获取数据。基本电路架构采用图4所示的架构,每级迭代由控制器产生数据的地址,从各个bank中取出数据,直接送入到DFT计算单元中,经过计算的数据乘以一个经过修正旋转因子存入到bank中,进行下一级计算。
具体地,在包括第一级在内的每一级FFT计算中,需要进行r-点FFT计算的次数为N/r次。其中,N为FFT计算的总的点数,r为FFT计算的基数。在每一级的计算中,仅有r点中的可能的一小部分的数据的顺序是正确的。在本发明的实施例中,从存储器中输出的r点是输入点的循环移位。
在本发明的一个实施例中,FFT/IFFT计算的长度为2的整数次幂。当FFT计算的点数,也即数据的长度不是基数r的整数次幂时,可以对数据的地址填充0,以使填充后的数据的地址满足基数r的整数次幂。例如,
如果进行128点FFT,使用8点DFT,则R=log2(8)=3,I=log2(128)=7。
在一个实施例中,如果I=7,可以对地址填充2个0。具体地,FFT具有两种形式。一种是时间抽取FFT(DIT-FFT),一种是频率抽取FFT(DIF-FFT)。
假设数据的序列是进行时间抽取FFT,并且该数据的自然地址为
nature_address=as-1as-2as-3…a4a3a2a1a0
首先需要通过逆位序地址(reverse address),对数据进行重新排序。如何逆位序地址取决于所进行DIT-FFT的级。
例如,假设使用以r为基的DFT。令R=log2(r)。
情形一:s是R的整数倍。
总共有m级,其中m=s/R,每个级使用r-点DFT。将自然地址转换为如下的以r为基的地址,
nature_address=rm-1rm-2...r1r0
reverse_address=r0r1...rm-2rm-1
在以上讨论的等式(2)中给出的地址addr=Bs-1Bs-2Bs-3....B1B0,B已经表示的是逆位序的地址。因为对地址进行逆位序操作是本领域常规技术,也不是本发明关注的重点,因此,其过程在此被省略。
情形二:s不是R的整数倍。
总共仍为有m级,其中 表示向上取整。有一个级使用以rs为基的DFT,而其他级使用r-点DFT。rs仍为2的整数次幂,但是小于r。理论上,可以将以rs为基的DFT放在任何级,这决定了如何逆序(反序)地址。
例如,将以rs为基的DFT放在第m-i级,将自然地址转换为r-rs混合的系统,
nature_address=rm-1rm-2...rsi...r1r0
r是r-基的数字,rs是rs-基的数字。
reverse_address=r0r1...rsi...rm-2rm-1
例如,进行256点FFT,使用8点DFT,则s=log2(N)=8, rs=4,因此,如果有3个级,则2个级是8-基DFT,以及一个级是4-基DFT。
nature address=b7b6b5b4b3b2b1b0,其中b是二级制数字
子情形一:首先进行4-基DFT
nature_address=rs2r1r0,r0=b2b1b0,r1=b5b4b3,rs2=b7b6
reverse_address=r0r1rs2
在一个实施例中,对rs2填充0。定义rs’={rs,’0’},通过累加r0,r1,rs2’,可以得到存储器序号。
令Bs-1Bs-2Bs-3....B1B0=r0r1...rsi...rm-2rm-1,相当于式(2)中的表达方式,可以参照式(2)进行后续的计算。
子情形二:4-基DFT在中间级进行计算
nature_address=r2rs1r0,r0=b2b1b0,r2=b7b6b5,rs1=b4b3
reverse_address=r0rs1r2
在一个实施例中,定义rs’={rs,’0’},存储器序号=r0+rs1’+r2
子情形三:4-基DFT在最后级进行计算
nature_address=r2r1rs0,r1=b4b3b2,r2=b7b6b5,rs0=b1b0
reverse_address=rs0r1r2
在一个实施例中,定义s’={rs,’0’},存储器序号=r1+rs0’+r2
此外,虽然以上的实施例以DIT-FFT进行举例,本发明的实施例同样适用于DIF-FFT。
例如,在一个实施例中,对数据序列进行DIF-FFT,且
nature_address=as-1as-2as-3…a4a3a2a1a0
将自然地址转换为r-基的系统:
nature_address=rm-1rm-2...rsi...r1r0
不需要逆序(反序)地址,其他操作与DIT-FFT相同。将所有的r和rs’相加得到存储器序号。
以下实施例描述了对地址填充0之后,如何进行旋转操作。
对于DIT-FFT,定义sti是进行DFT操作的级,sti-1是前一级,以及sti+1是下一级。
前一级:
index=-[(C0×n)r]×(N’/r)
1~m-1级:
index=Bi+1×(BiBi-1....B1B0)×r^(m-i)-[(Di-1×ki-1)ri-1+(Di-1×Di-1)ri-1]×(N’/ri)+(Ci×ni-1)ri×(N’/ri)
(用D代替B,以避免混淆)
m级:
index=[(Dm-1×k)r+(Dm-1×Dm-1)r]×(N’/r)
Ci=(∑Bs)r,(s≠i),如果级i不是r-基级,则Ci=(∑Bs)r>>[log2(r)-log2(rs)],s≠i。>>表示右移符号。Ci为(∑Bs)的计算结果再除以[log2(r)-log2(rs)]的计算结果。
Di=(∑Bs)r,(s≠i),如果级i不是r-基级,则级Di=(∑Bs)r>>[log2(r)-log2(rs)],s≠i
k=n=(∑Bs)r,如果级i不是r-基级,k=n=(∑Bs)r>>[log2(r)-log2(rs)]
N’=rm,
ri=rs或r。
在另一个实施例中,对于DIF-FFT,定义sti进行DFT操作的级,sti-1是前一级,以及sti+1是下一级。
前一级:
index=-[(C0×n)ri]×(N’/r)
1~m-1级:
index=Bm-i×(Bm-i-1....B1B0)×r^(i-1)-[(Dm-i×km-i)ri-1+(Dm-i×Dm-1)rm-i]×(N’/rm-i)+(Cm-i-1×nm-i-1)rm-i-1×(N’/rm-i)
m级
index=[(D0×k)r0+(D0×D0)r0]×(N’/r0)
本领域技术人员可以理解,上述的实施例中地址填充方式也同样适用于对地址填充一个0,或多于2个0的情形。
在另一个实施例中,在计算数据的地址,也即,数据的地址可以表示为addr=Bs- 1Bs-2Bs-3....B1B0,B是以r为基的数字的步骤之前,对B进行进一步的变换。例如,设定B’=B+(b0)×(r/2),该公式的另一种表达方式为B’=(bi-1^b0)bi-2..b1b0。
例如,如果数据的地址为(476)8,
则B2=(4)8=(100)2,B2’=(100)2+0×(8/2)=4;
B1=(7)8=(111)2,B1’=(111)2+1×(8/2)=3;
B0=(6)8=(110)2,B0’=(110)2+0×(8/2)=6。
存储器的序号为:
bank_num=(4+3+6)8=7
按照另一种表达方式计算,也会得到相同的结果:
例如,如果数据的地址为(476)8,
则B2=(4)8=(100)2,
B1=(7)8=(111)2,
B0=(6)8=(110)2,
存储器序号为:
bank_num=(4+3+6)8=7
以下表三显示了对于部分循环移位情形如何获取对应的存储器的序号:
表三
在该实施例中,偶数位0,2,4,6仍表现出循环移位的特性,而奇数位的顺序是乱序的。需要重新排序单元将5和1对调,将7和3,从而重新排序后的B1的顺序表现为0,1,2,3,4,5,6,7。
部分循环移位仅仅是一种辅助的方法。在该方法中,不需要将数据重新排序为完全正确的顺序,而是仅仅排序为循环移位的顺序,然后就可以使用上述的实施例的方法。为了重新排列成循环移位的顺序,需要r/2个2选1的多路复用器(MUX,也称为选通逻辑电路)。换言之,在部分循环移位情形下对应的存储器序号的情况下,需要通过选择器,对来自相应的存储器位置的一组数据重新排序,其中选择器的可选通的通路小于FFT/IFFT计算的基数。而相对地,在传统的方案中,需要r个r选1的多路复用器(MUX),因此,该实施例仍然大大降低了布线,从而节省了片上面积。置于在本实施例中如何部署r/2的2选1的多路复用器取决于使用了何种地址排布方式。例如,图5示出了根据本发明的一个实施例的多路复用器的示意图。如果B’=(bi-1^b0)bi-2..b1b0,则如图5所示,将多路复用器放在以下各个对之间:(D0,Dr/2),(D1,Dr/2+1),(D2,Dr/2+2)…(Dr/2-1,Dr-1)。
根据本发明的另一些实施例,虽然仍需使用到数据重新排列以及数据重新排列所需要的相应的选通逻辑,但使用到的选通逻辑电路仍远远小于完全乱序的方式。
以上的实施例均是以FFT计算为例进行描述。本领域普通技术人员应能理解,上述各个实施例也同样适用于快速傅里叶逆变换(IFFT)。一般地,FFT与IFFT相互之间呈现共轭的关系。也即,IFFT与FFT计算结果实部相同,虚部相反。因此,如果例如使用图4的框图进行IFFT计算,在数据输入存储器之前,首先对虚部取反,然后计算结果再从存储器中取出后,再对虚部取反,就得到IFFT的计算结果。
在另一个实施例中,数据排放的方法并不局限于模加或模减的方式,只要能产生循环移位性质的排列方法都是可行的,或者是部分数据存在循环移位的性质。
在另一个实施例中,利用部分循环移位的性质可以简化重新排序模块但是不能完全的去除该模块。
在另一个实施例中,利用多个复数乘法器也可以不合并修正因子而直接进行计算。
此外,在一个实施例中,改变存储器在迭代过程中保存数据的位置,将额外需要的复数乘法器与原先的旋转因子乘法器合并,所以该方案没有增加任何的乘法资源,而只是增加了若干个n bit的加法器(n为蝶形计算的基数),且不处于数据通路上。
此外,本领域技术人员可以理解,虽然本文中的实施例以蝶形计算为例进行说明,本发明的实施例同样适用于其他短DFT序列计算,例如,Cooley–Tukey算法,Rader's算法,Bluestein's算法等。
图6示出了根据本发明的一个具体实施例的电路的装置框图。该用于进行快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路600包括地址计算单元610、接口单元620、FFT/IFFT计算单元630。
地址计算单元610被配置为将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;地址计算单元610还被配置为通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度。
接口单元620被配置为将FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置。
FFT/IFFT计算单元630被配置为进行所述FFT/IFFT计算。FT/IFFT计算单元630进一步包括短DFT序列计算器(图中未示出)用于从存储器中取出相应数据,直接对相应数据进行计算短DFT序列计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器。短DFT序列计算器重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。
可选地,所述接口装置被配置为对于每次运算,通过短DFT序列运算单元的端口,按照编号从对应编号的存储器中取出数据,不需要重新排列顺序后再送到所述短DFT序列运算单元端口;按照输出端口的序号将运算单元运算的结果送入对应编号的存储器中。
在一个可选的实施例中,计算的存储器位置的序号是在一次短序列DFT计算中使用的数据序号的循环移位。
在一个可选的实施例中,其中每个经修正后的短DFT序列计算数据不需要重新排列,直接进入与用于FFT/IFFT计算的计算单元对应的输入端口;且电路600不包含选择器。
图7示出了根据本发明的另一个实施例的电路装置框图。在该可选的实施例中,数据的地址的以基数进制表示的每个数位包括多个比特,电路700还包括转换器705和选择器730。转换器705被配置为通过对每个数位的所述多个比特中的两个比特进行异或操作,转换所述每个数位。
地址计算单元710还被配置为通过将各个数据的地址的以基数进制表示的转换后的数位累加或者相减,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中计算的多个存储器位置的序号是所述在一次短序列DFT计算中使用的数据序号的部分的循环移位。电路700还包括选择器725,被配置为对来自相应的存储器位置的所述一组数据重新排序,其中选择器为r个,每一个选通小于r选一,其中r为FFT/IFFT计算的基数。然后FFT/IFFT计算单元730还被配置为在重新排序的所述一组数据上进行FFT/IFFT计算。
此外,本领域技术人员应能理解,接口单元720,FFT/IFFT计算单元730分别于图6中的,接口单元620,FFT/IFFT计算单元630所实现的功能类似,因此在此不予赘述。
可选地,图8示出了根据本发明的另一个实施例的电路装置框图。电路800还包括第一乘法器825,被配置为以第一修正因子调整待进行短DFT序列计算的数据,其中所述第一修正因子表示为exp[(j×(B×n)r×2pi/r),旋转单元824,被配置为以旋转因子exp[(-j×(Bi×(Bi-1Bi-2....B1B0)×r^(s-i))×2pi/N)]处理修正后的序列。短DFT序列计算器826还被配置为对所述经处理的序列进行短DFT序列计算。然后,第二乘法器828,被配置为以第二修正因子调整经过DFT计算后的数据,其中第二修正因子表示为exp[(j×(B×k)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,(s≠i-1)i表示FFT/IFFT计算的级,数据具有地址为Bs-1Bs-2....Bi....B1B0,Bi=0,1,2…r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
可选地,图9示出了根据本发明的另一个实施例的电路装置框图。电路900包括乘法器940,被配置为以修正旋转因子调整FFT/IFFT计算后的数据,其中修正旋转因子表示为exp[(-j×(Bi+1×(BiBi-1....B1B0)×r^(s-i))×2pi/N)+(j×(B×k)r×2pi/r)+(j×(C×n)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1,C=(∑Bs)r,s≠i,i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2....Bi....B1B0,Bi=0,1,2…r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
可选地,旋转因子表示为exp[(-j×(Bi+1×(BiBi-1....B1B0)],且旋转因子的值与索引之间的列表预存在存储器中,所述电路还包括修正单元,被配置为通过对所述旋转因子的高R比特加入修正值,获取更新的索引,更新的索引对应修正旋转因子,以及利用修正旋转因子调整经过DFT计算后的数据,其中,R=log2(r),也即,以2为底r的对数,r表示FFT计算的基数。
可选地,其中所述所述一组数据包括在FFT/IFFT计算的第一级被计算的数据,以及电路还包括:加权单元,被配置为以公式exp(j×(C×n)r×2pi/r),n=B0,C=(∑Bs),(s≠0),对所述数据在输入时进行加权,其中,所述数据具有地址为Bs-1Bs-2....B1B0,Bi=0,1,2…r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
可选地,其中FFT/IFFT计算的长度为2的整数次幂。
可选地,其中FFT/IFFT计算包括进行FFT/IFFT蝶形计算。
本发明的至少部分实施例节省了数据重排列的过程。可以清楚地看到,这部分的选通逻辑与数据位宽成正比例关系与使用的基数成指数关系,当数据位数越宽使用的基数越大时本发明的优势就会更为突出。主要表现在下面几个方面:
-关键路径时间(path timing):由存储器(memory)到FFT/IFFT计算单元再到存储器(memory)是最为核心也是最为复杂的主要数据路径。通常是要采用流水线的结构,本发明基本可以节省两级pipeline。
-电路的面积:本发明的实施例去除了选择电路(MUX)后本身就减少了很多元件,等效2选1的选择器减少了(r-1)×2W×r个(r为基数,W为数据位宽)。例如,r8-FFT数据位宽为16bit,一共减少了(8-1)×2×16×8=1792个选择器。而路径更短,进一步优化了面积。
-布局和布线:实际设计中存储器上4层无法布线。而存储器又是复用较多的主要资源,本发明的实施例有效地减少了存储器附近的连线,使得布局和布线更为容易。这一优势在现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)设计上非常明显,因为FPGA为固定线道,较多走线会使定时迅速恶化。
-代价:本发明的实施例从数学的角度看为了得到正确的结果需要每次对数据进行修正。但在实际设计中通过一系列方法将3个复数乘法与原先的旋转因子乘法器合并,只需要对查表的地址做一个R bit的加法修正,不引入任何的计算误差,且实现更为简洁方便。具体地,在归一化以后,利用表格存储所有W的值,也即,在表格中存储exp(i×2pi/N)i=0,1,....N-1的所有的值。然后,利用W值在表格中的索引来获取W的值,而不是直接进行乘法计算。因此,每次仅需要查表得到W的索引。例如,当需要获取W0,W1,W2…Wq的任何组合的乘积的时候,就相当于对应的索引I0,I1,I2…Iq的和为索引所对应的值。上述计算额外的开销较小,因为只是进行加法计算,而没有乘法计算。
根据至少一个实施例,通过模加或模减的方式使得数据排列具有互斥性同时具有循环移位性质。
根据至少一个实施例,通过添加修正因子的方式去除所有的选择电路。
根据至少一个实施例,重新架构存储单元与计算单元的结构,将修正因子消耗的资源降到可以忽略不计,对计算的精度没有任何的影响。
虽然本发明与引用的特定示例实施例一起被描述,但是本发明并不仅限于于此描述的实施例,而是可以用在后附的权利要求的精神和范围内以修改或者变更的形式被实施。相应的,说明书和附图应被视为说明的意思而非限制的意思。
由上所述,应当注意到本发明特定的实施例在这里以示例为目的被描述,但是在不背离本发明范围的情况下可以做不同的修改。相应地,本发明除了后附的权利要求,并不被限制。
本领域技术人员在实施本发明时可以通过对于附图、公开的内容和权利要求的研究,了解并进行对于公开的实施例的其他改变。在权利要求中,词语“包括”并不排除其他组件或步骤,并且不定冠词“一个”并不排除多个。即使特定的特征记载在不同的从属权利要求中,本发明也涉及具有所有这些特征的实施例。任何在权利要求中的附图标记不应当被解释为限制范围。
不同实施例的特征和方面可以被整合到另外的实施例中,并且本文件所示的实施例可以被实施为不具有示例或者描述的所有特征或者方面。本领域技术人员应理解,虽然本系统和方法的特定的示例和实施例为了示例目的而被描述,在不背离本发明的精神和范围的情况下可以做出不同的修改。此外,一个实施例的特征可以被包含到另一个实施例中,即使这些特征并未在本文件中的一个单一的实施例中被一起描述。相应地,本发明被所附的权利要求所描述。
Claims (26)
1.一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的方法,包括:
将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;
通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度;
将所述FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;
进行所述FFT/IFFT计算,包括:
进行短DFT序列计算包括:
从所述存储器中取出相应数据,直接将所述相应数据送入短DFT序列计算器进行计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;
重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。
2.如权利要求1所述的方法,其中所述计算的存储器位置的序号是在一次短序列DFT计算中使用的数据序号的循环移位。
3.如权利要求1所述的方法,其中每个经修正后的短DFT序列计算数据不需要重新排列,直接进入与用于FFT/IFFT计算的计算单元对应的输入端口。
4.如权利要求2所述的方法,其中所述数据的地址的所述以基数进制表示的每个数位包括多个比特,在计算所述多个存储器位置的序号之前,所述方法还包括:
通过对每个数位的所述多个比特中的两个比特进行异或操作,转换所述每个数位,其中计算的多个存储器位置的序号是所述在一次短序列DFT计算中使用的数据序号的部分的循环移位。
5.如权利要求1所述的方法,其中,进行所述短DFT序列计算还包括:
以第一修正因子调整待进行短DFT序列计算的数据,其中所述第一修正因子表示为exp[(j×(B×n)r×2pi/r)],n=0,1,2,…,r-1;以旋转因子exp[(-j×(Bi×(Bi-1 Bi-2…B1 B0)×r^(s-i))×2pi/N)]处理修正后的序列;
将所述经处理的序列送入所述短DFT序列计算器进行计算;
以第二修正因子调整经过DFT计算后的数据,其中所述第二修正因子表示为exp[(j×(B×k)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1,i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2…Bi…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
6.如权利要求1所述的方法,进行短DFT序列计算还包括:
以所述修正旋转因子调整短DFT序列计算后的数据,其中所述修正旋转因子表示为exp[(-j×(Bi+1×(Bi Bi-1…B1 B0)×r^(s-i))×2pi/N)+(j×(B×k)r×2pi/r)+(j×(C×n)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1,C=(∑Bs)r,s≠i,i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2…Bi…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
7.如权利要求1所述的方法,其中旋转因子的值与索引之间的列表预存在存储器中,所述方法还包括,通过对所述旋转因子的高R比特加入修正值,获取更新的索引,所述更新的索引对应所述修正旋转因子,所述方法还包括,利用所述修正旋转因子调整经过DFT计算后的数据,其中,R表示log2(r),r表示FFT计算的基数。
8.如权利要求1所述的方法,其中所述一组数据包括在FFT/IFFT计算的第一级被计算的数据,以及所述方法还包括:
以公式exp(j×(C×n)r×2pi/r),n=B0,C=(∑Bs),s≠0,对所述数据在输入时进行加权,其中,所述数据具有地址为Bs-1Bs-2…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
9.如权利要求1所述的方法,还包括
对于每次运算,通过短DFT序列运算单元的端口,按照编号从对应编号的存储器中取出数据,不需要重新排列顺序后再送到所述短DFT序列运算单元端口;
按照输出端口的序号将运算单元运算的结果送入对应编号的存储器中。
10.如权利要求1所述的方法,其中所述FFT/IFFT计算的长度为2的整数次幂。
11.如权利要求4所述的方法,还包括
通过选择器,对来自相应的所述存储器位置的所述一组数据重新排序,其中所述选择器的可选通的通路小于FFT/IFFT计算的基数;
其中进行所述FFT/IFFT计算包括在重新排序的所述一组数据上进行短DFT序列计算。
12.如权利要求1所述的方法,其中所述FFT/IFFT计算包括进行FFT/IFFT蝶形计算。
13.一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路,包括:
地址计算单元,被配置为将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;
所述地址计算单元还被配置为通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度;
接口单元,被配置为将所述FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;
FFT/IFFT计算单元,被配置为进行所述FFT/IFFT计算,包括:
短DFT序列计算器,用于:
从所述存储器中取出相应数据,直接对所述相应数据进行计算短DFT序列计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;
重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。
14.如权利要求13所述的电路,其中所述计算的存储器位置的序号是在一次短序列DFT计算中使用的数据序号的循环移位。
15.如权利要求13所述的电路,其中,每个经修正后的短DFT序列计算数据不需要重新排列,直接进入与用于FFT/IFFT计算的计算单元对应的输入端口;
其中所述电路不包含选择器。
16.如权利要求14所述的电路,其中所述数据的地址的所述以基数进制表示的每个数位包括多个比特,所述电路还包括:
转换器,被配置为通过对每个数位的所述多个比特中的两个比特进行异或操作,转换所述每个数位;其中
所述地址计算单元还被配置为通过将各个数据的地址的以基数进制表示的转换后的数位累加或者相减,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中计算的多个存储器位置的序号是所述在一次短序列DFT计算中使用的数据序号的部分的循环移位。
17.如权利要求13所述的电路,还包括:
第一乘法器,被配置为以第一修正因子调整待进行短DFT序列计算的数据,其中所述第一修正因子表示为exp[(j×(B×n)r×2pi/r)],
旋转单元,被配置为以旋转因子exp[(-j×(Bi×(Bi-1 Bi-2…B1 B0)×r^(s-i))×2pi/N)]处理修正后的序列,
所述短DFT序列计算器还被配置为对所述经处理的序列进行短DFT序列计算;
第二乘法器,被配置为以第二修正因子调整经过DFT计算后的数据,其中所述第二修正因子表示为exp[(j×(B×k)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2…
Bi…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
18.如权利要求13所述的电路,还包括:
乘法器,被配置为以所述修正旋转因子调整短DFT序列计算后的数据,其中所述修正旋转因子表示为exp[(-j×(Bi+1×(Bi Bi-1…B1 B0)×r^(s-i))×2pi/N)+(j×(B×k)r×2pi/r)+(j×(C×n)r×2pi/r)+(-j×(B×B)r×2pi/r)],其中,B=(∑Bs)r,s≠i-1,C=(∑Bs)r,s≠i,i表示FFT/IFFT计算的级,所述数据具有地址为Bs-1Bs-2…Bi…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
19.如权利要求13所述的电路,其中,旋转因子的值与索引之间的列表预存在存储器中,所述电路还包括
修正单元,被配置为通过对所述旋转因子的高R比特加入修正值,获取更新的索引,所述更新的索引对应所述修正旋转因子,以及
利用所述修正旋转因子调整经过DFT计算后的数据,其中,R表示log2(r),r表示FFT计算的基数。
20.如权利要求13所述的电路,其中所述一组数据包括在FFT/IFFT计算的第一级被计算的数据,以及所述电路还包括:
加权单元,被配置为以公式exp(j×(C×n)r×2pi/r),n=B0,C=(∑Bs),s≠0,对所述数据在输入时进行加权,其中,所述数据具有地址为Bs-1Bs-2…B1B0,Bi=0,1,2,…,r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。
21.如权利要求13所述的电路,所述接口装置被配置为
对于每次运算,通过所述短DFT序列运算单元的端口,按照编号从对应编号的存储器中取出数据,不需要重新排列顺序后再送到所述短DFT序列运算单元端口;
按照输出端口的序号将运算单元运算的结果送入对应编号的存储器中。
22.如权利要求13所述的电路,其中所述FFT/IFFT计算的长度为2的整数次幂。
23.如权利要求16所述的电路,还包括
选择器,被配置为对来自相应的所述存储器位置的所述一组数据重新排序,其中所述选择器为r个,每一个选通小于r选一,其中r为FFT/IFFT计算的基数;
其中所述计算单元还被配置为在重新排序的所述一组数据上进行FFT/IFFT计算。
24.如权利要求13所述的电路,其中所述FFT/IFFT计算包括进行FFT/IFFT蝶形计算。
25.一种接收机,包括如权利要求13至24中任一项所述的快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路。
26.一种信号发生器,包括如权利要求13至24中任一项所述的快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的电路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079003.3A CN105988973B (zh) | 2015-02-13 | 2015-02-13 | 快速傅里叶变换/快速傅里叶变换的方法和电路 |
US14/709,436 US9767074B2 (en) | 2015-02-13 | 2015-05-11 | Method and device for fast fourier transform |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079003.3A CN105988973B (zh) | 2015-02-13 | 2015-02-13 | 快速傅里叶变换/快速傅里叶变换的方法和电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988973A CN105988973A (zh) | 2016-10-05 |
CN105988973B true CN105988973B (zh) | 2019-04-19 |
Family
ID=56622288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510079003.3A Active CN105988973B (zh) | 2015-02-13 | 2015-02-13 | 快速傅里叶变换/快速傅里叶变换的方法和电路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9767074B2 (zh) |
CN (1) | CN105988973B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201912438SA (en) * | 2017-07-28 | 2020-01-30 | Agency Science Tech & Res | Multiplication methods, non-transitory computer-readable media, and multiplication devices |
CN108111458A (zh) * | 2017-12-29 | 2018-06-01 | 中山大学花都产业科技研究院 | 一种应用于NB-IoT的傅里叶逆变换算法 |
EP3864808A1 (en) * | 2018-10-12 | 2021-08-18 | Nokia Technologies Oy | Reducing latency at packet data convergence protocol (pdcp) in new radio |
US11764940B2 (en) | 2019-01-10 | 2023-09-19 | Duality Technologies, Inc. | Secure search of secret data in a semi-trusted environment using homomorphic encryption |
CN110109704B (zh) * | 2019-05-05 | 2021-08-27 | 杭州中科微电子有限公司 | 一种数字信号处理系统 |
CN112383497B (zh) * | 2020-11-10 | 2023-02-14 | 展讯半导体(成都)有限公司 | 5g系统中ofdm变换方法及相关产品 |
CN114422315B (zh) * | 2022-03-29 | 2022-07-29 | 中山大学 | 一种超高吞吐量ifft/fft调制解调方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6917955B1 (en) * | 2002-04-25 | 2005-07-12 | Analog Devices, Inc. | FFT processor suited for a DMT engine for multichannel CO ADSL application |
CA2660654A1 (en) * | 2006-08-18 | 2008-02-21 | Telefonaktiebolaget L M Ericsson (Publ) | Method and arrangement relating to the insertion of pilot tones in the frequency domain in sc-fdma |
CN101072218B (zh) * | 2007-03-01 | 2011-11-30 | 华为技术有限公司 | 一种fft/ifft成对处理系统、装置及方法 |
CN101616104B (zh) * | 2009-07-27 | 2011-12-07 | 北京天碁科技有限公司 | 正交频分复用系统的信道估计方法和装置 |
CN103020014A (zh) * | 2012-11-12 | 2013-04-03 | 中国电子科技集团公司第五十四研究所 | 一种大点数fft的实现方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4138730A (en) * | 1977-11-07 | 1979-02-06 | Communications Satellite Corporation | High speed FFT processor |
US4970674A (en) * | 1988-03-10 | 1990-11-13 | Rockwell International Corporation | Programmable windowing FFT device with reduced memory requirements |
US6334219B1 (en) * | 1994-09-26 | 2001-12-25 | Adc Telecommunications Inc. | Channel selection for a hybrid fiber coax network |
EP1436725A2 (en) * | 2001-05-07 | 2004-07-14 | Jaber Associates, L.L.C. | Address generator for fast fourier transform processor |
KR100836050B1 (ko) * | 2001-05-23 | 2008-06-09 | 엘지전자 주식회사 | 고속 푸리에 변환 연산 장치 |
US6704760B2 (en) * | 2002-04-11 | 2004-03-09 | Interdigital Technology Corporation | Optimized discrete fourier transform method and apparatus using prime factor algorithm |
GB2448755B (en) * | 2007-04-27 | 2009-03-25 | Univ Bradford | FFT processor |
US9087003B2 (en) * | 2012-11-01 | 2015-07-21 | Freescale Semiconductor, Inc. | Vector NCO and twiddle factor generator |
-
2015
- 2015-02-13 CN CN201510079003.3A patent/CN105988973B/zh active Active
- 2015-05-11 US US14/709,436 patent/US9767074B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6917955B1 (en) * | 2002-04-25 | 2005-07-12 | Analog Devices, Inc. | FFT processor suited for a DMT engine for multichannel CO ADSL application |
CA2660654A1 (en) * | 2006-08-18 | 2008-02-21 | Telefonaktiebolaget L M Ericsson (Publ) | Method and arrangement relating to the insertion of pilot tones in the frequency domain in sc-fdma |
CN101072218B (zh) * | 2007-03-01 | 2011-11-30 | 华为技术有限公司 | 一种fft/ifft成对处理系统、装置及方法 |
CN101616104B (zh) * | 2009-07-27 | 2011-12-07 | 北京天碁科技有限公司 | 正交频分复用系统的信道估计方法和装置 |
CN103020014A (zh) * | 2012-11-12 | 2013-04-03 | 中国电子科技集团公司第五十四研究所 | 一种大点数fft的实现方法 |
Non-Patent Citations (2)
Title |
---|
A high-speed four-parallel radix-2 4 FFT/IFFT processor for UWB applications;Shin M,et al.,;《Circuits and Systems, 2008. ISCAS 2008. IEEE International Symposium on.》;20081231;960-963 |
高速广义多载波解调的低成本硬件优化设计;熊何锐,等;;《西安电子科技大学学报(自然科学版)》;20110630;第38卷(第3期);169-173 |
Also Published As
Publication number | Publication date |
---|---|
US9767074B2 (en) | 2017-09-19 |
US20160239463A1 (en) | 2016-08-18 |
CN105988973A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105988973B (zh) | 快速傅里叶变换/快速傅里叶变换的方法和电路 | |
CN103970718B (zh) | 一种快速傅里叶变换实现装置及方法 | |
CN103955447B (zh) | 基于dsp芯片的fft加速器 | |
CN103488459B (zh) | 一种改进的高基cordic方法及基于其的复数乘法运算单元 | |
WO2013109532A1 (en) | Algebraic processor | |
CN101847137B (zh) | 一种实现基2fft计算的fft处理器 | |
US20020178195A1 (en) | Memory address generating apparatus and method | |
Su et al. | A highly unified reconfigurable multicore architecture to speed up NTT/INTT for homomorphic polynomial multiplication | |
JP2010016830A (ja) | Dft計算で使用されるマルチ基数バタフライを計算する計算方法 | |
CN111443893A (zh) | 一种基于cordic算法的n次根计算装置及方法 | |
CN105718424B (zh) | 一种并行快速傅立叶变换处理方法 | |
JP2005174077A (ja) | 関数演算方法及び関数演算回路 | |
US9223752B2 (en) | Digital signal processor with one or more non-linear functions using factorized polynomial interpolation | |
CN102364456A (zh) | 64点fft计算器 | |
US20170011005A1 (en) | Method and Apparatus for Decimation in Frequency FFT Butterfly | |
US20080228845A1 (en) | Apparatus for calculating an n-point discrete fourier transform by utilizing cooley-tukey algorithm | |
CN106371803B (zh) | 用于蒙哥马利域的计算方法和计算装置 | |
JP2010016832A (ja) | ルリタニアマッピングを用いるpfaアルゴリズムに従って種々のサイズのdftを計算する装置及び方法 | |
JP2010016831A (ja) | 種々のサイズを有するdftを計算する装置 | |
CN104951279B (zh) | 一种基于NEON引擎的向量化Montgomery模乘器的设计方法 | |
Zheng | Encrypted cloud using GPUs | |
Chang et al. | Accelerating multiple precision multiplication in GPU with Kepler architecture | |
CN102810087A (zh) | 一种傅立叶变换的实现装置 | |
Jiang et al. | A novel overall in-place in-order prime factor FFT algorithm | |
US9582473B1 (en) | Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171026 Address after: 200233 A18 site, 1 Yishan Road, Shanghai, Xuhui District, 900 Applicant after: Shanghai Lanshi Semiconductor Co., Ltd. Applicant after: LAN to electronic technology (Chengdu) Co., Ltd. Address before: 200233 room A1601, No. 900, Xuhui District, Shanghai, Yishan Road Applicant before: Acrospeed, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |