一种实现fft及ifft运算的装置和方法

文档序号:6580977阅读:293来源:国知局
专利名称:一种实现fft及ifft运算的装置和方法
技术领域
本发明涉及通信技术及信号处理领域,尤其涉及一种实现FFT及IFFT运算的装置 和方法。
背景技术
现实环境中的无线信道具有两大特点时变特性和衰落特性,由于无线信号的各 个反射波的延时不同,在UE端接收的信号实际上是多径信号的叠加。根据扰码的特性,延 时在一个码片之内的两径信号互相关值不为零,且不同步的OVSF(Orthogonal Variable Spreading Factor正交可变扩频因子)码之间也不完全正交,所以不同路径的无线信号之 间存在着相互干扰。在HSDPA中,由于HS-PDSCH采用多码传输,扩频因子固定且较低,信噪 比较高,所以相对噪声的影响来说码间的干扰十分突出,已经成为影响性能的关键因素。
在传统的RAKE接收机中,一般假设多径无线信号的相对延时大于码片间隔,由于 大于一个码片的信号互不相关,所以多径信号的叠加将带来增益。但由协议3GPP TS25. 101 可以看出,在HSDPA中假设存在不可分离的多径,多径信号之间则存在严重的码间干扰,会 使信号产生变形从而误判,所以使用传统的RAKE接收机的性能将会恶化。
为此3GPP R6为HSDPA推荐了 3种高级接收机
1 具有接收分集的rake接收机(增强类型一);
2 单均衡器接收机(增强类型二);
3 具有接收分集的均衡器接收机(增强类型三);
采用双天线rake接收机在理想相干合并的情况下将产生3db的增益。但实际上 天线间有一定的相关性,这与频段的选择有关,通常认为两个天线的间距等于半波长时,两 个天线完全不相关。
使用线性最小均方根误差(MMSE)接收机带来的增益,主要来自于均衡无线信道 的时延拓展,均衡器实现了等效下行正交,从而使本小区的干扰更小。
应用上述几种rake接收机都需要对大量的数据进行处理,如果所有的数据处理 全部在时域去完成的话,硬件的数据处理量会非常大,而在频域中处理硬件处理的数据量 相对要小,所以对处理的数据进行由时域到频域的转换,同时兼顾到运算速度与硬件资源 的充分利用,现有技术中FFT/IFFT处理装置都是将多路数据串行处理,从而导致数据处理 速度慢。发明内容
本发明提供一种实现FFT及IFFT运算的装置和方法,用于提高现有技术中FFT及 IFFT运算的速度。
一种实现FFT及IFFT运算的装置,包括FFT控制单元、ALU运算单元、RAM读/写 控制单元、多个RAM、旋转因子存储单元和旋转因子读取单元
FFT/IFFT控制单元,用于将两路待运算数据和旋转因子输入ALU运算单元,并将ALU输出计算结果分别存储到对应的RAM中,以及利用状态机控制FFT/IFFT每级蝶形运算 的切换;
ALU运算单元,用于对两路待运算数据分别进行FFT/IFFT蝶形运算;
RAM读/写控制单元,用于对所述多个RAM进行读和写控制,其中,所述多个RAM存 储ALU运算单元每级FFT/IFFT蝶形运算后的结果;
旋转因子读取单元,用于计算每级蝶形运算所需的旋转因子在旋转因子存储单元 中的存储地址。
一种实现FFT及IFFT运算的方法,包括
输入两路待运算数据和运算所需的旋转因子,调用ALU运算单元分别对两路待运 算数据进行多级FFT/IFFT蝶形运算,并将每级蝶形运算后的两路数据分别存储到对应的 RAM中,其中,利用状态机控制每级FFT/IFFT蝶形运算的切换。
应用本发明实施例所提供的装置,充分的利用整个系统中的硬件资源,提高FFT/ IFFT的运算速度。


