一种应用于FFT/IFFT的基4蝶形单元电路及其处理方法转让专利

申请号 : CN201110022076.0

文献号 : CN102073621B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张萌周传海吴建辉时龙兴丁小军李红戴亮罗毅周应栋

申请人 : 东南大学

摘要 :

一种应用于FFT/IFFT的基4蝶形单元电路及其处理方法,所述基4蝶形单元包括乘模块、加模块和控制模块,其中乘模块并行完成12个实数乘操作,其结果送给加模块;加模块对实数乘运算结果执行三个阶段的加/减法运算,控制模块控制加模块中加/减法器在各个阶段的操作数选择和操作符选择、运算结果的保存以及产生输出使能,通过复用2个加/减法器完成基4蝶形单元中的全部加/减法运算,大大地减少硬件资源。同时本发明在乘模块和加模块之间插入中间寄存器,构造乘模块和加模块在整体上的流水线处理结构,提高基4蝶形运算单元的运算速度,从而提高FFT/IFFT的处理速度。

权利要求 :

1. 一种应用于FFT/IFFT的基4蝶形单元电路,FFT/IFFT单元向基4蝶形单元电路提供输入使能信号、4路输入数据A、B、C、D以及旋转因子,其特征是基4蝶形单元电路包括一个加模块(801),一个乘模块(803)、中间寄存器组(813)和一个控制模块(802),一路输入数据A直接提供给加模块(801),其余输入数据B、C、D和旋转因子输入乘模块(803),乘模块(803)的运算结果提供给中间寄存器组(813),再输出至加模块(801),控制模块输出控制信号至加模块(801),并在完成加/减法运算完成时输出使能信号至FFT/IFFT单元,加模块(801)输出最终运算结果,乘模块(803)还输出乘运算已完成信号至FFT/IFFT单元、加模块(801)、控制模块(802)和中间寄存器组(813),其中加模块(801)包括第一至第四4个数据选择器、第一加寄存器组(804)、第二加寄存器组(805)和加/减法器组(810),控制模块(802)分别输出控制信号至各个数据选择器、加寄存器组和加/减法器组,中间寄存器组(813)输出至第一数据选择器(806),输入数据A提供给第一加寄存器组(804),再进入第二数据选择器(807),第二加寄存器组(805)输出至第三数据选择器(808),第一数据选择器(806)、第二数据选择器(807)和第三数据选择器(808)的输出共同输入至第四数据选择器(809),第四数据选择器(809)输出至加/减法器组(810),加/减法器组(810)由2个加/减法器组成,分别输出加/减运算结果的实部和虚部,其运算结果还返回给第一加寄存器组(804)和第二加寄存器组(805)。

2.根据权利要求1所述的一种应用于FFT/IFFT的基4蝶形单元电路,其特征是第一数据选择器(806)由4个3选1选择器构成,第二数据选择器(807)由4个2选1选择器构成,第三数据选择器(808)由4个4选1选择器构成,第四数据选择器(809)由4个3选1选择器构成。

3.权利要求1或2所述的应用于FFT/IFFT的基4蝶形单元电路的处理方法,其特征是控制模块(802)通过计数器计数的方式产生加模块(801)中各个数据选择器的控制信号、加/减法器组的运算符和各个加寄存器组的使能信号,控制加模块(801)中加/减法器的操作数选择、操作符选择和运算结果的保存,并产生输出使能;加模块(801)在控制模块(802)的控制下,对乘模块(803)运算结果执行加/减法运算,利用2个加/减法器完成基

4蝶形运算的全部加/减法运算,得到最终运算结果;乘模块(803)对输入数据B、C、D进行并行的实数乘法运算;当乘模块(803)的乘运算完成信号有效时,控制模块(802)开始工作,控制模块(802)内部的计数器启动计数,根据计数器的计数值产生加模块(801)需要的控制信号:当计数值为0~2时,控制信号控制第四数据选择器(809)选通第一数据选择器(806),控制第一数据选择器(806)选择待运算数据,控制加/减法器组(810)执行加法运算或减法运算,使能第一加寄存器组(804)寄存加/减法器组(810)的运算结果;

当计数值为3~6时,控制信号控制第四数据选择器(809)选通第二数据选择器(807),控制第二数据选择器(807)选择待运算数据,控制加/减法器组(810)执行加法运算或减法运算,使能第二加寄存器组(805)寄存加/减法器组(810)的运算结果;

