快速傅里叶变换/快速傅里叶变换的方法和电路技术

技术编号:13790661 阅读:84 留言:0更新日期:2016-10-05 22:36
一种快速傅里叶变换/快速傅里叶变换的方法和电路,包括:将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;通过累加或者累减一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中基数表示FFT/IFFT计算的并行计算的短DFT序列的长度;将FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;进行FFT/IFFT计算,包括:进行短DFT序列计算包括:从存储器中取出相应数据,直接将相应数据送入短DFT序列计算器进行计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;重复短DFT序列计算,直至整个FFT/IFFT计算结束。

【技术实现步骤摘要】

本专利技术涉及频率变换,尤其涉及快速傅里叶变换的的方法和电路。
技术介绍
大点数的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(1-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-1本文档来自技高网...

【技术保护点】
一种快速傅里叶变换/快速傅里叶逆变换(FFT/IFFT)的方法,包括:将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据的多个存储器位置的序号,其中所述基数表示所述FFT/IFFT计算的所述并行计算的短DFT序列的长度;将所述FFT/IFFT数据分别同时存储在由计算的序号所指示的各自对应的存储器位置;进行所述FFT/IFFT计算,包括:进行短DFT序列计算包括:从所述存储器中取出相应数据,直接将所述相应数据送入短DFT序列计算器进行计算,经过修正旋转因子修正计算的数据,直接原址将修正后的数据送回存储器;重复所述短DFT序列计算,直至整个FFT/IFFT计算结束。

【技术特征摘要】
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-2Bi....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....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-2Bi....B1B0,Bi=0,1,2...r-1,r表示FFT计算的基数,Bs-1、Bs-2、B1、B0中的每一个是以基数为基的数位,N表示FFT/IFFT计算的点数。7.如权利要求1所述的方法,其中旋转因子的值与索引之间的列表预存在存储器中,所述方法还包括,通过对所述旋转因子的高R比特加入修正值,获取更新的索引,所述更新的索引对应所述修正旋转因子,所述方法还包括,利用所述修正旋转因子调整经过DFT计算后的数据,其中,R
\t表示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)的电路,包
\t括:地址计算单元,被配置为将FFT/IFFT数据的一组反序或正序地址转换为一组以基数进制表示的地址;所述地址计算单元还被配置为通过累加或者累减所述一组以基数进制表示的地址的各个数位,并对累加或者累减的结果取模,计算进行并行计算时用于缓存一组数据...

【专利技术属性】
技术研发人员:宋鹤鸣王立华
申请(专利权)人:澜起科技上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1