CN104050148B - 快速傅里叶变换加速器 - Google Patents
快速傅里叶变换加速器 Download PDFInfo
- Publication number
- CN104050148B CN104050148B CN201410095193.3A CN201410095193A CN104050148B CN 104050148 B CN104050148 B CN 104050148B CN 201410095193 A CN201410095193 A CN 201410095193A CN 104050148 B CN104050148 B CN 104050148B
- Authority
- CN
- China
- Prior art keywords
- point
- fft
- butterfly
- constant geometry
- situ
- 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.)
- Active
Links
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
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Control Of Transmission Device (AREA)
Abstract
通过将n个时域输入点分成多个含m个点的组执行FFT运算,对每个含m个点的组执行多个恒定几何蝶形运算,最后对该n个点的组执行至少一个原位蝶形运算。
Description
技术领域
本发明的具体实施方式大体涉及数字信号处理,特别涉及快速傅里叶变换(FFT)加速器。
背景技术
电磁信号的行为可以在时域(例如,信号振幅如何随时间而变化),以及在频域(即,构成信号的不同的频率分量)进行分析。傅里叶变换在数学上涉及这两个域,而且由于其在信号处理应用无处不在,人们致力于加速在计算上的运行,因此产生许多FFT方法。另外,一个信号可以作为一个连续波形进行分析,或在数字信号处理(DSP)应用中作为一大组时域点。针对DSP应用,一个FFT的“蝴蝶”算法可用于计算以数字形式表示的信号的离散傅里叶变换(DFT)。该算法将点划分为子集(在被称为“抽取”的过程中),计算每个子集的DFT,然后处理每个子集的DFT的结果,以产生最终包括一组频域点的结果。该子集可以是如此之小,以至于他们每个只包含几个(甚至只是一个)时域点,使得每个子集的DFT微不足道-单点的DFT只是简单的点本身。例如,一组初始的1024时域点可被抽取到1024个子集,每个子集包含一个点;然后小心地处理每个子集,并结合和合并成一个1024点的频域结果。
大多数算法的计算工作量在于所述子集的处理。处理发生在子集被首先处理成中间结果的一系列阶段中,中间结果被进一步处理,依此类推,直至最后一组频域点的产生。每个阶段包括多个并行操作,每个操作处理n个输入点的同时产生n个输出点该值n被称为FFT算法的“基数”。因为基数为2的操作(例如,一个具有两个值的基数)的数据流图类似于蝴蝶(如图1A所示,在该点x0,x1根据方程y0=x0+x1和y1=x0-x1被加工成点y0,y1),这些操作被称为蝶形运算或蝶形。具有其它基数的操作也被称为蝶形操作(如在图1B中所示的基数4的操作)。
在上述基本算法有许多不同的变体存在。例如,按时间抽取的FFT将原始时域点(和进一步的子分组)分离为奇数和偶数个组,而按频率抽取的FFT将原始时域点(和进一步的子分组)分离为第一和第二部分。原位FFT仅使用保持原始样品所需的存储空间执行转换(以更复杂的路由和控制逻辑的代价),而恒定几何FFT(也称为恒定拓扑FFT)只需要简单的路由和控制逻辑(以需要额外存储空间的代价)。
例如,一个可以对1024点的时域输入运行FFT的原位执行仅需要足以容纳1024个点的存储器,但需要在这些点的每个重新组合的阶段可被以不同的模式读取。假设该原位执行为基4和按时间抽取(尽管对任何一个原位执行有类似的分析),需要5级来重新组合这1024个点(因为log4(1024)=5)。在第一阶段中,第一个256基4的蝶形接收点0、1、2、3,第二个基4蝶形接收点4、5、6、7,等等。每个蝶形运算的结果写回到那个持有原1024个点的相同的存储空间。在第二阶段中,第一蝶形接收点0、4、8、12,第二蝶形接收点1、5、9、13;在第三阶段中,第一蝶形接收点0、16、32、48,第二个蝶形接收点1、17、33、49。在一般情况下,第一个基4蝶形运算在第三阶段及其后的阶段的输入为:
{0}、{4(i-1)}、{2×4(i-1)}、{3×4(i-1)} (1)
并且,对于第二蝶形则为:
{0+1}、{4(i-1)+1}、{2×4(i-1)+1}、{3×4(i-1)+1}(2)
等,其中,i是阶段数。
两种不同的方法可被用于执行实现原位FFT所需要的不同读取模式,每一个都有其自身的缺点。在第一种方法中,四个不同的存储库可被使用,每个能够存储1024个点,从而使四个点可以按照公式(1)在每一个周期内从四个存储体中读取。显然,这样的设计使得所需的存储量变为四倍。另一种传统的方法是使用一个单一的数据存储库,但是需要复杂的硬件(例如,逻辑和缓冲)来支持不同的读取模式。恒定几何的方法同样需要额外的存储。因此,需要一种仅需要一个简单的路由方案而不使用额外的存储空间的快速、高效的FFT技术和处理器。
发明内容
一般地,这里描述的系统和方法的不同的实施例使用恒定几何形状和原位蝶形来计算一组输入时域点的FFT。在一个实施例中,多个恒定几何蝶形针对输入点的子集进行,每一恒定几何蝶形包括数据的转置。当多个恒定几何蝶形已完成时,输入点返回到最初的或“自然”的顺序。根据组合多组点的需要执行一个或多个原位运行。例如,一个1024个点的按时间抽取的FFT可能使用基4蝶形运算的五个阶段。前三个阶段可以通过对1024个点的16个64点子集采用恒定几何运行来计算,最后两个阶段可以使用原位FFT方法来计算。
一方面,为计算上对n个点执行快速傅里叶变换(FFT)的方法,包括将n个点分成多个含m个点的组(其中m<n)并对每个含m个点的组执行多个恒定几何FFT。每个恒定几何FFT包括(i)从计算机内存中读取m个点到输入缓冲器;(ⅱ)计算上对每一组m个点施加蝶形运算;(ⅲ)将蝶形运算的结果写在输出缓冲器;(iv)将输出缓冲器中经过转置的内容存储到m个点在计算机存储器中的原始位置,从而覆盖原来的m个点。对于存储在计算机存储器中的多个恒定几何FFT的结果执行至少一个原位FFT,从而完成对n个点的FFT。
N可以是2x,其中x是一个整数,m可以是64。蝶形运算可以为基2或基4。计算机存储器可以是单端口,在一个周期只有一个读或写在该端口发生。执行原位FFT可以包括将m个点写到不同类型的输入缓冲器。将m个点写到不同类型的输入缓冲器可能会取消由输出缓冲器对内容的转置。N可以不是m的倍数;可以添加点到n个点,直到点的总数目为m的倍数。
在另一个方面,一种用于对n个点运行快速傅里叶变换(FFT)的系统,包括用于接收该n个点的子集(含m个点)的输入缓冲器、用于对m个点执行蝶形运算的蝶形单元;用于接收蝶形运算结果的输出缓冲器(包括转置存储在其中的数据点的输出端口),以及用于指示蝶形单元执行多个恒定几何蝶形运算以及随后的至少一个原位蝶形运算的控制逻辑。
一个本地存储器(例如,一个单端口存储器和/或两个存储库的存储器)可以存储n个点。一个输入FIFO可以从外部存储器接收n个点,一个输出FIFO可能发送n个点到外部存储器。输入缓冲器可包括用于恒定几何蝶形的第一类型的输入缓冲器和用于原位蝶形的第二类型的输入缓冲器。
在另一个方面,一种用于对n个点计算运行快速傅里叶变换(FFT)的方法,包括对所有n个点执行原位FFT的多个阶段,并将这n个点分成多个含m个点的组,其中m<n。然后执行恒定几何FFT的至少一个阶段,由此完成了n个点的FFT。每个恒定几何FFT包括(i)从计算机内存读取m个点到输入缓冲器;(ⅱ)计算上施加一个蝶形运算到输入缓冲器的转置的内容;(ⅲ)将蝶形运算的结果写到输出缓冲器;(iv)将输出缓冲器的内容存储在这m个点在计算机存储器中的原始位置,从而覆盖原来的m个点。n可以是2x个,其中,x是整数,m可以是64。蝶形运算可以为基2或基4。计算机存储器可以是单端口,在一个周期里只有一个读或写可在该端口发生。
参考下面的描述、说明书附图和权利要求书,这些和其它主题,以及在本文公开的优点和本发明的特征,将会变得更加清晰透彻。此外,应当理解,此处所描述的各种实施例的特征不是相互排斥的,并且可以以各种组合和排列存在。
附图说明
在附图中,类似的附图标记通常指在不同的视图中的相同的部件。在下面的描述中,参照以下附图对本发明的各种实施例进行描述描述,其中:
图1A和图1B示出示例性蝶形运算;
图2A和图2B示出本发明的实施例的FFT加速器;
图3概要的示出示本发明的一个实施例的FFT的加速器;
图4A和图4B示出了用于计算根据本发明的实施例的FFT的方法;
图5和图6示出图4A中所示的本发明的实施例FFT运算的第一阶段和其中存储器的内容;
图7和图8示出图4A中所示的本发明的实施例FFT运算的第二阶段和其中存储器的内容;
图9和图10示出图4A中所示的本发明的实施例FFT运算的第三阶段和其中存储器的内容;
图11示出图4A中所示的本发明的实施例FFT运算的第四阶段和后续阶段;
图12示出图4A中所示的本发明的实施例的执行FFT运算的示例性时序图。
具体实施方式
在本发明的各个实施例中,时域点的一个输入端组(例如,512,1024,或任何其他数目的点)被划分成多个更小的组的点(例如,16,64,或256点)。一系列的恒定几何FFT蝶形运算是对每个划分的组进行;因为每个组的计算可能不依赖于另一组的结果,每组可以单独地和/或并行计算。各组的点被转置在每个恒定几何操作,在一定数目的所述操作后(例如,3),这些点返回到它们的自然顺序。然后一种或多种原位蝶形运算可以被执行以结合的部分计算结果的单独的组。
根据本发明的FFT加速器202的最高阶层图200在图2A中示出。在本实施例中,FFT加速器202通过使用直接存储器存取(DMA)单元204和连通总线206(它可以是AXI总线)与其它系统组件(例如,主存储器、通用处理器和/或数字信号处理器)进行通信。本领域技术人员会理解,然而,FFT加速器202可以使用任何总线体系结构和/或存储器访问协议与其它系统组件进行通信。
FFT加速器202在图2B中表示的更详细,其中输入数据(例如,从主存储器)被数据输入208接收。根据本发明的实施例,FFT加速器202对数据执行FFT,在下面更详细地解释,并在输出端口210输出处理后的数据。传入和传出的数据可以根据输入的读/写信号212和输出数据就绪、数据请求信号214被存储在先进先出(FIFO)缓冲器。FFT加速器202可以接收或发送其它信号,例如一个时钟、复位或寄存器的读/写信号;然而,本发明并不限制于任何特定的一组输入、输出或控制信号,并且本领域技术人员将会理解,在FFT加速器202可以在更多或更少的输入或输出的情形下来执行。
图3示出FFT加速器202的一个执行300的框图。在本实施例中,输入数据208被一个输入FIFO302接收并存储在本地存储器304、306中。数据子集被从本地存储器304、306读出到一个或多个输入蝶形寄存器B0-B3;蝶形单元308对输入蝶形寄存器B0-B3的数据执行常规的蝶形运算。本领域技术人员将会理解,蝶形单元308可以是一个设计成执行一个或多个类型的蝶形运算的数字逻辑运算单元。蝶形操作的结果被存储在一个或多个输出蝶形寄存器D2-D3,然后写回本地存储器304、306。该数据可以在蝶形运算单元308运行几个行程,正如下面更详细地解释。在FFT完成后,将数据写入到输出FIFO310准备通过输出端口210送出。如本领域技术人员将会理解,控制模块312可用于生成在FFT加速器202中使用的各种控制信号(例如,读取、写入、地址和多路复用(mux)控制),但任何类型的控制逻辑和/或模块都属于本发明的范畴。在一个实施例中,旋转因子发生器314用于给蝶形单元308提供控制信号。
本发明并不限定于图3中所示的特定实施方式,不管怎样,系统300的其它配置属于本发明的范围之内。例如,蝶形寄存器B0-B3是在蝶形单元308的输出端,蝶形寄存器D2-D3是在蝶形单元308的输入端。无论是B或D蝶形寄存器均可以通过蝶形单元308转置其路径的数据。在一个实施例中,执行转置的蝶形寄存器是一组乒乓寄存器;这对乒乓寄存器中的一个用于接收数据,而这对乒乓寄存器(已经被填满数据)的另一个用于将数据输送到蝶形单元308。当这对乒乓寄存器的第一个被填满并且这对乒乓寄存器的第二个将它所有的数据输送到蝶形单元308,它们的作用便反转,即第一个用来给蝶形单元308输送数据,第二个用来接收新的数据。在一个实施例中,有4个输入寄存器和4个输出寄存器,每个寄存器可以被配置为是B或D寄存器,和/或按照一个或多个控制信号的转置的数据,根据应用需要。在其它实施例中,有少于四个输入和/或输出寄存器;本发明并不限定于任何特定数量或类型的输入或输出寄存器。
图4A示出本发明的一个实施例的用于执行FFT的一种方法400。在第一步骤402中,n个时域点的一个输入端组被划分成多个含m个点的组。在第二步骤404中,每个组可以被独立地进行处理(例如,所有或某些处理并行完成)。对于每个组,在第三步骤406中,m个点被读入一个输入缓冲器(例如,从一个系统或本地存储器)。在第四步骤408中,蝶形操作(例如,工作在每次迭代中相同的数位位置的蝶形运算)被施加到每组m个点。在第五步骤410中,结果被写入到一个输出缓冲器,并在第六步骤412中,结果被转置的,因为它们被写回到存储器中。第三到第六步骤406-412可被重复,直到m个点返回到它们在存储器中的自然顺序。第三至第六步骤406-412在m个点有效地完成恒定几何FFT运算;短语“恒定几何FFT运算”和/或“恒定几何FFT”对本特定实施例可以指步骤406-412。在第七步骤414中,一个或多个原位FFT根据完成FFT运算的需要对n个点(例如,所有组)进行的。图4B表示一个相关的方法450,其中,在第一步骤451,原位蝶形的一些阶段被应用到所有n个点。在步骤452中,n个点被分成多个m个点。对于每个组,在步骤454中,m个点被读入输入缓冲器。在步骤455,一个蝶形运算施加在输入缓冲器中的转置的内容。在步骤456,蝶形运算结果写入到输出缓冲区。在步骤457中,输出缓冲器的内容被存回内存储器。步骤454-457有效地完成对每个m个点的恒定几何FFT运算。经过恒定几何FFT运算,步骤454-457已被反复用于所有组,每个组具有m个点,整个FFT运算完成并对应于FFT的结果将数据存储在存储器中。
更详细地,返回到步骤402,n个点可以被存储在系统存储器(例如,通过一个系统总线206可被读取),并装载到本地存储器(例如,本地存储器304、306)。在其它实施例中,系统存储器或本地存储器304、306可以唯一地使用,本发明并不局限于任何特定的存储器配置。n个点可以被装载在一个存储块或不同的存储块,并随时间扩展。输入FIFO302可用于补偿系统和本地存储器的速度的任何差异。组的数目,每个组的大小为m,可基于蝶形运算308的基数。在一个实施例中,蝶形运算单元308采用一个基数4蝶形运算,且m是64,但其它的基数大小和m值都在本发明的范围之内。如果数据点n的总数目不是m的整数倍,额外的,随机值可被添加到实际的数据点来创建是m的倍数的多个点。
第三至第六步骤406-412的示例性的实施方案表示于图5-10(对其中m为64的情况下,总共有恒定几何FFT运算3(即,LOG4(64))个阶段)。图5示出恒定几何FFT的第一阶段,对64个输入数据点进行蝶形运算500。输入蝶形寄存器B0装入有索引0…31的输入数据(即数据以其原来形式,“自然”顺序)。对应于每个索引的数据表示一个点,可以具有任何值并占用任何数目的比特位;本发明并不局限于任何特定的数据格式。本文中的数字指的是数据的索引,而不是实际的数据点(其中每个蝶形运算过程中改变的值)。
前面的32点的数据被加载在8比特位组502,寄存器B0被按顺序从右到左加载。输入蝶形寄存器B0重新加载在8个点的组504中具有索引32...63的输入数据。存储在寄存器B0中的值是4点的组506和508的输出,其被施加到蝶形单元308。
蝶形单元308输出的4点值510和512被存储在输出蝶形寄存器D2和D3中。存储在输出寄存器D2和D3中的值可能会以和输入寄存器B0相同的顺序出现,但它们可能会以不同的、转置的次序514、516被读出。换句话说,在该第一阶段中,数据点以对应于模板0、1、2、3、4、5、6、7的第一顺序被读取,并且以对应于模板0、4、8、12、16、20、24、28的顺序被读出。经处理的点可以被重新写入到存储器(例如,本地存储器304、306或系统存储器)覆盖原来的0...63点,并以这一转置的顺序。图6示出存储器在填充后的内容600;低位的32点602被填充上从输出寄存器D2、D3交替填充的处理的点的第一组,也就是说,首先的8个点606被填充从寄存器D2首先读取的对应于索引0、4、8、12、16、20、24、28的数据,第二组的8个点608被填充从寄存器D3首先读取的对应于索引32、36、40、44、48、52、56、60的数据,如此等等。
图5和图6示出了对具有索引0...63的输入数据执行的第一阶段恒定几何FFT(如图7-10,将在下面更详细描述),图11示出对数据执行的原位FFT。根据图。然而,根据图4B所示,正如本领域技术人员将会理解,原位FFT可被首先执行(即,对应于图11中的操作),恒定几何FFT可被随后执行(即,和对应于图4A、4B和图5-10的操作相一致)。
第二阶段恒定几何FFT运算700示于图7。该第二操作700以与第一操作500相同的方式(即,使用以相同的顺序排列的相同的索引的位置)填充输入寄存器B0,但是,由于存储器304、306已被重新写入顺序不同的点,寄存器B0被填充有具有不同索引的点。例如,第一操作500在寄存器B0填充点0,1,2,3,4,5,6,7的第一组502;第二操作在寄存器B0填充点0,4,8,12,16,20,24的第二组702,其根据存储器中的首先的8个点606。寄存器B2也同样填补,再次对数据进行蝶形运算,并且寄存器D2,D3被再次填充结果。当数据被读出寄存器D2,D3,这些点按照组704所示的模板0,16,32,48,1,17,33,49被再次转置。输出寄存器D2,D3的内容被再次用于覆盖存储器中的数据,如图8所示。例如,组704在存储器填充首先的8个点802。
当第三阶段恒定几何FFT运算900运行时,使用第二操作700计算出的值,寄存器B0,B1被再次填充存储器中的内容。第一组902的值被写入寄存器B0,例如,对应于存储器的首先的8个点802。将寄存器D2的处理后的数据读取出来,D2包括另一个转置运算;这三个转置操作后,从寄存器D2、D3读出的数据再次以其自然的、原来的顺序出现。例如,从寄存器D2读出的第一个值904具有索引0,1,2,3,4,5,6,7;从寄存器D3读出的第一个值906具有索引8,9,10,11,12,13,14,15。图10说明了内存1000现在如何被填充了具有索引0...63的数据,由于它是最初读入。
每个64位组的原始输入数据集运行三个恒定几何FFT运算(无论是通过同一蝶形单元308串行或使用额外的FFT加速器单元并行)。一旦对每个64点组执行了三个恒定几何FFT运算,这些组便可通过对所有组执行一个或多个原位FFT蝶形运算而被组合。例如,如果基数为4,一个256点FFT可能需要第四阶段,一个1024点FFT可能需要第五阶段,等等。对于这些随后的原位阶段,寄存器B2和B3可以代替寄存器B0和B1使用,如图11所示的示例性第四操作1100。寄存器B2,B3按照一定的顺序1102读取数据,使得从寄存器D2,D3读出的数据1104,1106仍保持未被转置。
正如本领域技术人员将会理解,一个恒定的几何FFT运算在运行期间可能需要额外的存储器保持一些或全部输入数据点(换取更简单路由和控制逻辑的好处)。在一个实施例中,这一额外的存储空间是由缓冲器B0-B3和D2-D3提供;在蝶形阶段完成后被更新的值重写之前,数据点被读出并“在传输中”被存储在一个或多个寄存器B0-B3和D2-D3。可替代地或另外地,存储器304、306额外的存储空间可被使用。例如,64个额外点可以被用作一个512点的FFT运算的临时存储。
实施执行传输中存储的时序图1200的一个实施例示于图12。时序图1200映射一个四阶段512点FFT运算,在其中寄存器B0,B1是在阶段1,2和3中使用,寄存器B2,B3在阶段4中使用。在图1200中的数字反映了每个操作发生的周期;在第一阶段中,例如,注册B0被填充在周期0,2,4,6(表示为“0→6:2,”也即“周期0到6,步长为2”)。当所有的数据到达周期6中,在周期7→17进行蝶形运算,并且寄存器D2填充周期11→18的结果(允许在蝶形单元308的延迟)。结果被写回周期19→25:2的主存储器,这些结果覆盖原有数据,但只有在它已被使用之后且不再需要。其它的数据点被装载在其他阶段的其他寄存器B1,B2,B3,并根据时序图1200被处理;数据点的其余部分被类似地写回到存储器中304、306相同的存储空间。
在一个实施例中,存储器304、306是单端口的(即,他们有一个单一的、共享的机制来读取和写入包含在其中的存储单元)。正如本领域技术人员将会理解,单端口存储器相比多端口存储器可以更小、更简单、更可靠、和/或耗电更少。时序图1200反映允许其单端口执行的对存储器304、306的读取和写入的模式。存储器304和306被读取来填充寄存器B0-B3,并被从寄存器D2,D3写入;这些读取和写入定时发生在不同的周期。在一个实施例中,如图表1200所示,读取发生在偶数周期,写入发生在奇数周期。例如,存储器304和306在周期43,45,47,49的阶段1中的末尾从寄存器D3写入,而在第二阶段,寄存器B1在周期40,42,44,46被填充,寄存器B0在周期48,50,52,54被填充。本领域技术人员将会理解,不同的读/写模式,和/或不同的周期,都属于本发明的范围。
还应当指出的是,本发明的实施例可提供为嵌入在一个或多个制品之上或之中的一个或多个计算机可读的程序。该制品可以是任意合适的硬件设备,诸如,作为例子,软盘、硬盘、CD-ROM、CD-RW、CD-R、DVD-ROM、DVD-RW、DVD-R、闪存卡、PROM、RAM、ROM、或磁带。在一般情况下,计算机可读的程序可以以任何编程语言来实现。可以使用的语言的一些例子包括C、C++、或JAVA。该软件程序可以被进一步翻译成机器语言或虚拟机指令,并以其形式存储为程序文件。该程序文件可以被存储在一个或多个制品之上或之中。
上面对本发明的特定的实施例进行了描述。然而,明确地指出,本发明并不限于这些实施例,而其意图是,对此处所明确描述的情况的增加和修改也包含在本发明的范围之内。此外,应当理解,此处所描述的各种实施例的特征不是相互排斥的,且可以在不同的组合和排列中存在,即使这样的组合或排列在本文没做明确说明,而不脱离本发明的精神和范围。实际上,变型、修改、和此处描述的其它实施方式对本领域的普通技术人员将不会脱离本发明的精神和范围。因此,本发明并只被前面的说明性描述所定义。
Claims (20)
1.一种用于在计算上对n个点执行快速傅里叶变换(FFT)的方法,包括:
将n个点分成多个含m个点的组,其中m<n;
使用至少一个蝶形单元对每个所述含m个点的组执行串行的多个恒定几何FFT,每个所述恒定几何FFT包括:
i.从计算机存储器中读取所述m个点到输入缓冲器;
ii.使用所述至少一个蝶形单元在计算上对每一组m个点施加蝶形运算;
iii.将来自所述至少一个蝶形单元的所述蝶形运算的结果写在输出缓冲器;
iv.将所述输出缓冲器中经过转置的内容存储到m个点在所述计算机存储器中的原始位置,从而覆盖原来的m个点;
对于存储在所述计算机存储器中的所述多个恒定几何FFT的结果执行至少一个原位FFT,从而完成对n个点的FFT。
2.根据权利要求1所述的方法,其中n是2x,其中x是一个整数。
3.根据权利要求2所述的方法,其中m是64。
4.根据权利要求1所述的方法,其中所述蝶形运算为基2或基4。
5.根据权利要求1所述的方法,其中所述计算机存储器是单端口,并且其中在一个周期只有一个读或写在该端口发生。
6.根据权利要求1所述的方法,其中执行所述原位FFT包括将m个点写到不同类型的输入缓冲器。
7.根据权利要求6所述的方法,其中将m个点写到不同类型的输入缓冲器取消由输出缓冲器对内容的转置。
8.根据权利要求1所述的方法,其中n不是m的倍数,所述方法进一步包含添加点到该n个点,直到点的总数目为m的倍数。
9.一种用于对n个点执行快速傅里叶变换(FFT)的系统,包括:
用于接收所述n个点的子集的输入缓冲器,该子集含m个点;
用于对所述m个点执行蝶形运算的至少一个蝶形单元;
用于接收来自所述至少一个蝶形单元的所述蝶形运算的结果的输出缓冲器,该输出缓冲器包括转置存储在其中的数据点的输出端口;
用于指示蝶形单元执行串行的多个恒定几何蝶形运算以及随后的至少一个原位蝶形运算的控制逻辑。
10.根据权利要求9所述的系统,进一步包含本地存储器,用于存储所述n个点。
11.根据权利要求10所述的系统,其中所述本地存储器为单端口存储器。
12.根据权利要求10所述的系统,其中本地存储器包含两个存储库。
13.根据权利要求9所述的系统,进一步包含输入FIFO,用于从外部存储器接收所述n个点。
14.根据权利要求9所述的系统,进一步包含输出FIFO,用于发送所述n个点到外部存储器。
15.根据权利要求9所述的系统,其中输入缓冲器包括用于恒定几何蝶形的第一类型的输入缓冲器和用于原位蝶形的第二类型的输入缓冲器。
16.一种用于在计算上对n个点执行快速傅里叶变换(FFT)的方法,包括:
对所有n个点执行原位FFT的至少一个阶段;
将原位FFT结果的n个点分成多个含m个点的组,其中m<n;
使用至少一个蝶形单元对每一个所述含m个点的组执行串行的多个恒定几何FFT,每个恒定几何FFT包括:
i.从计算机存储器读取m个点到输入缓冲器;
ii.使用所述至少一个蝶形单元在计算上施加蝶形运算到保持每一组m个点的输入缓冲器的经过转置的内容;
iii.将来自所述至少一个蝶形单元的所述蝶形运算的结果写到输出缓冲器;
iv.将输出缓冲器的内容存储在所述m个点在计算机存储器中的原始位置,从而覆盖原来的m个点,从而完成对n个点的FFT。
17.根据权利要求16所述的方法,其中n是2x个,其中x是整数。
18.根据权利要求17所述的方法,其中m是64。
19.根据权利要求16所述的方法,其中蝶形运算为基2或基4。
20.根据权利要求16所述的方法,其中所述计算机存储器是单端口,在一个周期里只有一个读或写在该端口发生。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/837,055 | 2013-03-15 | ||
US13/837,055 US9098449B2 (en) | 2013-03-15 | 2013-03-15 | FFT accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050148A CN104050148A (zh) | 2014-09-17 |
CN104050148B true CN104050148B (zh) | 2018-02-06 |
Family
ID=50272333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410095193.3A Active CN104050148B (zh) | 2013-03-15 | 2014-03-14 | 快速傅里叶变换加速器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9098449B2 (zh) |
EP (2) | EP2778948A3 (zh) |
CN (1) | CN104050148B (zh) |
DE (1) | DE202014011350U1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014203027A1 (en) * | 2013-06-17 | 2014-12-24 | Freescale Semiconductor, Inc. | Processing device and method for performing a round of a fast fourier transform |
DE102015104776B4 (de) * | 2015-03-27 | 2023-08-31 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Verarbeiten von Radarsignalen |
US10853446B2 (en) | 2018-06-15 | 2020-12-01 | Apple Inc. | Methods and systems for complexity reduction in discrete Fourier transform computations |
CN112231625A (zh) * | 2020-10-15 | 2021-01-15 | 中国电子科技集团公司第五十八研究所 | 一种基于混合基算法的fft处理器及其工作方法 |
CN113918875B (zh) * | 2021-09-23 | 2024-05-03 | 同致电子科技(厦门)有限公司 | 一种二维fft的快速处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3754128A (en) * | 1971-08-31 | 1973-08-21 | M Corinthios | High speed signal processor for vector transformation |
US4117541A (en) * | 1977-11-07 | 1978-09-26 | Communications Satellite Corporation | Configurable parallel arithmetic structure for recursive digital filtering |
CN87104093A (zh) * | 1986-06-06 | 1987-12-16 | 汤姆生无线电报总公司 | 一维余弦变换的计算装置以及包括该计算装置的图象编码装置和解码装置 |
GB2216693B (en) * | 1988-03-14 | 1992-07-29 | E Systems Inc | Systolic fast fourier transform method and apparatus |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4138730A (en) | 1977-11-07 | 1979-02-06 | Communications Satellite Corporation | High speed FFT processor |
US4689762A (en) | 1984-09-10 | 1987-08-25 | Sanders Associates, Inc. | Dynamically configurable fast Fourier transform butterfly circuit |
US4807183A (en) | 1985-09-27 | 1989-02-21 | Carnegie-Mellon University | Programmable interconnection chip for computer system functional modules |
US5034910A (en) * | 1988-03-14 | 1991-07-23 | E-Systems, Inc. | Systolic fast Fourier transform method and apparatus |
US4996661A (en) | 1988-10-05 | 1991-02-26 | United Technologies Corporation | Single chip complex floating point numeric processor |
US6003056A (en) | 1997-01-06 | 1999-12-14 | Auslander; Lewis | Dimensionless fast fourier transform method and apparatus |
US7702712B2 (en) | 2003-12-05 | 2010-04-20 | Qualcomm Incorporated | FFT architecture and method |
US7756351B2 (en) * | 2003-12-19 | 2010-07-13 | Stmicroelectronics, Inc. | Low power, high performance transform coprocessor for video compression |
US7761495B2 (en) | 2004-04-05 | 2010-07-20 | Jaber Associates, L.L.C. | Fourier transform processor |
US7720162B2 (en) | 2005-03-10 | 2010-05-18 | Qualcomm Incorporated | Partial FFT processing and demodulation for a system with multiple subcarriers |
US20060224652A1 (en) | 2005-04-05 | 2006-10-05 | Nokia Corporation | Instruction set processor enhancement for computing a fast fourier transform |
EP2009555B1 (en) | 2007-06-28 | 2009-09-23 | Telefonaktiebolaget LM Ericsson (publ) | Method and device for transform computation |
GB2456775B (en) | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
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 |
-
2013
- 2013-03-15 US US13/837,055 patent/US9098449B2/en active Active
-
2014
- 2014-03-07 EP EP14158354.2A patent/EP2778948A3/en not_active Withdrawn
- 2014-03-07 DE DE202014011350.5U patent/DE202014011350U1/de not_active Expired - Lifetime
- 2014-03-07 EP EP17205522.0A patent/EP3340066A1/en not_active Withdrawn
- 2014-03-14 CN CN201410095193.3A patent/CN104050148B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3754128A (en) * | 1971-08-31 | 1973-08-21 | M Corinthios | High speed signal processor for vector transformation |
US4117541A (en) * | 1977-11-07 | 1978-09-26 | Communications Satellite Corporation | Configurable parallel arithmetic structure for recursive digital filtering |
CN87104093A (zh) * | 1986-06-06 | 1987-12-16 | 汤姆生无线电报总公司 | 一维余弦变换的计算装置以及包括该计算装置的图象编码装置和解码装置 |
GB2216693B (en) * | 1988-03-14 | 1992-07-29 | E Systems Inc | Systolic fast fourier transform method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
EP3340066A1 (en) | 2018-06-27 |
CN104050148A (zh) | 2014-09-17 |
US20140280421A1 (en) | 2014-09-18 |
US9098449B2 (en) | 2015-08-04 |
DE202014011350U1 (de) | 2019-08-20 |
EP2778948A2 (en) | 2014-09-17 |
EP2778948A3 (en) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6960479B2 (ja) | 再構成可能並列処理 | |
CN104050148B (zh) | 快速傅里叶变换加速器 | |
US10509876B2 (en) | Simulation using parallel processors | |
JP2009517783A (ja) | ロジックおよびメモリのシミュレーション用ハードウェア加速システム | |
CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
RU2010107218A (ru) | Схема для упаковки и связывания переменной в графических системах | |
CN103870335B (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 | |
WO2007067399A2 (en) | Partitioning of tasks for execution by a vliw hardware acceleration system | |
US9244886B1 (en) | Minimum resource fast fourier transform | |
CN104346132A (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
US11934825B2 (en) | Event-driven design simulation | |
Lanzagorta et al. | Introduction to reconfigurable supercomputing | |
Wang et al. | FP-AMR: A Reconfigurable Fabric Framework for Adaptive Mesh Refinement Applications | |
US9330211B2 (en) | Simulation system for implementing computing device models in a multi-simulation environment | |
Haller et al. | Relieving capacity limits on FPGA-based SAT-solvers | |
CN107506332B (zh) | Kalman滤波器快速实现方法 | |
CN101751356A (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
CN105893326B (zh) | 基于fpga实现65536点fft的装置和方法 | |
CN109522125A (zh) | 一种矩阵乘积转置的加速方法、装置及处理器 | |
CN104572578B (zh) | 用于显著改进微控制器中fft性能的新颖方法 | |
Garzia et al. | Control techniques for coupling a coarse-grain reconfigurable array with a generic RISC core | |
CN116128016A (zh) | 一种神经网络处理器的时间成本计算方法、系统及可读存储介质 | |
Bandali | Steady-State Analysis of Nonlinear Circuits using the Harmonic Balance on GPU | |
Kumar et al. | ADEPT: A Unified Environment for End-to-End System Design | |
CN109710268A (zh) | 面向vliw架构的动态二进制翻译方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |