CN1914607A - Fft结构和方法 - Google Patents
Fft结构和方法 Download PDFInfo
- Publication number
- CN1914607A CN1914607A CNA2004800413795A CN200480041379A CN1914607A CN 1914607 A CN1914607 A CN 1914607A CN A2004800413795 A CNA2004800413795 A CN A2004800413795A CN 200480041379 A CN200480041379 A CN 200480041379A CN 1914607 A CN1914607 A CN 1914607A
- Authority
- CN
- China
- Prior art keywords
- fft
- value
- module
- storer
- transposition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
- H04L27/2651—Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement
Abstract
快速傅立叶变换(FFT)的硬件实现和方法,提供了高效的FFT处理,同时使集成电路(IC)中所需的管芯面积最小。该FFT硬件可实现N点FFT,其中N=rn是基数(r)的函数。该硬件实现包括一个采样存储器,该采样存储器有N/r行,每行存储r个采样。一个旋转因子存储器可以每行存储k个旋转因子,其中0<k<r表示可用的复数旋转乘法器的数目。一个FFT模块从存储器读取r行,对采样进行r点复数FFT,然后进行旋转乘法,并将结果写入大小为r×r的寄存器库。寄存器库的内容以转置的次序写回采样存储器。对每一级重复这一操作N/r2次,然后对n级进行重复,以产生N点FFT。
Description
相关申请的交叉引用
本申请要求2003年12月5日提交的、题目为“NOVELARCHITECTURE FOR IMPLEMENTING HIGHSPEED FFTS INHEARDWEAR”的美国临时申请No.60/527,196的优先权,其在此全部并入。
发明领域
本公开内容涉及信号处理领域,具体涉及用于实现快速傅立叶变换(FFT)的装置和方法。
技术背景
傅立叶变换可用于将时域信号映射至其频域对应部分。相反地,傅立叶反变换可用于将频域信号映射至其时域对应部分。傅立叶变换对于时域信号的频谱分析尤其有用。此外,通信系统,如实现正交频分复用(OFDM)的系统,可利用傅立叶变换的性质,从多个线性分布的音调生成多个时域符号,并从这些符号中恢复出频率。
采样数据系统可实现离散傅立叶变换(DFT),以使处理器对预定数目的采样进行变换。然而,DFT计算强度大,要求大量的处理能力。进行N点DFT所要求的计算量级是N2,表示为O(N2)。很多系统中,专用于进行DFT的处理能力量会减小可用于进行其他系统操作的处理能力量。此外,实时操作的系统,在分配用于计算的时间内,可能没有足够的处理能力来进行预期大小的DFT。
快速傅立叶变换(FFT)是傅立叶变换的离散实现,和DFT实现相比,其以运算明显相对较少的方法来实现傅立叶变换。依赖于具体实现,进行基r的FFT所要求的计算量通常量级为N×logr(N),表示为O(Nlogr(N))。
过去,执行FFT的系统可采用通用处理器或单独的数字信号处理器(DSP)来进行FFT运算。然而,系统逐步结合专门用于实现系统所要求的大部分功能的专用集成电路(ASIC)。在ASIC上实现系统功能使结合多个集成电路所需的芯片数目和粘合逻辑都最小化。减少的芯片数目通常使得设备有较小的物理封装,而不牺牲任何功能。
ASIC管芯内的面积有限,所以,在ASIC上实现的功能块需要在大小、速度和功率方面都进行优化,以提高ASIC总体设计的功能。专用于FFT的资源量应该最少化,以限制专用于FFT的可用资源的百分比。然而,需要将足够的资源专用于FFT,以保证进行变换的速度足以支持系统需求。此外,FFT模块消耗的功率量需要降到最低,以使供电需求和相关的散热最小。因此,需要优化在集成电路如ASIC中实现的FFT结构。
发明内容
FFT硬件实现和方法,提供了高效的FFT处理,同时使集成电路(IC)上所需的管芯面积最小。该FFT硬件可用于实现N点FFT,其中N=rn是基数(r)的函数。该硬件实现包括一个采样存储器,该采样存储器有N/r行,每行存储r个采样。用于存储旋转因子的存储器每行有k个旋转因子,其中0<k<r表示可用的复数旋转乘法器的数目。一个FFT模块从存储器读取r行(行地址是FFT级的函数),对每行的采样进行同址r点复数FFT,然后进行旋转乘法(最后一级除外),并将结果写入大小为r×r的矩阵存储器(寄存器库)。大小为r×r的矩阵存储器的内容,以转置的次序,或者也可以选择不转置,写回到采样存储器。对每一级重复这一操作N/r2次,然后对n级进行重复,以产生N点FFT。
一方面,公开了一种用于确定rn点、以r为基数的FFT的方法。该方法包括:把要进行变换的采样写入存储器,所述存储器每行有r个采样;从所述存储器读取r行;确定r次以r为基数的部分FFT,以产生r2个部分FFT值;对所述r2个部分FFT值应用旋转因子,以产生r2个加权后的部分FFT值;将所述r2个加权后的部分FFT值写入寄存器块;对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值;将所述转置值写入所述存储器;根据存储器的内容,确定FFT值。
另一方面,公开了一种用于确定rn点、以r为基数的FFT的方法。该方法包括:将要进行变换的采样写入每行r个采样的存储器,初始化一个级值,初始化一个块值,处理一个FFT级,重复处理FFT级n次,根据存储器的内容确定FFT的值。该处理FFT级包括a)根据级值确定块数,b)从存储器获取r行,c)确定r个r基部分FFT以产生r2个部分FFT值,d)对r2个部分FFT值应用旋转因子以产生r2个加权的部分FFT值,e)对寄存器块中的r2个加权的部分FFT值进行转置,以产生转置的值,f)将转置的值写入存储器,g)根据块和级的值重复步骤b)到f),并增加级的值。
另一方面,公开了一种用于确定rn点、以r为基数。该方法包括将要进行变换的采样写入每行r个采样的存储器,a)初始化一个级计数器,b)初始化一个块计数器以及一个部分FFT计数器,c)根据级、块和部分FFT计数器的值,从存储器获取r行,d)确定r个r基部分FFT以产生r2个部分FFT值,e)对r2个部分FFT值应用旋转因子以产生r2个加权的部分FFT值,f)将r2个加权的部分FFT值写入寄存器块,g)对寄存器块中的r2个加权的部分FFT值进行转置,以产生转置的值,i)将转置的值写入存储器,j)更新部分FFT计数器和块计数器,k)根据块计数器和部分FFT计数器的值重复步骤c)到j),l)更新级计数器的值,m)根据级计数器的值重复步骤b)到k),以及根据存储器的内容确定FFT的值。
另一方面,公开了一种rn点、以r为基数的FFT装置。该装置包括,存储器,用于存储每个存储器行r个采样的rn个采样;FFT引擎,用于对来自存储器的r行个采样进行r个r点FFT部分FFT;寄存器库,其有r2个r行r列的寄存器,用于接收来自FFT引擎的输出;以及转置模块,用于对寄存器库中的值进行转置,并将转置后的值写入存储器中FFT引擎处理的r行。
附图说明
本公开内容的特点、目的和优点通过以下结合附图和具体实施例的详细描述将变得显而易见,其中相同的组件有相同的参考编号:
图1是8点、以为2基数的FFT的流程图。
图2是FFT模块的实施例的功能框图。
图3A-3D是FFT过程的实施例流程图。
图4是8点、以为2基数的FFT的一个实施例的多级的存储器内容的功能框图。
图5A-5B是采用这里公布的FFT模块的OFDM系统组件的功能框图。
具体实施方式
本申请公布了一种适用于FFT或反向FFT(IFFT)的硬件结构,集成有该FFT模块的设备,以及执行FFT或IFFT的方法。该FFT结构是通用的,从而能够实现任何基数的FFT。该FFT结构使得用于执行FFT的循环数目最小,同时保持小的芯片面积。具体而言,该FFT结构配置存储器和寄存器空间,以便于对执行同址(in place)FFT时所进行的存储器存取进行优化。该FFT结构提供额外的实施灵活性,根据具体的设计限制,允许不同的基数和复数乘法器数目。在对速度敏感而对管芯面积不甚敏感的实施中,该FFT结构可用额外的复数乘法器和较高的基数来实现。在对管芯面积较敏感的实施中,可以降低基数和复数乘法器的数目。
该FFT结构包括一个采样存储器,其存储器行宽足以存储数量等于FFT基数的采样。因此,该采样寄存器有N/r行,每行r个采样,其中N表示FFT的大小,r表示FFT的基数。一个FFT块用于从存储器获取多行,并对每行的采样进行r点FFT。FFT块获取数量等于FFT基数的行,但是对每单个行的采样进行r点FFT。
FFT块将r点FFT的结果写入一个寄存器库,其用于存储r2个采样。和寄存器库以及旋转因子存储器相连的复数乘法器用合适的旋转因子对FFT结果进行加权。加权后的因子返回同一寄存器。
先对寄存器库的内容进行转置,然后将其写入采样存储器中原来的行。寄存器库中数值的转置使得FFT可同址进行,其通过保持采样存储器中同一行的FFT采样的关系来实现。采样存储器中的采样经过获取、处理并返回给采样存储器,这个过程持续的级数足以进行N点FFT变换。
首先,在讨论所公开的结构中基于硬件的折衷前,有必要对不同FFT算法的算术复杂度进行研究。我们研究了基数为2、4、8、16的库利-图基(Cooley-Tukey)算法和分裂基算法。没有考虑基于质因子(prime factor)的算法,因为其结构是不规则的,并且对量化更敏感,但是,这种算法的复杂度可能低于基于库利-图基的算法。
在此,依据所需的实际实数乘法和加法的次数,来估计算法的复杂度。假定复数乘法等于四次实数乘法和两次实数加法。
基数为r的算法所需的实数乘法和加法的次数可以这样确定,这种算法把rn点DFT分裂为r个rn-1点DFT,为此要进行(rn-1-1)·(r-1)次旋转乘法,并由rn-1次r点FFT作进一步处理。图1是示范该结构的8点、以2为基数的FFT的信号流示例。
用Mn r表示rn点FFT所需的实数乘法次数,用An r表示其所需的实数加法次数,则处理复杂度由下面的递归式定义:
初始条件为:
用类似的方式估计分裂基算法的复杂度。分裂基算法把N点FFT分裂为一个大小为N/2的FFT和两个大小为N/4的FFT,为此必须计算一些旋转乘法。该算法的复杂度由下面递归式定义:
根据这些递归式,可以列出和比较几种常用FFT算法的复杂度。表1和表2汇总了常用FFT算法的复杂度。这两个表中空的单元格表示未进行估计的配置。
表1:不同FFT算法的实数乘法
FFT大小 | 基数2 | 基数4 | 基数8 | 基数16 | 分裂基 |
64 | 452 | 324 | 260 | 248 | |
128 | 1156 | 660 | |||
256 | 2820 | 2052 | 1668 | 1656 | |
512 | 6660 | 4100 | 3988 | ||
1024 | 15364 | 11268 | 9336 | ||
2048 | 34820 | 21396 | |||
4096 | 77828 | 57348 | 49156 | 48132 | 48248 |
8192 | 172036 | 107412 |
表2:不同FFT算法的实数加法
FFT大小 | 基数2 | 基数4 | 基数8 | 基数16 | 分裂基 |
64 | 994 | 930 | 930 | 892 | |
128 | 2370 | 2122 | |||
256 | 5506 | 5122 | 5058 | 4924 | |
512 | 12546 | 11650 | 11210 | ||
1024 | 28162 | 26114 | 25148 | ||
2048 | 62466 | 55754 | |||
4096 | 137218 | 126978 | 126978 | 125442 | 122428 |
8192 | 299010 | 107412 |
表1和2所示的算术复杂度不能完全反映用不同算法实现FFT的硬件要求。还需要考虑从存储器存取数据和旋转因子及将数据写入存储器的要求。下表示出了基数大小不同的不同算法所要求的存储器存取次数(只计算数据存取)。数据存取的次数计算方式如下:对于N点FFT/IFFT的基数r实现,总的级数是logr(N),每级需要2N次读和写操作,结果是,2Nlogr(N)次存储器复数采样存取操作。
表3:不同FFT算法的存储器存取
FFT大小 | 基数2/分裂基 | 基数4 | 基数8 | 基数16 |
64 | 768 | 384 | 256 | |
128 | 1792 | |||
256 | 4096 | 2048 | 1024 | |
512 | 9216 | 3072 | ||
1024 | 20480 | 10240 | ||
2048 | 45056 | |||
4096 | 98304 | 49152 | 32768 | 24576 |
8192 | 212992 |
对FFT硬件实现的分析表明,循环方面主要的运算开支花在了存储器存取上。存储器存取的次数随着基数的增加而减小。然而,对许多应用而言,存取一个复数采样/循环可能不够。一个简单的例子说明了潜在的问题。
考虑在符号周期为4μs、时钟速率为40MHZ的正交频分复用(OFDM)系统中实现64点FFT这一问题。这样的系统可以是,例如,时钟为40MHZ的IEEE 802.11a系统。4μs的OFDM符号周期和40MHZ时钟速率结合意味着符号间有160个循环。
首先,研究用基数为2的算法实现64点FFT所需的运算量。如上表所示,所需的总存储器存取次数是768。因此,使用每个循环只有一次采样读和写的存储器来实现基数为2的算法最少需要768个循环,这大约是可用于计算的循环的5倍。分裂基算法也有同样的问题,其需要的存储器存取次数与基数为2的算法相当。
然而,对于使用基数为4的64点FFT,存储器存取的次数是384。这种情况较好,但是仍远大于可用的循环数。进一步增加FFT算法的基数,随着FFT的级数下降,所需的存储器存取次数减少。
可以通过使用具备并行读写能力的存储器来获得任何基数算法的高速实现。对一个特定的基数为r的算法,在一个周期可存取(无论是读还是写)r个值的存储器结构会提高算法的吞吐量。概念上而言,并行存取可以理解成RAM每行有r个字。然而,为了获得这种存储器结构的最大益处,计算r点FFT所需的r个采样,在算法的每一级,都必须位于同一行。这可以如下实现:读取采样存储器的r行,计算r个r点FFT,将结果转置后写入采样存储器。转置操作可以在有r2个寄存器的矩阵存储器中进行。随着基数r的增加,FFT引擎的大小和矩阵存储器的大小也增加。对于特定的实现,可以在面积大小和速度间进行折衷。
图2是FFT模块200的实施例的功能框图。FFT模块200可以通过很小的改变而作为IFFT模块使用,这是因为正变换和反变换具有对称性。FFT模块200可以实现在单个IC管芯上,也可以作为ASIC的一部分实现。或者,FFT模块200可以用若干个相互通信的组件实现。此外,FFT模块200不限于特定的FFT结构。例如,FFT模块200可用于进行时间抽取或频率抽取FFT。
FFT模块包括存储器210,其用于存储要进行变换的采样。此外,因为FFT模块用于进行同址计算的变换,所以,存储器210用于存储FFT每级的结果和FFT模块200的输出。
存储器210的大小可部分地基于FFT的大小和FFT的基数的大小来选择。对于以r为基数的N点FFT,其中N=rn,存储器210的大小选择为在rn-1行存储N个采样,每行r个采样。存储器210可配置为宽度等于每个采样的比特数乘以每行的采样数。存储器210通常以实部和虚部的形式存储采样。因此,对于基数为2的FFT,存储器配置为每行存储两个采样,并且可把采样存储为第一采样的实部、第一采样的虚部、第二采样的实部、第二采样的虚部。如果给采样的每个部分分配10比特,则存储器210每行使用40比特。存储器可以是速度足够以支持模运算的随机存取存储器(RAM)。
存储器210和FFT引擎220连接,FFT引擎220用于进行r点FFT。FFT模块200可以用于执行和图1所示的结构相似的FFT,其中,使用旋转因子的加权在部分FFT后进行,故也称为蝶形FFT。这样的结构使得FFT引擎220可以使用最小数目的乘法器,因此降低了FFT引擎220的大小和复杂度。FFT引擎220可以从存储器210获得一行,并对该行的采样进行FFT。因此,FFT引擎220可在一个循环中读取所有采样,以进行r点FFT。例如,FFT引擎220可以是流水线式的FFT引擎,并能够在不同的时钟相位上操作行内的值。
FFT引擎220的输出端和寄存器库230连接。寄存器库230根据FFT的基数,存储若干个数值。在一个实施例中,存储器库230可存储r2个值。和采样的情况一样,存储器库中存储的值通常是复数值,其具有实部和虚部。
寄存器库230用于临时存储,但是其可快速存取,提供了无需通过地址线访问的专有存储区域。例如,存储器库230的一个存储器中的每个比特可用触发器来实现,因此,和大小相当的存储器位置相比,寄存器使用了更多的管芯面积。因为访问寄存器空间实际上没有循环代价,特殊的FFT模块200的实现可以牺牲速度来获得管芯面积,其通过控制寄存器库230和存储器210的大小来实现。
寄存器库230的大小可以优选为可存储r2个值,因此,对值的转置可以直接进行,例如,通过按行写入值和按列读出值来实现,或者反之。值转置用于对FFT的各级维持存储器210中的FFT值的行对准。
第二存储器240用于存储对FFT引擎220的输出进行加权的旋转因子。在一些实施例中,FFT引擎220可以在计算部分FFT输出(蝶形FFT)时直接使用旋转因子。可以对任何FFT预先确定旋转因子。因此,第二存储器240可以是只读存储器(ROM)、非挥发性存储器、非挥发性RAM或者可编程闪存,但第二存储器240也可以是RAM或其他类型的存储器。第二存储器240的大小可选择为存储N点FFT的N×(n-1)个复数旋转因子,其中N=rn。一些旋转因子,如1、-1、j或-j可以从第二存储器240中省略。此外,同一个值的副本也可以从第二存储器240中省略。因此,第二存储器240中的旋转因子的数目可以小于N×(n-1)。一种高效的实现可以利用这样一个事实,FFT所有级的旋转因子都是FFT第一级或最后一级使用的旋转因子的子集,这取决于FFT用频率还是时间算法来实现抽取。
复数乘法器250a-250b连接到寄存器库与第二存储器240。复数乘法器250a-250b用来自第二存储器240的合适旋转因子,对存储在寄存器库230中的FFT引擎220的输出进行加权。图2所示的实施例包括两个复数乘法器250a和250b,然而,可以根据管芯面积和速度的折衷来选择FFT模块200中包括的复数乘法器(如250a)的数目。为了加快FFT运算,可以在管芯上实现较大数目的复数乘法器。然而,增大速度是以牺牲管芯面积为代价的。如果管芯面积很重要,可以减少复数乘法器数目。通常,当实现r点FFT引擎220时,所采用的复数乘法器的数目不会大于r-1,这是因为r-1个复数乘法器足以并行地将所有非无关紧要旋转因子应用于FFT引擎220的输出。举例来说,用于进行8点、以2为基数的FFT的FFT模块200,如图1所示的FFT模块,可以实现两个复数乘法器,然而也可以只实现一个复数乘法器。
每个复数乘法器,如250a,在每次乘法运算期间,对来自寄存器库230的单个值和存储在第二存储器240中相应的旋转因子进行运算。如果复数乘法器的数目小于要进行的复数乘法的次数,则复数乘法器就对来自寄存器库230的多个FFT值进行运算。
复数乘法器(例如250a)的输出写入寄存器库230,通常所写的位置和为复数乘法器提供输入的位置相同。因此,在复数乘法以后,寄存器库的内容表示FFT级输出,无论复数乘法器是在FFT引擎220中实现,还是与如图2所示的寄存器库相关,这一输出都是相同的。
转置模块232和寄存器库230连接,用来对寄存器库230中的内容进行转置。转置模块232可以通过重新排列寄存器的值来对寄存器内容进行转置。或者,装置模块232也可以在从寄存器库230中读出其内容时转置寄存器块230的内容。寄存器块230的内容在写回为FFT引擎220提供输入的存储器210中的行之前进行转置。对寄存器库230值进行转置维持FFT所有级的FFT输入的行结构。
处理器262和指令存储器264相结合,可以用于处理模块间的数据流,并可进行图2所示的一个或多个块中的一些或全部操作。例如,指令存储器264可以将一个或多个处理器可用指令作为软件存储,从而控制处理器262操作FFT模块200中的数据。
处理器262和指令存储器264可以作为FFT模块200的一部分来实现,也可以外置于FFT模块200。或者,处理器262可以外置于FFT模块200,但指令存储器264作为FFT模块200的一部分,例如,也可以共用用于采样的存储器210,或者存储旋转因子的第二存储器240。
图2示出的实施例给出了在算法的基数变化时在速度和面积间的折衷。对于实现N=rv点FFT,所需要的循环数可以估计如下:
rNFFT=rX对r个元素的矢量进行一次读出、FFT、旋转乘法和写入所花费的时间。
假定NFFT是不依赖于基数的常数。循环次数以1/r(O(1/r))的量级递减。随着转置所需的寄存器数增加到r2,实现需要的面积以O(r2)的量级递增。寄存器的数目和实现寄存器所需的面积支配N比较大时的面积。
可以选择提供期望速度的最小基数,来实现不同情况下的FFT。如果模块的速度足够,那么,使基数最小,会使得用于实现模块的管芯面积最小。
图3A-3D是FFT过程300的实施例流程图。例如,过程300处理可以用如图2所示的FFT模块200来实现。或者,过程300可以实现为一个或多个处理器可用指令,并由处理器结合存储器来执行。在其他实施例中,过程300的一些部分可由硬件实现,而其他部分由软件实现。
过程300从块302开始,在此,利用如一个处理器的FFT模块,把要进行变换的数据写入一个存储器,该存储器的宽度足以至少存储与FFT基数相等数目的采样。例如,如果FFT模块要进行如图1所示的8点、以2为基数的FFT,则存储器设置为4行2列,每列可以存储两个复数采样。处理器可以,例如,从第一列开始,将采样按列写入存储器,第一列写满后继续到第二列。
一旦采样数据写入存储器后,FFT模块就转到块304,这里处理器对级计数器进行初始化。如前文所述及图1所示,N=rn点FFT包括n级。在FFT的开始时,处理器将级计数器初始化为1。级计数器初始化完成后,FFT模块转到块310,处理器初始化部分FFT和块计数器。例如,可以将部分FFT和块计数器初始化为0。
如图1的例子所示,在FFT的每一级进行的部分FFT的次数是常数,但是,记录每次FFT运算所涉及的采样标号的计数器根据级而改变。
部分FFT和块计数器初始化完成后,FFT模块转到块312,在此,处理器初始化行地址指针。行地址指针确定由FFT引擎操作的存储器的行。例如,处理器可以将行地址指针的值确定为:
prow=ck·rn-k+fk。
FFT模块转到块314,并根据行地址指针的值从采样存储器读出行。例如,处理器可以从采样存储器中读出行,并将其写入FFT引擎中的位置。处理器可以读取由地址指针确定的行:
αi=prow+i.rn-k-1,i=0…(r-1),其中n表示总级数,k表示级计数器。
一旦将行读入到FFT引擎后,FFT模块就转到块320,并计算所获得的采样的r点FFT。该实施例中FFT引擎进行的r点FFT次数等于从存储器读取的行数,并等于基数r。FFT引擎的输出写入到r×r的寄存器库中。
FFT模块转到块322,将存储在旋转因子存储器中的旋转因子应用于FFT的输出值,从而用旋转因子对输出值进行加权。旋转因子可用一个或多个乘法器施加,乘法器可以是复数乘法器。用旋转因子加权后,乘法器在步骤324把结果写入r×r寄存器库中。
然后,FFT模块转到步骤330,将寄存器库中的值的次序转置。在一个实施例中,处理器可以将寄存器库中存储的值的次序转置。在另一个实施例中,转置可以在从寄存器库中读数时进行。例如,乘法器的输出以行方式写入寄存器库并以列方式从寄存器库中读出,这样就以较少的处理进行了转置。
图3A和3B中所示的连接器A 331用于连接两个图页中示出的流程图的部分,其并不是过程300的实际部分。FFT模块通过连接器A 331转到步骤332,并将转置后的结果从寄存器库写入到采样存储器中。寄存器库中转置后的结果写入块314中确定的地址指针所确定的行。如果转置通过列到行变换进行,则FFT模块可利用处理器读取寄存器库的列并将结果按行写入由地址指针确定的地址。
FFT模块转到块334,并更新部分FFT和块计数器。如前文所述,FFT的每级作为基r部分FFT的一个或多个块进行。在步骤334,FFT模块更新部分FFT和块计数器。处理器可以更新,例如,部分FFT计数器fk=(fk+1)mod(rn-k-1),如果部分FFT计数器为0,则增加计数器的值。
FFT模块转到判断块340,确定是否已经计算了所有的部分FFT和块。如果块计数器小于该级的块数,ck<rn-1,则尚未计算晚全部的部分FFT。如果尚未计算全部的部分FFT和块,则FFT模块转到块342,更新部分FFT和块计数器,以处理附加的部分FFT。然后,FFT模块通过连接器C 343绕回到块310,继续处理当前或下一个FFT块的部分FFT。连接器C 343不是过程300的一个实际部分,其仅仅用于连接不同页间的流程图。
如果在判断块340中FFT模块确定已经计算了当前级的所有块,则FFT模块转到判断块350,确定是否已经处理了n-1级。如否,FFT模块转到块352,更新级计数器并通过连接器B 353返回块310。连接器B 353不是过程300的一个实际部分,其仅仅用于连接不同页间的流程图。
如果FFT模块在块350中确定已经处理了n-1级,则FFT模块通过连接器D 351转而处理FFT的最后一级。FFT模块可以用不同的实施例来实现FFT的最后一级。图3C示出了FFT模块实现FFT最后一级的一个实施例。图3D示出了实现FFT最后一级的另一个实施例。因此,FFT模块可以从图3B的连接器D 351转到图3C或3D上的连接器D 351,但不能同时转到两个,因为图3C和3D示出了同一个FFT最后一级的不同实施例。
在一个实施例中,FFT模块可以实现图3C所示的最后一级FFT过程。在图3C所示的最后一级过程中,FFT模块连续取行,但是在部分FFT后不进行任何转置。从而,FFT结果每列有单独的采样,这和FFT第一级一样,但是行是以基数的逆序存储的。如果在FFT后有IFFT,这种排序是有益的。存取FFT结果时,FFT模块可以考虑基逆序,或者,如果期望得到顺序结果,则可以执行重新排行引擎以重新排列行。
要进行图3C所示的最后一级处理,FFT模块从图3B的连接器D351转到图3C的连接器D 351。FFT模块转到块362,初始化行地址指针。行地址指针可以初始化为prow=cn·r,其中cn初始被设定为0,r是FFT基数。
然后,FFT处理最后一级FFT,其方式和处理前级的方式相同。在块364,FFT模块从存储器读取由地址行指针确定的行,其计算如下:αi=prow+i,i=0…(r-1)。
FFT模块转到块366,计算所读取的行中的值的部分FFT。FFT引擎对读取的值计算r次不同r点部分FFT。
FFT模块转到块368,将部分FFT输出值写入寄存器库。FFT模块转到块370,将寄存器库的值写入采样存储器,该采样存储器给FFT引擎提供了数据。在块370中,FFT模块增加计数器Cn。
FFT模块转到判断块372,确定最后一块中所有的部分FFT是否都已经过处理。如果否,FFT模块返回块362,继续处理采样存储器中的行。如果最后一级的所有部分FFT都已经过处理,则FFT模块从判断块372转到可选的行重新排序块374,在此FFT模块进行行重新排序。然后,FFT模块转到块399,N点FFT结束。
在FFT最后一级的另一个例子中,FFT模块也可以执行图3D中所示的过程。在图3D流程图所示的FFT最后一级中,FFT模块根据FFT的第一级所用的同样顺序从行中获得采样。结果是顺序采样的行,但行是部分基数的逆序。此外,部分基数逆序只有当FFT级数大于3时才会出现。尽管以部分基数逆序排列行,但该最后一级过程也是有益的,因为每行中的采样是连续的。
要进行图3D中的最后一级处理,FFT模块从图3B的连接器D351转到图3D中的连接器D 351。FFT模块转到块382,使用FFT的第一级所用的同样算法设定行地址指针。
FFT模块转到块384,读取由指针确定的行,转到块386,对行进行部分FFT。然后,FFT模块转到块388,将部分FFT的结果写入寄存器库。然后,FFT模块转到块390,对寄存器库中的值的顺序进行转置。
然后,FFT模块转到块392,将转置后的值写回采样存储器。然后,FFT模块转到判断块396,确定是否已经计算了最后一级块的所有部分FFT。如否,FFT模块返回块382,更新指针,以进行下一次部分FFT。
如果FFT模块在判断块396中确定最后一级的所有部分FFT都已计算,则FFT模块转到块398,对行重新排列。和图3C所示的前一个最后一级实施例一样,对行重新排列是可选的。如果不重新排列行,或进行了可选的行重新排列后,FFT模块转到块399,FFT结束。
图4是根据图3A-3B的过程进行8点、基数为2的FFT实施例的存储器内容和寄存器内容的功能框图。8点FFT使用4行2列的采样存储器。寄存器块为r×r的矩阵,这种情况下是2×2的矩阵。
采样存储器410中的初始内容排列成两列412和414。采样存储器可按列写入,在第一列412中写值,写满后,在第二列414中写值。采样存储器的每一行包括进行初始2点FFT的正确采样值。
行a0和a2最初从采样存储器获得,FFT对存储在这两行中的值进行FFT。用合适的旋转因子对结果进行加权,并将结果写入寄存器库422。然后,对寄存器库422的值进行转置,并写回采样存储器。同样,从存储器获取行a1和a3,在FFT引擎进行处理,用合适的旋转因子加权,写入寄存器库424。424中的寄存器值覆盖已经转置并写入存储器的422寄存器的值。对新的寄存器块值424进行转置并写入存储器。
采样存储器430显示完成第一级和第一次转置后的内容。数据依然是两列432和434的格式,但是值根据转置进行了调整,以保持要共同进行处理的采样的行关系。
行a0和a1最初取自采样存储器,对这些行中存储的值进行了FFT。用合适的旋转因子对结果进行加权,并将结果写入寄存器库442。然后对寄存器库422的值进行转置,并写回采样存储器。同样,从存储器获得行a2和a3,在FFT引擎进行处理,用合适的旋转因子加权,写入寄存器库444。这些值被转置并写入采样存储器。
采样存储器450显示完成第二级和第二次转置后的内容。从第三采样存储器的结构中,行a0和a1最初来自采样存储器并对行中存储的值进行了FFT。用合适的旋转因子对结果进行加权,并将结果写入寄存器库462。然后,对寄存器库462的值进行转置,并写回采样存储器。同样,从存储器获得行a2和a3,在FFT引擎处理,用合适的旋转因子加权,写入寄存器库464。这些值被转置并写入采样存储器。转置后写入采样存储器470的结果代表8点FFT的输出。
图5A和5B是OFDM系统组件的功能框图,其可与这里描述的FFT模块结合。下面对OFDM发射机500和OFDM接收机540进行讨论。OFDM发射机500和接收机540中都可在与OFDM系统通信的装置和设备中实现。这些设备包括但不限于无线电话,如蜂窝电话、个人数字助理等或其他通信设备。
图5A是OFDM发射机500的功能框图,该发射机可以实现图2中的FFT模块以及图3A和3B中的FFT过程。图5A的OFDM发射机的部分或全部块可以用单个IC或ASIC来实现。
OFDM发射机500包括数据源502,其通常包括一些用于存储数据采样的存储设备。数据采样可以在OFDM发射机500外产生,也可以利用和存储器设备连接的模数转换器(ADC)(未示出)在OFDM发射机500内产生。
单个数据流可以表征为串行数据流。串并转换器510和数据源502连接,为OFDM发射机500的每个正交载波形成并行数据流。串并转换器510的输出和调制器连接,在此,每个并行数据流可用OFDM载波的对应载波进行调制。
然后,多个调制后的OFDM载波输入到IFFT模块520,该模块可以用图2所示的FFT模块实现,并可使用图3A或3B的过程。IFFT模块520将正交频率变换为时域OFDM符号。IFFT模块520的输出连接到并串转换器522,以将并行输出转换为单个串行符号。并串转换器522的输出可以和发射机530连接,后者可以是无线发射机。
图5B是OFDM接收机540的功能框图,其与图5A的OFDM发射机相补充。和OFDM发射机500一样,OFDM接收机540可以用单个IC或ASIC来实现。
OFDM接收机540包括接收机542,其可以是无线接收机,用于接收发射机广播的OFDM符号。接收机542可用于对接收到的信号进行放大、滤波和下变频,以恢复出基带信号。
基带信号输入串并转换器544,该转换器用于将串行基带数据流转换为并行数据流,以进行处理。串并转换器544的输出和FFT模块550连接,该模块可以是图2的FFT模块,用于执行图3A和3B的过程。
FFT模块550把时域符号变换为多个正交频率分量。FFT模块550的输出和解调器560连接,其用于对正交频率进行解调,以恢复出数据。
并串转换器562和FFT模块550的输出连接,将并行数据转换为串行数据流。串行数据流和数据处理器连接,以便于进一步处理。例如,语音数据可以转换成模拟格式,以进行放大并传送给扬声器。视频数据可以进一步处理,并发送给显示设备。
实现FFT结构的FFT模块,与先前的FFT实现相比,可以用数目减少的指令进行同址变换。FFT模块包括采样存储器,其将多个值排列成单个行。对单个行的采样进行FFT运算并写入寄存器块。一个或多个复数乘法器可用于将旋转因子应用于部分FFT结果。
对寄存器库中加权后的部分FFT结果进行转置,并写入采样存储器。对于采样存储器中同一行的单个部分FFT,该转置维持了FFT输入的关系。对多个FFT级重复这个过程,直到预期的FFT结束。
针对这里披露的实施例描述的方法、过程或算法的步骤可以直接用硬件、用处理器执行的软件模块或者二者的结合来实现。
软件模块可能存在于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其他形式的存储媒质中。一种典型存储媒质与处理器耦合,从而使得处理器能够从该存储媒质中读信息,且可向该存储媒质写信息。在替换实例中,存储媒质是处理器的组成部分。处理器和存储媒质可能存在于一个ASIC中。该ASIC可能存在于一个用户站中。在一个替换实例中,处理器和存储媒质可以作为用户站中的分立组件存在。
提供所述公开的实施例的上述描述可使得本领域的技术人员能够实现或者使用本发明。对于本领域技术人员来说,这些实施例的各种修改是显而易见的,并且这里定义的总体原理也可以在不脱离本发明的范围和主旨的基础上应用于其他实施例。因此,本发明并不限于这里示出的实施例,而是与符合这里公开的原理和新颖特征的最广范围相一致。
Claims (31)
1、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的方法,所述方法包括:
把要进行变换的采样写入存储器,所述存储器每行有r个采样;
从所述存储器读取r行;
确定r次以r为基数的部分FFT,以产生r2个部分FFT值;
对所述r2个部分FFT值应用旋转因子,以产生r2个加权后的部分FFT值;
将所述r2个加权后的部分FFT值写入寄存器块;
对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值;
将所述转置值写入所述存储器;以及
根据存储器的内容,确定FFT值。
2、如权利要求1所述的方法,其中,将采样写入存储器包括:
把要进行变换的采样逐列地写入具有rn-1行和r列的存储器。
3、如权利要求1所述的方法,其中,将采样写入存储器包括:
把要进行变换的复数采样写入所述存储器。
4、如权利要求1所述的方法,其中,从所述存储器读取r行包括:
确定r个行标号;以及
从所述存储器读取对应于所述r个行标号的行。
5、如权利要求4所述的方法,其中,确定r个行标号包括:
确定对应于公式ai=i×rn-k-1的行标号,其中k表示FFT的级,i=0到(r-1)。
6、如权利要求1所述的方法,其中对所述r2个部分FFT值应用旋转因子包括:
获取至少一个复数旋转因子;以及
将所述至少一个复数旋转因子和所述r2个部分FFT值中相应的一个FFT值进行复数乘法运算。
7、如权利要求1所述的方法,其中将所述r2个加权后的部分FFT值写入寄存器块包括:
将所述r2个加权后的部分FFT值写入被配置成r行和r列的寄存器块。
8、如权利要求7所述的方法,其中对所述r2个加权后的部分FFT值进行转置包括:
获取与所述寄存器库的一行和列相对应的一个加权后的部分FFT值;
将所述行和列的标号转置;以及
将所述加权后的部分FFT值写入对应于所述转置标号的行和列。
9、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的方法,所述方法包括:
把要进行变换的采样写入存储器,所述存储器每行有r个采样;
初始化一个级值;
初始化一个块值;
处理一个FFT级,所述处理包括:
a)根据所述级值确定块数;
b)从所述存储器获取r行;
c)确定r次以r为基数的部分FFT,以产生r2个部分FFT值;
d)对所述r2个部分FFT值应用旋转因子,以产生r2个加权的部分FFT值;
e)对寄存器块中的所述r2个加权的部分FFT值进行转置,以产生转置值;
f)将所述转置值写入所述存储器;以及
g)根据所述块值和级值,重复步骤b)至f);
h)增加所述级值;以及
重复处理所述FFT级n次;以及
根据存储器的内容,确定FFT值。
10、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的方法,所述方法包括:
把要进行变换的采样写入存储器,所述存储器每行有r个采样;
a)初始化一个级计数器;
b)初始化一个块计数器以及一个部分FFT计数器;
c)根据所述级、块和部分FFT计数器的值,从所述存储器获取r行;
d)确定r次以r为基数的部分FFT,以产生r2个部分FFT值;
e)对所述r2个部分FFT值应用旋转因子,以产生r2个加权后的部分FFT值;
f)将所述r2个加权后的部分FFT值写入寄存器块;
g)对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值;
i)将所述转置值写入所述存储器;
j)更新所述部分FFT计数器和块计数器;
k)根据所述块计数器和部分FFT计数器的值,重复步骤c)至j);
l)更新所述级计数器的值;
m)根据所述级计数器的值,重复步骤b)到k);以及根据存储器的内容,确定FFT的值。
11、一种rn点、以r为基数的快速傅立叶变换(FFT)装置,所述装置包括:
存储器,用于存储rn个采样,每个存储器行存储r个采样;
FFT引擎,用于对来自所述存储器的r行的采样进行r次r点FFT的部分FFT;
寄存器库,其有r2个寄存器被配置成r行r列,用于接收来自所述FFT引擎的输出值;以及
转置模块,用于对所述寄存器库中的所述值进行转置,并将转置值写入存储器中由所述FFT引擎进行处理的所述r行。
12、如权利要求11所述的装置,还包括:
旋转因子存储器,用于存储至少一个FFT旋转因子;以及
至少一个乘法器,用于把来自所述寄存器库中一个寄存器的一个值和来自所述旋转因子存储器中的一个FFT旋转因子相乘,并用于将输出值写入所述寄存器。
13、如权利要求12所述的装置,其中所述至少一个乘法器包括至少一个复数乘法器。
14、如权利要求12所述的装置,其中所述至少一个乘法器包括r-1个复数乘法器。
15、如权利要求12所述的装置,其中所述旋转因子存储器包括从由ROM、RAM、NV-RAM以及闪存构成的组中选取出来的至少一个存储器。
16、如权利要求11所述的装置,其中所述rn个采样包括rn个复数采样。
17、如权利要求11所述的装置,其中所述存储器包括RAM。
18、如权利要求11所述的装置,其中所述FFT引擎包括一个流水线式FFT引擎。
19、如权利要求11所述的装置,其中所述转置模块通过逐列方式读取值以及逐行方式将所述值写入存储器,将所述寄存器库中的值进行转置。
20、如权利要求11所述的装置,其中所述转置模块将所述寄存器库中的值进行转置是按照如下方式实现的:
读取与所述寄存器库的一个行值和一个列值相对应的一个寄存器值;
对所述行值和所述列值进行转置;以及
将所述寄存器值写入与转置后的行值和列值相对应的寄存器。
21、一个或多个存储设备,用于存储一条或多条处理器可用指令,当这些指令由一个或多个处理器执行时,其执行的方法包括:
把要进行变换的采样写入存储器,所述存储器每行有r个采样;
从所述存储器读取r行;
确定r次以r为基数的部分FFT,以产生r2个部分FFT值;
对所述r2个部分FFT值应用旋转因子,以产生r2个加权后的部分FFT值;
将所述r2个加权后的部分FFT值写入寄存器块;
对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值;
将所述转置值写入所述存储器;以及
根据存储器的内容确定FFT值。
22、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的装置,所述装置包括:
把要进行变换的采样写入存储器的模块,所述存储器每行有r个采样;
从所述存储器读取r行的模块;
确定r次以r为基数的部分FFT以产生r2个部分FFT值的模块;
对所述r2个部分FFT值应用旋转因子以产生r2个加权后的部分FFT值的模块;
将所述r2个加权后的部分FFT值写入寄存器块的模块;
对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值的模块;
将所述转置值写入所述存储器的模块;以及
根据存储器的内容确定FFT值的模块。
23、如权利要求22所述的装置,其中将采样写入存储器的模块包括:把要进行变换的采样逐列地写入有rn-1行和r列的存储器。
24、如权利要求22所述的装置,其中将采样写入存储器的模块包括:把要进行变换的复数采样写入存储器。
25、如权利要求22所述的装置,其中从所述存储器读取r行的模块包括:
确定r个行标号的模块;以及
从所述存储器读取与所述r个行标号相对应的行的模块。
26、如权利要求24所述的装置,其中,确定r个行标号的模块包括:确定对应于公式ai=i×rn-k-1的一个行标号,其中k表示当i=0到(r-1)时FFT的一级。
27、如权利要求22所述的装置,其中对所述r2个部分FFT值应用旋转因子的模块包括:
获取至少一个复数旋转因子的模块;以及
对所述至少一个复数旋转因子和所述r2个部分FFT值中一个相应FFT值进行复数乘法运算的模块。
28、如权利要求22所述的装置,其中将所述r2个加权后的部分FFT值写入所述寄存器块的模块包括:将所述r2个加权后的部分FFT值写入被配置成r行和r列的寄存器块。
29、如权利要求28所述的装置,其中对所述r2个加权后的部分FFT值进行转置的模块包括:
获取与所述寄存器库的一行和列相对应的一个加权后的部分FFT值的模块;
将所述行和列标号转置的模块;以及
将所述加权后的部分FFT值写入对应于所述转置标号的行和列的模块。
30、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的装置,所述装置包括:
把要进行变换的采样写入存储器的模块,所述存储器每行有r个采样;
初始化一个级值的模块;
初始化一个块值的模块;
处理一个FFT级的模块,所述处理包括:
a)根据所述级值确定块数的模块;
b)从所述存储器获取r行的模块;
c)确定r次以r为基数的部分FFT以产生r2个部分FFT值的模块;
d)对所述r2个部分FFT值应用旋转因子以产生r2个加权后的部分FFT值的模块;
e)对寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值的模块;
f)将所述转置值写入所述存储器的模块;以及
g)根据所述块值和级值重复步骤b)到f)的模块;
h)增加所述级值的模块;以及
重复处理FFT级n次的模块;以及
根据存储器的内容确定FFT值的模块。
31、一种用于确定rn点、以r为基数的快速傅立叶变换(FFT)的装置,所述装置包括:
把要进行变换的采样写入每行r个采样的存储器的模块;
a)初始化一个级计数器的模块;
b)初始化一个块计数器以及一个部分FFT计数器的模块;
c)根据所述级、块和部分FFT计数器的值,从所述存储器获取r行的模块;
d)确定r次以r为基数的部分FFT以产生r2个部分FFT值的模块;
e)对所述r2个部分FFT值应用旋转因子以产生r2个加权后的部分FFT值的模块;
f)将所述r2个加权后的部分FFT值写入寄存器块的模块;
g)对所述寄存器块中的所述r2个加权后的部分FFT值进行转置,以产生转置值的模块;
i)将所述转置值写入所述存储器的模块;
j)更新所述部分FFT计数器和块计数器的模块;
k)根据所述块计数器和部分FFT计数器的值重复步骤c)到j)的模块;
l)更新所述级计数器的值的模块;
m)根据所述级计数器的值重复步骤b)到k)的模块;以及根据存储器的内容确定FFT值的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US52719603P | 2003-12-05 | 2003-12-05 | |
US60/527,196 | 2003-12-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1914607A true CN1914607A (zh) | 2007-02-14 |
Family
ID=34676710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800413795A Pending CN1914607A (zh) | 2003-12-05 | 2004-12-03 | Fft结构和方法 |
Country Status (17)
Country | Link |
---|---|
US (1) | US7702712B2 (zh) |
EP (1) | EP1690196B1 (zh) |
JP (1) | JP2007513431A (zh) |
KR (1) | KR20060096511A (zh) |
CN (1) | CN1914607A (zh) |
AR (1) | AR046869A1 (zh) |
AT (1) | ATE412220T1 (zh) |
AU (1) | AU2004297978A1 (zh) |
BR (1) | BRPI0417222A (zh) |
CA (1) | CA2547488A1 (zh) |
DE (1) | DE602004017351D1 (zh) |
ES (1) | ES2315735T3 (zh) |
IL (1) | IL176050A0 (zh) |
MX (1) | MXPA06006391A (zh) |
RU (1) | RU2006123934A (zh) |
TW (1) | TW200534121A (zh) |
WO (1) | WO2005057423A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102238348A (zh) * | 2010-04-20 | 2011-11-09 | 上海华虹集成电路有限责任公司 | 一种可变数据个数的fft/ifft处理器的基4模块 |
CN102339272A (zh) * | 2010-07-16 | 2012-02-01 | 联咏科技股份有限公司 | 分裂基数-2/8快速傅立叶转换装置及方法 |
US8738680B2 (en) | 2008-03-28 | 2014-05-27 | Qualcomm Incorporated | Reuse engine with task list for fast fourier transform and method of using the same |
CN104572578A (zh) * | 2013-10-17 | 2015-04-29 | 德克萨斯仪器股份有限公司 | 用于显著改进微控制器中fft性能的新颖方法 |
CN104641366A (zh) * | 2012-03-16 | 2015-05-20 | 高通股份有限公司 | 用于分析和重建具有低采样速率的可变脉宽信号的系统和方法 |
CN109558638A (zh) * | 2018-10-23 | 2019-04-02 | 清华大学 | Fft处理器 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430575B2 (en) * | 2003-12-19 | 2008-09-30 | Fujitsu Limited | One-dimensional fourier transform program, method and apparatus |
US7720162B2 (en) * | 2005-03-10 | 2010-05-18 | Qualcomm Incorporated | Partial FFT processing and demodulation for a system with multiple subcarriers |
US8266196B2 (en) * | 2005-03-11 | 2012-09-11 | Qualcomm Incorporated | Fast Fourier transform twiddle multiplication |
US8229014B2 (en) * | 2005-03-11 | 2012-07-24 | Qualcomm Incorporated | Fast fourier transform processing in an OFDM system |
WO2007066964A1 (en) * | 2005-12-08 | 2007-06-14 | Electronics And Telecommunications Research Institute | Memory address generating method and twiddle factor generator using the same |
KR100762281B1 (ko) * | 2005-12-08 | 2007-10-01 | 한국전자통신연구원 | 고속 푸리에 변환 시스템의 메모리 주소 생성 방법 및 그를이용한 트위들 팩터 생성 장치 |
US7702713B2 (en) * | 2006-03-24 | 2010-04-20 | Debashis Goswami | High speed FFT hardware architecture for an OFDM processor |
US20070239815A1 (en) * | 2006-04-04 | 2007-10-11 | Qualcomm Incorporated | Pipeline fft architecture and method |
US20070266070A1 (en) * | 2006-05-12 | 2007-11-15 | Chung Hua University | Split-radix FFT/IFFT processor |
US8503545B2 (en) * | 2006-08-31 | 2013-08-06 | Advanced Micro Devices, Inc. | I/Q imbalance compensation |
KR100836624B1 (ko) * | 2006-12-08 | 2008-06-10 | 한국전자통신연구원 | 가변 고속 푸리에 변환 장치 및 그 방법 |
US8959133B2 (en) * | 2008-04-18 | 2015-02-17 | Nxp, B.V. | System and method for configurable mixed radix FFT architecture for multimode device |
KR20110081971A (ko) * | 2008-09-10 | 2011-07-15 | 코-오퍼레이티브 리서치 센터 포 어드밴스드 오토모티브 테크놀로지 리미티드 | 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치 |
CN101478785B (zh) * | 2009-01-21 | 2010-08-04 | 华为技术有限公司 | 资源池管理系统及信号处理方法 |
TWI402695B (zh) * | 2010-07-12 | 2013-07-21 | Novatek Microelectronics Corp | 分裂基數-2/8快速傅立葉轉換裝置及方法 |
US8819097B2 (en) * | 2011-09-09 | 2014-08-26 | Texas Instruments Incorporated | Constant geometry split radix FFT |
US8825729B1 (en) * | 2011-09-19 | 2014-09-02 | Altera Corporation | Power and bandwidth efficient FFT for DDR memory |
KR101335367B1 (ko) * | 2012-04-26 | 2013-12-02 | 숭실대학교산학협력단 | 메모리 제어 장치 및 방법 |
US9275014B2 (en) | 2013-03-13 | 2016-03-01 | Qualcomm Incorporated | Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods |
US9098449B2 (en) * | 2013-03-15 | 2015-08-04 | Analog Devices, Inc. | FFT accelerator |
WO2018170400A1 (en) * | 2017-03-16 | 2018-09-20 | Jaber Technology Holdings Us Inc. | Apparatus and methods of providing an efficient radix-r fast fourier transform |
US10783216B2 (en) | 2018-09-24 | 2020-09-22 | Semiconductor Components Industries, Llc | Methods and apparatus for in-place fast Fourier transform |
US11221397B2 (en) * | 2019-04-05 | 2022-01-11 | Texas Instruments Incorporated | Two-dimensional FFT computation |
KR20200143030A (ko) | 2019-06-14 | 2020-12-23 | 한국전자통신연구원 | 입력 신호의 특정 주파수 성분들을 분석하기 위한 고속 푸리에 변환 장치 |
CN115859003A (zh) * | 2021-09-27 | 2023-03-28 | 华为技术有限公司 | 执行fft的方法、装置及设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59189474A (ja) | 1983-04-13 | 1984-10-27 | Yokogawa Medical Syst Ltd | 高速フ−リエ変換演算装置 |
JP3749022B2 (ja) * | 1997-09-12 | 2006-02-22 | シャープ株式会社 | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム |
US6088714A (en) * | 1998-07-27 | 2000-07-11 | Agilent Technologies | Mechanism for calculating one-dimensional fast fourier transforms |
US6839728B2 (en) * | 1998-10-09 | 2005-01-04 | Pts Corporation | Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture |
US6609140B1 (en) * | 1999-11-30 | 2003-08-19 | Mercury Computer Systems, Inc. | Methods and apparatus for fast fourier transforms |
KR100481852B1 (ko) * | 2002-07-22 | 2005-04-11 | 삼성전자주식회사 | 고속 푸리에 변환 장치 |
-
2004
- 2004-12-01 US US11/002,478 patent/US7702712B2/en not_active Expired - Fee Related
- 2004-12-03 TW TW093137558A patent/TW200534121A/zh unknown
- 2004-12-03 DE DE602004017351T patent/DE602004017351D1/de active Active
- 2004-12-03 CN CNA2004800413795A patent/CN1914607A/zh active Pending
- 2004-12-03 KR KR1020067013515A patent/KR20060096511A/ko not_active Application Discontinuation
- 2004-12-03 AU AU2004297978A patent/AU2004297978A1/en not_active Abandoned
- 2004-12-03 AR ARP040104527A patent/AR046869A1/es not_active Application Discontinuation
- 2004-12-03 AT AT04812920T patent/ATE412220T1/de not_active IP Right Cessation
- 2004-12-03 RU RU2006123934/09A patent/RU2006123934A/ru not_active Application Discontinuation
- 2004-12-03 JP JP2006542780A patent/JP2007513431A/ja active Pending
- 2004-12-03 BR BRPI0417222-1A patent/BRPI0417222A/pt not_active IP Right Cessation
- 2004-12-03 CA CA002547488A patent/CA2547488A1/en not_active Abandoned
- 2004-12-03 ES ES04812920T patent/ES2315735T3/es active Active
- 2004-12-03 MX MXPA06006391A patent/MXPA06006391A/es unknown
- 2004-12-03 EP EP04812920A patent/EP1690196B1/en not_active Not-in-force
- 2004-12-03 WO PCT/US2004/040498 patent/WO2005057423A2/en active Search and Examination
-
2006
- 2006-05-31 IL IL176050A patent/IL176050A0/en unknown
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8738680B2 (en) | 2008-03-28 | 2014-05-27 | Qualcomm Incorporated | Reuse engine with task list for fast fourier transform and method of using the same |
CN102238348A (zh) * | 2010-04-20 | 2011-11-09 | 上海华虹集成电路有限责任公司 | 一种可变数据个数的fft/ifft处理器的基4模块 |
CN102238348B (zh) * | 2010-04-20 | 2014-02-05 | 上海华虹集成电路有限责任公司 | 一种可变数据个数的fft/ifft处理器的基4模块 |
CN102339272A (zh) * | 2010-07-16 | 2012-02-01 | 联咏科技股份有限公司 | 分裂基数-2/8快速傅立叶转换装置及方法 |
CN104641366A (zh) * | 2012-03-16 | 2015-05-20 | 高通股份有限公司 | 用于分析和重建具有低采样速率的可变脉宽信号的系统和方法 |
CN104641366B (zh) * | 2012-03-16 | 2017-06-23 | 高通股份有限公司 | 用于分析和重建具有低采样速率的可变脉宽信号的系统和方法 |
CN104572578A (zh) * | 2013-10-17 | 2015-04-29 | 德克萨斯仪器股份有限公司 | 用于显著改进微控制器中fft性能的新颖方法 |
CN104572578B (zh) * | 2013-10-17 | 2021-01-26 | 德克萨斯仪器股份有限公司 | 用于显著改进微控制器中fft性能的新颖方法 |
CN109558638A (zh) * | 2018-10-23 | 2019-04-02 | 清华大学 | Fft处理器 |
CN109558638B (zh) * | 2018-10-23 | 2023-03-24 | 清华大学 | Fft处理器 |
Also Published As
Publication number | Publication date |
---|---|
ATE412220T1 (de) | 2008-11-15 |
WO2005057423A2 (en) | 2005-06-23 |
ES2315735T3 (es) | 2009-04-01 |
US20050182806A1 (en) | 2005-08-18 |
AR046869A1 (es) | 2005-12-28 |
RU2006123934A (ru) | 2008-01-10 |
US7702712B2 (en) | 2010-04-20 |
KR20060096511A (ko) | 2006-09-11 |
JP2007513431A (ja) | 2007-05-24 |
AU2004297978A1 (en) | 2005-06-23 |
DE602004017351D1 (de) | 2008-12-04 |
EP1690196B1 (en) | 2008-10-22 |
WO2005057423A3 (en) | 2006-06-01 |
CA2547488A1 (en) | 2005-06-23 |
MXPA06006391A (es) | 2006-08-23 |
EP1690196A2 (en) | 2006-08-16 |
TW200534121A (en) | 2005-10-16 |
IL176050A0 (en) | 2006-10-05 |
BRPI0417222A (pt) | 2007-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1914607A (zh) | Fft结构和方法 | |
US7870176B2 (en) | Method of and apparatus for implementing fast orthogonal transforms of variable size | |
CN102541812B (zh) | 多端口混合基fft | |
Chang et al. | On the fixed-point accuracy analysis of FFT algorithms | |
CN100346336C (zh) | 使用主要因素算法的最佳离散傅利叶转换方法及装置 | |
CN106021182A (zh) | 一种基于二维fft处理器的行转置架构设计方法 | |
US9735996B2 (en) | Fully parallel fast fourier transformer | |
US10339200B2 (en) | System and method for optimizing mixed radix fast fourier transform and inverse fast fourier transform | |
EP2144172A1 (en) | Computation module to compute a multi radix butterfly to be used in DTF computation | |
US20050289207A1 (en) | Fast fourier transform processor, dynamic scaling method and fast Fourier transform with radix-8 algorithm | |
US8510362B2 (en) | Apparatus and method for variable fast fourier transform | |
US7702713B2 (en) | High speed FFT hardware architecture for an OFDM processor | |
EP2144173A1 (en) | Hardware architecture to compute different sizes of DFT | |
EP2144174A1 (en) | Parallelized hardware architecture to compute different sizes of DFT | |
US20140365547A1 (en) | Mixed-radix pipelined fft processor and fft processing method using the same | |
US7577698B2 (en) | Fast fourier transform processor | |
Nash | High-throughput programmable systolic array FFT architecture and FPGA implementations | |
CN101031910A (zh) | 用于实现可变大小的快速正交变换的方法和装置 | |
EP2538345A1 (en) | Fast fourier transform circuit | |
CN113724127B (zh) | 一种图像矩阵卷积的实现方法、计算设备及储存介质 | |
Orozco-Galvan et al. | Reconfigurable architecture based on FPGA for OFDM transmitter | |
CN106970895B (zh) | 基于fpga的fft装置及方法 | |
Sarode et al. | Mixed-radix and CORDIC algorithm for implementation of FFT | |
Yang et al. | Hardware design and implementation of 3780 points FFT based on FPGA in DTTB | |
Karachalios et al. | A new FFT architecture for 4× 4 MIMO-OFDMA systems with variable symbol lengths |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1098216 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1098216 Country of ref document: HK |