快速傅里叶变换处理方法和系统的制作方法

文档序号:6401263阅读:391来源:国知局
专利名称:快速傅里叶变换处理方法和系统的制作方法
技术领域
本发明涉及数字信号处理技术领域,特别是涉及一种FFT (Fast FourierTransformation,快速傅里叶变换)处理方法和系统。
背景技术
FFT是离散傅里叶变换的一种快速算法,能克服时间域与频率域之间相互转换的计算障碍,在数字信号处理等方面有广泛应用,是数字信号处理中一个非常重要的算法。FFT处理器作为FFT算法的硬件实现,也日益受到重视。目前,许多芯片厂商都推出了定点FFT的IP核产品。一种IP核的FFT处理器内部的硬件架构如图1所示,包括:随机存储器RAM、信号幅度均衡器SHIFT、FFT基本运算单元Rl和R2、判断模块、旋转因子乘法器C0RDIC、移位幅度调整器SHIFTGEN,以及信号幅度补偿器FINAL_SHIFT。当进行FFT处理时,将待处理数据FFT_IN读入RAM中,再通过FFT算法的读操作即FFT_CALC_RD读取RAM中待处理的FFT点到SHIFT,SHIFT根据SHIFTGEN确定的移动幅度对FFT点进行移位操作后,交给Rl和R2进行运算处理,然后,判断模块判断本次运算是否是最后一级FFT运算,若是,则将运算结果交给FINAL_SHIFT恢复信号幅度后,通过FFT算法的写操作即FFT_CALC_WR写到RAM,由RAM输出最终结果即FFT_0UT ;若不是最后一级FFT运算,则将运算结果交给CORDIC进行旋转运算,再将旋转运算后的结果通过FFT_CALC_WR操作写入RAM后,进行下一级的FFT运算。然而,受到算法原址运算的需求以及硬件存储器端口吞吐率的限制,大多数此类FFT的IP核都采取串行处理的方法,即在每个时钟周期处理一个点的运算。基于这种串行流水结构的设计,在处理大点数(如2048以上)FFT运算的情况下,由于迭代次数的增加,所需的总时钟周期就会大幅度增加,因此会对所需的系统时钟频率提出更高的要求。但是,更高的系统频率要求在集成电路的实现过程中会带来较大的时序收敛风险,同时也会使产品在工作过程中产生更高的动态功耗。

发明内容
本发明提供了一种FFT处理方法和系统,以解决现有串行FFT处理因总时钟周期大幅度增加,对系统时钟频率要求高而造成的集成电路的实现过程中时序收敛风险较大,使产品在工作过程中产生更高的动态功耗的问题。为了解决上述问题,本发明公开了一种快速傅里叶变换处理方法,包括:依照快速傅里叶变换规则,从存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组,其中,所述2n个快速傅里叶变换点中的每个点按照设定规则存储在不同的存储子单元中,η为大于或等于I的自然数;将所述待处理快速傅里叶变换点组交给快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理;将所述快速傅里叶变换并行处理后的处理结果并行写回所述2η个存储子单元的每个子单元中。为了解决上述问题, 本发明还公开了一种快速傅里叶变换处理系统,包括:快速傅里叶变换控制单元、包括2n个存储子单元的快速傅里叶变换存储单元、和快速傅里叶变换并行运算单元;所述快速傅里叶变换控制单元包括读取模块、处理模块和写回模块;其中,所述快速傅里叶变换控制单元的读取模块,用于依照快速傅里叶变换规则,从所述快速傅里叶变换存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组,其中,所述2n个快速傅里叶变换点中的每个点按照设定规则存储在不同的存储子单元中,n为大于或等于I的自然数;所述快速傅里叶变换控制单元的处理模块,用于将所述待处理快速傅里叶变换点组交给所述快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理;所述快速傅里叶变换控制单元的写回模块,用于将所述快速傅里叶变换并行处理的处理结果并行写回所述2n个存储子单元的每个子单元中。与现有技术相比,本发明具有以下优点:本发明将存储单元划分为2n个存储子单元,每组待处理的FFT点存储在不同的存储子单元中,从而实现了待处理FFT点的并行读取,进而,并行读取的FFT点由FFT并行运算单元进行FFT并行处理,并且,并行写回不同的存储子单元中。由于在FFT处理的硬件实现过程中,采取了本发明的上述并行运算的结构,实现了每个时钟周期处理多个FFT点的运算,无须增加总时钟周期,从而改善了对系统时钟频率的要求,进而避免了在集成电路的实现过程中较大的时序收敛风险,也使产品在工作过程中不会产生过高的动态功耗。其中,系统时序收敛指的是系统在指定的时钟频率下正常工作的能力,而时钟频率越高,这点的实现就越难。而通过降低系统时钟频率的要求,可以减低时序收敛的难度。同时,系统运行在较高的时钟频率会导致较高的动态功耗,通过降低系统时钟频率同样可以减低动态功耗。


