FFT计算的方法和装置 本发明技术领域
本发明涉及快速傅立叶变换(FFT)的领域并具体涉及在串行输入数据块进行FFT的方法。
相关技术的描述
在数字电信中出现FFT的新应用。使用FFT将数据调制到多正交载频的原理正被大大扩展到不同类型的通信系统,例如宽带蜂窝移动无线电系统和地面数字视频广播。
在所有这些类型的产品中,所完成的主要计算部分是FFT计算。在上述新的应用中,与大多数早期的FFT应用相反,输入数据不是全部同时可用,相反接收或多或少恒定数据流。这样使用输入缓冲区存储输入数据。当一个输入缓冲区占满时,在处理设备计算该数据并将其写回到接着被用作输出缓冲区的同一缓冲区或另一个输出缓冲区。
这种计算所带来的一个问题是从数据处理器输出的数据根据所使用的基数以与读入顺序不同的顺序写出。如果使用基数2,顺序将是位反转,即数据点将以通过反转每个点的二进制表示的下标所给出的顺序出现。对于其他的基数,而是对二进制表示地位组重新排序,同时保持每组的内部位顺序。这被称作数字反转。
通常数据点以它们可用的自然顺序串行传送到FFT设备。当已接收到一个完整的数据块时,对该数据块执行FFT计算,并将输出数据写入同一缓冲区或另一个缓冲区。接收所计算的FFT数据的设备希望以自然的顺序和相同的比率串行送来输出数据。
因为FFT算法改变数据顺序,这就意味着在将输出点输出之前必须将其重新排序。假定缓冲器的大小为N个点,这就意味着在将数据送到输出之前在该缓冲器必须执行N个读出和N个写入。
一个用于FFT计算的公知装置使用两个缓冲器,每一个缓冲器都能够交替连接到1)输入源和输出以及2)FFT计算设备。当一个缓冲器接收到输入数据并发送输出数据时,FFT计算设备处理另一个缓冲器的数据。然后,将缓冲器交换,这样就能够处理新接收的输入数据,同时从另一个缓冲器发送输出数据,以及接收新的输入数据。
在输出数据从一个缓冲器写入到输出之前,以及在该缓冲器能够读取新输入的数据之前,必须改变数据点的顺序。这种处理大大延长了处理过程。
另一个公知的解决办法是使用分开的输出缓冲器,其中处理数据从数据处理装置写入分开的输出缓冲器。以这种方式,就能够将新的输入数据写入到输出缓冲区,而不必冒改写输出数据的风险。然而,这需要额外的硬件。另外,不减少实际的计算时间。
发明概述
因此,本发明的一个目的是提供一种用于恒定数据流的FFT计算方法和装置。
本发明的另一个目的是提供一种用于恒定数据流的FFT计算方法和装置,其中在最少需要附加硬件的情况下以自然顺序接收并传送数据。
本发明的再一个目的是提供一种通过消除所必须的与FFT计算有关的位反转来减少FFT计算所必须的时间的方法和装置。
根据本发明,通过消除所必须的缓冲器内的位反转实现上述目的。这可以通过独立权利要求所公开的几个方式完成。
本发明的优选实施例基于这样的事实,即,FFT算法可以以两种方式实现:1)输入数据以自然顺序写入缓冲器并将变换数据以位反转或数字反转的顺序写回到该缓冲器,或2)数据以位反转或数字反转的顺序写到缓冲器并将变换数据以自然顺序写入该缓冲器。
在优选实施例中,输入数据以自然顺序和位反转或数字反转的顺序交替写入缓冲器。这样,当从缓冲器读取位反转或数字反转输出数据时,缓冲器可以以点以自然顺序出现的方式被编址。在这种情况下,以自然顺序将新的输入数据写入缓冲器将使一些输出数据在其输出之前被改写。于是,以位反转顺序将新的输入数据写入缓冲器,该位反转顺序是与从缓冲器读取输出数据相同的顺序。当处理完以位反转顺序接收的输入数据时,这些数据以自然顺序出现在缓冲器中。此时以自然顺序读取输出数据,由此输入数据能够以自然顺序写入缓冲器。因此,此时处理输出数据将以位反转顺序出现,等等。
当对处于位反转顺序的输入数据进行操作时需要重新安排FFT算法。使用所有的列具有相同基数的算法,这样作能够对FFT设备造成最小影响。重新排列包括简单地反转执行蝶形列的顺序,同时仍使用相同的旋转着移动的因子。这种排列使得输出数据以自然顺序出现在输出缓冲器。适用于一种结构的FFT设备也同样适用于另一种结构。如何使用反转算法对本领域的技术人员来说是公知常识。
当以自然顺序接收缓冲器的数据时,变换的数据以位反转或数字反转的顺序出现在缓冲器中。为避免将缓冲器的数据读出之前必须改变缓冲器内的数据的顺序,以位反转或数字反转的顺序寻址缓冲器。这就带来一个问题:以与以前相同的顺序将新数据读出到缓冲器将使旧数据在其输出之前被改写。因此,根据本发明,以倒序将新数据写入缓冲器。
本发明提供下面的优点:
能够以自然顺序接收按照FFT算法处理的恒定数据流,并以自然顺序发送。
以可忽略的硬件费用和增加的复杂性将FFT的执行时间减少存储器缓冲器的N个读周期和N个写周期。
这样,在减少功率消耗的情况下,FFT设备能够在每个时间单元执行相同的计算量,或可以增加FFT计算的速率。
附图的简要描述
结合附图,下面将进一步公开本发明,其中:
图1示出一个公知的用于FFT计算的缓冲器配置;
图2示出一个用于以自然顺序接收输入数据和以位反转顺序输出数据的算法结构;
图3示出一个用于以位反转顺序接收输入数据和以自然顺序输出数据的算法结构;
图4示出一个用于以自然顺序接收输入数据和以数字反转顺序输出数据的算法结构;
图5示出根据本发明第一实施例的装置;
图6示出根据本发明第二实施例的装置;
图7示出根据本发明第三实施例的装置;
实施例的详细描述
图1示出一个公知用于FFT计算的缓冲器配置,该配置用作本发明的一个部件。使用第一缓冲器1和第二缓冲器3,这两个缓冲器可以从输入源5交替接收数据。交替连接到第一和第二缓冲器的数据处理装置7对任何给定时间其所连接的缓冲器内的数据执行FFT计算。
选择装置9选择要读取输入数据的缓冲器。另一个选择装置11选择连接到数据处理装置7的缓冲器。第三选择装置13选择从其中送出输出数据的缓冲器。协调选择装置以便当前接收输入数据的缓冲器也将数据输出到输出15,同时当前不接收和发送数据的缓冲器连接到处理装置7。
在图1,输入数据被写入到第一缓冲器1,并从中读取输出数据,同时对第二缓冲器3的数据执行FFT计算。当第一缓冲器1已被新输入数据占满时,必须准备好第二缓冲器3的数据计算以便可以改变它们的功能。在下一阶段,将处理第一缓冲器1的数据,同时将输入数据写入到第二缓冲器3,并从中输出数据。当第二缓冲器3已被输入数据占满时,必须准备好第一缓冲器1的数据处理以便可以再次改变它们的功能。
由于FFT算法的特性,输出数据,即,已被数据处理装置处理的数据以位反转或数字反转的顺序出现在缓冲器。因此,必须在每个计算周期结束时完成位反转或数字反转,以便可以以自然顺序从缓冲器发送输出数据同时将新输入数据写入缓冲器。
下面,将详细描述本发明的各个实施例,每个实施例都消除了当输出数据处于输入缓冲器时输出数据所必须的位反转和数字反转。
图2示出一个以自然顺序接收输入数据的算法结构的实例。由于FFT算法的特性,输出数据将以位反转顺序出现。在该实例,使用基数-2和按时间十中抽一抽样。每个数据块包含八个点,标以x(0)到x(7)。由小写x跟随括号内的顺序号表示输入数据点。由大写X跟随括号内的顺序号表示输出数据点。
该算法导致数据点的位反转顺序。在该实例,使用八个数据点,每个数据点的二进制表示需要三位,例如,001表示数据标记序号1。将其位反转成为100,100在十进制系统等于4。
表1 三位二进制数的位反转
顺序号 顺序号 位反转 位反转
(十进制) (二进制) (二进制) (十进制)
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7
从图2的左边部分可以看出,从上面读到下面,输入数据处于自然顺序,即,x(0),x(1),x(2),等等。图右边部分的变换数据处于位反转顺序X(0),X(4),X(2),等等,如表1所示。这就是在进行FFT计算之后数据出现在缓冲器的顺序。
图3示出图2所示的一个算法的反转算法结构。在该图,以位反转顺序接收输入数据,即,x(0),x(4),x(2),等等,而输出数据以自然顺序被发送,即,X(0),X(1),X(2),等等。
图4示出使用基数-4和按时间十中抽一抽样的另一个算法的实例。数据点数为16,这就意味着需要四个二进制位表示数据点数。该算法导致输出数据的位反转顺序,即,二进制数中的前两个数字与后两个数字交换位置,因此十进制9(1001)变为6(0110)。数字反转之前和之后的点的顺序如图2所示。如果使用数字反转顺序的输入数字,输出数据将以自然顺序出现。
表2四位二进制数的数字反转
顺序号 顺序号 位反转 位反转
(十进制) (二进制) (二进制) (十进制)
0 0000 0000 0
1 0001 0100 4
2 0010 1000 8
3 0011 1100 12
4 0100 0001 1
5 0101 0101 5
6 0110 1001 9
7 0111 1101 13
8 1000 0010 2
9 1001 0110 6
10 1010 1010 10
11 1011 1110 14
12 1100 0011 3
13 1101 0111 7
14 1110 1011 11
15 1111 1111 15
图5示出根据本发明第一优选实施例的用于FFT计算的配置。使用与图1所示类似的配置,包括两个缓冲器21,23,其中一个缓冲器包含当前正由处理装置25处理的数据而另一个当前正接收输入数据并发送输出数据。
存在一个可以交替将输入数据馈送到两个缓冲器21和23的输入源27和从两个缓冲器21和23交替取出输出的输出35。第一29和第二31选择器选择要将输入数据写入的和从其中读取输出数据的缓冲器。选择器33选择处理装置25要连接的缓冲器。协调这些选择器,以便在给定的时间,一个缓冲器不但接收而且发送数据,同时处理装置25正处理另一个缓冲器的数据。在图5,第一缓冲器21是同时接收而且发送数据的缓冲器,而第二缓冲器23的数据正在被处理。
写入缓冲器21,23中的一个缓冲器的每个其他数据块以自然顺序被放置在缓冲器内。通过处理装置25从这些块产生的输出以位反转或数字反转的顺序出现在缓冲器中。因此,以位反转或数字反转方式编址缓冲器,并且写入该缓冲器的下一个块以位反转顺序写入。当输入数据以位反转顺序被送到FFT时,以自然顺序放置同一个FFT的输出并且写入该缓冲器的下一个输入数据块以自然顺序写入。
两个位反转块连接到每个缓冲器21,23:在输入端的一个输入位反转37,37’用于当输入数据处于位反转顺序时,以及一个输出位反转39,39’用于当输出数据处于位反转顺序时。自然位反转块37,37’,39,39’应适用于执行FFT算法所使用的位反转或数字反转。选择装置41,41’和43,43’分别与输入位反转37,37’和输出位反转39,39’连接和断开。
将地址发生器信号应用到当前接收来自输入27的数据并将数据发送到输出35的缓冲器21,23以确定数据应写入缓冲器和从缓冲器读出的顺序。当数据以自然顺序写入缓冲器和从缓冲器读出时,将地址发生器信号直接应用到缓冲器。当数据以位反转或数字反转顺序写入缓冲器和从缓冲器读出时,地址发生器信号通过位反转装置,位反转装置以与数据处理设备25处理数据时反转数据的相同方式反转地址发生器信号。然后以以位反转或数字反转的方式编址缓冲器。
在任何给定的时间,位反转块仅用于当前接收和发送数据的缓冲器。这样,输入位反转块37,37’可以由一个位反转块来实现,接着该位反转块在两个缓冲器21和23之间共享。
本发明的第二实施例如图6所示。使用第一81和第二83缓冲器,这两个缓冲器可以交替接收来自输入源85的数据。两个缓冲器连接到一个数据处理装置87,该数据处理装置87对缓冲器的数据进行FFT计算。
选择装置89选择要读取输入数据的缓冲器。另一个选择装置91选择处理装置87所连接的缓冲器。第三选择器93选择从其中将数据写入输出95的缓冲器。协调选择器以便当前接收输入数据的缓冲器也将数据输出到输出95,而将当前不接收和发送数据的缓冲器连接到处理装置87。
对于输入,存在一个在输入数据写入缓冲器之前反转其顺序的位反转装置97。以这种方式,输出数据以自然方式出现,由此在输出时不需要位反转。
本发明的第三实施例如图7所示。使用第一101和第二103缓冲器,这两个缓冲器可以交替接收来自输入源105的数据。两个缓冲器连接到一个数据处理装置107,该数据处理装置87对缓冲器的数据进行FFT计算。
选择装置109选择要读取输入数据的缓冲器。另一个选择装置111选择处理装置107所连接的缓冲器。第三选择器113选择从其中将数据写入输出115的缓冲器。协调选择器以便当前接收输入数据的缓冲器也将数据输出到输出115,而当前不接收和发送数据的缓冲器连接到处理装置107。
在该实施例,输出数据以其在缓冲器出现的顺序被读取。对于输出,存在一个在输出数据从缓冲器被读取之后反转其顺序的位反转装置117。以这种方式,可以以自然方式将输入数据送到缓冲器,由此对于输出数据不需要进行位反转。
图2和3所使用的FFT算法为基数-2按时间十中抽一抽样算法。图4示出基数-4按时间十中抽一抽样算法。然而,对本领域的技术人员来说,如何将本发明的构思应用到仅使用一种蝶形基数的任何FFT算法是显而易见的。