当计数值为7~10时,控制信号控制第四数据选择器(809)选通第三数据选择器(808),控制第三数据选择器(808)选择待运算数据,控制加/减法器组(810)执行加法运算或减法运算,使输出使能有效。

说明书 :

一种应用于FFT/IFFT的基4蝶形单元电路及其处理方法

技术领域

[0001] 本发明属于数字信号与系统技术领域,涉及快速傅里叶变换FFT以及快速傅立叶逆变换IFFT,以及基4蝶形电路,具体涉及采用基4算法或含有基4算法的分裂基算法的FFT/IFFT处理,为一种应用于FFT/IFFT的基4蝶形单元电路及其处理方法。

背景技术

[0002] 在现代无线通信中,频谱资源越来越紧缺,提高频谱利用率一直是人们关注的焦点之一,通信系统正采用比以前更加复杂的调制信号。正交频分复用OFDM是一种高效的多载波调制技术,具有非常高的频谱利用率。目前,OFMD广泛应用于非对称的数字用户环路ADSL、ETSI标准的数字音频广播DAB、地面数字视频电视DVB-T、高清晰度电视HDTV、无线局域网WLAN等。
[0003] OFDM利用离散傅立叶反变换和离散傅里叶变换(IDFT/DFT)代替多载波调制和解调的实现,即在发射端对待调制数据进行IFFT运算来实现调制,接收端对接收到的数据进行FFT运算实现解调,从而大大降低了系统实现的复杂度,因此调制解调的核心是快速傅立叶运算单元。
[0004] 在OFDM系统中,为了保证数据的精度,其核心模块FFT/IFFT运算的数据格式采用单精度浮点数或双精度浮点数。由于浮点数格式的加/减法运算的复杂度以及关键路径的延时远大于相同位数的定点数加/减法运算,而FFT/IFFT运算中需要进行大量的加法运算,使得需要大量的硬件资源,因此FFT/IFFT的实现可以通过减少浮点数加/减法器的数量来减少芯片面积。
[0005] 通常,FFT运算的处理长度为2n,可以通过基2蝶形来实现FFT/IFFT运算,而基4n n蝶形只能实现长度为4 的FFT/IFFT运算,无法单独实现长度为128,512等非4 的FFT/IFFT运算。但是基4蝶形与基2蝶形相比,其运算速度快,运算级数少,具有较大的优势,对于长n
度非4 的FFT/IFFT运算可以采用分裂基算法,即混合使用基2蝶形与基4蝶形结构以减少FFT/IFFT级数和提高运算速度。因此采用基4算法或分裂基算法的FFT/IFFT处理单元具有较大的优势。关于FFT算法中的基4算法和分裂基算法可以参考《快速算法》(国防科技大学出版社,1993年12月)中的“基4-FFT算法”以及“分裂基算法”。
[0006] 目前基4蝶形结构往往采用加/减法器全并行结构来提高FFT/IFFT的处理速度,但是需要大量的加/减法器。本发明提出了一种加/减法器全串行的基4蝶形单元电路,该结构通过对加/减法器的复用大大减少了加/减法器的数量,同时在电路中插入寄存器实现流水线结构,提高基4蝶形单元的处理速度。

发明内容

[0007] 本发明要解决的问题为:在FFT/IFFT处理系统中,采用基4算法或分裂基算法的FFT/IFFT处理单元具有较大的优势,但目前基4蝶形结构采用加/减法器全并行结构来提高FFT/IFFT的处理速度,需要大量的加/减法器。
[0008] 本发明的技术方案为:一种应用于FFT/IFFT的基4蝶形单元电路,FFT/IFFT单元向基4蝶形单元电路提供输入使能信号、4路输入数据A、B、C、D以及旋转因子,基4蝶形单元电路包括一个加模块,一个乘模块和一个控制模块,一路输入数据A直接提供给加模块,其余输入数据B、C、D和旋转因子输入乘模块,乘模块的运算结果提供给中间寄存器组,再输出至加模块,控制模块输出控制信号至加模块,并在完成加/减法运算完成时输出使能信号至FFT/IFFT单元,加模块输出最终运算结果,乘模块还输出乘运算已完成信号至FFT/IFFT单元、加模块、控制模块和中间寄存器组,其中加模块包括第一至第四4个数据选择器、第一加寄存器组、第二加寄存器组和加/减法器组,控制模块分别输出控制信号至各个数据选择器、加寄存器组和加/减法器组,中间寄存器组输出至第一数据选择器,输入数据A提供给第一加寄存器组,再进入第二数据选择器,第二加寄存器组输出至第三数据选择器,第一数据选择器、第二数据选择器和第三数据选择器的输出共同输入至第四数据选择器,第四数据选择器输出至加/减法器组,加/减法器组由2个加/减法器组成,分别输出加/减运算结果的实部和虚部,其运算结果还返回给第一加寄存器组和第二加寄存器组。
[0009] 第一数据选择器由4个3选1选择器构成,第二数据选择器由4个2选1选择器构成,第三数据选择器由4个4选1选择器构成,第四数据选择器由4个3选1选择器构成。
[0010] 上述的应用于FFT/IFFT的基4蝶形单元电路的处理方法,控制模块通过计数器计数的方式产生加模块中各个数据选择器的控制信号、加/减法器组的运算符和各个加寄存器组的使能信号,控制加模块中加/减法器的操作数选择、操作符选择和运算结果的保存,并产生输出使能;加模块在控制模块的控制下,对乘模块运算结果执行加/减法运算,利用2个加/减法器完成基4蝶形运算的全部加/减法运算,得到最终运算结果;乘模块对输入数据B、C、D进行并行的实数乘法运算;当乘模块的乘运算完成信号有效时,控制模块开始工作,控制模块内部的计数器启动计数,根据计数器的计数值产生加模块需要的控制信号:
[0011] 当计数值为0~2时,控制信号控制第四数据选择器选通第一数据选择器,控制第一数据选择器选择待运算数据,控制加/减法器组执行加法运算或减法运算,使能第一加寄存器组寄存加/减法器组的运算结果;
[0012] 当计数值为3~6时,控制信号控制第四数据选择器选通第二数据选择器,控制第二数据选择器选择待运算数据,控制加/减法器组执行加法运算或减法运算,使能第二加寄存器组寄存加/减法器组的运算结果;
[0013] 当计数值为7~10时,控制信号控制第四数据选择器选通数据选择器,控制数据选择器选择待运算数据,控制加/减法器组执行加法运算或减法运算,使输出使能有效。
[0014] 本发明为了减少FFT/IFFT中的基4蝶形单元中加/减法器的数量,提出一种应用于FFT/IFFT的基4蝶形单元电路结构,该结构能有效的减少加/减法器的数量,同时能提高处理速度。本发明中所实现的基4蝶形单元的数据格式为单精度浮点或双精度浮点数,具有较高的精度。
[0015] 本发明只需要2个加/减法器,通过对2个加/减法器的复用,减少了加/减法器的数量。
[0016] 按时间抽取的基4-FFT的推导公式为:
[0017]P 2P 3P
[0018] 其中,A、B、C、D为基4蝶形运算单元的四路输入数据,W、W 和W 为旋转因子,A’、B’、C’、D’为蝶形运算单元的四路输出数据。对于IFFT运算同样可以采用公式(1)来计算,只需要对送入FFT的数据进行共轭,对FFT输出的数据进行共轭并除以点数,其结果P 2P 3P即为IFFT运算结果。其中BW、CW 和DW 为复数乘法结果,分别需要进行四次实数乘法和
2次实数加/减法运算。将乘法操作和加/减法操作相分离,以单精度浮点数为例,需要对尾数进行24次移位相加,计算完成后得到12个结果,完成整个乘法运算一共需要24个周期和12个实数乘法器。
[0019] 完成乘法运算后开始进行加/减法运算。第一阶段需要3个时钟周期,将实数乘P 2P 3P法运算得到的12个结果进行加/减法运算分别得到BW、CW 和DW ;第二阶段需要4个P 2P 3P 2P 2P P 3P
时钟周期,对A、BW、CW 和DW 进行加/减法运算得到(A+CW )、(A-CW )、(BW+DW )和P 3P 2P 2P P 3P P 3P
(BW-DW )。第三个阶段需要4个时钟周期,对(A+CW )、(A-CW )、(BW+DW )和(BW-DW )进行加/减法运算得到最后的运算结果A’、B’、C’、D’。完成基4蝶形的整个加/减法运算一共需要11个时钟周期和2个加/减法器。
[0020] 由此,通过对2个加/减法器的复用,虽然使得加/减法运算时钟周期数从原来全并行结构的3个时钟周期增加至11个时钟周期,但该时钟周期数仍然小于乘法运算的24个时钟周期。由于乘法运算和加法运算之间具有一定的独立性,因此可以使乘法运算和加/减法运算并行工作,即完成第一组数的乘法运算后,开始进行第一组数的加法运算,同时开始第二组数的乘法运算,第一组数的加法运算在第二组数的乘法运算完成前完成,使基4蝶形运算时钟周期数缩短为乘法运算的时钟周期数。
[0021] 本发明中通过对2个加/减法器的复用,大大减少了加/减法器的数量,在定点数表示的位数≥11或浮点数表示的尾数位数≥11的情况下,实数乘运算的时钟周期数≥11,可以通过寄存器构造流水线处理的结构,使基4蝶形运算的时钟周期数保持为实数乘运算的时钟周期数,省去了加/减法运算的时间,提高FFT/IFFT的处理速度。