图1为本发明实施例一种实现FFT及IFFT运算的装置的结构图2为本发明实施例FFT控制单元状态机图3为本发明实施例双口 RAM读操作时序图4为本发明实施例双口 RAM写操作时序图5为本发明实施例从ROM中读取旋转因子的操作时序图6为本发明实施例一种FFT及IFFT运算方法的流程图。
具体实施方式
本发明实施例提供一种实现FFT及IFFT运算的装置,包括FFT/IFFT控制单元, 用于将两路待运算数据和旋转因子输入ALU运算单元,并将ALU输出计算结果分别存储到 对应的RAM中,以及利用状态机控制FFT/IFFT每级蝶形运算的切换;ALU运算单元,用于对 两路待运算数据分别进行FFT/IFFT蝶形运算;RAM读/写控制单元,用于对所述多个RAM进 行读和写控制,其中,所述多个RAM存储ALU运算单元每级FFT/IFFT蝶形运算后的结果;旋 转因子读取单元,用于计算每级蝶形运算所需的旋转因子在旋转因子存储单元中的存储地 址。
下面结合说明书附图对本发明的具体实施方式
进行详细说明。
如图1所示,本发明实施例一种实现FFT及IFFT运算的装置,该装置包括FFT控 制单元101、ALU运算单元102、RAM读/写控制单元103、多个RAM104、旋转因子存储单元 105和旋转因子读取单元106
FFT/IFFT控制单元101,用于将两路待运算数据和旋转因子输入ALU运算单元 102,并将ALU输出计算结果分别存储到对应的RAM104中,以及利用状态机控制FFT/IFFT 每级蝶形运算的切换;
该FFT/IFFT控制单元101实现FFT/IFFT每级运算的整体控制。
ALU运算单元102,用于对两路待运算数据分别进行FFT/IFFT蝶形运算;
其中,该ALU运算单元独立设置在该装置外,进行FFT/IFFT运算时,FFT/IFFT控 制单元101调用该ALU运算单元102进行FFT/IFFT运算。
RAM读/写控制单元103,用于对多个RAM104进行读/写控制,其中,所述RAM104 存储ALU运算单元102每级FFT/IFFT蝶形运算后的结果;
旋转因子读取单元106,用于计算每级蝶形运算所需的旋转因子在旋转因子存储 单元105中的存储地址。
其中,ALU运算单元102进行蝶形运算时,所述RAM104读写控制单元103从所 述RAM104中读取数据进行蝶形运算,并将ALU运算单元102每级蝶形运算后的数据写 入RAM104的对应地址中,在本发明实施例中RAM读写控制单元103按照蝶形结为单位从 RAM104中读取数据以及将多级运算后的数据写入该RAM104中,其中,
读地址(ramrdaddr)计算公式为
第一个点的读地址为ramrdaddr = (group-1) < < i +T,第二个点读地址为 ramrdaddr = (group-1)*M+but_dis tan ce+T
写地址(ramwraddr)计算公式为
第一个点的写地址ramwraddr = (groupwr-1) < < i +Twr,第二个点的写地址 ramwraddr = (groupwr-1) < < i+but_dis tan ce+Twr ;
其中,group为蝶形结计数,M为2的i次方,i为运算级数,T和Twr为2的6_i 次方,but_diStanCe为蝶形结中两点的间隔,并且,该读地址和写地址的计算用组合逻辑实 现。
另外,对于蝶形运算的旋转因子,在本发明实施例中所述旋转因子读取单元 106105用于按照蝶形结为单位从所述旋转因子存储单元105中读取旋转因子,读地址 (romrdaddr)计算公式为
romrdaddr = 2MXT 或 romrdaddr = T << 26、其中 T,2M 为常量。
在本发明实施例中,本发明实施例最优化实施例是选用两个双口 RAM实现多个 RAM的功能。
以基2,64点的FFT/IFFT为例对本发明实施例做进一步的说明,其中,第一级读入 的数据位64个,则本发明实施例中的具体实现包括
FFT控制单元中用一个状态机(如图2所示)来控制两路FFT的每一级蝶形运算。 状态机共有7个状态,分别为(stageflag为每一级运算的标志信号)
1)闲置状态(idle),对应于stageflag = 7,b0000001 ;(在该状态,所述ALU运 算单元可以应用于除该装置之外的装置进行蝶形运算);
2)第一级运算状态(Magel),对应于 stageflag = 7,b0000010 ;
3)第二级运算状态 6tage2),对应于 stageflag = 7,b0000100 ;
4)第三级运算状态 6tage3),对应于 stageflag = 7,b0001000 ;
5)第四级运算状态 6tage4),对应于 stageflag = 7,b0010000 ;
6)第五级运算状态 6tage5),对应于 stageflag = 7,b0100000 ;
7)第六级运算状态(Mage6),对应于 stageflag = V bl000000。
该状态机的7个状态分别对应于每一级的蝶形运算,第一级运算到第五级运算的 每一级运算装换时,检测双口 RAM写地址的值,存储第一路运算数据(fftO)和第二路运算数据(fftl)的两个双口 RAM共用写地址ramwraddr,若该写地址ramwraddr等于63,则产生 一个end (—个elk脉冲信号),该脉冲信号作为本级运算的结束信号。状态的跳转则是判 断end的值,若end = 1,则状态跳转到下一级运算状态。若end = 0,则仍进行本级运算。
其中,第六级运算中由于运算完的数据是写入频域处理模块中的fq_dpram,所以 第六级运算的时候,检测fq_dpram的写地址wraddr (fftO和fftl共用1个写地址)是否 等于63。若wraddr等于63,则产生一个flagout ( 一个elk脉冲信号)该信号作为FFT模 块运算的结束信号。
第六级状态跳转的判断依据是判断flagout信号是否等于1。若flagout等于1, 则状态跳转至idle,否则依然继续第六级运算。
在进行蝶形运算时,除第一级蝶形运算的数据外,每级蝶形运算的数据都需从双 口 RAM的对应地址中读出,本发明实施例中读地址的计算方式为
如图3所示的双口 RAM读控制操作时序图,双口 RAM的读控制具体操作为只要检 测到蝶形运算级控制信号stageflag等于V b0000100 (第二级运算),7,b0001000 (第三 级运算),7’ b0010000 (第四级运算),7’ b0100000 (第五级运算),7,bl000000 (第六级运 算)五个中任何一个值时(即进行第二级到第六级的FFT/IFFT运算),检测datacnt (此为 每级运算的时钟计数器,用于对每级运算的时间进行计数)的值如果0彡datacnt ( 64,则 ramrden能置低(双口 RAM读使能低电平有效),本级运算其余时间ramrden置高,这样本 级RAMO和RAMI的读使能就产生了。
然后计算读地址ramrdaddr,读地址的公式是按照蝶形结为单位来操作的,第一个 蝶形运算结中两点写地址计算完之后,第二个蝶形运算结再计算,串行执行直到最后。
在每个蝶形运算结中两点的读地址分别为第一个点(即dataCnt
为0时) 的地址为ramrdaddr = (group-1) *M+T (因为M在每一级运算时是固定值所以可以将公式 改写成 ramrdaddr = (group-1) << i+T),第二个点(即 datacnt
为 1 时)的写地址 % ramrdaddr = (group-1) *M+but_dis tan ce+T (同样也可以夺公式改写成 ramrdaddr = (group-1) << i+but_dis tan ce+T)。读地址的计算用组合逻辑实现。
其中,Group为蝶形结计数,M为2的i次方,i为运算级数,T为蝶形结中点的计 数,bUt_distance为蝶形结中两点的间隔。因为group计数的最大值随着运算级数的增加 而减少;i,but_distance的数值随着级数增加而增加,T计数的最大值随着级数的增加而 增加,所以ramrdaddr的位宽在每一级运算仍然保证是6bits。
在本发明是实施例中,将进行每级蝶形运算后的数据写入双口 RAM的具体实现方 式包括
如图4所示的双口 RAM写控制操作时序图,双口 RAM写控制具体操作为
检测到蝶形运算级控制信号stageflag等于7’ b0000100 (第二级运算), 7,b0001000 (第三级运算),7,b0010000 (第四级运算),7,b0100000 (第五级 运算),7’ bl000000 (第六级运算)五个中任何一个值时,检测datacnt的值,当 6 ^ datacnt ^ 70 (判断写 RAM 操作的时间,从 datacnt = 6 开始写 RAM,到 datacnt = 70 写RAM结束)时,将双口 RAMO和双口 RAMI共用的写使能ramwren置低(写使能低有效), 本级运算其余时间将ramwren置高。
得到写使能的同时由M,but_distance,datacnt,再结合写操作有效时产生的Twr, groupwr 便可以计算 ramwraddr。
ramwraddr的公式也是按照蝶形结为单位来操作的,第一个蝶形运算结中两点写 地址计算完之后,第二个蝶形运算结再计算,串行执行直到最后。在每个蝶形运算结中两点 的写地址分别为检测datacnt的值,若datacnt在6 < datacnt ^ 70时,第一个点(即 datacnt
为0时)的写地址为ramwraddr = (groupwr-1)*M+Twr (因为M为常量所以可以 将公式改写成 ramwraddr = (groupwr-1) << i+Twr),第二个点(即 datacnt
为 1 时) 的写地址为ramwraddr = (groupwr-1) *M+but_dis tan ce+Twr (因为M为常量所以可以将 公式改写成 ramwraddr = (groupwr-1) << i+but_dis tan ce+Twr。组合逻辑产生地址。
在本发明是实施例中,本发明实施中旋转因子存储地址计算的具体实现方式包 括
如图5所示的存储旋转因子的ROM读控制操作时序图。检测蝶形运算级控制 信号 stageflag,若 stageflag 等于 7,b0000010 (第一级运算),7,b0000100 (第二级运 算),7,b0001000 (第三级运算),7,b0010000 (第四级运算),7,b0100000 (第五级运算), 7'blOOOOOO (第六级运算)六个值中任何一个时,开始产生ROM读使能。当datacnt在3 66之间累加的时候,将datacnt
取反赋给romrden。(组合逻辑实现)本级的其余时间 romrden置高(ROM读使能低有效)。
读使能产生的同时需要产生读地址。由于ROM中存储第六级运算的32个旋转因 子和其余数级的旋转因子,因此通过地址影射的方法计算得到每级运算所需的旋转因子
若现在正是第i级运算,每个group共有个旋转因子,则第i级第T (即为双 口 RAM读模块中的计数器T的值,0 ^ T ^ 2^-1)个旋转因子在存储器中的对应地址为 264ΧΤ。第i级运算的每个group中T的位置确定了,则所对应的旋转因子在ROM中存储 的位置也就确定了,读地址也就产生了。
ROM读地址的计算方法如下当判断相应的运算级的使能信号有效时,去判断本 级的ROM读使能romrden是否为0。若romrden为0则ROM读地址就按照romrdaddr = 2ΜΧΤ公式计算(具体实现的时候可以将公式改写为romrdaddr = T << ,其中Τ,2Μ 为常量),若romrden为1,则ROM读地址romrdaddr保持原值。这样ROM的读地址romrdaddr 就产生了。
如图6所示,本发明实施例还提供一种实现FFT及IFFT硬件实现方法,具体包括
步骤601、输入两路待运算数据,并从旋转因子存储单元中读取蝶形运算所需的旋 转因子;
步骤602,调用ALU运算单元分别对两路待运算数据进行多级FFT/IFFT蝶形运算, 并将运算后的两路数据分别存储到对应的RAM中,其中,利用状态机控制FFT/IFFT每级蝶 形运算的切换。
在本发明实施例中,最优化的实施例是选用两个双口 RAM分别存储FFT/IFFT运算 的数据。
计算待运算数据或运算后的数据在双口 RAM中的存储地址,根据计算得到的存储 地址从双口 RAM读取待运算的数据或将运算后的数据存入双口 RAM的对应存储地址;
计算每级蝶形运算所需的旋转因子在旋转因子存储单元中的存储地址,并从该旋 转因子存储单元中读出每级蝶形运算所需的旋转因子发送至该ALU运算单元。
在本发明实施例中应用基2,64点的FFT/IFFT运算为例,选用包括7个状态的状 态机来控制两路FFT的每一级蝶形运算。状态机中的7个状态,分别为(stageflag为每一 级运算的标志信号)
1)闲置状态(idle),对应于stageflag = V bOOOOOOl ;(在该状态,所述ALU运 算单元可以应用于除该装置之外的装置进行蝶形运算)
2)第一级运算状态(Magel),对应于 stageflag = 7,b0000010 ;
3)第二级运算状态 6tage2),对应于 stageflag = 7,b0000100 ;
4)第三级运算状态 6tage3),对应于 stageflag = 7,b0001000 ;
5)第四级运算状态 6tage4),对应于 stageflag = 7,b0010000 ;
6)第五级运算状态 6tage5),对应于 stageflag = 7,b0100000 ;
7)第六级运算状态(Mage6),对应于 stageflag = V bl000000。
该状态机的7个状态分别对应于每一级的蝶形运算,第一级运算到第五级运算的 每一级运算装换时,检测双口 RAM写地址的值,存储第一路运算数据(fftO)和第二路运算 数据(fftl)的两个双口 RAM共用写地址ramwraddr,若该写地址ramwraddr等于63,则产生 一个end (—个elk脉冲信号),该脉冲信号作为本级运算的结束信号。状态的跳转则是判 断end的值,若end = 1,则状态跳转到下一级运算状态。若end = 0,则仍进行本级运算。
其中,第六级运算中由于运算完的数据是写入频域处理模块中的fq_dpram,所以 第六级运算的时候,检测fq_dpram的写地址wraddr (fftO和fftl共用1个写地址)是否 等于63。若wraddr等于63,则产生一个flagout ( 一个elk脉冲信号)该信号作为FFT模 块运算的结束信号。
第六级状态跳转的判断依据是判断flagout信号是否等于1。若flagout等于1, 则状态跳转至idle,否则依然继续第六级运算。
在步骤601中,输入待运算的数据以及将从旋转因子存储单元105中读取相应的 旋转因子,其中除第一级运算的数据从外界直接输入外,其他各级待运算的数据都是从双 口 RAM中读取,具体包括;
双口 RAM的读控制具体操作为只要检测到蝶形运算级控制信号stageflag等 于7,b0000100 (第二级运算),7,b0001000 (第三级运算),7,b0010000 (第四级运算), 7’b0100000 (第五级运算),7’bl000000 (第六级运算)五个中任何一个值时(即进行第二 级到第六级的FFT/IFFT运算),检测datacnt (此为每级运算的时钟计数器,用于对每级运 算的时间进行计数)的值如果0 < datacnt ^ 64,则ramrden能置低(双口 RAM读使能低 电平有效),本级运算其余时间ramrden置高,这样本级RAMO和RAMI的读使能就产生了。
然后计算读地址ramrdaddr,读地址的公式是按照蝶形结为单位来操作的,第一个 蝶形运算结中两点写地址计算完之后,第二个蝶形运算结再计算,串行执行直到最后。
在每个蝶形运算结中两点的读地址分别为第一个点(即dataCnt
为0时) 的地址为ramrdaddr = (group-1) *M+T (因为M在每一级运算时是固定值所以可以将公式 改写成 ramrdaddr = (group-1) << i+T),第二个点(即 datacnt
为 1 时)的写地址 % ramrdaddr = (group-1) *M+but_dis tan ce+T (同样也可以夺公式改写成 ramrdaddr = (group-1) << i+but_dis tan ce+T)。读地址的计算用组合逻辑实现。
其中,Group为蝶形结计数,M为2的i次方,i为运算级数,T为蝶形结中点的计数,but_diStanCe为蝶形结中两点的间隔。因为group计数的最大值随着运算级数的增加 而减少,i,butdistance的数值随着级数增加而增加,T计数的最大值随着级数的增加而 增加,所以ramrdaddr的位宽在每一级运算仍然保证是6bits。
另外,从存储旋转因子的ROM读取旋转因子的具体实现包括
检测蝶形运算级控制信号stageflag,若stagefiag等于7,b0000010 (第一级运 算),7,b0000100 (第二级运算),7,b0001000 (第三级运算),7,b0010000 (第四级运算), 7'bOlOOOOO (第五级运算),7'blOOOOOO (第六级运算)六个值中任何一个时,开始产生ROM 读使能。当datacnt在3 66之间累加的时候,将datacnt
取反赋给romrden。(组合 逻辑实现)本级的其余时间romrden置高(ROM读使能低有效)。
读使能产生的同时需要产生读地址。由于ROM中存储第六级运算的32个旋转因 子和其余数级的旋转因子,因此通过地址影射的方法计算得到每级运算所需的旋转因子
若现在正是第i级运算,每个group共有个旋转因子,则第i级第T (即为双 口 RAM读模块中的计数器T的值,0 ^ T ^ 2^-1)个旋转因子在存储器中的对应地址为 264ΧΤ。第i级运算的每个group中T的位置确定了,则所对应的旋转因子在ROM中存储 的位置也就确定了,读地址也就产生了。
ROM读地址的计算方法如下当判断相应的运算级的使能信号有效时,去判断本 级的ROM读使能romrden是否为0。若romrden为0则ROM读地址就按照romrdaddr = 2ΜΧΤ公式计算(具体实现的时候可以将公式改写为romrdaddr = T << ,其中Τ,2Μ 为常量),若romrden为1,则ROM读地址romrdaddr保持原值。这样ROM的读地址romrdaddr 就产生了。
在步骤602中,将每级蝶形运算的数据存入双口 RAM中的具体实现包括
检测到蝶形运算级控制信号stageflag等于7’ b0000100 (第二级运算), 7,b0001000 (第三级运算),7,b0010000 (第四级运算),7,b0100000 (第五级 运算),7’ bl000000 (第六级运算)五个中任何一个值时,检测datacnt的值,当 6 ^ datacnt ^ 70 (判断写 RAM 操作的时间,从 datacnt = 6 开始写 RAM,到 datacnt = 70 写RAM结束)时,将双口 RAMO和双口 RAMI共用的写使能ramwren置低(写使能低有效), 本级运算其余时间将ramwren置高。
得到写使能的同时由M,but_distance, datacnt,再结合写操作有效时产生的 Twr, groupwr 便可以计算 ramwraddr。
ramwraddr的公式也是按照蝶形结为单位来操作的,第一个蝶形运算结中两点写 地址计算完之后,第二个蝶形运算结再计算,串行执行直到最后。在每个蝶形运算结中两点 的写地址分别为检测datacnt的值,若datacnt在6 < datacnt ^ 70时,第一个点(即 datacnt
为0时)的写地址为ramwraddr = (groupwr-1)*M+Twr (因为M为常量所以可 以将公式改写成 ramwraddr = (groupwr-1) << i+Twr),第二个点(即 datacnt
为 1 时)的写地址为 ramwraddr = (groupwr-1) *M+but_dis tan ce+Twr (因为 M 为常量所以可 以将公式改写成ramwraddr = (groupwr-1) << i+but_dis tan ce+Twr,组合逻辑产生地 址。
应用本发明提供的装置和方法,使得两路数据并行运算,并且在本发明中的ALU 运算单元是独立的运算模块,其他模块可以根据处理时间的先后顺序调用此模块,从而使得硬件资源能够达到充分利用的效果。
本发明所述的方法并不限于具体实施方式
中所述的实施例,本领域技术人员根据 本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范围。显然,本领域的 技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本 发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包 含这些改动和变型在内。
权利要求
1.一种实现FFT及IFFT运算的装置,其特征在于,包括FFT控制单元、ALU运算单元、 RAM读/写控制单元、多个RAM、旋转因子存储单元和旋转因子读取单元FFT/IFFT控制单元,用于将两路待运算数据和旋转因子输入ALU运算单元,并将ALU 输出计算结果分别存储到对应的RAM中,以及利用状态机控制FFT/IFFT每级蝶形运算的切 换;ALU运算单元,用于对两路待运算数据分别进行FFT/IFFT蝶形运算;RAM读/写控制单元,用于对所述多个RAM进行读和写控制,其中,所述多个RAM存储 ALU运算单元每级FFT/IFFT蝶形运算后的结果;旋转因子读取单元,用于计算每级蝶形运算所需的旋转因子在旋转因子存储单元中的 存储地址。
2.如权利要求1所述的装置,其特征在于,其中所述ALU运算单元独立设置在该装置 外,进行FFT/IFFT运算时,FFT/IFFT控制单元还用于调用该ALU运算单元进行FFT/IFFT蝶 形运算。
3.如权利要求1所述的装置,其特征在于,所述多个RAM为两个双口RAM,则所述RAM读 写控制单元用于对所述双口 RAM进行读和写控制,包括按照蝶形结为单位从所述双口 RAM 中读取数据以及将每级蝶形运算后的数据写入所述双口 RAM,其中,读地址(ramrdaddr)计算公式为第一个点的读地址为ramrdaddr = (group-1) << i+T,第二个点读地址为ramrdaddr =(group-1)*M+but_dis tan ce+T ;写地址(ramwraddr)计算公式为第一个点的写地址ramwraddr = (groupwr-1) < < i+Twr,第二个点的写地址 ramwraddr = (groupwr-1) < < i+but_dis tan ce+Twr ;其中,group为蝶形结计数,M为2的i次方,i为运算级数,T和Twr为2的6_i次方, but_distance为蝶形结中两点的间隔。
4.如权利要求3所述的装置,其特征在于,所述RAM读写控制单元还用于用组合逻辑实 现读地址和写地址的计算。
5.如权利要求3或4任一权项所述的装置,其特征在于,所述旋转因子读取单元用于计 算每级蝶形运算所需的旋转因子在旋转因子存储单元中的存储地址,包括旋转因子读取单 元按照蝶形结为单位从所述旋转因子存储单元中读取旋转因子,读地址(romrdaddr)计算 公式为romrdaddr = XT 或 romrdaddr = T << 264,其中 T,26—为常量。
6.如权利要求1所述的装置,其特征在于,所述状态机包括多个状态,并且每个状态对 应一级碟形运算。
7.一种实现FFT及IFFT运算的方法,其特征在于,包括输入两路待运算数据和运算所需的旋转因子,调用ALU运算单元分别对两路待运算数 据进行多级FFT/IFFT蝶形运算,并将每级蝶形运算后的两路数据分别存储到对应的RAM 中,其中,利用状态机控制每级FFT/IFFT蝶形运算的切换。
8.如权利要求7所述的方法,其特征在于,其中,所述RAM为双口RAM,则进行多级FFT/ IFFT蝶形运算之前,还进一步包括计算待运算数据或运算后的数据在双口 RAM中的存储地址,根据计算得到的存储地址 从双口 RAM读取待运算的数据或将运算后的数据存入双口 RAM的对应存储地址;计算每级蝶形运算所需的旋转因子在旋转因子存储单元中的存储地址,并从该旋转因 子存储单元中读出每级蝶形运算所需的旋转因子发送至该ALU运算单元。
9.如权利要求8所述的方法,其特征在于,包括从双口 RAM中读出待运算数据的读地址(ramrdaddr)的计算公式为 第一个点的读地址为ramrdaddr = (group-1) < < i+T,第二个点的读地址为 ramrdaddr = (group-1)*M+but_dis tan ce+T ;将运算后的数据写入双口 RAM的写地址(ramwraddr)计算公式为 第一个点的写地址ramwraddr = (groupwr-1) < < i+Twr,第二个点的写地址 ramwraddr = (groupwr-1) < < i+but_dis tan ce+Twr ;其中,group为蝶形结计数,M为2的i次方,i为运算级数,T和Twr为2的6_i次方, but_distance为蝶形结中两点的间隔。
10.如权利要求8所述的方法,其特征在于,所述计算每级蝶形运算所需的旋转因子在 旋转因子存储单元中的存储地址,该存储地址的计算公式为romrdaddr = XT 或 romrdaddr = T << 264,其中 T,26—为常量。
全文摘要
本发明公开了一种实现FFT及IFFT运算的装置和方法,该装置包括FFT/IFFT控制单元,用于将两路待运算数据和旋转因子输入ALU运算单元,并将ALU输出计算结果分别存储到对应的RAM中,以及利用状态机控制FFT/IFFT每级蝶形运算的切换;ALU运算单元,用于对两路待运算数据分别进行FFT/IFFT蝶形运算;RAM读/写控制单元,用于对所述多个RAM进行读和写控制,其中,所述多个RAM存储ALU运算单元每级FFT/IFFT蝶形运算后的结果;旋转因子读取单元,用于计算每级蝶形运算所需的旋转因子在旋转因子存储单元中的存储地址。应用本发明提供装置提高了现有技术中FFT及IFFT的速度。
文档编号G06F17/14GK102033852SQ20091017992
公开日2011年4月27日 申请日期2009年9月30日 优先权日2009年9月30日
发明者王经纬 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1