一种fft/dft的倒序排列系统与方法及其运算系统的制作方法

文档序号:6443519阅读:241来源:国知局
专利名称:一种fft/dft的倒序排列系统与方法及其运算系统的制作方法
技术领域
本发明涉及通信领域技术,尤其涉及一种FFT/DFT的倒序排列系统与方法及其运算系统。
背景技术
快速傅立叶变换FFT (Fast Fourier Transformation)及离散傅里叶变换DFT广泛应用于信号处理、通信系统中,尤其是涉及正交频分复用技术(Orthogonal FrequencyDivision Multiplexing, OFDM)的 LTE (Long Term Evolution,长期演进),数字音频广播(Digital Audio Broadcast, DAB)等通信系统中。传统的FFT/DFT算法,无论是时间抽取(DIT)还是频率抽取(DIF)算法,都需要对输入或者输出数据进行一次专门的倒序操作,并且无论是DIT算法还是DIF算法,在矢量处理器中实现时都需要在矢量处理单元引入一定的交叉连线,否则无法充分发挥矢量处理器的效率,导致功耗的增加。如图1所示,为16点正序输入的FFT时间抽取算法的流程图,如果直接在4个DIT蝶形的矢量处理器中实现,最高的效率是每级FFT两次矢量蝶形运算完成,从图2可以看到最后两级FFT需要引入交叉连线才能充分利用所有4个蝶形,否则无法充分发挥矢量处理器的效率,尤其是最后一级每次只能计算一个蝶形,导致效率的大大降低,增加功耗。另一方面,交叉连线的引入虽然可以提高运算的效率,但是在计算单元较多时连线的数量庞大,譬如在矢量计算单元有16个DIT单元时,那么FFT运算在最后四级都需要引入交叉连线,而交叉连线总数高达4000(如果数据位宽为16),大量交叉连线导致充放电的电流增加,功耗增加。另外,除了上述交叉连线的问题,标准FFT/DFT算法在蝶形运算之外还需要一次专门的数据倒序操作。数据的倒序可以采用串行或并行的方式进行,串行方式可以用软件或硬件计算每个数据倒序后的地址,这种方式倒序需要消耗大量时间,在矢量蝶形单元较多时,倒序时间可能是数倍于蝶形运算消耗的时间,导致矢量处理器效率低下。

发明内容
本发明实施例提供了一种FFT/DFT的倒序排列系统与方法及其运算系统,能够快速并行完成FFT/DFT运算中的倒序排列。本发明实施例提供了一种FFT/DFT的倒序系统,包括:信号控制装置以及倒序装置; 所述信号控制装置,用于获取各点待倒序的数据对应的控制信号,并向所述倒序装置发送所述控制信号,以使所述倒序装置按照接收到的所述控制信号进行各点数据倒序;其中所述控制信号根据特定倒序规则设置,所述特定倒序规则为:根据待倒序的数据的点数N = Pn/" Pi…P2P1,判断出该点数为按基pm、…基Pp…基P2、基P1的顺序进行m级FFT//DFT倒序排列,对第m-1级的数据进行倒序时,将相邻的PniP111VPw作为一个数据组,将数据对应的地址比特表示为(V..C2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列;所述倒序装置,用于根据接收到的所述控制信号,将所述待倒序数据进行倒序。较佳的,所述信号控制装置中存储有控制信号查找表,通过所述控制信号查找表查找出对应所述待倒序数据的控制信号,并发出。进一步,所述系统还包括:控制信号查找表存储装置;所述信号控制装置从所述控制信号查找表存储装置中获取存储的控制信号查找表,通过所述控制信号查找表查找出对应所述待倒序数据的控制信号,并发出。进一步,所述倒序装置,还包括:控制信号处理单元、存储单元和交换单元;所述控制信号处理单元,用于接收所述信号控制装置发出的控制信号,并将该控制信号发送给对应的交换单元;所述存储单元,用于存储各点待倒序数据;所述交换单元,用于实现两个存储单元中存储的对应待倒序数据的交换。较佳的,所述交换单元组成多级网状结构,级数由矢量处理器存取数据的宽度决定;每级交换单元的数量相同;每级所述交换单元的数量由矢量处理器运算单元个数决定。较佳的,每级所述交换单元的数量由矢量处理器运算单元个数决定,具体为:所述矢量处理器运算单元个数为n,则每级交换单元的个数为n/2。较佳的,所述交换单元具体包括:两个多路选择器;每个多路选择器的控制信号输入端,用于输入与两点待倒序的数据对应的控制信号;每个多路选择器的两个数据输入端,分别连接两点待倒序数据对应的存储单元,根据输入的所述控制信号,将输入的两点数据进行交换或者直通。本发明还提供一种FFT/DFT运算系统,包括:矢量运算装置、矢量寄存器以及存储器,所述矢量运算装置将每级FFT/DFT运算后的数据发送到所述矢量寄存器缓存,所述矢量寄存器缓存的数据被倒序后发送给所述存储器,还包括:所述的倒序系统;所述倒序系统,用于将所述矢量运算装置每级FFT/DFT运算后缓存到所述矢量寄存器的数据,进行倒序后发送给所述存储器;所述存储器,用于存储每级通过所述倒序系统倒序后的数据,并将下一级需要运算的数据发送给所述 矢量寄存器缓存,等待下一级FFT/DFT运算。本发明还提供一种FFT/DFT的倒序方法,该方法包括:存储待倒序的数据;根据待倒序的数据的点数N = pm...Pi…P2P1,判断出该点数为按基pm、…基Pp...基P2、基P1的顺序进行m级FFT//DFT倒序排列,倒序规则为:对第m_i级的数据进行倒序时,将相邻的P111PniVPw作为一个数据组,将数据对应的地址比特表示为C/..C2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列。进一步,在首次获得待倒序的数据时,将运算级初始化为O ;每次接收下一级倒序数据后,将运算级加I。进一步,在进行每级倒序排列时,通过存储的控制信号查找表,查找出对应所述待倒序数据的控制信号,根据所述待倒序数据的对应控制信号完成本级倒序排列,经过m次蝶形运算和m-Ι次排序,完成FFT/DFT运算。本发明与现有技术相比具有以下优点:本发明实施例提供了一种FFT/DFT的倒序排列系统与方法及其运算系统,FFT/DFT倒序通过矢量流水线数据通路中的硬件排序网络中的交换单元进行,在每级蝶形运算之后通过控制流水线中的倒序装置对数据进行排序,以解决采用矢量处理器计算FFT/DFT时,FFT/DFT倒序排列时间过长,矢量处理器利用效率低下的问题,可以提高FFT/DFT的矢量计算效率。


图1为现有技术16点正序输入的FFT时间抽取流程图;图2为图1中在四个DIT蝶形矢量处理器中需要的交叉线布图;图3为本发明实施例倒序排列系统的结构示意图;图4为本发明实施例运算系统的结构示意图;图5为本发明实施例方法的流程示意图;图6为本发明实施例一倒序装置的结构示意图;图7为本发明实施例一中交换单元的结构示意图;图8为本发明实施例二 16点FFT的迭代倒序的规则
图9为本发明实施例三中24点DFT的迭代倒序的规则图;图10为本发明实施例四16点数据在级间进行排序的流程图;图11为本发明实施例五24点数据在级间进行排序的流程图;图12为本发明实施例六中具有16个DIT蝶形单元排序的流程图;图13为本发明实施例六中的第一级数据通路结构图;图14为本发明实施例六中的第二级数据通路结构图;图15为本发明实施例六中的第三级数据通路结构图;图16为本发明实施例六中的第四级数据通路结构图。
具体实施例方式下面结合各个附图对本发明实施例技术方案的主要实现原理具体实施方式
及其对应能够达到的有益效果进行详细地阐述。如图3所示,为本发明实施例倒序排列系统的结构示意图,包括:信号控制装置31以及倒序装置32 ;信号控制装置31,用于获取各点待倒序的数据对应的控制信号,并向倒序装置32发送所述控制信号,以使所述倒序装置32按照接收到的所述控制信号进行各点数据倒序;其中所述控制信号根据特定倒序规则设置,所述特定倒序规则为:根据待倒序数据的点数N = PfPi…P2P1,判断出该点数为按基Pm、…基P1、…基P2、基Pi的顺序进行m级FFT//DFT倒序排列,对第m-1级的数据进行倒序时,将相邻的PniPniVPw作为一个数据组,将数据对应的地址比特表示为(VC2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列;
倒序装置32,用于根据接收到的所述控制信号,将所述待倒序数据进行倒序。如图4所示,为本发明实施例运算系统的结构示意图,包括:矢量运算装置41、矢量寄存器42以及存储器43,矢量运算装置41将每级FFT/DFT运算后的数据发送到矢量寄存器42缓存,矢量寄存器42缓存的数据被倒序后发送给存储器43,还包括:倒序系统44 ;倒序系统44,用于将所述矢量运算装置41每级FFT/DFT运算后缓存到所述矢量寄存器42的数 据,进行倒序后发送给所述存储器43 ;存储器43,用于存储每级通过所述倒序系统44倒序后的数据,并将下一级需要运算的数据发送给所述矢量寄存器42缓存,等待下一级FFT/DFT运算。如图5所示,为本发明实施例方法的流程示意图,包括以下步骤:步骤1:存储待倒序的数据;步骤2:根据待倒序的数据的点数N = pm...Pi...P2P1,判断出该点数为按基Pm、…基Ρ 、...$Ρ2、基P1的顺序进行m级FFT//DFT倒序排列,倒序规则为:对第m_i级的数据进行倒序时,将相邻的PJVf pi+1作为一个数据组,将数据对应的地址比特表示为CfC2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列。如图6所示,为本发明实施例一倒序装置的结构示意图,每个黑点代表一个交换单元,其中包括5级交换单元,每级交换单元的数量为16个,通过32个脚码器存放待倒序的数据,各点数据可以直通输出,也可以交叉输出。具体通路是根据交换单元接收到的控制信号来控制。如图7所示为交换单元的结构示意图,包括:两个多路选择器;每个多路选择器的控制信号输入端ctl,用于输入与两点待倒序的数据对应的控制信号;每个多路选择器的两个数据输入端in0、inl,分别连接两点待倒序数据对应的存储单元,根据输入的所述控制信号,将输入的两点数据进行交换,并通过其输出端outO、outl输出交换后的两点数据。如图8所示,为本发明实施例二 16点FFT的迭代倒序的规则图,其过程为:16个数据用4个地址比特C4C3C2C1表示,从左至右,每次对数据进行一次排序,使得4个地址比特每次新增一个比特与最终倒序结果一致。第一次排序使C4与倒序后的地址排列一致,其过程通过将数据分为C4 = O的上半部和C4 = I的下半部,而后将上半部和下半部交替排列实现。第二次排序使C3与倒序后的地址排列一致,为了保证已经排列好的C4不受影响,将相邻的C4分别为O和I的数据两两视为一个数据组,以数据组为单位对数据进行排序,其过程与C4排序过程类似,同样将数据分为C3 = O的上半部和C3 = I下半部,而后将上半部和下半部的数据以数据组为单位交替排列实现。第三次排序使C2与倒序后的地址排列一致,为了保证已经排列好的C4C3不受影响,将相邻的C4C3分别为00、01、10、11的数据视为一个数据组,以数据组为单位对数据进行排序,同样将数据分为C2 = O的上半部和C2 = I下半部,而后将上半部和下半部的数据以数据组为单位交替排列实现,此时C1的排列顺序与倒序后C1的排列顺序自动一致,完成倒序。如图9所示,为本发明实施例三中24点DFT的迭代倒序的规则图,以按基2、2、3、2的顺序计算的24点DFT的迭代倒序过程:设其地址混合基表示为C4C3C2C1 (c4,c3, C1每逢2进l,c2每逢3进I),第一次排序使C4顺序与倒序后的地址排列一致,其排序过程与上面的16点FFT类似。第二次排序使C3顺序与倒序后的地址排列一致,其排序过程与上面的16点FFT类似。第三次排序使C2顺序与倒序后的地址排列一致,其排序过程为将相邻的C4C3分别为00、01、10、11的数据视为一个数据组,以数据组为单位对数据进行排序避免对排好序的C4C3的影响;而后将数据按C2取值分割为C2 = 0、1、2的3部分,并将3个部分的数据以数据组为单位交替排列。此时C1顺序与倒序后C1的排列顺序自动一致,完成倒序。如图10所示,为本发明实施例四16点数据在级间进行排序的流程图,及如图11所示,为本发明实施例五24点(基2、2、3、2)数据在级间进行排序的流程图,各点数据按正序输入,运算结果即为FFT/DFT要倒序的结果。同时从图10及图11中可以看到只要每一级的输入按要求排好序,那么只要蝶形运算的基相同,不同运算级的输入数据可以按完全相同的顺序送入矢量单元进行运算。以16点FFT为例,每一级都是前8个数据和后8个数据对应组成蝶形进行运算,且蝶形的输入数据间有相等最大的距离,非常有利于蝶形的矢量计算,且矢量计算单元中不需要为FFT/DFT引入额外的数据连线,有利于功耗的降低。为了彻底消除倒序占用的时间,可以将上述排序过程插入到如图4所示的将数据从寄存器存回到存储器的流水级中,如果矢量运算单元有16个DIT蝶形单元,且FFT/DFT点数中至少包含4个因子2,则需要在排序网络中实现如图12所示的4级数据排序方式(需要将基2运算排在最前面),相应的排序可以用如图6所示的5级排序网络实现。其中,图6中每个黑点表示一个交换单元,数据可以直通或者交叉,可以采用如图7所示的电路结构,由两个多路选择器构成(如前述)。该排序网络可以实现附图12所要求的4级排序,该排序网络实现前4级排序时的数据通路如图13-图16所示。另外,对于点数较大的FFT的蝶形运算,例如LTE所需的2048点FFT,前4级运算每次将相隔1024点的连续16个数据输入矢量计算单元进行蝶形运算,再将结果存回存储器时倒序系统分别用4种排序方式对数据进行排序,4级之后的FFT运算因为交替排序的数据组长度为16的倍数,只需要在保存数据时控制数据存回存储器的地址就可以实现所需要的排序。如果FFT/DFT中因子2的个数少于4个,例如LTE上行DFT中因子2的个数最少为2个,且只有因子2、3、5,需要将基2运算排在前面进行计算,以利用排序网络的排序功能对运算结果进行排序,之后I或2级的运算需要在数据存回存储器时添加长度为4、12或长度为8的掩码和移位控制,每次存回4、12或者8个蝶形运算结果,运算效率有所降低,但是仍然可以通过数据保存的地址控制避免数据排序消耗的独占时间。本发明提供了一种FFT/DFT的矢量计算架构及一套相应的硬件排序网络,通过在矢量运算结果存回存储器的流水级中的硬件排序网络实现FFT/DFT倒序,消除了数据倒序的独占时间,并且可以避免在矢量计算单元中引入大量交叉连线,可以降低硬件开销,降低FFT/DFT运算的功耗。该排序网络还可以实现一系列的排序操作用于支持矢量运算中需要的其它排序操作。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种FFT/DFT的倒序排列系统,其特征在于,包括:信号控制装置以及倒序装置; 所述信号控制装置,用于获取各点待倒序的数据对应的控制信号,并向所述倒序装置发送所述控制信号,以使所述倒序装置按照接收到的所述控制信号进行各点数据倒序;其中所述控制信号根据特定倒序规则设置,所述特定倒序规则为:根据待倒序的数据的点数N = PfPi…P2P1,判断出该点数为按基Pm、…基P1、…基P2、基Pi的顺序进行m级FFT//DFT倒序排列,对第m-1级的数据进行倒序时,将相邻的PniPniVPw作为一个数据组,将数据对应的地址比特表示为(VC2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列; 所述倒序装置,用于根据接收到的所述控制信号,将所述待倒序数据进行倒序。
2.如权利要求1所述的系统,其特征在于,所述信号控制装置中存储有控制信号查找表,通过所述控制信号查找表查找出对应所述待倒序数据的控制信号,并发出。
3.如权利要求1所述的系统,其特征在于,还包括控制信号查找表存储装置; 所述信号控制装置从所述控制信号查找表存储装置中获取存储的控制信号查找表,通过所述控制信号查找表查找出对应所述待倒序数据的控制信号,并发出。
4.如权利要求1所述的系统,其特征在于,所述倒序装置,还包括:控制信号处理单元、存储单元和交换单元; 所述控制信号处理单元,用于接收所述信号控制装置发出的控制信号,并将该控制信号发送给对应的交换单元; 所述存储单元,用于存储各点待倒序数据; 所述交换单元,用于实现两个存储单元中存储的对应待倒序数据的交换。
5.如权利要求4所述的系统,其特征在于,所述交换单元组成m级网状结构; 每级交换单元的数量相同; 每级所述交换单元的数量由矢量处理器运算单元个数决定。
6.如权利要求5所述的系统,其特征在于,每级所述交换单元的数量由矢量处理器运算单元个数决定。
7.如权利要求6所述的系统,其特征在于,所述交换单元具体包括:两个多路选择器; 每个多路选择器的控制信号输入端,用于输入与两点待倒序的数据对应的控制信号; 每个多路选择器的两个数据输入端,分别连接两点待倒序数据对应的存储单元,根据输入的所述控制信号,将输入的两点数据进行交换或者直通。
8.—种FFT/DFT运算系统,包括:矢量运算装置、矢量寄存器以及存储器,所述矢量运算装置将每级FFT/DFT运算后的数据发送到所述矢量寄存器缓存,所述矢量寄存器缓存的数据被倒序后发送给所述存储器,其特征在于,还包括:权利要求1 7所述的倒序系统; 所述倒序系统,用于将所述矢量运算装置每级FFT/DFT运算后缓存到所述矢量寄存器的数据,进行倒序后发送给所述存储器; 所述存储器,用于存储每级通过所述倒序系统倒序后的数据,并将下一级需要运算的数据发送给所述矢量寄存器缓存,等待下一级FFT/DFT运算。
9.一种FFT/DFT的倒序方法,其特征在于,该方法包括: 存储待倒序的数据; 根据待倒序的数据的点数N = PfPr^P2P1,判断出该点数为按基pm、…基P1、…基P2、基P1的顺序进行m级FFT//DFT倒序排列,倒序规则为:对第m_i级的数据进行倒序时,将相邻的pjvfpi+1作为一个数据组,将数据对应的地址比特表示为C/..C2C1,其第i位Ci按取值从上到下分为Pi个部分,以所述数据组为单位交替排列。
10.如权利要求9所述的方法,其特征在于,首次获得待倒序的数据时,将运算级初始化为O ; 每次接收下一级倒序数据后,将运算级加I。
11.如权利要求10所述的方法,其特征在于,在进行每级倒序排列时,通过存储的控制信号查找表,查找出对应所述待倒序数据的控制信号,根据所述待倒序数据的对应控制信号完成本级倒序排列, 经过m次蝶形运算和m-ι次排序,完成FFT/DFT运算。
全文摘要
本发明涉及通信领域技术,尤其涉及一种FFT/DFT的倒序排列系统与方法及其运算系统,所述倒序排列系统,包括信号控制装置,用于获取各点待倒序的数据对应的控制信号,并向所述倒序装置发送所述控制信号,以使所述待倒序装置按照接收到的所述控制信号进行各点数据倒序;所述倒序装置,用于根据接收到的所述控制信号,将所述待倒序数据进行倒序。本发明提供的系统,解决了用矢量处理器计算FFT/DFT时,FFT/DFT倒序排列时间过长,矢量处理器利用效率低下的问题,可以提高FFT/DFT的矢量计算效率。
文档编号G06F17/14GK103186503SQ201110444738
公开日2013年7月3日 申请日期2011年12月27日 优先权日2011年12月27日
发明者肖海勇 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1