附图说明

[0022] 图1为基4蝶形单元应用于FFT/IFFT处理器的结构图。
[0023] 图2为现有的加/减法器全并行的基4蝶形单元结构。
[0024] 图3为本发明中基4蝶形单元的结构。
[0025] 图4为本发明乘模块中的实数乘法关系图。
[0026] 图5为本发明中控制模块的具体实施结构图。
[0027] 图6为本发明中加模块的具体实施结构图。

具体实施方式

[0028] 如图3,为本发明的基4蝶形单元电路的具体实施示意图,包括一个加模块801,一个乘模块803和一个控制模块802,一路输入数据A直接输入加模块801,其余输入数据B、C、D和旋转因子输入乘模块803,乘模块803的运算结果输入中间寄存器组813,再输出至加模块801,控制模块输出控制信号至加模块801,并输出使能信号至FFT/IFFT单元,加模块801输出最终运算结果,乘模块803还输出乘运算完成信号至FFT/IFFT单元、加模块801、控制模块802和中间寄存器组813,其中加模块801包括第一至第四4个数据选择器、第一加寄存器组804、第二加寄存器组805和加/减法器组810,控制模块802分别输出控制信号至各个数据选择器、各个加寄存器组和加/减法器组,中间寄存器组813输出至第一数据选择器806,输入数据A输入第一加寄存器组804,再输入第二数据选择器807,第二加寄存器组805输出至第三数据选择器808,第一数据选择器806、第二数据选择器807和第三数据选择器808的输出共同输入第四数据选择器809,第四数据选择器809输出至加/减法器组810,加/减法器组810由2个加/减法器组成,分别输出加/减法运算结果的实部和虚部,其运算结果还返回输入第一加寄存器组804和第二加寄存器组805。
[0029] 为了更好地理解本发明,下面结合具体实施方式对本发明的基4蝶形单元电路中的各个模块及其处理方法进行更为详细的描述。
[0030] 图1为本发明基4蝶形单元应用于FFT/IFFT处理器的结构图,待运算数据为A、P 2P 3PB、C、D,作为输入数据输入基4蝶形单元电路,旋转因子为W、W 、W ,当输入使能有效时,启动基4蝶形单元;当乘模块的乘运算完成信号有效时,输入下一组数据;当输出使能有效时,将最终运算结果A`、B`、C`、D`写入运算结果RAM中。
[0031] 图2为现有的加/减法器全并行基4蝶形单元的结构,图中“j”的方框部分表示该数据与虚数j相乘。以单精度浮点数为例,加/减法器全并行基4蝶形单元完成一次复数乘法需要24个时钟周期的实数乘和1个时钟周期的加运算,一次蝶形运算需要25+1+1共计27个时钟周期。虽然该结构也可以通过时序调整以流水线的方式进行运算工作,但是仍然需要22个加法器。
[0032] 图3是本发明基4蝶形单元一种具体实施方式的结构图。在本实施例中,控制模块802根据乘模块803的完成乘运算信号产生加模块801中的加/减运算信号、第一加寄存器组使能信号、第二加寄存器组使能信号,以及第一至第四数据选择器的控制信号,来控制加模块801中的各个功能部件的工作。
[0033] 图4为乘模块803中的12个实数乘法器,采用常见的移位相加的方式来实现,对1P 2P 3P * *
输入数据B、C、D,旋转因子W 、W 、W 进行乘法运算,其中 R表示该数的实部,表示该数,* * * * *
I表示该数的虚部,R1和 R2分别表示相乘得到的两个实部,I1和 I2分别表示相乘得到的两个虚部。其工作过程描述如下:当输入有效时,开始进行实数乘法运算;当乘模块完成乘法运算时,产生乘运算完成信号给FFT/IFFT单元,通知输入下一组数据,继续进行下一组的乘法运算;同时利用乘运算完成信号将实数乘运算结果寄存到中间寄存器组、将输入数据A存入第一加寄存器组804中,以及启动控制模块802。
[0034] 图5为控制模块802的具体实现结构,当乘运算完成信号有效时,启动控制模块内部的计数器,该计数器的计数值CNT从0计数到10,然后计数器清零,等待下一次乘运算完成信号来重新启动计数。控制模块802利用计数值来产生加模块中各数据选择器控制信号、各加寄存器使能信号、加/减法器的操作符和输出使能信号。
[0035] 图6为加模块801的具体实现结构,其中第一数据选择器806由4个3选1选择器构成,第二数据选择器807由4个2选1选择器构成,第三数据选择器808由4个4选1选择器构成,第四数据选择器809由4个3选1选择器构成;各个加寄存器组分别对运算结果进行存储,加/减法器根据控制模块产生的操作符执行加法运算或减法运算。
[0036] 整个加模块801在控制模块802的控制信号下分为3个阶段进行工作,根据计数器的计数值对当前阶段进行判断,产生第四数据选择器809控制信号。当计数值CNT为0、1、2时,第四数据选择器809控制信号为100,选通第一数据选择器806;当计数值CNT为3、
4、5、6时,第四数据选择器809控制信号为010,选通第二数据选择器807;当计数值CNT为
7、8、9、10时,第四数据选择器809控制信号为001,选通第三数据选择器808。下面结合图
5和图6说明各个阶段的工作过程:
[0037] 第一阶段:当CNT为0时,第一数据选择器806控制信号为100,选通数据BWPR1、P P PBWR2、BWI1、BWI2,同时加/减操作符为00,加/减法器组810中的2个加/减法器,第一加/减法器811和第二加/减法器812执行加法运算。同时第一加寄存器组804使能信号P P
为100,将运算结果存入第一加寄存器组804,记为BWR和BWI,也就是将运算结果的实部和虚部存入第一加寄存器组,同理可以得到CNT为1和2时的情况。
[0038] 第二阶段:当CNT为3时,第二数据选择器807控制信号为10,选通数据AR、AI、2P 2P
CW R、CW I,同时加/减操作符为00,加/减法器组810中的2个加/减法器执行加法运算。
同时第二加寄存器组805使能信号为1000,将运算结果存入第二寄存器805,记为AC0R和AC0I,也就是将运算结果的实部和虚部存入第二加寄存器。当CNT为4时,第二数据选择器
807控制信号仍为10,加/减操作符为11,第一加/减法器811和第二加/减法器812执行减法运算,第二加寄存器组805使能信号为0100,将运算结果存入第二寄存器组,记为AC1R和AC1I。同理可以得到CNT为5和6时的情况。
[0039] 第三阶段:当CNT为7时,第三数据选择器808控制信号为1000,选通数据AC0R、BD0R、AC0I、BD0I,同时加/减操作符为00,加/减法器组810中的2个加/减法器执行加法运算,输出使能信号有效,得到运算结果A’;当CNT为8时,第三数据选择器808控制信号为0100,选通数据AC1R、BD1I、AC1I、BD1R,同时加/减操作符为10,第一加/减法器811和第二加/减法器812分别执行减法和加法操作,输出使能有效,得到运算结果B’;当CNT为9时,第三数据选择器808控制信号为0010,选通数据AC0R、BD1R、AC0I、BD0I,同时加/减操作符为11,第一加/减法器811和第二加/减法器812执行减法操作,输出使能有效,得到运算结果C’;当CNT为10时,第三数据选择器808控制信号为0001,选通数据AC1R、BD0I、AC1I、BD0R,同时加/减操作符为01,第一加/减法器811和第二加/减法器812分别执行加法和减法操作,输出使能有效,即得到运算结果D’。至此整个加/减法运算完成,控制模块802中的计数器清零并停止工作,等待下一个乘运算完成信号的有效。
[0040] 从具体实施方式可以看出,本发明中加/减法器的复用使得需要11个周期来完成基4蝶运算的全部加/减法运算,而在定点数表示的位数≥11或浮点数表示的尾数位数≥11的情况下,实数乘运算的时钟周期数≥11,因此可通过增加控制电路、数据选择器和中间寄存器,使得基4蝶形运算的时钟周期数从图2的全并行基4蝶形单元的TMULT+3个时钟周期减少至TMULT个时钟周期,其中TMULT为完成一次实数乘法的时钟周期数,提高了基4蝶形的运算速度,同时加/减法器数量从22个减少至2个,大大减少了硬件资源。