CN103544111B - 一种基于实时性处理的混合基fft方法 - Google Patents
一种基于实时性处理的混合基fft方法 Download PDFInfo
- Publication number
- CN103544111B CN103544111B CN201310465130.8A CN201310465130A CN103544111B CN 103544111 B CN103544111 B CN 103544111B CN 201310465130 A CN201310465130 A CN 201310465130A CN 103544111 B CN103544111 B CN 103544111B
- Authority
- CN
- China
- Prior art keywords
- storer
- individual
- read
- computing
- operand
- 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
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于实时性处理的混合基FFT方法,适用于FFT点数满足级数为s=s1+s2的情况。第一步根据实时性的要求,将输入数据分配到r2个存储器中,每个存储器深度为第二步,采用流水方法读取多个存储器,对r2个N′点进行DFT运算;在读取过程中,第n+1个存储器读取时序延后第n个存储器;第三步,采用并行方法对多个存储器读取,对N′个r2点进行DFT运算。本发明基于原位存储、输入数据顺序、单蝶形单元,且保证实时性的条件下,消除额外运算,针对多存储器采用流水和并行的访问方式,达到了实时性的设计要求。
Description
技术领域
本发明属于数字信号处理技术领域,涉及一种基于实时性处理的混合基FFT方法。
背景技术
随着数字信号处理技术和大规模集成电路的发展,FFT(快速傅里叶变换)算法的重要性不言而喻,广泛应用于各种科学工程领域,如雷达、声纳、通信等,同时对小型化和实时性等的要求越来越高。
计算FFT时,常用的算法是基-2FFT和基-4FFT,点数限制在2的幂次方或4的幂次方,这样限制了其点数的可选择范围。对于某些应用,比如SAR(合成孔径雷达)信号处理中,尤其是在聚束模式下,由于处理时间和面积的限制,不能将每个处理的点数都扩展至满足基-2或基-4FFT算法,尤其对于大点数的FFT,否则会延长计算时间以及消耗更多的存储空间。
在各种各样的FFT处理器中,一般采用两种结构:流水结构和基于存储的结构。当对大点数进行处理时,流水结构比基于存储结构会占用更多的资源,导致面积和功耗增加。因此近些年来,针对大点数FFT的实现,基于存储结构得到越来越广泛的需求。而为了占用最少的存储资源,通常采用原位存储算法,该方法是将FFT蝶形单元的输出存储到与输入数据读取的地址一致的存储空间内。不过,原位存储结构处理时间长,实时性不高。为满足实时性的要求,通常会将输入数据分配到多个存储器中,这样可以同时对进入蝶形单元的数据进行读取/存储。
目前关于多存储器分配数据的方法常用的有以下三种:(1)采用多个取模操作对数据进行分配,该方法针对固定基FFT;(2)采用一个取模操作对数据进行分配,该方法可用于混合基中;(3)采用异或门实现多存储的分配,该方法主要应用于基-2和基-4FFT中。这三种方法中都存在额外的运算,即取模或异或操作,都会消耗额外的资源,因此解决这一问题是必要的。
发明内容
本发明的目的是为了克服已有技术的缺陷,在基于原位存储、输入数据顺序、单蝶形单元(在本发明中由于是基-r1/r2FFT的形式,虽然有两个蝶形处理单元,即基-r1和基-r2,但是可以将两个合并称为单碟形单元,是与多蝶形相对,多蝶形是指多个基-r1和基-r2单元),且保证实时性的条件下,提出一种混合基FFT方法,不需要限定FFT点数必须满足2或4的幂指数要求,无需取模/异或操作运算,达到实时处理的目的。
本发明是通过下述技术方案实现的:
该方法适用于FFT点数满足级数为s=s1+s2的情况;其中,r1,r2分别为两个不同的基,s1,s2为两个基分别对应的幂指数;设定r1<r2;
步骤一、根据实时性的要求,将输入数据分配到多个存储器中;
选定存储器的个数为m=r2,则每个存储器的存储深度为将数据序列的序号n分解为n=r2n1+n2,令n2表示存储器的编号,n1表示存储器的深度,然后对n个数据序列x(n)进行分配;
步骤二、采用流水方法读取多个存储器,对r2个N′点进行DFT运算:
设r2个存储器依次用M0,M1,...来表示;按存储器编号依次从各存储器中按照原位计算的地址规律读出r′个操作数;其中,r′∈(r1,r2);当前级做基-r2蝶形运算时,r′=r2,做基-r1蝶形运算时,r′=r1;具体操作如下:
(1)首先按照时钟周期,在每个时钟周期从M0读取一个操作数,共读取r′个;在从M0读取操作数的同时,在M0延迟一个时钟的情况下从M1开始读操作数,在M1延迟一个时钟的情况下从M2开始读操作数,以此类推,在延迟一个时钟的情况下从开始读操作数;
(2)每当从同一个存储器读取的操作数凑齐r′个后,这r′个操作数后经第一缓存单元并行进入蝶形单元进行运算,得出r′个并行输出数据,再经第二缓存单元串行写入对应存储器的相应地址,从而完成每个存储器的第一级的第一个蝶形运算;
(3)重复步骤(1)~(2)(N′/r′)-1次,每个存储器的N′点数据完成第一级剩下的(N′/r′)-1次蝶形运算;在此过程中,M0的第二次蝶形处理的r′个操作数是在延迟一个时钟情况下获得的;
(4)重复步骤(1)~(3)s-2次,则得到每个存储器的N′点FFT运算;
步骤三、采用并行方法对多个存储器读取,对N′个r2点进行DFT运算:
每个时钟周期从r2个存储器的同一个地址读取一个操作数,共r2个,并行进入蝶形单元中进行基-r2的蝶形运算,共N′次;蝶形单元的并行输出数据按照原位存储方法并行存储到相应的存储器的相应地址中。
有益效果:
本发明是一种基于实时处理的混合基FFT设计,对比已有技术,在实现中去除取模或异或操作,并采取流水与并行对存储器进行读取的方法达到实时性要求。
附图说明
图1为r2个N′点DFT流水实现结构;
图2为步骤二以r1=3,r2=4为例的流水示意图;(a)为4个存储器的基-4的N′点蝶形运算流水示意图;(b)为4个存储器的基-3的N′点蝶形运算流水示意图;
图3为步骤三的并行实现示意图。
具体实施方式
本发明是基于一种混合基的FFT处理算法。对于那些列长不满足2或4的幂指数,却可以满足(r1,r2为两个不同的基,s1,s2为两个基分别对应的幂指数),可以采用混合基算法,即基-r1/r2FFT,从而尽可能采用短的序列进行运算,减少运算时间并降低存储占用空间,而且还可以适应更大的范围。
下面结合附图对本发明方法的实施方式做详细说明。
一种基于实时处理的混合基FFT方法,其具体步骤包括:
设FFT点数满足级数为s=s1+s2,在本发明中设r1<r2(反之亦可)。由于采用单碟形处理,从实时性角度考虑,当蝶形单元处于不间断运算时,实时性最高,所以存储器的个数为m=max(r1,r2)即m=r2。如果选取r1个存储器时,在采用本发明的方法在做基-r2运算时,蝶形单元运算会有间断,实时性不是最高。
步骤一、对输入数据进行存储器的分配:
由于存储器的个数设定为r2,则每个存储器的存储深度为数据序列x(n),(n=0,1,...,N-1)的N点DFT(离散傅里叶变换)为其中,n为变换前时域序列的序号,k为变换后频域序列的序号,k=0,1,…,N-1,为将数据分配到r2个存储器中且不含额外运算,先将n和k按式(1)分解为:
其中n1,k1=0,1,...,N′-1,n2,k2=0,1,...,r2-1。
按照式(1)中n的分解,令n2表示存储器的编号,n1表示存储器的深度,然后对n个输入序列x(n)进行分配。
为方便说明,设r2个存储器依次用M0,M1,...来表示。
步骤二、对r2个N′点DFT运算采用多个存储器流水的方法:
按存储器编号依次从各存储器中按照原位计算的地址规律读出r′个操作数;其中,r′∈(r1,r2);当前级做基-r2蝶形运算时,r′=r2,做基-r1蝶形运算时,r′=r1;具体操作如下:
(1)首先从M0读操作数进行蝶形运算。在第一个时钟下先读出第一个操作数,在下一个时钟下读出第二个操作数,以此类推,在第r′个时钟下则读出第r′个操作数。由于从同一个存储器中操作数是顺序读出的,进入蝶形单元前需先进行缓存。该r′个操作数并行进入蝶形单元进行基-r′的蝶形运算,得到的r′个并行输出数据经过第二缓存单元串行输出,按照原位存储方法存储到相应的地址中。这是M0的第一级的第一个蝶形运算。
由于对于任意存储器每次计算完成后蝶形单元有r′-1个空闲时间,为了利用该空闲时间,仅需一个蝶形单元对r2个N′点数据进行FFT,只需要控制这r2个存储器读取操作数的起始时间即可。
(2)M1仅仅需要在M0延迟一个时钟下开始读操作数,M2在M1延迟一个时钟下开始读操作数,以此类推,在延迟一个时钟下开始读操作数。也就是说,从M0读取第二个操作数的同时从M1读取第一个操作数,同M0一样,需要将从M1读取的操作数进行缓存,直到凑齐来自M1的r′个操作数后并行进入蝶形处理单元中。当从M0读取第三个操作数的同时从M1读取第二个操作数且从M2读取第一个操作数;以此类推。
同M0,中每个存储器读出的r′个操作数经第一缓存单元并行进入蝶形单元进行运算,得出r′个并行输出数据,再经第二缓存单元串行写入对应存储器的相应地址。
这时,每个存储器仅进行了第一级的第一个蝶形运算。每个存储器的N′点数据还需完成第一级剩下的(N′/r′)-1次蝶形运算。
(3)重复步骤(1)~(2)(N′/r′)-1次,每个存储器的N′点数据完成第一级剩下的(N′/r′)-1次蝶形运算。为保证蝶形单元的不间断处理,要求M0的第二次蝶形处理的r′个操作数是在读出第一个操作数后的r′个时钟下获得。
(4)重复步骤(1)~(3)s-2次,则得到每个存储器的N′点FFT运算。
步骤二实现了多个存储器的流水访问。
r2个N′点FFT流水结构如图1。说明:
(1)图左边是r2个N′深度的存储器,数据分配方式按步骤一;
(2)存储器控制单元就是按顺序依次对r2个存储器按照地址规律读取操作数,目的是有效地利用存储器读取操作数缓存时的r′-1个空闲时钟周期。当读取第二个操作数,同时对M0再次读取。循环至每个存储器的N′点FFT完成;
(3)缓存单元1用来将读取的串行数据并行进入基r′碟形单元;
(4)蝶形单元将输入的r′个操作数进行处理,得r′个并行输出数据,按照原位存储方法并行存储到相应的存储器的相应地址中;蝶形单元每个时钟周期均处理一组r′个操作数。
(5)由于进入蝶形单元的r′操作数是同一存储器中读取的,并采用原位存储,需要将该r′个输出数据输入缓存单元2,目的是将并行数据转换为串行数据写入读取数据时地址中。
图2以N=9216,r1=3,r2=4,s1=2,s2=5,为例对步骤二进行了说明:
由于r2=4,所以存储器分为4个,分别为M0,M1,M2,M3。根据步骤一,将数据分配到这四个存储器中,每个存储器中有2304个数据。然后进行步骤二的操作。2304点数据可以做4级基-4碟形运算,2级基-3蝶形运算。如果当前级做基-4碟形运算时,这四个存储器的流水示意图如图2(a),如果当前级做基-3蝶形运算时,四个存储器的流水示意图如图2(b)。图中存储器M后面对应的带格长条并不表示存储器中的存储内容,而是在时钟下,根据地址规律从存储器中读取的进入基-r’蝶形运算的r’个操作数按照从0~r’-1标号进行的排列。从图2(a)和图2(b)均可以看出,读取过程均是按照M0~M3逐一读取,且在M3读取第二个操作数时,M0读取第一个操作数。
步骤三、对N′个r2点DFT运算采用并行的方法:
由于步骤二中完成了N′点s1+s2-1级FFT,该步骤中需完成最后一级的r2点DFT运算。根据步骤一的数据分配可知,该级采用基-r2的蝶形单元进行运算,对应的r2个操作数分配在不同的存储器中,这样可以并行读取该r2个操作数,对应的存储器深度为0,1,...,N′-1。
该步骤的示意图如图3所示,说明:
(1)左边是r2个深度为N′的存储器,此时每个存储器中的数据是经过N′点DFT处理的。
(2)从每个存储器中的同一个地址读取一个操作数,则,共r2个,并行进入基r2蝶形单元中,共N′次。蝶形单元每个时钟周期均处理一组r2个操作数。
(3)蝶形单元的并行输出数据按照原位存储方法并行存储到相应的存储器的相应地址中。
当步骤三完成,则整个N点FFT运算完成。
自此,就完成了一种基于实时处理的混合基FFT。
综上所述,本发明基于原位存储、输入数据顺序、单蝶形单元,且保证实时性的条件下,消除额外运算,针对多存储器采用流水和并行的访问方式,达到了实时性的设计要求。
虽然结合了附图描述了本发明的实施方式,但是对于本领域技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些也应视为属于本发明的保护范围。
Claims (1)
1.一种基于实时性处理的混合基FFT方法,其特征在于,该方法适用于FFT点数满足级数为s=s1+s2的情况;其中,r1,r2分别为两个不同的基,s1,s2为两个基分别对应的幂指数;设定r1<r2;
该方法包括如下步骤:
步骤一、对输入的数据序列x(n)进行存储器的分配:
选定存储器的个数为m=r2,则每个存储器的存储深度为将数据序列的序号n分解为n=r2n1+n2,令n2表示存储器的编号,n1表示存储器的深度,然后对n个数据序列x(n)进行分配;
步骤二、采用流水方法读取多个存储器,对r2个N′点进行DFT运算:
设r2个存储器依次用M0,M1,...来表示;按存储器编号依次从各存储器中按照原位计算的地址规律读出r′个操作数;其中,r′∈(r1,r2);当前级做基-r2蝶形运算时,r′=r2,做基-r1蝶形运算时,r′=r1;具体操作如下:
(1)首先按照时钟周期,在每个时钟周期从M0读取一个操作数,共读取r′个;在从M0读取操作数的同时,在M0延迟一个时钟的情况下从M1开始读操作数,在M1延迟一个时钟的情况下从M2开始读操作数,以此类推,在延迟一个时钟的情况下从开始读操作数;
(2)每当从同一个存储器读取的操作数凑齐r′个后,这r′个操作数后经第一缓存单元并行进入蝶形单元进行运算,得出r′个并行输出数据,再经第二缓存单元串行写入对应存储器的相应地址,从而完成每个存储器的第一级的第一个蝶形运算;
(3)重复步骤(1)~(2)(N′/r′)-1次,每个存储器的N′点数据完成第一级剩下的(N′/r′)-1次蝶形运算;在此过程中,M0的第二次蝶形处理的r′个操作数是在延迟一个时钟情况下获得的;
(4)重复步骤(1)~(3)s-2次,则得到每个存储器的N′点FFT运算;
步骤三、采用并行方法对多个存储器读取,对N′个r2点进行DFT运算:
每个时钟周期从r2个存储器的同一个地址读取一个操作数,共r2个,并行进入蝶形单元中进行基-r2的蝶形运算,共N′次;蝶形单元的并行输出数据按照原位存储方法并行存储到相应的存储器的相应地址中;
至此,整个N点FFT运算完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310465130.8A CN103544111B (zh) | 2013-10-08 | 2013-10-08 | 一种基于实时性处理的混合基fft方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310465130.8A CN103544111B (zh) | 2013-10-08 | 2013-10-08 | 一种基于实时性处理的混合基fft方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544111A CN103544111A (zh) | 2014-01-29 |
CN103544111B true CN103544111B (zh) | 2016-06-01 |
Family
ID=49967583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310465130.8A Active CN103544111B (zh) | 2013-10-08 | 2013-10-08 | 一种基于实时性处理的混合基fft方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544111B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022721B (zh) * | 2015-07-15 | 2017-10-31 | 北京理工大学 | 一种快速、自动化的定点fft字长配置方法 |
CN106201999B (zh) * | 2016-07-26 | 2018-11-27 | 中国科学院自动化研究所 | 混合基dft/idft并行读取及计算方法和装置 |
CN112051446A (zh) * | 2020-08-18 | 2020-12-08 | 许继集团有限公司 | 一种电力***宽频测量的混合基fft实现方法及装置 |
CN112149046A (zh) * | 2020-10-16 | 2020-12-29 | 北京理工大学 | 一种基于并行时分复用技术的fft处理器及处理方法 |
CN112822139B (zh) * | 2021-02-04 | 2023-01-31 | 展讯半导体(成都)有限公司 | 数据输入、数据转换方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504890A (zh) * | 2002-12-03 | 2004-06-16 | 中国科学院计算技术研究所 | 数据全并行的fft处理器地址映射方法和*** |
CN101788974A (zh) * | 2010-03-12 | 2010-07-28 | 华为技术有限公司 | 可变点fft/ifft运算方法、装置及*** |
CN101847986A (zh) * | 2009-03-27 | 2010-09-29 | 中兴通讯股份有限公司 | 一种实现fft/ifft变换的电路及方法 |
CN102591796A (zh) * | 2011-12-31 | 2012-07-18 | 中国科学院自动化研究所 | 并行位反序装置和方法 |
CN102855222A (zh) * | 2011-06-27 | 2013-01-02 | 中国科学院微电子研究所 | 并行分支蝶形单元的fft的地址映射方法及装置 |
-
2013
- 2013-10-08 CN CN201310465130.8A patent/CN103544111B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504890A (zh) * | 2002-12-03 | 2004-06-16 | 中国科学院计算技术研究所 | 数据全并行的fft处理器地址映射方法和*** |
CN101847986A (zh) * | 2009-03-27 | 2010-09-29 | 中兴通讯股份有限公司 | 一种实现fft/ifft变换的电路及方法 |
CN101788974A (zh) * | 2010-03-12 | 2010-07-28 | 华为技术有限公司 | 可变点fft/ifft运算方法、装置及*** |
CN102855222A (zh) * | 2011-06-27 | 2013-01-02 | 中国科学院微电子研究所 | 并行分支蝶形单元的fft的地址映射方法及装置 |
CN102591796A (zh) * | 2011-12-31 | 2012-07-18 | 中国科学院自动化研究所 | 并行位反序装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103544111A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544111B (zh) | 一种基于实时性处理的混合基fft方法 | |
CN101290613B (zh) | Fft处理器的数据存储***和方法 | |
US9317481B2 (en) | Data access method and device for parallel FFT computation | |
CN106445471A (zh) | 处理器和用于在处理器上执行矩阵乘运算的方法 | |
CN108805272A (zh) | 一种基于fpga的通用卷积神经网络加速器 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN102298570A (zh) | 一种点数可变的混合基 fft/ifft实现装置及其方法 | |
CN103984677A (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN102419741A (zh) | 一种基于同址同序素因子算法的3780点离散傅里叶变换处理装置和方法 | |
CN101847986A (zh) | 一种实现fft/ifft变换的电路及方法 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
US9262378B2 (en) | Methods and devices for multi-granularity parallel FFT butterfly computation | |
CN104699624A (zh) | 面向fft并行计算的无冲突存储访问方法 | |
CN105183701A (zh) | 1536点fft处理方式及相关设备 | |
CN102129419B (zh) | 基于快速傅立叶变换的处理器 | |
CN101082906A (zh) | 一种低存储器开销的固定基fft处理器及其方法 | |
CN103034621B (zh) | 基2×k并行fft架构的地址映射方法及*** | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算*** | |
US9268744B2 (en) | Parallel bit reversal devices and methods | |
CN102929837B (zh) | 基于fpga的高速定点fft处理器及其处理方法 | |
CN103493039A (zh) | 数据处理方法和相关装置 | |
CN109635312B (zh) | 基于功率流法与统计能量法的结构中频振动计算方法 | |
CN103838704A (zh) | 一种高吞吐率的fft加速器 | |
CN102023963B (zh) | 高速多模式时频域变换方法 | |
US20080307026A1 (en) | Memory Address Generating Method and Twiddle Factor Generator Using the Same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |