CN104268124B - 一种fft实现装置和方法 - Google Patents
一种fft实现装置和方法 Download PDFInfo
- Publication number
- CN104268124B CN104268124B CN201410502055.2A CN201410502055A CN104268124B CN 104268124 B CN104268124 B CN 104268124B CN 201410502055 A CN201410502055 A CN 201410502055A CN 104268124 B CN104268124 B CN 104268124B
- Authority
- CN
- China
- Prior art keywords
- data
- branch road
- fft
- input
- output
- 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计算模块、数据旋转模块和支路间FFT计算模块,分别用于对以P条支路并行输入的N点序列x进行支路内FFT计算、数据旋转、支路间FFT计算,以得到通过P条支路并行输出的序列x的FFT运算结果。其中,支路内FFT计算模块包括P/2个基于流水线结构的计算单元和P个数据排序单元,计算单元与数据排序单元以一对二的映射关系相连,且由计算单元及两个数据排序单元组成的模块结构同时处理两条输入支路的数据流:采用DIF FFT处理一条正向输入的数据流、采用DIT FFT处理一条逆向输入的数据流。可见,本发明实现了对基于流水线结构的计算单元的复用,节约了硬件资源的开销。
Description
技术领域
本发明属于信号与信息处理技术领域,尤其涉及一种FFT(Fast FourierTransform,快速傅里叶变换)实现装置和方法。
背景技术
FFT作为DFT(Discrete Fourier Transform,离散傅里叶变换)的高效计算方法,在数字信号处理领域发挥着重要作用,用于实现OFDM(Orthogonal Frequency DivisionMultiplexing,正交频分复用)信号的调制和解调。
目前,FFT的硬件实现主要采用并行流水线结构来满足实际系统对吞吐量和处理能力的需求。典型的并行流水线结构包括MDC(Multipath Delay Commutator,多路延迟换向)前馈方案和MDF(Multipath Delay Feedback,多路延迟反馈)反馈方案。针对需进行FFT运算的N点序列x,MDC前馈结构和MDF反馈结构均需要采用P个基于流水线结构的计算单元对x的P条并行输入支路进行支路内FFT并行计算,硬件资源开销较大。
发明内容
有鉴于此,本发明的目的在于提供一种FFT实现装置和方法,以克服现有FFT并行流水线结构实现方案的硬件资源开销较大的问题,进而为高质量的通信服务提供支持。
为此,本发明公开如下技术方案:
一种快速傅里叶变换FFT实现装置,包括支路内FFT计算模块、数据旋转模块和支路间FFT计算模块,其中:
所述支路内FFT计算模块,用于对N点序列x的P条输入支路并行执行S点FFT变换,以得到ΤSX,其中,S=N/P,TS为S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应,N≥P且N,P为不小于1的自然数;
其中,所述支路内FFT计算模块包括个基于流水线结构的计算单元以及P个数据排序单元,所述计算单元与所述数据排序单元之间以一对二的映射关系相连,每个由所述计算单元与相应的两个数据排序单元组成的模块结构用于采用以下方式同时处理两条输入支路的数据流:
对于正向输入的数据流,先对其进行S点的按频率抽取DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的按时间抽取DIT FFT运算;
所述数据旋转模块,用于采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权操作,实现数据旋转,以得到其中和分别表示S维和P维的对角矩阵,D为由所述N个旋转因子构成的S×P维矩阵,表示两个矩阵的Hadamard积;
所述支路间FFT计算模块,用于对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x的FFT变换结果其中TP为P点DFT变换矩阵,Y表示S×P维的FFT输出矩阵,该矩阵的P列与所述的P条输出支路一一对应。
上述装置,优选的,所述旋转因子为e-j2πuv/N,其中,u∈{0,1,…,P-1},v∈{0,1,…,S-1}。
上述装置,优选的,所述基于流水线结构的计算单元包括级依次相连接的计算子单元,计算子单元包括复数加法器、复数乘法器、复移位寄存器组与数据选择器。
上述装置,优选的,在每条支路数据流对所述计算子单元中乘法器的利用率高于50%时,所述计算子单元采用TypeⅠ结构对其包括的复数加法器进行复用,所述TypeⅠ结构包括一个Radix-2蝶形运算单元、两组复移位寄存器以及六个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为所述Radix-2蝶形运算单元包括一个复数加法器和一个复数减法器;在TypeⅠ结构内部,每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端口以及计算子单元的两个数据输入端口各利用一个数据选择器连接至Radix-2蝶形运算单元,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路直接反馈回相应的复移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。
上述装置,优选的,在每条支路数据流对所述计算子单元中乘法器的利用率低于50%时,所述计算子单元采用TypeⅡ结构对其包括的复数加法器和复数乘法器进行复用,所述TypeⅡ结构包括一个Radix-2蝶形运算单元、一个复数乘法器、两组复移位寄存器以及八个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为在TypeⅡ结构内部,复数乘法器的输入端及输出端分别连接一个数据选择器,以实现两路数据流对乘法器的复用;每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端利用一个数据选择器连接至Radix-2蝶形运算单元的一个输入端口,而执行DIF运算的数据输入端口与复数乘法器的一条输出支路利用一个数据选择器连接至蝶形运算单元的另一个输入端口,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路参与复数乘法运算后反馈回相应的移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。。
上述装置,优选的,所述数据排序单元包括级依次相连接的排序子单元,其中,第i级由一个长度为Li的移位寄存器和两个数据选择器:前端数据选择器和后端数据选择器组成,Li=S/2i-2i-1,i∈{1,…,nR},每一级的数据选择器通过同一控制信号进行控制;在排序子单元内部,初始数据输入端口以及移位寄存器输出端口均连接到两个数据选择器上,前端数据选择器的输出数据直接送至移位寄存器单元进行缓存,而后端数据选择器的输出数据则直接作为整个排序子单元的输出。
上述装置,优选的,所述数据旋转模块包括P-1个复数乘法器,所述P-1个复数乘法器用于采用旋转因子e-j2πuv/N对所述支路内FFT计算模块的第2至P条输出支路进行并行的加权操作。
上述装置,优选的,所述支路间FFT计算模块包括级依次相连接的支路间FFT计算单元,每级支路间FFT计算单元包括个所述Radix-2蝶形运算单元以及必要数目的复数乘法器。
一种FFT实现方法,包括:
对N点序列x的P条输入支路并行执行如下的S点FFT变换,以得到ΤSX:对于正向输入的数据流,先对其进行S点的按频率抽取DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的按时间抽取DIT FFT运算;
其中,S=N/P,TS为S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应,N≥P且N,P为不小于1的自然数;
采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权操作,以得到其中和分别表示S维和P维的对角矩阵,D为由所述N个旋转因子构成的S×P维矩阵,表示两个矩阵的Hadamard积;
对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x所对应的FFT变换结果其中TP为P点DFT变换矩阵,Y表示S×P维的FFT输出矩阵,该矩阵的P列与所述的P条输出支路一一对应。
本发明的FFT实现装置包括支路内FFT计算模块、数据旋转模块和支路间FFT计算模块,分别用于对以P条支路并行输入的N点序列x进行支路内FFT计算、数据旋转、支路间FFT计算,以得到通过P条支路并行输出的序列x的FFT运算结果。其中,支路内FFT计算模块包括P/2个基于流水线结构的计算单元和P个数据排序单元,计算单元与数据排序单元以一对二的映射关系相连,且由计算单元及两个数据排序单元组成的模块结构采用以下方式同时处理两条输入支路的数据流:对于正向输入的数据流,先对其进行S点的DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的DIT FFT运算。
可见,本发明在计算支路内FFT计算的过程中实现了对基于流水线结构的计算单元的复用。对于x的P个并行输入支路,仅需采用P/2个基于流水线结构的计算单元对其进行并行计算,节约了硬件资源的开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例一公开的FFT实现装置的结构示意图;
图2是本发明实施例一公开的在N=64,P=4时FFT实现装置的组成结构图;
图3是本发明实施例一公开的FFT实现装置实现FFT变换的过程原理图;
图4是本发明实施例二公开的计算子单元采用的TypeⅠ结构的电路图;
图5是本发明实施例二公开的计算子单元采用的TypeⅡ结构的电路图;
图6是本发明实施例三公开的数据排序单元的流水线结构图;
图7是本发明实施例四公开的FFT实现方法流程图;
图8是本发明实施例四公开的P=8时调整后的信号流图;
图9是本发明实施例四公开的P=8时支路间FFT计算模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一公开一种FFT实现装置,参考图1,该装置包括支路内FFT计算模块100、数据旋转模块200和支路间FFT计算模块300。
支路内FFT计算模块100,用于对N点序列x的P条输入支路并行执行S点FFT变换,以得到ΤSX,其中,S=N/P,TS为S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应,N≥P且N,P为不小于1的自然数;其中,优选地,本实施例中,N,P的取值均为2的整数次幂。
其中,支路内FFT计算模块100包括P/2个基于流水线结构的计算单元101以及P个用于对串行数据流进行自然序至倒位序转换的数据排序单元102,计算单元101与数据排序单元102之间以一对二的映射关系相连,每个由所述计算单元101与相应的两个数据排序单元102组成的模块结构用于采用以下方式同时处理两条输入支路的数据流:
对于正向输入的数据流,先对其进行S点的DIF(Decimation In Frequency,按频率抽取)FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的DIT(Decimation In Time,按时间抽取)FFT运算。
具体而言,设输入的N点序列x:(x0,x1,…,xN-1),其所对应的FFT计算结果为y:(y0,y1,…,yN-1),定义输入数据矩阵X和输出数据矩阵Y为如下形式:
其中,P为对x进行FFT运算过程中并行输入(输出)支路的数目,S=N/P表示每条支路所包含的样点个数,矩阵X和Y的P个列矢量描述了输入和输出数据在各自的P条支路上的分布状况。
利用Cooley-Tukey算法(FFT算法的一种)对X进行一系列变换,可以得到形如式(3)的X的FFT运算结果Y:
其中,TS和TP分别表示S点和P点的DFT变换矩阵,和分别表示S阶和P阶的对角矩阵,其一般形式定义为:
说明书中所述的支路内FFT计算模块100旨在对X的各列x0,x1,…,xP-1并行执行S点FFT变换以得到ΤSX。以下结合实例说明支路内FFT计算模块的具体工作过程。
考虑FFT运算长度N=64,并行支路数目P=4的情况,参考图2示出的本发明装置的组成结构图,其中,FFT计算模块100包括2个流水线结构的计算单元和4个据排序单元,本实施例中,每个支路间FFT计算单元由log2(64/4)=4个计算子单元级联而成并采用Radix-2k算法来完成S=16点的FFT运算。在进行支路内的FFT计算前,x的P条输入支路首先被分成P/2组,本示例中,具体将4条输入支路分为2组:数据流x0和x1为一组,x2和x3为一组。计算子单元内部包括复数加法器、复数乘法器、复移位寄存器组以及数据选择器。
接下来,在进行支路内的FFT计算时,分别将数据流x0和x2输入SDF流水线1和SDF流水线2,并在相应的SDF流水线上对x0和x2执行S=16点的DIF FFT运算,与此同时,数据流x1和x3被送入数据排序单元2和数据排序单元4,并在相应的数据排序单元中对x1和x3进行样点间的次序调整。然后,在x0和x2的DIF FFT运算执行完毕,将x0和x2的DIF FFT运算结果分别送入数据排序单元1和数据排序单元3的同时,将按倒位序排列的数据流x1和x3分别逆向输入SDF流水线1、SDF流水线2并对其执行S点的DIT FFT运算,最终得到按自然序排列的TSx1和TSx3。而对于x0和x2,因先对其执行S点的DIF FFT运算,再对运算结果进行位序转换,由于DIF FFT的计算结果对于任意k∈N均以倒位序的方式排列,因此,对于x0和x2而言,也可以得到按照自然序排列的TSx0和TSx2。因此本发明中“FFT计算”和“数据排序”两种操作执行先后次序的改变不会影响最终的计算结果。
本发明通过上述方式实现了在各支路内FFT计算过程中对流水线结构的计算单元的复用,相应于现有技术中需采用P个基于流水线结构的计算单元对序列x的P条输入支路进行并行计算,本发明仅需P/2个计算单元即可提供相同的并行处理能力。
此处,需要说明的是:
1)尽管x0,x2与x1,x3采用了不同的抽取方案,但这只影响FFT计算和数据排序两种操作执行的先后次序,不会对最终的计算结果产生影响,且每一路数据流在第一阶段计算即支路内FFT计算过程中具有相同的处理时延,从而保证了TSx0至TSx3输出的同步性;
2)为了无冲突地复用SDF流水线的硬件资源,x0与x1以及x2与x3需要以N/P+1个时钟周期的相对时延先后送入相应的SDF流水线进行计算。但由于执行DIT FFT变换的数据流x1,x3在FFT运算之前会先进行S点的自然序-倒位序转换,故上述要求可以得到满足。
数据旋转模块200,用于采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权从而得到具体而言,数据旋转模块将支路内FFT计算得出的第u条输出支路TSxu的第v个计算结果用旋转因子e-j2πuv/N(其中u∈{0,1,…,P-1},v∈{0,1,…,S-1})进行加权,以此来实现的等效计算,。这是因为:
其中表示矩阵的Hadamard积,D为S×P的矩阵,其第u行第v列的元素即为上述旋转因子e-j2πuv/N。
对于数据旋转操作,本发明的数据旋转模块200利用P-1个复数乘法器对TSx1至TSxP-1并行地进行数据加权,此处考虑到TSx0中的元素所对应的加权系数e-j2πuv/N|u=0,v∈{0,1,…,S-1}≡1,故TSx0的旋转不需消耗复数乘法器,旋转操作之后,将这些并行数据流送入支路间FFT运算模块300来实现不同支路间的数据交互。
支路间FFT计算模块300,用于对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x所对应的FFT变换结果其中TP表示P点DFT变换矩阵。
具体地,支路间FFT计算模块300需要在每个时钟周期内同时处理来自不同支路的P个输入数据。基于此考虑,如图2所示,支路间FFT计算模块300包括R=log2P级依次相连接的支路间FFT计算单元,每一级由P/2个Radix-2蝶形运算单元以及必要数目的复数乘法器构成。其中,Radix-2蝶形单元由一个复数加法器和一个复数减法器构成,复数加法器和复数减法器均可接收并行输入的两个复数a+bj和c+dj,并分别计算、输出两者之和(a+c)+(b+d)j与两者之差(a-c)+(b-d)j。
当该模块处于工作状态时:
该模块的第1级支路间FFT计算单元在每个时钟周期接收数据旋转模块200的P个输出数据z0,0,z0,1,…,z0,P-1并对其进行计算,首先将z0,0,z0,1,…,z0,P-1按倒位序形式排列得到之后将第2i个数据与第2i+1个数据作为第1级的第i个Radix-2蝶形单元的输入,其中i∈{0,1,…,P/2-1};
该模块的第r(r=2,…,R)级支路间FFT计算单元在每个时钟周期接收第r-1级计算单元输出的P个输出数据zr-1,0,zr-1,1,…,zr-1,P-1并对其进行计算。当i=0,1,…,P/4-1时,第4i条支路的数据zr-1,4i与第4i+2条支路的数据zr-1,4i+2作为第r级的第i个Radix-2蝶形计算单元的输入;当i=P/4,P/4+1,…,P/2-1时,第4(i-P/4)+1条支路的数据zr-1,4(i-P/4)+1与第4(i-P/4)+3条支路的数据zr-1,4(i-P/2)+3作为第r级的第i个Radix-2蝶形计算单元的输入;
对第R级的P个输出数据zR,0,zR,1,…,zR,P-1按照下面的方式进行次序调整:当i=0,1,…,P/2-1时,将第2i条支路的数据zR,2i映射到第i条输出支路上;当i=P/2,P/2+1,…,P-1时,将第2(i-P/2)+1条支路的数据zR,2(i-P/2)+1映射到第i条输出支路上。
之后,将调整结果作为该支路间FFT计算模块300的最终输出,输出结果即为通过P条支路并行输出的序列x的FFT变换结果Y。
综上,参考图3,本发明装置对序列x实现P路并行FFT变换的过程包括:支路内FFT计算、数据旋转、支路间FFT计算。
综上,本发明的FFT实现装置包括支路内FFT计算模块、数据旋转模块和支路间FFT计算模块,分别用于对以P条支路并行输入的N点序列x进行支路内FFT计算、数据旋转、支路间FFT计算,以得到通过P条支路并行输出的序列x的FFT运算结果。其中,支路内FFT计算模块包括P/2个基于流水线结构的计算单元和P个数据排序单元,计算单元与数据排序单元以一对二的映射关系相连,且由计算单元及两个数据排序单元组成的模块结构采用以下方式同时处理两个输入支路的数据流:对于正向输入的数据流,先对其进行S点的DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的DIT FFT运算。
可见,本发明在计算支路内FFT计算的过程中实现了对基于流水线结构的计算单元的复用,对于序列x的P个并行输入支路,仅需采用P/2个基于流水线结构的计算单元对其进行并行计算,节约了硬件资源的开销。
实施例二
本实施例对实施例一公开的FFT实现装置中计算子单元的结构进行说明。
在传统的SDF流水线结构中,每一级计算子单元只能通过单一支路接收前一级的输出数据,同时将本级的计算结果以串行的形式传递给下一级计算子单元,此种数据交互方式直接导致流水线中复数加法器的利用率只能达到50%,且并行度的提升或FFT所采用的Radix-2k算法(属一类高效FFT算法)的改变不能使这一情况得到改善。相比之下,复数乘法器的使用效率则与FFT所采用的Radix-2k算法密切相关。
基于此,本实施例二公开计算子单元采用的两种结构TypeⅠ和TypeⅡ,以实现执行Radix-2k DIF FFT运算与执行Radix-2k DIT FFT运算的两路数据流对计算资源的复用,从而提升复数加法器、复数乘法器的利用率。
其中,TypeⅠ只考虑对计算子单元内复数加法器进行复用,该结构具体针对每路数据流对乘法器的利用率高于50%的情况,参考图4,所述TypeⅠ结构包括一个Radix-2蝶形运算单元、两组复移位寄存器以及六个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为所述Radix-2蝶形运算单元包括一个复数加法器和一个复数减法器;在TypeⅠ结构内部,每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端口以及计算子单元的两个数据输入端口各利用一个数据选择器连接至Radix-2蝶形运算单元,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路直接反馈回相应的复移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。
如果每条支路对乘法器的利用率不足50%,则采用TypeⅡ结构在复用加法器的基础上进一步对复数乘法器进行复用,参考图5,TypeⅡ结构包括一个Radix-2蝶形运算单元、一个复数乘法器、两组复移位寄存器以及八个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为在TypeⅡ结构内部,复数乘法器的输入端及输出端分别连接一个数据选择器,以实现两路数据流对乘法器的复用;每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端利用一个数据选择器连接至Radix-2蝶形运算单元的一个输入端口,而执行DIF运算的数据输入端口与复数乘法器的一条输出支路利用一个数据选择器连接至蝶形运算单元的另一个输入端口,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路参与复数乘法运算后反馈回相应的移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。
尽管SDF流水线中计算子单元采用的两种结构在硬件组成上有明显区别,但却可以利用同一方案来产生内部的控制时序。本实施例为了对控制方案进行详细说明,首先将计算子单元内的数据选择器分为GroupⅠ和GroupⅡ两组,参考图4和图5,其中划分到一组的逻辑器件共用同一控制信号。进一步假设计算子单元内用于缓存数据流的移位寄存器长度为Q,则对TypeⅠ和TypeⅡ结构均适用的时序控制方案如下:
1)在DIF FFT数据流的前Q个样点移入移位寄存器期间,将GroupⅠ内逻辑元件的控制信号置为高电平,同时将GroupⅡ所对应的控制信号置为低电平;
2)在上述Q个样点移出移位寄存器期间,将GroupⅠ内逻辑元件的控制信号置为低电平,同时将GroupⅡ所对应的控制信号置为高电平,并在下Q个样点输入时重复步骤(1)的操作。
可见,与传统SDF流水线结构中所采用的计算子单元相比,本发明所提出的两种改进结构可以将复数加法器的利用率从原有的50%提升至100%,此外复数乘法器的利用率也有所提升。这样在同样的处理能力下,采用本发明所设计的计算子单元来构建的流水线结构要比传统的反馈类型流水线结构少消耗一半的加法器资源,同时也能降低复数乘法器的数目,实现硬件资源利用率的显著提升。
实施例三
本实施例对实施例一公开的FFT实现装置中数据排序单元的结构进行优化设计。数据排序单元用于对串行数据流实现自然序-倒位序转换,现有的数据排序单元利用自然序-倒位序变换的互易性实现排序,排序过程如下:(1)首先产生自然序地址将输入数据存入RAM中;(2)输入数据存储完毕后,产生倒位序地址读取数据,同时将读地址作为输入数据的写地址,来存储新的输入数据;(3)上一步的数据读取操作完毕后,再产生自然序地址从RAM中读取新缓存的数据,同时将读地址作为RAM的写地址来继续存储输入数据;此后重复步骤(2)和步骤(3)。假设进行自然序-倒位序转换的序列长度为M=2q,则现有的排序方法需要消耗M个单位的存储资源。
为了降低存储资源消耗,同时降低排序的控制复杂度,本实施例三公开一种基于流水线结构数据排序单元,参考图6,同样假设进行自然序-倒位序转换的序列长度为M=2q,则本发明流水线结构的数据排序单元包括级依次相连接的排序子单元,且流水线中每一级排序子单元由一组移位寄存器和两个数据选择器组成,其中第i级所配置的移位寄存器长度Li为:
每一级排序子单元内的数据选择器通过同一控制信号进行控制。在排序子单元内部,初始数据输入端口以及移位寄存器输出端口均连接到两个数据选择器上,前端数据选择器的输出数据直接送至移位寄存器单元进行缓存,而后端数据选择器的输出数据则直接作为整个排序子单元的输出。在硬件实现过程中,可以借助一个q比特的计数器bq-1bq-2…b0来产生每一级的控制信号。在有效数据输入期间使计数器进行重复计数,那么第i级排序子单元所对应的控制信号ci可以表示为:
上述流水线结构的数据排序单元所消耗的存储资源可以表示为:
因此,本发明实施例一及实施例二的示例中,针对每路序列长度为S的数据流,数据排序单元对应包括级排序子单元,第i级由一个长度为Li=S/2i-2i-1,i=1,…,nR的移位寄存器和两个数据选择器组成。
接下来,对流水线结构的数据排序单元的工作过程进行说明。
当数据排序单元所在电路处于空闲状态时,将q比特计数器bq-1bq-2…b0清零;当有效数据开始输入时,计数器同步计数并产生控制信号分别作为流水线第1级至第nR级的控制信号。
在每一级排序子单元内部,当控制信号为1时,两个数据选择器在控制信号的作用下将输入数据送入移位寄存器,同时将移位寄存器移出的数据送至下一级;当控制信号为0时,两个数据选择器在控制信号的作用下将此时的输入数据直接送至下一级,同时移位寄存器的输出数据反馈到输入端口,再次送入移位寄存器进行缓存。
每一级排序单元都按照上述方式进行操作,最后第nR级处理单元输出初始数据的相对应的倒位序形式数据。
可见,与现有技术需消耗M个单位的存储资源实现对序列长度为M的序列进行位序转换相比,本发明公开的基于流水线结构的数据排序单元占用了更少的存储资源,同时还进一步降低了数据排序的处理时延。
实施例四
本实施例四公开一种FFT实现方法,参考图7,该方法包括如下步骤:
S101:对N点序列x的P条输入支路并行执行如下的S点FFT变换,以得到ΤSX:对于正向输入的数据流,先对其进行S点的按频率抽取DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的按时间抽取DIT FFT运算。
其中,S=N/P,TS表示S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应。
S102:采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权操作,以得到其中和分别表示S维和P维的对角矩阵,D为由所述N个旋转因子构成的S×P维矩阵,表示两个矩阵的Hadamard积。
S103:对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x所对应的FFT变换结果其中TP为P点DFT变换矩阵,Y表示S×P维的FFT输出矩阵,该矩阵的P列与所述的P条输出支路一一对应。
对于本发明实施例四公开的FFT实现方法而言,由于其与以上各实施例公开的FFT实现装置相对应,所以描述的比较简单,相关相似之处请参见以上各实施例中FFT实现装置部分的说明即可,此处不再详述。
接下来,公开本发明装置的一具体示例。
本示例中,需进行FFT变换的序列长度为N=2H,序列中数据按照式(1)中的格式通过P=2U条支路并行输入支路内FFT计算模块,实现FFT变换所采用的算法为Radix-2k算法。
其中,支路内FFT计算模块由P/2条流水线结构的计算单元及P个排序单元构成,每条流水线包含H-U个计算子单元,用于同时处理一条DIT FFT运算的数据流和一条DIF FFT运算的数据流。在计算子单元内部,如果每路数据流对乘法器的利用率小于50%,则利用图5所示的TypeⅡ结构对计算子单元内的复数加法器和复数乘法器同时进行复用;否则计算子单元采用图4所示的TypeⅠ结构仅对复数加法器进行复用。考虑到上述的P/2条流水线结构的计算单元同步地执行相同操作,故它们的内部控制时序可以通过同一控制单元来产生。
数据旋转模块包含P-1个复数乘法器,用于对第2至第P路数据流的支路内FFT计算结果进行数据加权,其中,第1路数据流所对应的计算结果保持不变。
对于支路间FFT计算模块,当U=1即P=2时,利用一个Radix-2蝶形运算单元即可完成支路间FFT的计算。如果U>1,则首先调整P点的Radix-2 DIF信号流图中的数据流向,使流图的每一级具有相同的几何形状,图8示出了P=8时的调整后的信号流图,之后,再将调整后的信号流图映射为相应的硬件结构,以此来实现P点FFT的并行计算。图9示出了P=8时的支路间FFT计算模块的结构,该结构与图8的信号流图相对应。
并行输入的P路数据流首先进行支路内FFT计算,在此过程中数据流被分为P/2组,分别与P/2条改进的SDF流水线相对应,支路内FFT计算结果通过数据旋转模块后被输入至支路间FFT计算模块,以完成P点FFT的并行计算,支路间FFT计算结束后,运算结果按照式(2)中定义的形式并行输出。
综上所述,本发明所提出的并行FFT计算方案能够兼备现有前馈类型和反馈类型流水线结构的优势。在提供同样处理能力的前提下,发明所提方案可以比MDC结构的前馈类型流水线消耗更少的存储资源,同时比MDF结构的反馈类型流水线消耗更少的复数加法器与复数乘法器。,从另一个角度而言,本发明所提出的方案与设计有效提升了硬件资源的使用效率,这为整个通信系统的优化设计提供了支持。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种快速傅里叶变换FFT实现装置,其特征在于,包括支路内FFT计算模块、数据旋转模块和支路间FFT计算模块,其中:
所述支路内FFT计算模块,用于对N点序列x的P条输入支路并行执行S点FFT变换,以得到ΤSX,其中,S=N/P,TS为S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应,N≥P且N、P为不小于1的自然数;
其中,所述支路内FFT计算模块包括个基于流水线结构的计算单元以及P个数据排序单元,所述计算单元与所述数据排序单元之间以一对二的映射关系相连,每个由所述计算单元与相应的两个数据排序单元组成的模块结构用于采用以下方式同时处理两条输入支路的数据流:
对于正向输入的数据流,先对其进行S点的按频率抽取DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的按时间抽取DIT FFT运算;
所述数据旋转模块,用于采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权操作,实现数据旋转,以得到其中和分别表示S维和P维的对角矩阵,D为由所述N个旋转因子构成的S×P维矩阵,⊙表示两个矩阵的Hadamard积;
所述支路间FFT计算模块,用于对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x的FFT变换结果其中TP为P点DFT变换矩阵,Y表示S×P维的FFT输出矩阵,该矩阵的P列与所述的P条输出支路一一对应。
2.根据权利要求1所述的装置,其特征在于,所述旋转因子为e-j2πuv/N,其中,u∈{0,1,…,P-1},v∈{0,1,…,S-1}。
3.根据权利要求1所述的装置,其特征在于,所述基于流水线结构的计算单元包括级依次相连接的计算子单元,计算子单元内部包括复数加法器、复数乘法器、复移位寄存器组以及数据选择器。
4.根据权利要求3所述的装置,其特征在于,每条支路数据流对所述计算子单元中乘法器的利用率高于50%时,所述计算子单元采用Type Ⅰ结构对其包括的复数加法器进行复用,所述Type Ⅰ结构包括一个Radix-2蝶形运算单元、两组复移位寄存器以及六个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为所述Radix-2蝶形运算单元包括一个复数加法器和一个复数减法器;在TypeⅠ结构内部,每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端口以及计算子单元的两个数据输入端口各利用一个数据选择器连接至Radix-2蝶形运算单元,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路直接反馈回相应的复移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。
5.根据权利要求3所述的装置,其特征在于,每条支路数据流对所述计算子单元中乘法器的利用率低于50%时,所述计算子单元采用Type Ⅱ结构对其包括的复数加法器和复数乘法器进行复用,所述Type Ⅱ结构包括一个Radix-2蝶形运算单元、一个复数乘法器、两组复移位寄存器以及八个数据选择器,其中第k(k∈{1,…,log2(N/P)})级计算子单元所对应的复移位寄存器长度为在Type Ⅱ结构内部,复数乘法器的输入端及输出端分别连接一个数据选择器,以实现两路数据流对乘法器的复用;每组移位寄存器的输入端口各与一个数据选择器相连,用于切换不同的数据流送入移位寄存器进行缓存;两组移位寄存器的输出端利用一个数据选择器连接至Radix-2蝶形运算单元的一个输入端口,而执行DIF运算的数据输入端口与复数乘法器的一条输出支路利用一个数据选择器连接至蝶形运算单元的另一个输入端口,以此实现两路数据流对蝶形运算单元的复用;蝶形运算单元的一条输出支路参与复数乘法运算后反馈回相应的移位寄存器,另一条输出支路则通过两个数据选择器连接到计算子单元的两个数据输出端口上。
6.根据权利要求1所述的装置,其特征在于,所述数据排序单元包括级依次相连接的排序子单元,其中,第i级由一个长度为Li的移位寄存器和两个数据选择器:前端数据选择器和后端数据选择器组成,Li=S/2i-2i-1,i∈{1,2,…,nR},每一级的数据选择器通过同一控制信号进行控制;在排序子单元内部,初始数据输入端口以及移位寄存器输出端口均连接到两个数据选择器上,前端数据选择器的输出数据直接送至移位寄存器单元进行缓存,而后端数据选择器的输出数据则直接作为整个排序子单元的输出。
7.根据权利要求2所述的装置,其特征在于,所述数据旋转模块包括P-1个复数乘法器,所述P-1个复数乘法器用于采用旋转因子e-j2πuv/N对所述支路内FFT计算模块的第2至P条输出支路进行并行的加权操作。
8.根据权利要求4或5所述的装置,其特征在于,所述支路间FFT计算模块包括级依次相连接的支路间FFT计算单元,每级支路间FFT计算单元包括所述Radix-2蝶形运算单元以及复数乘法器。
9.一种FFT实现方法,其特征在于,基于权利要求1-8任一项所述的FFT实现装置,所述FFT实现方法包括:
对N点序列x的P条输入支路并行执行如下的S点FFT变换,以得到ΤSX:对于正向输入的数据流,先对其进行S点的按频率抽取DIF FFT运算,再将运算结果转换为倒位序形式;对于逆向输入的数据流,先将其转换为倒位序形式,再对倒位序形式的数据流进行S点的按时间抽取DIT FFT运算;
其中,S=N/P,TS为S点DFT变换矩阵,X表示S×P维的输入数据矩阵,所包含的P列与序列x的P条输入支路一一对应,N≥P且N,P为不小于1的自然数;
采用预先设定的N个旋转因子对所述支路内FFT计算模块的各输出数据进行支路间并行的加权操作,以得到其中和分别表示S维和P维的对角矩阵,D为由所述N个旋转因子构成的S×P维矩阵,⊙表示两个矩阵的Hadamard积;
对的各行进行P点FFT变换,以得到通过P条支路并行输出的序列x所对应的FFT变换结果其中TP为P点DFT变换矩阵,Y表示S×P维的FFT输出矩阵,该矩阵的P列与所述的P条输出支路一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410502055.2A CN104268124B (zh) | 2014-09-26 | 2014-09-26 | 一种fft实现装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410502055.2A CN104268124B (zh) | 2014-09-26 | 2014-09-26 | 一种fft实现装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268124A CN104268124A (zh) | 2015-01-07 |
CN104268124B true CN104268124B (zh) | 2017-07-07 |
Family
ID=52159647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410502055.2A Active CN104268124B (zh) | 2014-09-26 | 2014-09-26 | 一种fft实现装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268124B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105430409B (zh) * | 2015-12-29 | 2017-10-31 | 福州瑞芯微电子股份有限公司 | 一种基于计数器的流水控制方法和装置 |
CN105608055B (zh) * | 2016-01-27 | 2018-07-31 | 南京阿尔法莱瑞通信技术有限公司 | 一种基于位串架构的蝶形运算单元、fft处理器及方法 |
CN110008436B (zh) * | 2019-03-07 | 2021-03-26 | 中国科学院计算技术研究所 | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 |
CN114978210B (zh) * | 2022-04-13 | 2023-06-13 | 中国人民解放军军事科学院国防科技创新研究院 | 一种数字信道化接收装置 |
-
2014
- 2014-09-26 CN CN201410502055.2A patent/CN104268124B/zh active Active
Non-Patent Citations (9)
Title |
---|
A 2K/8K Mode Small-Area FFT Processor for OFDM Demodulation of DVB-T Receivers;Chua-Chin Wang等;《IEEE Transactions on Consumer Electronics》;20050228;第51卷(第1期);第28-32页 * |
A Pipelined FFT Processor for Word-Sequential Data;GOUAN BI等;《IEEE Transactions on Acoustics Speech & Signal Processing》;19891231;第37卷(第12期);第1982-1985页 * |
A Radix 22 Based Parallel Pipeline FFT Processor for MB-OFDM UWB system;Nuo Li等;《2009 IEEE International SOC Conference(SOCC)》;20090930;第383-386页 * |
Design and implementation of a 1024-point Pipeline FFT Processor;Shousheng He等;《IEEE Custom Integrated Circuits Conference》;19980531;第14卷(第5期);第131-134页 * |
Designing Pipeline FFT Processor for OFDM(de) Modulation;Shousheng He等;《Ursi International Symposium on Signals》;19981031;第257-262页 * |
IMPLEMENTATION OF 128-POINT FAST FOURIER TRANSFORM PROCESSOR FOR UWB SYSTEMS;Sang-In Cho等;《International Wireless Communications & Mobile Computing Conference》;20080831;第210-213页 * |
Pipeline and Parallel-Pipeline FFT Processors;ERLING H.WOLD等;《IEEE Transactions on Computers》;19840531;第33卷(第5期);第414-426页 * |
快速傅立叶变换中的一种倒位序生成法;王芳等;《计算机应用与软件》;20110215;第28卷(第2期);第93-95页 * |
快速傅立叶变换算法概述;季虎等;《现代电子技术》;20010815(第8期);第11-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104268124A (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104268124B (zh) | 一种fft实现装置和方法 | |
JP3749022B2 (ja) | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム | |
CN105224505B (zh) | 基于矩阵转置操作的fft加速器装置 | |
EP0329023A2 (en) | Apparatus for performing digital signal processing including fast fourier transform radix-4 butterfly computations | |
CN100390782C (zh) | 一种实时快速傅立叶变换电路 | |
CN101149730B (zh) | 使用主要因素算法的最佳离散傅利叶转换方法及装置 | |
CN101630308A (zh) | 以内存为基础的任意点数快速傅立叶转换器的设计与寻址方法 | |
CN103699515B (zh) | 一种fft并行处理装置和方法 | |
CN105975251B (zh) | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 | |
US20040039765A1 (en) | Fourier transform apparatus | |
CN101617306B (zh) | 用于执行快速傅立叶变换操作的设备 | |
CN107341133A (zh) | 基于任意维数矩阵lu分解的可重构计算结构的调度方法 | |
CN106803750A (zh) | 一种多通道流水fir滤波器 | |
CN103186503B (zh) | 一种fft/dft倒序排列系统与方法及其运算系统 | |
CN105955896A (zh) | 一种可重构dbf算法硬件加速器及控制方法 | |
CN101763337A (zh) | N点fft/ifft/ifft/ifft方法和装置 | |
JP2001101160A (ja) | 高速フーリエ変換用データ記憶パターン | |
CN101833540B (zh) | 信号处理方法和装置 | |
CN102880594B (zh) | 基于多核dsp的并行矩阵全选主元高斯约旦求逆方法 | |
CN205486097U (zh) | 基于fpga的fft装置 | |
CN110110281A (zh) | 高斯约当消元装置 | |
CN102023963B (zh) | 高速多模式时频域变换方法 | |
CN102339274B (zh) | 一种快速傅里叶变换处理器 | |
CN103176950B (zh) | 实现fft/ifft变换的电路及方法 | |
CN113159302A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |