CN102541813B - 一种多粒度并行fft蝶形计算的方法及相应的装置 - Google Patents

一种多粒度并行fft蝶形计算的方法及相应的装置 Download PDF

Info

Publication number
CN102541813B
CN102541813B CN201110460520.7A CN201110460520A CN102541813B CN 102541813 B CN102541813 B CN 102541813B CN 201110460520 A CN201110460520 A CN 201110460520A CN 102541813 B CN102541813 B CN 102541813B
Authority
CN
China
Prior art keywords
butterfly
data
group
twiddle factor
buffer device
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
Application number
CN201110460520.7A
Other languages
English (en)
Other versions
CN102541813A (zh
Inventor
王东琳
汪涛
谢少林
蒿杰
尹磊祖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201110460520.7A priority Critical patent/CN102541813B/zh
Publication of CN102541813A publication Critical patent/CN102541813A/zh
Application granted granted Critical
Publication of CN102541813B publication Critical patent/CN102541813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

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

Description

一种多粒度并行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中S0计算级中的第1个数据必定与第0个数据构成一蝶形,并且第0个数据为蝶形输入的A,第1个数据为蝶形输入的B,而W的值为1。而S1计算级中的第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 WithPipeline Architecture)。该类专利都着重讨论如何将长序列的FFT数据分解成多个短序列的FFT,利用多个处理器并行计算各个短序列的FFT,最后对多个短序列的FFT进行交织计算,得到最终的长序列FFT结果。但是对短序列的FFT运算,存在多级蝶形计算,每级蝶形计算都需要相关的存储器读写操作,占用很大的延时。因此,该类并行蝶形计算方法速度仍受到很大的制约。
发明内容
为了解决上述问题,本发明提出一种使用多个缓冲器装置对输入数据进行多粒度并行FFT蝶形计算的方法及相应的装置。
根据本发明的一方面,提出一种使用多个缓冲器装置对输入数据进行多粒度并行FFT蝶形计算的方法,其中第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据,第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子,第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据,其特征在于,
N点输入数据分成个计算节,每个计算节中包含个蝶形组,蝶形组是并行蝶形计算的基本单位,其中,表示向上取整,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为2L
所述蝶形组中的FFT蝶形计算方法包括以下步骤:
步骤1,设定计数器的初始值i=L-Rq;
步骤2,通过MUX选通器从所述第一或第二缓冲器装置中读入蝶形计算所需要的2L个数据,将2L个数据分为2L-1组,并从所述第三缓冲器装置中顺序读取2L-1个并行蝶形计算所需要的旋转因子;
步骤3,对所述2L-1组数据进行一级并行蝶形计算;
步骤4,将蝶形计算结果写入所述第二缓冲器装置中,对数据进行重排;
步骤5,修改当前计数器i的值为i=i-1;
步骤6,判断i的值是否为0,如果i=0,表示当前蝶形组计算完成,转向步骤7,否则返回到步骤2;
步骤7,将所述第二缓冲器装置中的数据写入所述第四缓冲器装置中,完成一个蝶形组计算。
根据本发明的另一方面,提出了一种对输入数据进行多粒度并行FFT蝶形组计算的装置,其特征在于,该装置包括:多个缓冲器装置、一计数器、多个数据选通模块、多个蝶形计算模块、一写回控制模块,其中,
第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据;
第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子;
第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据;
所述计数器用于标识蝶形组完成蝶形计算所需要的级数,所述计数器为递减计数器,其初始值为L-Rq,当一级蝶形计算完成后该计数器的值i减1,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为2L,Rq表示当前蝶形组从第Rq级开始计算。
所述多个数据选通模块用于根据所述计数器的数值选择从所述第一或第二缓冲器装置中读入蝶形计算所需要的2L个数据,每一个数据选通模块输入2个数据;
所述多个蝶形计算模块中的每一个从与其相应的数据选通模块中读取数据,根据所述第三缓冲器装置中缓存的旋转因子对读取的数据进行蝶形计算,并将计算结果写入所述第二缓冲器装置中;
所述写回控制模块根据计数器的值决定是否需要将所述第二缓冲器装置中的数据写入到所述第四缓冲器装置中。
本发明的方法每次从输入缓冲器和旋转因子缓冲器中获取并行FFT蝶形计算所需的数据和旋转因子。输入缓冲器和旋转因子缓冲器中数据和旋转因子已根据特定的并行粒度和数据格式准备好,不需要额外的位反序操作,读取后数据和旋转因子可直接进行FFT蝶形计算。从输入缓冲器和旋转因子缓冲器中读取蝶形计算所需的数据和旋转因子后,蝶形组302内部多级蝶形计算在运算部件内部并行实现,多级蝶形计算完成后把蝶形计算结果写回输出缓冲器,中间不会访问缓冲器。在整个并行FFT蝶形计算中,每级蝶形计算并非原址操作,蝶形计算完成后需要对结果进行数据重排,以满足下一级的蝶形计算能正确执行,数据重排通过数据重排缓冲器实现。
本发明的装置,每次从输入缓冲器和旋转因子缓冲器中读取一个蝶形组计算所需的数据和旋转因子,之后用统一的蝶形表达式并行地进行多级蝶形计算并把计算结果写回到输出缓冲器中,最大限度地减少了访问缓冲器的次数,大大提高了蝶形计算的速度,并减少了功耗,本发明能高效、并行地执行多粒度、多数据格式的蝶形计算,还可以根据具体实现指明蝶形计算的并行粒度和数据格式,对平衡组和非平衡组的FFT蝶形计算均适用。
附图说明
图1是数据长度为8时按时间抽取的基2-FFT算法流程图。
图2是一个基本蝶形结构示意图。
图3是本发明中蝶形、蝶形组、计算级、计算节的示意图。
图4是本发明多粒度并行FFT蝶形组计算方法流程图。
图5是本发明中8点蝶形组算法示意图。
图6是8点FFT蝶形组内部硬件结构图。
图7是8点数据重排缓冲器数据处理示意图。
图8是1个基本蝶形计算模块内部硬件结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
为了实现并行FFT读写和计算,首先定义:
并行粒度2L(L为正整数):并行粒度是指从缓冲器中并行读取并且可独立进行蝶形计算的数据个数,其中L为并行粒度因子。
蝶形组开始计算级Rq:表征当前蝶形组开始的计算级,当N点FFT为平衡组时,即N=Lk,其中,k为正整数,每个蝶形组均有L级蝶形,Rq始终为0;当为非平衡组时,即N≠Lk,最后计算节中蝶形组不需要L级蝶形,根据N点不同设置Rq为1~(L-1),即从第Rq级蝶形开始计算,也即表示当前FFT蝶形组计算所需要的蝶形计算级数为L-Rq。
FFT的一个基本蝶形计算结果表示为A±B*W,其中A、B分别表示FFT蝶形计算所需的第一、二个数据,W表示旋转因子。
如图3所示,为本发明中蝶形计算、蝶形组、计算级、计算节的示意图,整个N点FFT运算由多个计算节301组成。计算节的数目受蝶形组并行粒度2L影响,对于N点FFT计算,若蝶形组并行粒度为2L,那么计算节的数目为其中,表示向上取整。每一计算节301内部包含个蝶形组302,一个蝶形组由多个计算级304构成,蝶形组302是并行FFT蝶形计算的最小并行单位。在平衡组FFT中,每一计算节中的蝶形组结构相同,运算流程也相同,也就是说,将N点输入数据以蝶形组为基本单位进行次的重复处理,直到获得最终所需的处理结果。在非平衡组FFT中,最后计算节中蝶形组与之前计算节蝶形组结构不同,但其基本运算流程仍是相同的。首先蝶形计算装置从输入缓冲器中和旋转因子缓冲器(数据从多粒度并行存储器305读出放入输入缓冲器和旋转因子缓冲器)读取一个蝶形组302计算所需的数据和旋转因子,之后进行相关的蝶形计算并把计算结果写回到输出缓冲器(数据最终从输出缓冲器中取出写回到多粒度并行存储器305,缓冲器是存储器和运算单元数据交互的一个中间媒介)。
图4为本发明提供的多粒度并行FFT蝶形组计算方法流程图,如图4所示,本发明所提出的多粒度并行FFT蝶形组计算方法包括以下步骤:
步骤401,设定计数器的初始值i=L-Rq,其中,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数:2L,其中,Rq表示当前蝶形组从第Rq级蝶形开始,在平衡组FFT中Rq始终为0,在非平衡组FFT中Rq根据N的不同设置为1~(L-1)。将i初始化为L-Rq,表示当前FFT蝶形组计算所需要的蝶形计算级数。
步骤402,通过多路复用(MUX)选通器读入蝶形计算所需要的2L个数据,将2L个数据分为2L-1组,并从旋转因子缓冲器中顺序读取2L-1个并行蝶形计算所需要的旋转因子;
该数据可能来自输入缓冲器,也可能来自数据重排缓冲器。MUX的控制信号来自计数器i的值,当i=L-Rq时读入数据输入缓冲器中的数据,否则读入数据重排缓冲器中的数据;
所述旋转因子缓冲器中存储的旋转因子满足以下条件:如果输入数据为2L个,那么所述旋转因子缓冲器共存储有(L-Rq)*2L-1个旋转因子,这(L-Rq)*2L-1个旋转因子被分为L-Rq组,每一组有2L-1个旋转因子,其中,第L-Rq组中的2L-1个旋转因子各不相同;第L-Rq-1组中2L-1个旋转因子每2个相同,即有2L-2个不同的旋转因子;第L-Rq-2组中2L-1个旋转因子每4个相同,即有2L-3个不同的旋转因子,依次类推。
步骤403,对所述2L-1组数据进行一级并行蝶形计算。
步骤404,将蝶形计算结果写入数据重排缓冲器中,对数据进行重排,以进行下一级蝶形计算。
步骤405,修改当前计数器i的值为i=i-1,表征后面还需要蝶形计算的级数。
步骤406,判断i的值是否为0,如果i=0,表示当前蝶形组计算完成,转向步骤407,否则返回到步骤402进行计算。
步骤407,将数据重排缓冲器中的数据写入数据输出缓冲器中,完成一个蝶形组计算。
以8点输入数据为例,图5为本发明中8点蝶形组算法示意图,如图5所示,本发明8点蝶形组计算包括以下步骤:
步骤51,从输入缓冲器501和旋转因子缓冲器中分别读取8点蝶形计算所需的数据和旋转因子(旋转因子缓冲器在图5中没有标示出);
步骤52,将读取到的8点蝶形计算所需的数据和旋转因子分成4组,构成4个基本蝶形502,完成第一级蝶形504计算;
步骤53,将经第一级蝶形504计算后得到的结果写入到数据重排缓冲器503中,以对第一级蝶形计算结果重新排序;
步骤54,将重排后的数据从数据重排缓冲器503中取出,进行第二级蝶形505计算;
步骤55,将经第二级蝶形505计算后得到的结果写入数据重排缓冲器503中进行重新排序;
步骤56,将重排后的数据从数据重排缓冲器503中取出,进行第三级蝶形506计算;
步骤57,将经第三级蝶形506计算后得到的结果写入数据重排缓冲器503中进行重新排序,数据重排缓冲器503将最终重排后的数据写入到输出缓冲器507。
图6为当FFT蝶形计算工作在L=3时的8点FFT蝶形组内部硬件结构图,其中8点输入数据被分为4组并行进行处理,如图6所示,本发明所提出的多粒度并行FFT蝶形组计算装置包括:一数据输入缓冲器601、一旋转因子缓冲器603、一数据重排缓冲器604、一计数器605、4个数据选通模块602、4个蝶形计算模块606、一写回控制模块607、一数据输出缓冲器610,每一个数据选通模块602和一个对应的蝶形计算模块606组合起来对一组输入数据进行处理。
其中:
数据输入缓冲器601用于存放蝶形组开始计算时所需要的数据;
旋转因子缓冲器603用于存放蝶形组每级蝶形计算所需要的旋转因子;
计数器605用于标识蝶形计算的级数,该计数器为递减计数器,其初始值为L-Rq,当一级蝶形计算完成后该计数器的值减1;
数据选通模块602用于根据计数器605的数值选择读入数据输入缓冲器601中的数据或是数据重排缓冲器604中的数据,也就是说,数据选通模块602的选通信号来自计数器605。当计数器605的值为L-Rq时,数据选通模块602选择数据输入缓冲器601中的8点数据进入蝶形计算模块606,否则选择数据重排缓冲器604中的8点数据,每一个数据选通模块602输入2个数据。
每一蝶形计算模块606用于对于输入数据进行蝶形计算;蝶形计算模块进一步包括:数据分解模块608和蝶形计算单元609,其中:
数据分解模块608用于对参与蝶形计算的数据进行实部和虚部的分解;
蝶形计算单元609用于基于分解完成后的数据进行多级蝶形计算,蝶形计算所需的旋转因子来自旋转因子缓冲器603,每一级蝶形计算完成后均把计算结果写入数据重排缓冲器604中。
数据重排缓冲器604用于存放当前级蝶形计算的结果,并对当前级的蝶形计算结果进行重排,以满足下一级蝶形计算的顺序读入要求。
写回控制模块607用于控制是否需要将数据重排缓冲器604中的数据写入到数据输出缓冲器610中,其控制信号来自计数器605,当计数器605的值为0时表示当前的蝶形组各级并行计算已完成,需要把数据重排缓冲器604中的数据写入到数据输出缓冲器610中,以输出该蝶形组的蝶形计算结果。
如图7所示,为本发明提供的8点数据重排缓冲器数据处理示意图,其中,Y(i)表示当前级的蝶形计算结果,x(i)为对Y(i)的重新排序,同时也是下一级蝶形计算的输入数据。
对于2L点长的数据重排缓冲,满足以下重排规律:
x ( i ) = Y ( 2 i ) x ( 2 L - 1 + i ) = Y ( 2 i + 1 ) , 0 ≤ i ≤ 2 L - 1 .
如图8所示,为该发明提供的一个基本蝶形计算模块(如图6中的蝶形计算模块606)内部硬件结构图。
设A=a+j*b,B=c+j*d,W=e+j*f;那么一个基本的蝶形运算结果可以表示为:
复数分离模块(801、802、803)对参与蝶形运算的数据和旋转因子分别进行复数分离,得到各自的实部和虚部。分离后的数据A的实部a分别进入加法器813和816,虚部b分别进入加法器814和815;分离后的数据B和旋转因子W的实部和虚部分别进入相应的4个乘法器804、805、806、807得到ce、df、cf和de四个乘法结果。加法器809对ce和df经取负模块(808)后的-df进行相加,得到B*W的实部;加法器810对cf和de进行求和操作,得到B*W的虚部。B*W的实部和虚部各自有两条数据流向,一条路径直接进入后续的加法器814和816,另一条路径分别经取负模块811和812作用后进入加法器813和815。加法器814和加法器816分别计算A+B*W的实部和虚部,最终经复数结合模块817得到A+B*W蝶形计算结果。另外一个蝶形计算结果A-B*W通过加法器813、815和复数结合模块818的相关计算得到。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种使用多个缓冲器装置对输入数据进行多粒度并行FFT蝶形计算的方法,其中第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据,第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子,第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据,其特征在于,
N点输入数据分成个计算节,每个计算节中包含个蝶形组,蝶形组是并行蝶形计算的基本单位,其中,表示向上取整,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为2L
所述蝶形组中的FFT蝶形计算方法包括以下步骤:
步骤1,设定计数器的初始值i=L-Rq,表示当前FFT蝶形组计算所需要的蝶形计算级数,其中,Rq表示蝶形组开始计算级;
步骤2,通过多路复用MUX选通器从所述第一或第二缓冲器装置中读入蝶形计算所需要的2L个数据,将2L个数据分为2L-1组,并从所述第三缓冲器装置中顺序读取2L-1个并行蝶形计算所需要的旋转因子,该步骤中,当i=L-Rq时多路复用MUX选通器读入所述第一缓冲器装置中的数据,否则读入所述第二缓冲器装置中的数据;
步骤3,对所述2L-1组数据进行一级并行蝶形计算;
步骤4,将蝶形计算结果写入所述第二缓冲器装置中,对数据进行重排;
步骤5,修改当前计数器i的值为i=i-1;
步骤6,判断i的值是否为0,如果i=0,表示当前蝶形组计算完成,转向步骤7,否则返回到步骤2;
步骤7,将所述第二缓冲器装置中的数据写入所述第四缓冲器装置中,完成一个蝶形组计算。
2.根据权利要求1所述的方法,其特征在于,所述第三缓冲器装置中存储的旋转因子满足以下条件:如果输入数据为2L个,那么所述第三缓冲器装置共存储有(L-Rq)*2L-1个旋转因子,这(L-Rq)*2L-1个旋转因子被分为L-Rq组,每一组有2L-1个旋转因子,其中,第L-Rq组中的2L-1个旋转因子各不相同;第L-Rq-1组中2L-1个旋转因子每2个相同,即有2L-2个不同的旋转因子;第L-Rq-2组中2L-1个旋转因子每4个相同,即有2L-3个不同的旋转因子,依次类推。
3.根据权利要求1所述的方法,其特征在于,所述步骤4中,所述第二缓冲器装置对数据进行重排以满足下一级蝶形计算的顺序读入要求,对于2L点的输入数据Y(i),所述第二缓冲器装置的输出x(i)为:
x ( i ) = Y ( 2 i ) x ( 2 L - 1 + i ) = Y ( 2 i + 1 ) , 0 ≤ i ≤ 2 L - 1 .
4.一种对输入数据进行多粒度并行FFT蝶形组计算的装置,其特征在于,该装置包括:多个缓冲器装置、一计数器、多个数据选通模块、多个蝶形计算模块、一写回控制模块,其中,
第一和第二缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的数据;
第三缓冲器装置用于缓存并行FFT蝶形组每级蝶形计算所需要的旋转因子;
第四缓冲器装置用于缓存经过并行FFT蝶形组计算完成后的结果数据;
所述计数器用于标识蝶形组完成蝶形计算所需要的级数,所述计数器为递减计数器,其初始值为L-Rq,表示当前FFT蝶形组计算所需要的蝶形计算级数,其中,Rq表示蝶形组开始计算级,当一级蝶形计算完成后该计数器的值i减1,L为并行粒度因子,其决定了并行读取且可独立进行蝶形计算的数据个数为2L
所述多个数据选通模块用于根据所述计数器的数值选择从所述第一或第二缓冲器装置中读入蝶形计算所需要的2L个数据,每一个数据选通模块输入2个数据;
所述多个蝶形计算模块中的每一个从与其相应的数据选通模块中读取数据,根据所述第三缓冲器装置中缓存的旋转因子对读取的数据进行蝶形计算,并将计算结果写入所述第二缓冲器装置中;
所述写回控制模块根据计数器的值决定是否需要将所述第二缓冲器装置中的数据写入到所述第四缓冲器装置中;
其中,当计数器的值i=L-Rq时,所述数据选通模块读入所述第一缓冲器装置中的数据,否则读入所述第二缓冲器装置中的数据。
5.根据权利要求4所述的装置,其特征在于,所述蝶形计算模块进一步包括:数据分解模块和蝶形计算单元,其中,
所述数据分解模块用于对参与蝶形计算的数据进行实部和虚部的分解;
所述蝶形计算单元用于根据所述第三缓冲器装置中缓存的旋转因子对分解完成后的数据进行多级蝶形计算,每一级蝶形计算完成后均把计算结果写入所述第二缓冲器装置中;
所述第二缓冲器装置对当前级的蝶形计算结果进行重排,以满足下一级蝶形计算的顺序读入要求。
6.根据权利要求5所述的装置,其特征在于,对于2L点的输入数据Y(i),所述第二缓冲器装置的输出x(i)为:
x ( i ) = Y ( 2 i ) x ( 2 L - 1 + i ) = Y ( 2 i + 1 ) , 0 ≤ i ≤ 2 L - 1 .
7.根据权利要求4所述的装置,其特征在于,所述第三缓冲器装置中存储的旋转因子满足以下条件:如果输入数据为2L个,那么所述第三缓冲器装置共存储有(L-Rq)*2L-1个旋转因子,这(L-Rq)*2L-1个旋转因子被分为L-Rq组,每一组有2L-1个旋转因子,其中,第L-Rq组中的2L-1个旋转因子各不相同;第L-Rq-1组中2L-1个旋转因子每2个相同,即有2L-2个不同的旋转因子;第L-Rq-2组中2L-1个旋转因子每4个相同,即有2L-3个不同的旋转因子,依次类推。
8.根据权利要求4所述的装置,其特征在于,当所述计数器的值为0时,所述写回控制模块决定将所述第二缓冲器装置中的数据写入到所述第四缓冲器装置中。
CN201110460520.7A 2011-12-31 2011-12-31 一种多粒度并行fft蝶形计算的方法及相应的装置 Active CN102541813B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110460520.7A CN102541813B (zh) 2011-12-31 2011-12-31 一种多粒度并行fft蝶形计算的方法及相应的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110460520.7A CN102541813B (zh) 2011-12-31 2011-12-31 一种多粒度并行fft蝶形计算的方法及相应的装置

Publications (2)

Publication Number Publication Date
CN102541813A CN102541813A (zh) 2012-07-04
CN102541813B true CN102541813B (zh) 2014-11-05

Family

ID=46348739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110460520.7A Active CN102541813B (zh) 2011-12-31 2011-12-31 一种多粒度并行fft蝶形计算的方法及相应的装置

Country Status (1)

Country Link
CN (1) CN102541813B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013097217A1 (zh) * 2011-12-31 2013-07-04 中国科学院自动化研究所 一种多粒度并行fft蝶形计算的方法及相应的装置
CN103634241B (zh) * 2012-08-28 2017-06-20 北京信威通信技术股份有限公司 一种支持多模式的并行fft信号处理器及方法
CN103699515B (zh) * 2013-12-27 2017-01-18 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN109753629B (zh) * 2017-11-07 2023-05-12 上海思朗科技有限公司 多粒度并行fft计算装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473556A (en) * 1992-04-30 1995-12-05 Sharp Microelectronics Technology, Inc. Digit reverse for mixed radix FFT
CN101231632A (zh) * 2007-11-20 2008-07-30 西安电子科技大学 应用fpga进行浮点fft处理的方法
CN101290613A (zh) * 2007-04-16 2008-10-22 卓胜微电子(上海)有限公司 Fft处理器的数据存储系统和方法
CN101847986A (zh) * 2009-03-27 2010-09-29 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473556A (en) * 1992-04-30 1995-12-05 Sharp Microelectronics Technology, Inc. Digit reverse for mixed radix FFT
CN101290613A (zh) * 2007-04-16 2008-10-22 卓胜微电子(上海)有限公司 Fft处理器的数据存储系统和方法
CN101231632A (zh) * 2007-11-20 2008-07-30 西安电子科技大学 应用fpga进行浮点fft处理的方法
CN101847986A (zh) * 2009-03-27 2010-09-29 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法

Also Published As

Publication number Publication date
CN102541813A (zh) 2012-07-04

Similar Documents

Publication Publication Date Title
CN106940815B (zh) 一种可编程卷积神经网络协处理器ip核
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN103984560B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN101290613B (zh) Fft处理器的数据存储系统和方法
CN106156851B (zh) 面向深度学习业务的加速装置及方法
CN103955447B (zh) 基于dsp芯片的fft加速器
CN100538886C (zh) 多维数组在动态随机存取存储器上的快速读写方法和装置
CN103970718A (zh) 一种快速傅里叶变换实现装置及方法
CN102945224A (zh) 基于fpga的高速可变点fft处理器及其处理方法
CN101083643A (zh) 一种低存储器开销的混合基fft处理器及其方法
CN102541813B (zh) 一种多粒度并行fft蝶形计算的方法及相应的装置
CN102298570A (zh) 一种点数可变的混合基 fft/ifft实现装置及其方法
CN106415526B (zh) Fft处理器及运算方法
US9262378B2 (en) Methods and devices for multi-granularity parallel FFT butterfly computation
CN103226543A (zh) 一种流水线结构的fft处理器
CN102495721A (zh) 一种支持fft加速的simd向量处理器
CN103984677A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN103412851A (zh) 一种高精度低功耗的fft处理器
CN104679670A (zh) 一种面向fft和fir的共享数据缓存结构及管理方法
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
CN101320344A (zh) 一种多核或众核处理器功能验证设备及方法
CN103034621B (zh) 基2×k并行fft架构的地址映射方法及系统
CN102411557B (zh) 多粒度并行fft计算装置
CN103699355B (zh) 一种变阶流水串行乘累加器
CN111275180B (zh) 一种降低深度神经网络数据迁移及功耗的卷积运算结构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171207

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Patentee after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Patentee before: Institute of Automation, Chinese Academy of Sciences

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.