一种多粒度并行FFT蝶形计算的方法及相应的装置制造方法及图纸

技术编号:7487369 阅读:241 留言:0更新日期:2012-07-09 22:00
本发明专利技术公开了一种多粒度并行FFT蝶形计算的方法及相应的装置。该方法及装置中的蝶形计算为非原址计算,每次从输入缓冲器和旋转因子缓冲器中读取蝶形计算所需的数据及旋转因子,之后用统一的蝶形表达式并行地进行多级蝶形计算,最后把计算结果写回到输出缓冲器。本发明专利技术最大限度地减少了访问缓冲器的次数,大大提高了蝶形计算的速度,并减少了功耗。本发明专利技术能高效、并行地执行多粒度、多数据格式的蝶形计算,还可以根据具体实现指明蝶形计算的并行粒度和数据格式,对平衡组和非平衡组的FFT蝶形计算均适用。

【技术实现步骤摘要】

本专利技术涉及集成电路设计中快速傅立叶变换(FFT)的蝶形计算领域,尤其是一种多粒度并行FFT蝶形计算的方法及相应的装置
技术介绍
信号处理系统经常需要将信号内容在时域和频域进行转换,快速傅立叶变换算法 (FFT)可进行时域和频域间的信号转换。相对于其它转换算法来说,快速傅立叶变换算法具有结构统一、计算量少的优点,因此广泛应用于信号处理系统中。FFT算法输入N个数据,输出N个数据;一般称时域至频域的变换为正向变换,而频域至时域的变换为逆向变换。FFT算法有多种实现方式,但都由库利-图基算法演变而来。对于N个数据点,基2的库利-图基算法包括log2N个计算级。每个计算级输入N个数,输出N个数;前一计算级的输出经过一定的排序后作为后一计算级的输入。第一级输入为原始数据,最后一级输出为FFT计算结果。对于8点长度的FFT计算,其计算流程如图1 所示,整个计算过程需要三个计算级103 :S0,S1,S2。每个计算级103由N/2个蝶形102组成,蝶形的计算结构如图2所示。每个蝶形输入有两个数据点A和B,以及一个旋转因子W, 经过蝶形计算后得到两个计算结果A+BW和A-BW。每个蝶形计算中,输入数据A和B的序号具有确定的对应关系,该对应关系由蝶形所在的计算级以及输入数据A或B的序号来确定;同时,旋转因子W的值由当前蝶形所在的计算级103、输入数据A或B的序号、FFT数据长度确定。如图1中SO计算级中的第1个数据必定与第0个数据构成一蝶形,并且第0个数据为蝶形输入的A,第1个数据为蝶形输入的B,而W的值为1。而Sl计算级中的第1个数据必定与第3个数据构成一蝶形,并且第1个数据为蝶形输入的A,第3个数据为蝶形输入的B,而W的值为1。计算级之间存在数据相关,后一计算级必须等待前一计算级完成以后才能开始计算。因此,每级计算完成后都需要将结果存放在存储器中,下一级计算从存储器中读取上一级的计算结果作为本级计算的输入。计算级内的蝶形相互独立,蝶形的计算顺序不影响计算结果,但每个蝶形所读取的数据A、B和旋转因子W必须满足内在的对应关系。在并行FFT计算中,运算部件从多粒度并行存储器中读取多个蝶形所需数据及对应的旋转因子,并行计算多个、多级蝶形,然后将计算结果并行写入存储器,以便进行一下级计算,如图3所示。图中假定数据长度为64,并行粒度为4,即多粒度并行存储器305 — 次可读写4个数据。此时,两相邻计算级中存在数据相关的4个蝶形303构成一个蝶形组 302,两相邻计算级中的蝶形组构成一计算节301。蝶形计算模块从多粒度并行存储器305 并行读取一个蝶形组所需数据点和旋转因子,完成一个蝶形组计算后,再将计算结果并行写回多粒度并行存储器305。在蝶形组302中,每个蝶形的输入A、B、W仍必须满足其内在的对应关系,因此,并行FFT算法中必须考虑计算数据和旋转因子在存储器中的分布,以及每个蝶形组302的读写地址和读写方式,以保证蝶形计算模块每次都能并行读取所需数据和旋转因子。对于并行FFT算法,目前国内外有一些相关的研究,如专利200910054018.9(基于 FPGA实现并行结构FFT处理器的方法),专利201110163600. 6 (基于并行处理的FFT装置及其方法),专利US6, 792,441B2 (Parallel Multiprocessing For Fast Fourier Transform With Pipeline Architecture) 0该类专利都着重讨论如何将长序列的FFT数据分解成多个短序列的FFT,利用多个处理器并行计算各个短序列的FFT,最后对多个短序列的FFT进行交织计算,得到最终的长序列FFT结果。但是对短序列的FFT运算,存在多级蝶形计算, 每级蝶形计算都需要相关的存储器读写操作,占用很大的延时。因此,该类并行蝶形计算方法速度仍受到很大的制约。
技术实现思路
为了解决上述问题,本专利技术提出一种使用多个缓冲器装置对输入数据进行多粒度并行FFT蝶形计算的方法及相应的装置。根据本专利技术的一方面,提出一种使用多个缓冲器装置对输入数据进行多粒度并行FFT蝶形计算的方法,其中第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据,第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子,第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据,其特征在于,N点输入数据分成「(log2A0/q个计算节,每个计算节中包含个蝶形组,蝶形组是并行蝶形计算的基本单位,其中,「1表示向上取整,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为浐;所述蝶形组中的FFT蝶形计算方法包括以下步骤步骤1,设定计数器的初始值i = L-Rq ;步骤2,通过MUX选通器从所述第一或第二缓冲器装置中读入蝶形计算所需要的 2L个数据,将2L个数据分为组,并从所述第三缓冲器装置中顺序读取2H个并行蝶形计算所需要的旋转因子;步骤3,对所述组数据进行一级并行蝶形计算;步骤4,将蝶形计算结果写入所述第二缓冲器装置中,对数据进行重排;步骤5,修改当前计数器i的值为i = i-Ι ;步骤6,判断i的值是否为0,如果i = 0,表示当前蝶形组计算完成,转向步骤7, 否则返回到步骤2;步骤7,将所述第二缓冲器装置中的数据写入所述第四缓冲器装置中,完成一个蝶形组计算。根据本专利技术的另一方面,提出了一种对输入数据进行多粒度并行FFT蝶形组计算的装置,其特征在于,该装置包括多个缓冲器装置、一计数器、多个数据选通模块、多个蝶形计算模块、一写回控制模块,其中,第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据;第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子;第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据;所述计数器用于标识蝶形组完成蝶形计算所需要的级数,所述计数器为递减计数器,其初始值为L-Rq,当一级蝶形计算完成后该计数器的值i减1,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为2S Rq表示当前蝶形组从第Rq级开始计算。所述多个数据选通模块用于根据所述计数器的数值选择从所述第一或第二缓冲器装置中读入蝶形计算所需要的力个数据,每一个数据选通模块输入2个数据;所述多个蝶形计算模块中的每一个从与其相应的数据选通模块中读取数据,根据所述第三缓冲器装置中缓存的旋转因子对读取的数据进行蝶形计算,并将计算结果写入所述第二缓冲器装置中;所述写回控制模块根据计数器的值决定是否需要将所述第二缓冲器装置中的数据写入到所述第四缓冲器装置中。本专利技术的方法每次从输入缓冲器和旋转因子缓冲器中获取并行FFT蝶形计算所需的数据和旋转因子。输入缓冲器和旋转因子缓冲器中数据和旋转因子已根据特定的并行粒度和数据格式准备好,不需要额外的位反序操作,读取后数据和旋转因子可直接进行FFT 蝶形计算。从输入缓冲器和旋转因子缓冲器中读取蝶形计算所需的数据和旋转因子后,蝶形组302内部多级蝶形计算在运算部件内部并行实现,多级蝶形计算完成后把蝶形计算结果写回输出缓冲器,中间不会访问缓冲器。在整个并行FFT蝶形计算中,每级蝶形计算并非原址操作,蝶形计算完成后需要对结果进行数据重本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王东琳汪涛谢少林蒿杰尹磊祖
申请(专利权)人:中国科学院自动化研究所
类型:发明
国别省市:

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

1
相关领域技术