图1是相关技术中的一种IP核的FFT处理器进行FFT处理的示意图;图2是根据本发明实施例一的一种FFT处理方法的步骤流程图;图3是根据本发明实施例二的一种FFT处理方法的步骤流程图;图4是根据本发明实施例三的一种FFT处理示意图;图5是图4所示实施例中的一种RAM的存储地址对应的二维地址存储表的示意图;图6是根据本发明实施例四的一种FFT处理系统的结构框图;图7是根据本发明实施例五的一种FFT处理系统的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。实施例一参照图2,示出了根据本发明实施例一的一种FFT处理方法的步骤流程图。 本实施例的FFT处理方法包括以下步骤:步骤S102:即依照FFT规则,从存储单元的2n个存储子单元中并行读取待处理的2n个FFT点,生成待处理FFT点组。
其中,2nfFFT点中的每个点按照设定规则存储在不同的存储子单元中,η为大于或等于I的自然数。设定规则可以由本领域技术人员根据实际情况适当设置,以FFT逐级迭代计算时每级每组待处理的FFT点可以存储在不同的2"个存储子单元中,能够被同时并行读取,以及处理后的FFT点能够被同时并行写入为原则。FFT具有一定的规则,逐级迭代计算,每级计算需分多组处理不同的FFT点。本发明中,对FFT运算的说明如下:一次完整的FFT运算,由若干级FFT运算的迭代组成;一级FFT运算是所有FFT点完成一次FFT迭代运算的过程,由若干组FFT运算组成;一组FFT运算是由参与FFT并行运算的一组FFT点组,在一次FFT迭代过程当中所进行的运算。本实施例中,从2η个存储子单元中并行读取的2η个FFT点,也即一级FFT —次运算所需的所有点,组成待处理FFT点组。2η个FFT点与并行运算单元的点数相对应。步骤S104:将待处理FFT点组交给FFT并行运算单元进行FFT并行处理。本实施例中 ,参与FFT处理的FFT运算单元也是并行的,形成FFT并行运算单元,对FFT进行并行处理,如进行并行移位、并行旋转、并行信号幅度恢复等,进而在FFT处理后将处理结果并行写回2η个存储子单元的每个子单元中。步骤S106:将FFT并行处理后的处理结果并行写回2η个存储子单元的每个子单元中。上次过程实现了一级FFT的一次运算,在一次运算后,可以返回步骤S102继续执行,按照上述流程依次处理本级FFT的其它FFT点,直至完成本级FFT的所有FFT点的处理。也即,一级FFT运算处理是所有FFT点完成一次FFT迭代运算的过程,由若干组FFT运算组成。在进行了步骤S102和步骤S104后,一组FFT运算处理完成,之后,还需要返回,循环执行步骤S102和步骤S104,依次流水地处理一级FFT运算的其它FFT点,直至处理完该级FFT运算的所有FFT点,完成该级FFT运算处理。FFT的每级处理均采用上述并行处理,最终实现一次完整的FFT的并行化处理。通过本实施例,将存储单元划分为2η个存储子单元,每组待处理的FFT点存储在不同的存储子单元中,从而实现了待处理FFT点的并行读取,进而,并行读取的FFT点由FFT并行运算单元进行FFT并行处理,并且,并行写回不同的存储子单元中。由于在FFT处理的硬件实现过程中,采取了本实施例的上述并行运算的结构,实现了每个时钟周期处理多个FFT点的运算,无须增加总时钟周期,从而改善了对系统时钟频率的要求,进而避免了在集成电路的实现过程中较大的时序收敛风险,也使产品在工作过程中不会产生过高的动态功耗。实施例二参照图3,示出了根据本发明实施例二的一种FFT处理方法的步骤流程图。本实施例的FFT处理方法包括以下步骤:步骤S202:将存储单元平均分割为2η个小的存储子单元。其中,η为大于或等于I的自然数,将存储单元平均分割为2的η次方个存储子单元,提供了 2η组读写的端口,从而使得存储单元能够被并行读写,保证了数据的吞吐率。步骤S204:对2η个存储子单元的地址进行组织管理,对应形成二维地址存储表。对2η个存储子单元的地址重新进行组织管理,使每组FFT处理均可并行地从2η个存储子单元中读取或写入2n个FFT点数据,也即,每组FFT处理的2n个FFT点中的每个点都按照设定规则存储在不同的存储子单元中。将该重新组织管理的地址对应到二维地址存储表中,保存到本地,该存储表中存储有2n个存储子单元中的每个存储子单元和每个存储子单元包括的FFT点存储地址的对应关系,无论读取或写入FFT点数据,均按照该表确定待读取或待写入的存储子单元及在该存储子单元中的具体位置。步骤S206:依照FFT规则,从存储单元的2n个存储子单元中并行读取待处理的2n个FFT点,生成待处理FFT点组。如上所述,2n fFFT点中的每个点按照设定规则存储在不同的存储子单元中,n为大于或等于I的自然数。本实施例中,对2n个存储子单元的地址进行了重新组织管理,并对应形成二维地址存储表,保存至本地,因此,在执行本步骤时,可以依照FFT规则,从本地保存的二维地址存储表中,确定待处理的2n个FFT点中每个FFT点所在的存储子单元,和每个FFT点在所在的存储子单元中的存 储地址;然后,根据确定的每个FFT点所在的存储子单元和每个FFT点在所在的存储子单元中的存储地址,并行地从2n个存储子单元中读取待处理的2n个FFT点,生成待处理FFT点组。FFT点在进行FFT时,需要多次分组FFT运算,每组都需要访问存储单元如RAM以读取相应的FFT点进行运算,需要读取的FFT点由FFT运算本身决定,也即,需要依据FFT规则读取相应的FFT点,本实施例中,依据FFT规则,也即依据FFT迭代运算本身的需求,根据二维地址存储表确定的存储子单元和地址,从不同的2n个存储子单元中读取2n个FFT点,生成待处理FFT点组。优选地,n可以取2,也即,将一个存储单元平均分割为4个存储子单元,此时,当存储单元总的地址位宽为偶数时,可以按照公式row_addr= (address [1:0] +address [3:2] +address [5:4] ++address [N:N-l]) %4 (因n=2,则2n=4)从二维地址存储表中确定待处理的FFT点所在的存储子单元;或者,当存储单元总的地址位宽为奇数时,可以按照公式row_addr= (address [1:0] +address [3:2] +address [5:4] ++address [N]) %4,从二维地址存储表中确定待处理的FFT点所在的存储子单元;然后,按照公式col_addr=address [N: 2]确定该待处理的FFT点在所在的存储子单元中的存储地址。其中,row_addr指示待处理的FFT点所在的存储子单元;col_addr指示该待处理的FFT点在所在的存储子单元中的存储地址;address[]中的数据用于指示相邻的两个比特位或者一个比特位,其中,N加I后即(N+1)表示存储单元总的地址位宽;通过每个address口与其包括的比特位以获得所述二维地址存储表中的一个地址中存储的二进制比特值;%表示取模运算。需要说明的是,从上述确定待处理的FFT点所在的存储子单元的公式可以看出,若存储单元总的地址位宽为奇数,则地址位宽为偶数时的公式中的最后一项address [N:N-1]变为address [N],这是因为公式从地址低位开始以两bit为单位组合,所以地址位宽为奇数时,最后会剩余单独的Ibit参加计算。步骤S208:将待处理FFT点组交给FFT并行运算单元进行FFT并行处理。FFT并行运算单元包括信号幅度均衡器并行运算单元、FFT基本运算并行单元、旋转因子乘法器并行运算单元、和信号幅度补偿器并行运算单元。其中,一个FFT基本运算并行单元如图1中所示,本身即包括两个并行的基本运算子单元R2。
与2n个存储子单元相对应,信号幅度均衡器并行运算单元采用2114个信号幅度均衡器并行运算,FFT基本运算并行单元采用2n_2个FFT基本运算单元并行运算,旋转因子乘法器并行运算单元采用211-1个旋转因子乘法器并行运算,信号幅度补偿器并行运算单元采用211-1个信号幅度补偿器并行运算,以使存储单元与上述FFT并行运算单元的吞吐量保持一致。但需要说明的是,当η等于I时,信号幅度均衡器并行运算单元采用I个信号幅度均衡器并行运算,FFT基本运算并行单元采用I个FFT基本运算单元并行运算(因本身包括两个并行运算的子单元),旋转因子乘法器并行运算单元采用I个旋转因子乘法器并行运算,信号幅度补偿器并行运算单元采用I个信号幅度补偿器并行运算,以实现快速高效的并行FFT处理。也即,当η等于I时,将待处理FFT点组交给I个信号幅度均衡器、I个FFT基本运算单元、I个旋转因子乘法器、和I个信号幅度补偿器进行FFT并行处理;当η大于I时,将待处理FFT点组交给2114个信号幅度均衡器、2n_2个FFT基本运算单元、2114个旋转因子乘法器、和2114个信号幅度补偿器进行FFT并行处理。在使用上述FFT并行运算单元对待处理FFT点组进行FFT并行处理时,若η大于1,即存储子单元多于2个时,则还需要设置相应的并串和串并转换装置;若η等于1,即存储子单元为2个时,则可以不需要设置相应的并串和串并转换装置。也就是说,当η大于I时,可以先从2η个存储子单元中并行读取待处理FFT点组,然后通过并串转换将并行读取的待处理FFT点组转换为符合2114个信号幅度均衡器吞吐量的FFT点数据后,交由211-1个信号幅度均衡器进行并行移位操作;再将进行了移位操作后的FFT点数据发送到2n_2个FFT基本运算单元进行并行FFT运算;之后,判断本组FFT运算是否为本级FFT的最后一组FFT运算;若是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给2"-1个信号幅度补偿器进行并行信号幅度恢复后,通过串并转换将进行了信号幅度恢复后的FFT点数据转换为符合2"个存储子单元吞吐量的FFT点数据并发送给2"个存储子单元并行写入;若不是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给2114个旋转因子乘法器进行并行旋转运算后,通过串并转换将进行旋转运算后的FFT点数据转换为符合2n个存储子单元吞吐量的FFT点数据并发送给2n个存储子单元并行写入。

而当η等于I时,可以先从2个存储子单元中并行读取待处理FFT点组,然后直接交由I个信号幅度均衡器进行并行移位操作;再将进行了移位操作后的FFT点数据发送到I个FFT基本运算单元进行并行FFT运算;之后,判断本组FFT运算是否为本级FFT的最后一组FFT运算;若是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给I个信号幅度补偿器进行并行信号幅度恢复后,并行写入2个存储子单元;若不是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给I个旋转因子乘法器进行并行旋转运算后,并行写入2个存储子单元。步骤S210:将FFT并行处理的处理结果并行写回2η个存储子单元的每个子单元中。将FFT点数据处理结果并行写入多个存储子单元时,仍然按照二维地址存储表确定待写入的存储子单元中相应的地址,也即,先根据二维地址存储表确定待写入的多个地址,然后并行写入确定的多个地址中。通过并串、串并转换,可以在I个周期内读/写2个周期所需处理的数据量,这样可以利用流水线结构,在相邻的周期内依次读、写存储单元的端口,从而达到使用单口 RAM代替双口 RAM的目的。步骤S212:返回步骤S206,继续依次处理本级FFT的其它FFT点,直至完成本级FFT的所有FFT点的处理。FFT的每级处理均采用上述并行处理,最终实现一次完整的FFT的并行化处理。通过本实施例的上述过程,实现了 FFT的并行化处理,可以在每个时钟周期处理多个FFT点的运算,无须增加总时钟周期,改善了对系统时钟频率的要求。实施例三参照图4,示出了根据本发明实施例三的一种FFT处理示意图。本实施例中,以4个存储子单元,即将存储单元平均分割为22个存储子单元为例,对本发明的FFT并行处理进行说明。相应地,本实施例的FFT并行运算单元包括2个信号幅度均衡器、I个FFT基本运算单元、2个旋转因子乘法器、和2个信号幅度补偿器。步骤S302:待处理的FFT点数据首先从存储单元RAM的4个存储子单元RAM_S0、RAM_S1、RAM_S2、和RAM_S3当中并行读出,交给并串转换模块P2S_tran。由于数据存储单元的并行化操作不能通过复制硬件资源实现,且FFT数据来源FFT_IN仍然是与之前相同的原始数据,需要增大FFT数据读写的吞吐率以及并行读写的效率,因此,本实施例将存储单元RAM平均分割为2n个小的存储子单元,这样就提供了 n组读写的端口,从而保证了数据的吞吐率。本实施例中,n = 2。此外,为了提升FFT数据并行读写效率,实现对不同RAM地址的并行读写,本实施例将存储单元RAM内部的地址进行了重新组织管理,形成了一个2维存储结构。本实施例以4点并行化为例,存储地址组织如图5所示。图5是本实施例中的一种RAM的存储地址对应的二维地址存储表的示意图,由图5中可见,本实施例的RAM有4个小的存储子单元,即RAM_S0、RAM_S1、RAM_S2、和RAM_S3,所以有4组读写端口,每个时钟周期,分别从4组端口读出/写回本组FFT运算的4个FFT点。其中,二维地址存储表中的各项与具体的RAM地址映射通过下述公式(I)一(4)获得:公式(I):col_addrO=address[N:2]其中,N表示RAM总的地址位宽,address[N:2]表示从第N比特到第2比特的二进制值,该值指示了二维地址存储表中某一子存储单元的某个地址,该地址被赋给变量col_addr0。如,共有8比特,则N为7,若从第0比特至第7比特的值为00000011,则address [7:2](高6位)为“000000”,转换为十进制为“0”,也即,某一存储子单元的0地址,然后,将该二进制地址赋给col_addr0。公式(2):row_addrO=address [1:0]address[1:0]表示了从第I比特到第0比特的二进制值,该值指示了二维地址存储表中的某一个子存储单元,该子存储单元的初始地址值被赋给变量row_addr0。仍如公式(I)中的8位比特“00000011 ”为例,address [1:0](低2位)为“ 11 ”,其代表RAM_S3,将RAM_S3的初始地址被赋给row_addr0。在确定的RAM_S3后,可以确定“00000011”指示的是RAM_S3的0地址,则待处理的FFT点的地址为“RAM_S3的初始地址+0”。
公式(3):col_addr=col_addrO也即:col_addr=col_addrO=address[N: 2]。仍以“00000011” 为例,此时 col_addr=address[N:2] =“000000”公式(4):row_addr= (row_addrO + address [3: 2]+address [5: 4] + …+address [N:N_l])%4 (存储单元总的地址位宽为偶数时);或者,row_addr= (address [1: O]+address [3:2] +address [5:4] +...+address [N]) %4 (存储单元总的地址位宽为奇数时)“%4”中的4来源于2n,因本实施例中η = 2,所以,此处“%2η” = “%4”。仍以存储地址address= “00000011”为例,确定 待读取的一个FFT点的存储位置的过程可以如下:(I) col_addrO=address[7:2]=000000 (高 6bit);(2) row_addrO=address [1:O] =11 (低 2bit);(3) col_addr=col_addr0=000000=0 ;(4) row_addr= (row_addrO + address [3: 2] +address [5: 4] +address[7:6])%4=(I1+00+00+00)%4=11=3通过上述过程可见,地址address= “00000011”对应RAM — S3当中的O地址这个
存储位置,该位置存储的数值为“3”。基于上述地址管理的方法,可以在FFT的每级每组迭代运算当中,并行地访问到所需的多个点,为后级的并行运算单元提供数据流。例如,在图5中,倒数第一级迭代运算读取的FFT点如实线椭圆形中所示,倒数第二级迭代运算读取的FFT点如线状虚线椭圆形中所示,倒数第三级迭代运算读取的FFT点如四个点状虚线椭圆形所示。步骤S304:并串转换模块P2S_tran对并行读取的FFT点数据进行并串转换。以保持4个存储子单元和2个信号幅度均衡器吞吐量一致。步骤S306:通过并串转换模块的并串转换后,并串转换模块将FFT点数据交给2个信号幅度均衡器SHIFT进行并行移位操作。也即,对并串转换后的FFT点进行幅度变换,其中,幅度调整的具体范围通过移位幅度调整器SHIFTGEN获得。信号幅度均衡器的并行移位操作是通过复制硬件资源实现的。根据需要并行处理的数据点数2n,当η大于I时,复制η组同样的硬件资源,当η等于I时,直接采用I组同样的硬件资源。本步骤中,复制2组SHIFT,也即采用2组SHIFT实现并行移位操作。步骤S308:信号幅度均衡器SHIFT将进行了并行移位操作后的FFT点数据发送给I个基2-FFT基本运算单元进行并行的基本运算操作。如上所述,当η大于I时,复制η组同样的硬件资源,当η等于I时,直接采用I组同样的硬件资源。步骤S310 =FFT基本运算单元将进行了并行基本运算操作后的FFT点数据发送给判断模块,判断模块判断本组FFT点数据操作是否是本级FFT的最后一组FFT点数据操作,若是,则执行步骤S312 ;若否,则执行步骤S316。判断模块的功能可以通过一个单独的模块实现,但也可以与其它器件的功能合并实现,还可以由FFT运算的控制器执行该判断,决定之后进入相应的器件进行后续的运算。步骤S312:2个信号幅度补偿器FINAL_SHIFT接收判断模块发送的FFT点数据,进行并行的信号幅度恢复后,交给第一串并转换模块S2P_tranl。步骤S314:第一串并转换模块S2P_tranl对进行了并行信号幅度恢复后的FFT点数据进行串并转换后,并行地写回存储单元当中,结束本组FFT的全部处理,转入步骤S302继续执行本次FFT的后续迭代级别,直至本次FFT运算的所有级别的所有分组的所有FFT点都处理完成。步骤S316:2个旋转因子乘法器CORDIC接收判断模块发送的FFT点数据,进行并行的旋转运算后,交给第二串并转换模块S2P_tran2。需要说明的是,在实际应用中,S2P_tranl和S2P_tran2可以使用一个模块如S2P_tran实现,在流程当中复用。同时,CORDIC还会把旋转运算后的结果发送给SHIFTGEN,以便SHIFTGEN根据该结果调整幅度调整范围。步骤S318:第二串并转换模块S2P_tran2对进行了旋转运算后FFT点数据进行串并转换后,并行地写回存储单元当中,结束本级FFT的本组FFT点处理,并返回步骤S302进行本级FFT的下一组的FFT处理。在上述的FFT数据处理流程当中,所有FFT运算单元(包括信号幅度均衡器、FFT基本运算单元、旋转因子乘法器、和信号幅度补偿器)的并行化,都可以通过复制硬件资源实现。根据需要并行处理的数据点数2n,复制相应组同样的硬件资源。通过本实施例,在没有显著增大存储单元面积的前提下,在FFT的硬件实现过程中,采取了并行运算的结构,仅通过复制FFT运算单元,和对存储单元地址进行重新组织管理,实现了每个时钟周期处理多个点的运算,实现了 FFT处理的IP核的并行运算,从而大大降低了对系统频率的需求,改善了芯片的性能和功耗。实施例四参照图6,示出了根据本发明实施例四的一种FFT处理系统的结构框图。本实施例的FFT处理系统包括:FFT控制单元402、FFT存储单元404,和FFT并行运算单元406,其中,FFT存储单元404包括2"个存储子单元,FFT控制单元402包括读取模块4022、处理模块4024和写回模块4026。上述结构中,FFT控制单元402的读取模块4022,用于依照FFT规则,从FFT存储单元404的2n个存储子单元中并行读取待处理的2nfFFT点,生成待处理FFT点组,其中,2nfFFT点中的每个点按照设定规则存储在不同的存储子单元中,n为大于或等于I的自然数;FFT控制单元402的处理模块4024,用于将待处理FFT点组交给FFT并行运算单元406进行FFT并行处理;FFT控制单元402的写回模块4026,用于将FFT并行处理的处理结果并行写回FFT存储单元404的2n个存储子单元的每个子单元中。通过上述模块,实现了一级FFT的一次运算,此后,可以返回读取模块4022,使读取模块4022、处理模块4024和写回模块4026继续依次处理本级FFT的其它FFT点,直至完成本级FFT的所有FFT点的处理,也即,利用流水线结构,按照上述模块中的处理流程依次处理完所有FFT点组,完成本级FFT处理。通过本实施例,实现了每个时钟周期处理多个FFT点的运算,无须增加总时钟周期,从而改善了对系统时钟频率的要求,进而避免了在集成电路的实现过程中较大的时序收敛风险,也使产品在工作过程中不会产生过高的动态功耗。
实施例五参照图7,示出了根据本发明实施例五的一种FFT处理系统的结构框图。本实施例的FFT处理系统对实施例四中的FFT处理系统进行了优化处理,在包括实施例四中的FFT控制单元402、FFT存储单元404,和FFT并行运算单元406的基础上,优选地,FFT控制单元402的读取模块4022在依照FFT规则,从FFT存储单元404的2n个存储子单元中并行读取待处理的2n个FFT点,生成待处理FFT点组时,依照FFT规则,从本地保存的二维地址存储表中,确定待处理的2"个FFT点中每个FFT点所在的存储子单元,和每个FFT点在所在的存储子单元中的存储地址,其中,二维地址存储表由存储子单元和FFT点在存储子单元中的存储地址之间的对应关系组成;根据确定的每个FFT点所在的存储子单元以及在所在的存储子单元中的存储地址,并行地从2n个存储子单元中读取待处理的2n个FFT点,生成待处理FFT点组。优选地,当n=2时,FFT控制单元402的读取模块4022在从本地保存的二维地址存储表中,确定待处理 的2nfFFT中每个FFT点所在的存储子单元,以及每个FFT点在所在的存储子单元中的存储地址时,当存储单元404总的地址位宽为偶数时,按照公式row_addr= (address [1: O] +address [3:2] +address [5:4] +...+address [N:N_1]) %4 ;或者,当存储单元 404 总的地址位宽为奇数时,按照公式 row_addr= (address [1: O] +address [3:2] +address [5:4] +…+address [N]) %4,从二维地址存储表中确定待处理的FFT点所在的存储子单元,按照公式col_addr=address[N:2]确定该待处理的FFT点在所在的存储子单元中的存储地址;其中,row_addr指示待处理的FFT点所在的存储子单元;col_addr指示该待处理的FFT点在所在的存储子单元中的存储地址;address 口中的数据用于指示相邻的两个比特位或者一个比特位,其中,N加I后表示FFT存储单元404总的地址位宽;通过每个address[]与其包括的比特位以获得二维地址存储表中的一个地址中存储的二进制比特值;%表示取模运算。优选地,FFT并行运算单元406包括信号幅度均衡器并行运算单元4062、FFT基本运算并行单元4064、旋转因子乘法器并行运算单元4066、和信号幅度补偿器并行运算单元4068。当η等于I时,信号幅度均衡器并行运算单元4062采用I个信号幅度均衡器并行运算,FFT基本运算并行单元4064采用I个FFT基本运算单元并行运算,旋转因子乘法器并行运算单元4066采用I个旋转因子乘法器并行运算,信号幅度补偿器并行运算单元4068采用I个信号幅度补偿器并行运算。当η大于I时,信号幅度均衡器并行运算单元4062采用2114个信号幅度均衡器并行运算,FFT基本运算并行单元4064采用2n_2个FFT基本运算单元并行运算,旋转因子乘法器并行运算单元4066采用211-1个旋转因子乘法器并行运算,信号幅度补偿器并行运算单元4068采用2114个信号幅度补偿器并行运算。基于上述FFT并行运算单元406的配置,FFT控制单元402的处理模块4024,用于当η等于I时,将待处理FFT点组交给I个信号幅度均衡器、I个FFT基本运算单元、I个旋转因子乘法器、和I个信号幅度补偿器进行FFT并行处理;当η大于I时,将待处理FFT点组交给2114个信号幅度均衡器、2n_2个FFT基本运算单元、2114个旋转因子乘法器、和2114个信号幅度补偿器进行FFT并行处理。
优选地,当n大于I时,FFT控制单元402的处理模块4024在将待处理FFT点组交给2114个信号幅度均衡器、2n_2个FFT基本运算单元、2114个旋转因子乘法器、和2114个信号幅度补偿器进行FFT并行处理时,并行读取待处理FFT点组,通过并串转换将并行读取的待处理FFT点组转换为符合2114个信号幅度均衡器吞吐量的FFT点数据后,交由2114个信号幅度均衡器进行并行移位操作;将进行了移位操作后的FFT点数据发送到2n_2个FFT基本运算单元进行并行FFT运算;判断本次FFT运算是否为本级FFT的最后一组FFT运算;若是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给2114个信号幅度补偿器进行并行信号幅度恢复后,通过串并转换将进行了信号幅度恢复后的FFT点数据转换为符合2"个存储子单元吞吐量的FFT点数据并发送给2"个存储子单元,以并行写回2"个存储子单元的每个子单元中;若不是最后一组FFT运算,则将进行了并行FFT运算后的FFT点数据发送给211-1个旋转因子乘法器进行并行旋转运算后,通过串并转换将进行旋转运算后的FFT点数据转换为符合2n个存储子单元吞吐量的FFT点数据并发送给2n个存储子单元,以并行写回2n个存储子单元的每个子单元中。本实施例的FFT处理系统用于实现前述多个方法实施例中相应的FFT处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上对本发明所提供的一种FFT处理方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种快速傅里叶变换处理方法,其特征在于,包括: 依照快速傅里叶变换规则,从存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组,其中,所述2n个快速傅里叶变换点中的每个点按照设定规则存储在不同的存储子单元中,n为大于或等于I的自然数; 将所述待处理快速傅里叶变换点组交给快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理; 将所述快速傅里叶变换并行处理后的处理结果并行写回所述2n个存储子单元的每个子单元中。
2.根据权利要求1所述的方法,其特征在于,所述依照快速傅里叶变换规则,从存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组的步骤包 括: 依照所述快速傅里叶变换规则,从本地保存的二维地址存储表中,确定所述待处理的2n个快速傅里叶变换点中每个快速傅里叶变换点所在的存储子单元,以及所述每个快速傅里叶变换点在所在的存储子单元中的存储地址,其中,所述二维地址存储表由存储子单元和快速傅里叶变换点在存储子单元中的存储地址之间的对应关系组成; 根据确定的所述每个快速傅里叶变换点所在的存储子单元以及在所在的存储子单元中的存储地址,并行地从所述2n个存储子单元中读取所述待处理的2n个快速傅里叶变换点,生成所述待处理快速傅里叶变换点组。
3.根据权利要求2所述的方法,其特征在于,当n=2时,所述从本地保存的二维地址存储表中,确定所述待处理的2n个快速傅里叶变换点中每个快速傅里叶变换点所在的存储子单元,以及所述每个快速傅里叶变换点在所在的存储子单元中的存储地址的步骤包括: 当所述存储单元总的地址位宽为偶数时,按照公式row_addr= (address [1:0] +address[3:2] +address [5:4] +…+address [N: N-1]) %4,或者,当所述存储单元总的地址位宽为奇数时,按照公式 row_addr= (address [1:0] +address [3:2] +address [5:4] + +address [N]) %4,从所述二维地址存储表中确定待处理的快速傅里叶变换点所在的存储子单元; 按照公式col_addr=address[N:2]确定该待处理的快速傅里叶变换点在所在的存储子单元中的存储地址; 其中,row_addr指示待处理的快速傅里叶变换点所在的存储子单元;col_addr指示该待处理的快速傅里叶变换点在所在的存储子单元中的存储地址address口中的数据用于指示相邻的两个比特位或者一个比特位,N加I后表示所述存储单元总的地址位宽;通过每个address口与其包括的比特位以获得所述二维地址存储表中的一个地址中存储的二进制比特值;%表示取模运算。
4.根据权利要求1所述的方法,其特征在于,所述将所述待处理快速傅里叶变换点组交给快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理的步骤包括: 当n等于I时,将所述待处理快速傅里叶变换点组交给I个信号幅度均衡器、I个快速傅里叶变换基本运算单元、I个旋转因子乘法器、和I个信号幅度补偿器进行快速傅里叶变换并行处理; 当n大于I时,将所述待处理快速傅里叶变换点组交给211-1个信号幅度均衡器、2n_2个快速傅里叶变换基本运算单元、211-1个旋转因子乘法器、和211-1个信号幅度补偿器进行快速傅里叶变换并行处理。
5.根据权利要求4所述的方法,其特征在于,所述当η大于I时,将所述待处理快速傅里叶变换点组交给211-1个信号幅度均衡器、2η_2个快速傅里叶变换基本运算单元、211-1个旋转因子乘法器、和211-1个信号幅度补偿器进行快速傅里叶变换并行处理的步骤包括: 并行读取所述待处理快速傅里叶变换点组,通过并串转换将并行读取的所述待处理快速傅里叶变换点组转换为符合所述211-1个信号幅度均衡器吞吐量的快速傅里叶变换点数据后,交由所述211-1个信号幅度均衡器进行并行移位操作; 将进行了移位操作后的所述快速傅里叶变换点数据发送到所述2n_2个快速傅里叶变换基本运算单元进行并行快速傅里叶变换运算; 判断本组快速傅里叶变换运算是否为本级快速傅里叶变换的最后一组快速傅里叶变换运算; 若是最后一组快速傅里叶变换运算,则将进行了所述并行快速傅里叶变换运算后的快速傅里叶变换点数据发送给所述211-1个信号幅度补偿器进行并行信号幅度恢复后,通过串并转换将进行了所述信号幅度恢复后的快速傅里叶变换点数据转换为符合所述2n个存储子单元吞吐量的快速傅里叶变换点数据并发送给所述2n个存储子单元; 若不是最后一组快速傅里叶变换运算,则将进行了所述并行快速傅里叶变换运算后的快速傅里叶变换点数据发送给所述2114个旋转因子乘法器进行并行旋转运算后,通过串并转换将进行所述旋转运算后的快速傅里叶变换点数据转换为符合所述2"个存储子单元吞吐量的快速傅里叶变换点数据并发送给所述2n个存储子单元。
6.一种快速傅里叶变换处理系统,其特征在于,包括:快速傅里叶变换控制单元、包括2n个存储子单元的快速傅里叶变换存储单元、和快速傅里叶变换并行运算单元;所述快速傅里叶变换控制单元包括读取模块、处理模块和写回模块; 其中, 所述快速傅里叶变换控制单元的读取模块,用于依照快速傅里叶变换规则,从所述快速傅里叶变换存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组,其中,所述2"个快速傅里叶变换点中的每个点按照设定规则存储在不同的存储子单元中,η为大于或等于I的自然数; 所述快速傅里叶变换控制单元的处理模块,用于将所述待处理快速傅里叶变换点组交给所述快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理; 所述快速傅里叶变换控制单元的写回模块,用于将所述快速傅里叶变换并行处理的处理结果并行写回所述2η个存储子单元的每个子单元中。
7.根据权利要求6所述的系统,其特征在于,所述快速傅里叶变换控制单元的读取模块在依照快速傅里叶变换规则,从所述快速傅里叶变换存储单元的2η个存储子单元中并行读取待处理的2η个快速傅里叶变换点,生成待处理快速傅里叶变换点组时,依照所述快速傅里叶变换规则,从本地保存的二维地址存储表中,确定所述待处理的2η个快速傅里叶变换点中每个快速傅里叶变换点所在的存储子单元,以及所述每个快速傅里叶变换点在所在的存储子单元中的存储地址,其中,所述二维地址存储表由存储子单元快速傅里叶变换点在存储子单元中的存储地址之间的对应关系组成;根据确定的所述每个快速傅里叶变换点所在的存储子单元以及在所在的存储子单元中的存储地址,并行地从所述2η个存储子单元中读取所述待处理的2n个快速傅里叶变换点,生成所述待处理快速傅里叶变换点组。
8.根据权利要求7所述的系统,其特征在于,当n=2时,所述快速傅里叶变换控制单元的读取模块在从本地保存的二维地址存储表中,确定所述待处理的2n个快速傅里叶变换点中每个快速傅里叶变换点所在的存储子单元,以及所述每个快速傅里叶变换点在所在的存储子单元中的存储地址时,当所述存储单元总的地址位宽为偶数时,按照公式row_addr= (address [1:0] +address [3:2] +address [5:4] +...+address [N:N_1]) %4,或者,当所述存储单元总的地址位宽为奇数时,按照公式row_addr= (address [1:0] +address [3:2]+address [5:4] +…+address [N]) %4,从所述二维地址存储表中确定待处理的快速傅里叶变换点所在的存储子单元;按照公式col_addr=address[N:2]确定该待处理的快速傅里叶变换点在所在的存储子单元中的存储地址; 其中,row_addr指示待处理的快速傅里叶变换点所在的存储子单元;col_addr指示该待处理的快速傅里叶变换点在所在的存储子单元中的存储地址;addreSS口中的数据用于指示相邻的两个比特位或者一个比特位,其中,N加I后表示所述快速傅里叶变换存储单元总的地址位宽;通过每个address口与其包括的比特位以获得所述二维地址存储表中的一个地址中存储的二进制比特值;%表示取模运算。
9.根据权利要求6所述的系统,其特征在于,所述快速傅里叶变换控制单元的处理模块,用于当n等于I时,将所述待处理快速傅里叶变换点组交给I个信号幅度均衡器、I个快速傅里叶变换基本运算单元、I个旋转因子乘法器、和I个信号幅度补偿器进行快速傅里叶变换并行处理; 当n大于I时,将所述待处理快速傅里叶变换点组交给211-1个信号幅度均衡器、2n_2个快速傅里叶变换基本运算单元、211-1个旋转因子乘法器、和211-1个信号幅度补偿器进行快速傅里叶变换并行处理。
10.根据权利要求9所 述的系统,其特征在于,当n大于I时,所述快速傅里叶变换控制单元的处理模块在将所述待处理快速傅里叶变换点组交给2114个信号幅度均衡器、2n_2个快速傅里叶变换基本运算单元、211-1个旋转因子乘法器、和211-1个信号幅度补偿器进行快速傅里叶变换并行处理时,并行读取所述待处理快速傅里叶变换点组,通过并串转换将并行读取的所述待处理快速傅里叶变换点组转换为符合所述2114个信号幅度均衡器吞吐量的快速傅里叶变换点数据后,交由所述211-1个信号幅度均衡器进行并行移位操作;将进行了移位操作后的所述快速傅里叶变换点数据发送到所述2n_2个快速傅里叶变换基本运算单元进行并行快速傅里叶变换运算;判断本组快速傅里叶变换运算是否为本级快速傅里叶变换的最后一组快速傅里叶变换运算;若是最后一组快速傅里叶变换运算,则将进行了所述并行快速傅里叶变换运算后的快速傅里叶变换点数据发送给所述211-1个信号幅度补偿器进行并行信号幅度恢复后,通过串并转换将进行了所述信号幅度恢复后的快速傅里叶变换点数据转换为符合所述2n个存储子单元吞吐量的快速傅里叶变换点数据并发送给所述2n个存储子单元;若不是最后一组快速傅里叶变换运算,则将进行了所述并行快速傅里叶变换运算后的快速傅里叶变换点数据发送给所述211-1个旋转因子乘法器进行并行旋转运算后,通过串并转换将进行所述旋转运算后的快速傅里叶变换点数据转换为符合所述2n个存储子单元吞吐量的快速傅里叶变换点数据并发送给所述2n个存储子单元。
全文摘要
本发明提供了一种快速傅里叶变换处理方法和系统,其中,快速傅里叶变换处理方法包括依照快速傅里叶变换规则,从存储单元的2n个存储子单元中并行读取待处理的2n个快速傅里叶变换点,生成待处理快速傅里叶变换点组,其中,所述2n个快速傅里叶变换点中的每个点按照设定规则存储在不同的存储子单元中,n为大于或等于1的自然数;将所述待处理快速傅里叶变换点组交给快速傅里叶变换并行运算单元进行快速傅里叶变换并行处理;将所述快速傅里叶变换并行处理后的处理结果并行写回所述2n个存储子单元的每个子单元中。通过本发明,改善了对系统时钟频率的要求,避免了在集成电路的实现过程中较大的时序收敛风险。
文档编号G06F17/14GK103218348SQ20131010916
公开日2013年7月24日 申请日期2013年3月29日 优先权日2013年3月29日
发明者吴汉京 申请人:北京创毅视讯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1