一种FFT并行处理装置和方法制造方法及图纸

技术编号:9860266 阅读:84 留言:0更新日期:2014-04-02 19:36
本发明专利技术提供一种FFT并行处理装置和方法,该装置支持一种或多种基数的蝶形运算,包括FFT控制器和蝶形运算器。其中,FFT控制器用于根据并行度将FFT运算分解为一级或多级蝶形运算,所述并行度是所述装置支持的一种或多种基数的倍数。蝶形运算器用于顺序执行每一级蝶形运算,其中在每一级蝶形运算中执行一次或多次蝶形运算,并且每一次蝶形运算的基数是所述装置支持的基数。利用本发明专利技术提供的装置和方法,可在保持访存并行度与系统并行度一致的情况下,通过简单的地址运算来避免访存冲突问题。此外,还可以支持较高的FFT并行化程度,在提高运算速度的同时将硬件资源保持在较低的水平。

【技术实现步骤摘要】
一种FFT并行处理装置和方法
本专利技术属于数字信号处理领域,尤其涉及快速傅里叶变换(FastFourierTransform,FFT)领域,更具体地,涉及一种FFT并行处理装置和方法。
技术介绍
离散傅里叶变换(DiscreteFourierTransform,DFT)及其逆变换(InverseDiscreteFourierTransform,IDFT)常被运用于数字信号处理领域,它们是将信号的时域和频域联系起来的桥梁。然而由于DFT的复杂度过大,导致其实用性受到了限制。随着DFT的各种快速算法FFT的出现,将DFT算法的复杂度从O(n2)下降到了O(nlogn),从而加速了将DFT从理论运用到实践。目前,在现代通信技术和数字信号处理领域,FFT的应用非常广泛。在正交频分复用系统(OrthogonalFrequencyDivisionMultiplexing,OFDM)中,可以根据多载波的特性利用IFFT或FFT变换对一个OFDM符号进行调制或解调。基于IFFT/FFT的多载波调制技术已被大大扩展到不同类型的通信系统中,如数字音频广播、数字视频广播、无线局域网等。在最新的第四代(4thGeneration,4G)移动通信系统中,也采用了OFDM技术。由于4G对数据的吞吐量要求比较高,所以OFDM符号的周期设计得比较短。例如,在20MHz带宽的LTE(LongTermEvolution,长期演进)系统中,一个OFDM符号的周期为71.3微秒,这对FFT的处理速度提出了更高的要求。另外,LTE系统中还必须支持从128到2048的5种长度为2n的FFT,因此,提高FFT处理效率以及灵活性具有很高的实际应用价值。FFT算法一般采用库里—图基算法,利用分治的思想将长的数据序列转化为短的数据序列再进行变换。在转化的过程中,由于较长的序列可以重复利用较短序列计算出的结果,从而可以减少乘法和加法的次数。以一个长度为16点的序列为例,假设短序列的长度为4并满足16=42。这里短序列的长度“4”代表一个基/基数(Radix),即一个基4的蝶形运算;上标“2”代表长序列可以划分为这类短序列的级数,即这个16点的序列可以划分为两级的基4蝶形运算。又如对于一个长度为2048点的序列,2048=162×8,即长度为2048的序列可以划分为两级基16的蝶形运算以及一级基8的蝶形运算。从上述两个例子中可以看到,虽然级与级之间的蝶形运算有所不同,但是每一级中的蝶形运算对数据的操作却具有高度的相似性,因此可以通过并行化的方式来提高FFT的处理效率。基于库里—图基的FFT算法有一个特点,即级与级之间的数据具有高度的依赖关系,下一级蝶形运算必须等到上一级蝶形运算完成之后才能进行。因此,大部分FFT装置采用的方式是使各级蝶形运算串行执行并最大化每级蝶形运算的并行度。然而,传统FFT装置在实现时存在两个问题。一个问题是前一级数据在送到下一级进行运算前往往需要进行数据倒换,在倒换的过程中常常存在访存冲突的问题。解决这个问题的方法目前有两种:一种是不进行数据倒换,直接利用复杂的地址产生单元来产生下一级蝶形运算需要的数据所在的地址,并直接将数据从存储器中读出;另一种方法是提高存储器的访存端口并利用结构化的存储结构来避免访存冲突。在前一种方法中,数据仍然是以串行的方式从存储器中取出,访存的并行度低;后一种方案可以在不损失并行度的情况下解决访存冲突,但是带来了巨大的硬件开销。另外一个问题是系统并行度设计过大会造成较大的硬件复杂度。传统FFT装置使用的蝶形运算单元支持的基与装置的并行度相同,即如果装置的并行度为4,那么装置就支持基4的蝶形运算。装置并行度越高,蝶形运算的硬件资源消耗也就越大。
技术实现思路
为解决上述问题,根据本专利技术的一个实施例,提供一种FFT并行处理装置,其支持一种或多种基数的蝶形运算,该装置包括:FFT控制器,用于根据并行度将FFT运算分解为一级或多级蝶形运算;其中,所述并行度是所述装置支持的一种或多种基数的倍数;蝶形运算器,用于顺序执行每一级蝶形运算;其中,在每一级蝶形运算中执行一次或多次蝶形运算,并且每一次蝶形运算的基数是所述装置支持的基数。在一个实施例中,所述FFT控制器用于根据下式将N点FFT运算分解为m级点数为n或n'的蝶形运算:N=N1×N2×…×Nm其中,N1,N2,...Nm-1=n,Nm=n',m为正整数,n为并行度,n'小于等于n且为所述装置支持的一种或多种基数的倍数。在一个实施例中,所述FFT控制器还用于确定每一级蝶形运算中执行蝶形运算的次数以及每一次蝶形运算的基数;其中,每一级蝶形运算的点数等于该级蝶形运算中每一次蝶形运算的基数的乘积。在一个实施例中,所述装置还包括:向量数据存储器,用于在执行每一级蝶形运算前对参与该级蝶形运算的数据进行处理,使其符合该级蝶形运算的输入顺序,并且将处理后的数据按顺序发送到所述蝶形运算器。在进一步的实施例中,所述向量数据存储器还包括:数量为并行度n的存储单元,其中,每个存储单元的每一行依次存储序号相差为n的输入数据;其中,在执行每一级蝶形运算前,所述向量数据存储器每次重排n个数据直到所有输入数据均被重排,使得重排后参与每一级蝶形运算的一组数据存放在每个存储单元的同一行;所述向量数据存储器按行取出每个存储单元的同一行数据,将每个存储单元的同一行数据存储到其另一块空间。在进一步的实施例中,所述向量数据存储器将每个存储单元的同一行数据存储到其另一块空间之前,还对所述每个存储单元的同一行数据进行数据移位。在一个实施例中,所述向量数据存储器还用于在所述蝶形运算器执行最后一级蝶形运算后对所述蝶形运算器输出的数据进行倒换,并且存储倒换后的数据。在一个实施例中,所述蝶形运算器包括:数据重排单元,用于在执行每一次蝶形运算之前,对参与该次蝶形运算的数据进行重排,并且在执行最后一次蝶形运算之后,对运算后的数据进行重排;以及蝶形运算单元,用于执行一次蝶形运算。在进一步的实施例中,所述FFT控制器还用于根据对FFT运算所作的分解确定每一次蝶形运算的重排规则。在一个实施例中,所述装置还包括:旋转因子存储器,用于在执行每一级蝶形运算前将相应的旋转因子发送到所述蝶形运算器。在另一个实施例中,所述装置还包括:外部数据接口,用于所述向量数据存储器和外部进行数据交互。根据本专利技术的一个实施例,还提供一种用于数字信号处理的FFT并行处理方法,其支持一种或多种基数的蝶形运算,所述方法包括:步骤1)、根据并行度将对于所述数字信号的FFT运算分解为一级或多级蝶形运算;其中,所述并行度是所述方法支持的一种或多种基数的倍数;步骤2)、顺序执行每一级蝶形运算;其中,在每一级蝶形运算中执行一次或多次蝶形运算,并且每一次蝶形运算的基数是所述方法支持的基数。在一个实施例中,在步骤1)中,根据下式将N点FFT运算分解为m级点数为n或n'的蝶形运算:N=N1×N2×…×Nm其中,N1,N2,...Nm-1=n,Nm=n',m为正整数,n为并行度,n'小于等于n且为所述装置支持的一种或多种基数的倍数。在一个实施例中,步骤1)还包括:确定每一级蝶形运算中执行蝶形运算的次数以及每一次蝶形运算的基数;其中,每一级蝶形运算的点数等于该级蝶形运算中每本文档来自技高网
...
一种FFT并行处理装置和方法

【技术保护点】
一种FFT并行处理装置,其支持一种或多种基数的蝶形运算,所述装置包括:FFT控制器(101),用于根据并行度将FFT运算分解为一级或多级蝶形运算;其中,所述并行度是所述装置支持的一种或多种基数的倍数;蝶形运算器(103),用于顺序执行每一级蝶形运算;其中,在每一级蝶形运算中执行一次或多次蝶形运算,并且每一次蝶形运算的基数是所述装置支持的基数。

【技术特征摘要】
1.一种FFT并行处理装置,其支持一种或多种基数的蝶形运算,所述装置包括:FFT控制器(101),用于根据并行度将FFT运算分解为一级或多级蝶形运算;其中,所述并行度是所述装置支持的一种或多种基数的倍数;蝶形运算器(103),用于顺序执行每一级蝶形运算;其中,在每一级蝶形运算中执行一次或多次蝶形运算,并且每一次蝶形运算的基数是所述装置支持的基数;向量数据存储器(102),用于在执行每一级蝶形运算前对参与该级蝶形运算的数据进行处理,使其符合该级蝶形运算的输入顺序,并且将处理后的数据按顺序发送到所述蝶形运算器(103),还包括:数量为并行度n的存储单元,其中,每个存储单元的每一行依次存储序号相差为n的输入数据;其中,在执行每一级蝶形运算前,所述向量数据存储器(102)每次重排n个数据直到所有输入数据均被重排,使得重排后参与每一级蝶形运算的一组数据存放在每个存储单元的同一行;所述向量数据存储器(102)按行取出每个存储单元的同一行数据,将每个存储单元的同一行数据存储到其另一块空间。2.根据权利要求1所述的装置,其中,所述FFT控制器(101)用于根据下式将N点FFT运算分解为m级点数为n或n'的蝶形运算:N=N1×N2×…×Nm其中,N1,N2,...Nm-1=n,Nm=n',m为正整数,n为并行度,n'小于等于n且为所述装置支持的一种或多种基数的倍数。3.根据权利要求1或2所述的装置,其中,所述FFT控制器(101)还用于确定每一级蝶形运算中执行蝶形运算的次数以及每一次蝶形运算的基数;其中,每一级蝶形运算的点数等于该级蝶形运算中每一次蝶形运算的基数的乘积。4.根据权利要求1所述的装置,其中,所述向量数据存储器(102)将每个存储单元的同一行数据存储到其另一块空间之前,还对所述每个存储单元的同一行数据进行数据移位。5.根据权利要求1所述的装置,其中,所述向量数据存储器(102)还用于在所述蝶形运算器(103)执行最后一级蝶形运算后对所述蝶形运算器(103)输出的数据进行倒换,并且存储倒换后的数据。6.根据权利要求1或2所述的装置,其中,所述蝶形运算器(103)包括:数据重排单元(1031),用于在执行每一次蝶形运算之前,对参与该次蝶形运算的数据进行重排,并且在执行最后一次蝶形运算之后,对运算后的数据进行重排;以及蝶形运算单元(103...

【专利技术属性】
技术研发人员:苏永涛姚彦斌朱子元唐杉石晶林
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京;11

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

1