CN112328958A - 一种基于基-64的二维fft架构的优化数据重排方法 - Google Patents

一种基于基-64的二维fft架构的优化数据重排方法 Download PDF

Info

Publication number
CN112328958A
CN112328958A CN202011245309.9A CN202011245309A CN112328958A CN 112328958 A CN112328958 A CN 112328958A CN 202011245309 A CN202011245309 A CN 202011245309A CN 112328958 A CN112328958 A CN 112328958A
Authority
CN
China
Prior art keywords
base
architecture
block
output
fft
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
Application number
CN202011245309.9A
Other languages
English (en)
Inventor
曹宁
吴子诚
冯晔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hohai University HHU
Original Assignee
Hohai University HHU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hohai University HHU filed Critical Hohai University HHU
Priority to CN202011245309.9A priority Critical patent/CN112328958A/zh
Publication of CN112328958A publication Critical patent/CN112328958A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Abstract

本发明公开了一种基于基‑64的二维FFT架构的优化数据重排方法,属于信号处理技术领域,利用有效数据重排技术,使用基‑64算法,提出一个新的二维FFT架构。该架构采用两个并行展开基‑64块级联来开发64×64的二维FFT架构。在基‑64结构中,使用六位模式选择信号作为控制信号来执行数据重排。本发明提出的基‑64结构在一维FFT内显著减少了中间存储器,并降低了延迟;并且;提出的二维FFT结构将两个一维FFT之间的中间存储器个数从N2减少到N;本发明具有较高的灵活性,能够应用于多个场合,尤其适用于原始图像的数据重建。

Description

一种基于基-64的二维FFT架构的优化数据重排方法
技术领域
本发明属于信号处理技术领域,具体涉及一种基于基-64的二维FFT架构的优化数据重排方法。
背景技术
在过去的几十年里,信号处理领域的研究和应用出现了爆炸性的增长。数字信号处理(DSP)在生物医学成像、多媒体、数字电视、广播等领域有着广泛的应用。由于超大规模集成(VLSI)技术的发展,这些应用的实现成为可能。为这些应用程序开发硬件解决方案是过去二十年来活跃的研究领域。
离散傅里叶变换(DFT)是DSP和通信系统的重要组成部分。快速傅里叶变换(FFT)是计算离散傅里叶变换最常用的快速方法。二维FFTs被广泛应用于原始图像的数据重建,需要满足实时场景的高效实现。图像处理应用程序需要大内存来支持实时处理的图像数据。因此,需要一个合适的架构来优化内存并支持各种大小的图像,同时提供所需的吞吐量。
Cooley-Tukey是计算FFT的常用算法,因为它相比于DFT将复杂度从O(N2)降低到O(Nlog2N)。对于一维DFT的x(n),n点序列可以通过式(1)计算:
Figure BDA0002769813330000011
式中Wn为旋转因子,表示为式(2):
Wn=e-2πi/N (2)
一个N点逆DFT(IDFT)可以计算为式(3):
Figure BDA0002769813330000012
除了在DFT中应用的逻辑外,IDFT还需要一些其他的逻辑,比如除法和共轭运算。二维FFT可以由一维FFT计算得到。N×N的二维FFT可以通过2N个一维FFT计算得到,其中N是序列长度。一个尺寸为N×N,输入为x(i1,i2)的二维DFT计算如式(4):
Figure BDA0002769813330000013
其中k1,k2=0,1,2,...,N-1
利用两个一维DFT,基于行列分解算法可以执行一个二维DFT,如下式所示:
Figure BDA0002769813330000021
其中k1=0,1,2,...,N-1
Figure BDA0002769813330000022
其中k2=0,1,2,...,N-1
FFT的分解大小用基数表示。
现有的FFT实现有多种硬件和软件解决方案。硬件实现提供了更好的性能,更适合实时嵌入式应用。软件解决方案,如通用处理器和图形处理单元功耗过高,并且不适用于实时应用。
针对FFT算法和体系结构,流水线架构通常会提供更多的区域开销并增加功耗。基于基2线性分解的基于管道的架构是一种单路延迟反馈(SDF)或多路延迟转换(MDC)的架构。对于大尺寸的FFT,与流水线FFT相比,基于内存的架构占用内存区域少且功耗低。在设计FFT架构时,输出重排序是一个主要功能块。重新排序的目的是将非自然顺序FFT输出转换为自然顺序。
目前针对FFT输出重排技术及其复杂度的研究很少,尚未有较成熟的技术出现。在大多数已有架构中,重新排序需要专用的硬件或大量的内存。并且执行时需要较多的时钟周期数。
发明内容
发明目的:本发明的目的在于提供一种基于基-64的二维FFT架构的优化数据重排方法,减少运算执行周期数。
技术方案:为实现上述目的,本发明提供如下技术方案:
一种基于基-64的二维FFT架构的优化数据重排方法,包括如下步骤:
(1)利用FFT算法的高度规则性,设计在ASIC和FPGA上实现的并行流水线架构;
(2)利用所述的并行流水线架构,使用六位模式选择信号作为控制信号来执行数据重排。
进一步地,步骤(1)中,所述的并行流水线架构为两个并行展开基-64块级联来开发64×64的二维FFT架构,使用基于基-4蝶形单元的新型基64算法来表示所述的64×64FFT架构。
进一步地,步骤(2)中,在所述的64×64的二维FFT架构中,使用六位模式选择信号作为控制信号来执行数据重排。
进一步地,所述的二维FFT由两个一维N点FFT计算得到;一个N×N的二维FFT为N个行方向的一维FFT和N个列方向的一维FFT,然后在两个一维FFT之间产生N2个中间值进行存储。
进一步地,所述的使用基于基-4蝶形单元的新型基64算法来表示所述的64×64FFT架构具体包括如下步骤:一个完全展开的基-64架构使用并行的基4蝶形单元,为基本子块;基4蝶形单元有四个并行输入,每个基于两比特控制输入的输出称为模式选择;模式选择信号决定了四个输出中的一个输出的产生;根据模式选择信号,按任意顺序产生输出;采用的基4蝶形单元的方程如下所示:
Figure BDA0002769813330000031
其中,x为时域信号序列,X为频域信号序列;第一阶段有16个旋转因子只读存储器(ROMs)来存储W16;每个ROMs包含四个旋转因子值;第二阶段包括四个基4引擎和四个用于存储W64的ROMs;第二阶段的每个ROMs由16个旋转因子值组成;模式选择是一个6位控制信号;每个阶段都分配其中两位;根据每个阶段的模式,生成64个输出中的一个;因此,在这个架构中以重新排序的形式获得基-64块的其余输出,为重新排序节省内存和逻辑单元资源;最初,所有的基4引擎的模式选择都配置为模式0;第一阶段产生的输出与相应的旋转因子相乘;第二阶段执行类似的操作;这里,需要四个基4引擎来处理从第一阶段获得的16个输出;同样,前四个输出是通过将所有四个基4引擎的模式选择配置为模式0来生成的,使第一阶段的基4引擎本身保持在模式0中;现在,使用这四个输出,生成第三阶段所需的输出,并在最后阶段使用另一个模式选择。
进一步地,所述的64×64 FFT架构中的数据调度,包括如下步骤:
考虑矩阵A给出的存储在RAM中的64×64尺寸的输入数据,其中Ai,j是第i行和第j列中的元素;第一个基-64块中的数据调度和重新排序过程为:从模式选择信号设置为0开始,在循环1中输入为A1,1,A2,1,A3,1,...,A64,1;执行这64个输入的FFT,在第一个周期中产生B矩阵中的第一行的第一个输出,记为B1,1
在循环2中,输入A1,2,A2,2,A3,2,...,A64,2被给定,保持模式选择信号为0;产生的输出为B1,2;以类似的方式,在循环64中,输入A1,64,A2,64,A3,64,...,A64,64,使用模式选择0,产生输出B1,64;计算出第一行中的所有元素;在第65个循环中,把B矩阵第一行中的所有元素,即B1,1,B1,2,...,B1,64,并行输入第二个基-64块;计算第一个基-64块的一行,第二个基-64块就开始执行下一阶段的计算;两个基-64块之间的中间寄存器存储第一个块的输出以供第二个块使用;在第二个基-64块中,模式选择信号在每个周期从0变为63,产生64个输出,即C1,1,C1,2,...,C1,64
由于要求在将第一个基-64块的输出应用于第二块之前对其重新排序,因此顺序递增模式选择信号是无效的;对于第一块输出必须按0、16、32、48、1、17、33、49、...、63的顺序给出第一个基-64块的模式选择;
在第65个循环中,第一个基-64的模式选择变为16,并且提供输入A1,1,A2,1,A3,1,...,A64,1;执行这64个输入的FFT,在第65个周期中计算B矩阵的第二行的第一个输出B2,1;在第66个循环中,计算B矩阵第二行的第二个输出,即B2,2,以此类推;在第128个循环中,计算得B2,64;因此,计算得到第二行中的所有元素;
在第129个循环中,第二块使用B矩阵的第二行开始计算,在64个循环中将模式选择设为0,1,2,3,...63,从而产生C矩阵的第二行元素;通过将模式选择更改到63,并重复此过程,以获取64×64大小的B矩阵中的所有元素,该矩阵是第一个基-64块的输出;在每个循环中生成相应的B矩阵输出;这就完成了二维FFT的列式计算。
进一步地,在所述的二维FFT的输出中,C矩阵中的元素给出最终的二维FFT输出;每个时钟周期从第二个块生成一个输出;因此,需要4096个周期来产生二维FFT的所有4096输出。
进一步地,所述的二维FFT架构对基-64块使用并行展开实现,其输出的顺序由几个控制位控制;用第一个基-64块执行一维FFT,其输出被输送到第二个基-64块以执行逐行FFT,以获得二维FFT;第一个处理器执行64点FFT操作,给出4K中间值;第二个FFT处理器对这些输出执行64点FFT运算,并给出最终的64×64点FFT;两个基-64块是相同的。
有益效果:与现有技术相比,本发明提供的一种基于基-64的二维FFT架构的优化数据重排方法,架构拥有高效的输出重新排序技术,使用了一种并行基4蝶形单元;使用6位控制信号;一维FFT的运算内存减少,并优化二维FFT的中间内存单元数从N2减少到N;并且提出ASIC和FPGA实现架构;减少运算执行周期数。
附图说明
图1是基-64块的并行展开结构;
图2是第一个基-64块的数据调度;
图3是第二个基-64块的数据调度;
图4是提出的使用基-64块的二维FFT架构;
图5是所提架构与已有架构消耗时间对比;
图6是所提基-64行列并行架构与已有基2行列架构硬件复杂度对比。
具体实施方式
下面结合附图和具体实施例对本发明作更进一步的说明。
一种基于基-64的二维FFT架构的优化数据重排方法,适用于专用集成电路(ASIC)和基于现场可编程门阵列(FPGA)的二维FFT实现。利用FFT算法的高度规则性,设计了一个可以在ASIC和FPGA上实现的并行流水线架构。二维FFT由两个一维N点FFT计算得到。所以一维FFT的性能直接影响到二维FFT的性能。一个N×N的二维FFT可以看作N个行方向的一维FFT,和N个列方向的一维FFT,然后在两个一维FFT之间产生N2个中间值进行存储。
在本发明中,使用基于基-4蝶形单元的新型基64算法来表示所提出的64×64FFT架构。将两个基-64块级联计算64×64复点FFT,在实现基-64块时,生成的输出已经被重新排序,从而节省了中间内存并减少了延迟。的方法是使用了基-64的并行展开架构来实现二维FFT。
所提基-64架构:一个完全展开的基-64架构使用并行的基4蝶形单元,这是所提架构的基本子块。基4单元有四个并行输入,每个基于两比特控制输入的输出称为模式选择。模式选择信号决定了四个输出中的一个输出的产生。根据模式选择信号,可以按任意顺序产生输出。然而,在传统的基4蝶形单元中,输出是按特定的顺序生成的。采用的基4蝶形单元的方程如下所示:
Figure BDA0002769813330000061
其中,x为时域信号序列,X为频域信号序列;第一阶段有16个旋转因子只读存储器(ROMs)来存储W16。每个ROMs包含四个旋转因子值。第二阶段包括四个基4引擎和四个用于存储W64的ROMs。第二阶段的每个ROMs由16个旋转因子值组成。模式选择是一个6位控制信号。每个阶段都分配其中两位。根据每个阶段的模式,生成64个输出中的一个。因此,在这个架构中以重新排序的形式获得基-64块的其余输出,可以为重新排序节省内存和逻辑单元资源。最初,所有的基4引擎的模式选择都配置为模式0。第一阶段产生的输出与相应的旋转因子相乘。第二阶段执行类似的操作。这里,需要四个基4引擎来处理从第一阶段获得的16个输出。同样,前四个输出是通过将所有四个基4引擎的模式选择配置为模式0来生成的,使第一阶段的基4引擎本身保持在模式0中。现在,使用这四个输出,可以生成第三阶段所需的输出,并在最后阶段使用另一个模式选择。
所提结构中的数据调度:考虑矩阵A给出的存储在RAM中的64×64尺寸的输入数据,其中Ai,j是第i行和第j列中的元素。
第一个基-64块中的数据调度和重新排序过程为:从模式选择信号设置为0开始,在循环1中输入为A1,1,A2,1,A3,1,...,A64,1。执行这64个输入的FFT,在第一个周期中产生B矩阵中的第一行的第一个输出,记为B1,1。在循环2中,输入A1,2,A2,2,A3,2,...,A64,2被给定,保持模式选择信号为0。产生的输出为B1,2。以类似的方式,在循环64中,输入A1,64,A2,64,A3,64,...,A64,64,使用模式选择0,产生输出B1,64。因此,计算出第一行中的所有元素。在第65个循环中,把B矩阵第一行中的所有元素,即B1,1,B1,2,...,B1,64,并行输入第二个基-64块。这里,只要计算第一个基-64块的一行,第二个基-64块就开始执行下一阶段的计算。两个基-64块之间的中间寄存器存储第一个块的输出以供第二个块使用。在第二个基-64块中,模式选择信号在每个周期从0变为63,产生64个输出,即C1,1,C1,2,...,C1,64
由于要求在将第一个基-64块的输出应用于第二块之前对其重新排序,因此顺序递增模式选择信号是无效的。对于第一块输出必须按0、16、32、48、1、17、33、49、...、63的顺序给出第一个基-64块的模式选择。
在第65个循环中,第一个基-64的模式选择变为16,并且提供输入A1,1,A2,1,A3,1,...,A64,1。执行这64个输入的FFT,在第65个周期中计算B矩阵的第二行的第一个输出B2,1。在第66个循环中,计算B矩阵第二行的第二个输出,即B2,2,以此类推。在第128个循环中,计算得B2,64。因此,计算得到第二行中的所有元素。
在第129个循环中,第二块使用B矩阵的第二行开始计算,在64个循环中将模式选择设为0,1,2,3,...63,从而产生C矩阵的第二行元素。通过将模式选择更改到63,并重复此过程,以获取64×64大小的B矩阵中的所有元素,该矩阵是第一个基-64块的输出。在每个循环中生成相应的B矩阵输出。这就完成了二维FFT的列式计算。
C矩阵中的元素给出最终的二维FFT输出。每个时钟周期从第二个块生成一个输出。因此,需要4096个周期来产生二维FFT的所有4096输出。
二维FFT架构:对基-64块使用并行展开实现。输出的顺序由几个控制位控制。在这种体系结构中,对于给定的一组输入,在每个阶段,只计算下一阶段所需的输出而不损失任何性能,因此可以避免大多数中间缓冲区。因此,在内存和延迟方面有很大优化。
用第一个基-64块执行一维FFT,其输出被输送到第二个基-64块以执行逐行FFT,以获得二维FFT。第一个处理器执行64点FFT操作,给出4K中间值。第二个FFT处理器对这些输出执行64点FFT运算,并给出最终的64×64点FFT。两个基-64块是相同的。
实施例
如图1所示,为基-64块的并行展开架构。第一阶段有16个基4单元,第二阶段有4个基4单元,第三阶段有1个基4单元。在这个架构中,所有的基4块都是相同的。符号R40,R44,R48,R412表示第0、第4、第8、第1两个基4蝶形块等等。W16和W64表示第一阶段和第二阶段的旋转因子。第一阶段有16个旋转因子,用只读存储器(ROMs)来存储W16。每个ROM包含四个旋转因子值。第二阶段包括四个基4单元和四个用于存储W64的ROMs。第二阶段的每个ROMs由16个旋转因子值组成。
在每个阶段的N个乘法器中,每个阶段的前N/4乘法器都有一个相同旋转因子。所以在执行时,这些乘法器被移除。因此,第一阶段有1两个乘法器而不是16个,第二阶段有3个乘法器而不是4个。
模式选择是一个6位控制信号。每个阶段都分配其中两位。根据每个阶段的模式,生成64个输出中的一个。因此,在这个架构中以重新排序的形式获得基-64块的其余输出,可以为重新排序节省内存和逻辑器件资源。最初,所有的基4单元的模式选择都配置为模式0。第一阶段产生的输出与相应的旋转因子相乘。第二阶段执行类似的操作。这里,需要四个基4单元来处理从第一阶段获得的16个输出。同样,前四个输出是通过将所有四个基4单元的模式选择配置为模式0来生成的,使第一阶段的基4单元本身保持在模式0中。现在,使用这四个输出,可以生成第三阶段所需的输出,并在最后阶段使用另一个模式选择。
如图2,3所示为基-64块的数据调度,其中a为模式0输出,b为模式16输出,c为模式63输出。第一个基-64块中的数据调度和重新排序过程为:从模式选择信号设置为0开始,在循环1中输入为A1,1,A2,1,A3,1,...,A64,1。执行这64个输入的FFT,在第一个周期中产生B矩阵中的第一行的第一个输出,记为B1,1。在循环2中,输入A1,2,A2,2,A3,2,...,A64,2被给定,保持模式选择信号为0,产生的输出为B1,2。以类似的方式,在循环64中,输入A1,64,A2,64,A3,64,...,A64,64,使用模式选择0,产生输出B1,64。因此,计算出第一行中的所有元素。在第65个循环中,把B矩阵第一行中的所有元素,即B1,1,B1,2,...,B1,64,并行输入第二个基-64块。这里,只要计算第一个基-64块的一行,第二个基-64块就开始执行下一阶段的计算。两个基-64块之间的中间寄存器存储第一个块的输出以供第二个块使用。在第二个基-64块中,模式选择信号在每个周期从0变为63,产生64个输出,即C1,1,C1,2,...,C1,64
由于要求在将第一个基-64块的输出应用于第二块之前对其重新排序,因此顺序递增模式选择信号是无效的。对于第一块输出必须按0、16、32、48、1、17、33、49、...、63的顺序给出第一个基-64块的模式选择。
在第65个循环中,第一个基-64的模式选择变为16,并且提供输入A1,1,A2,1,A3,1,...,A64,1。执行这64个输入的FFT,在第65个周期中计算B矩阵的第二行的第一个输出B2,1。在第66个循环中,计算B矩阵第二行的第二个输出,即B2,2,以此类推。在第128个循环中,计算得B2,64。因此,计算得到第二行中的所有元素。
在第129个循环中,第二块使用B矩阵的第二行开始计算,在64个循环中将模式选择设为0,1,2,3,...63,从而产生C矩阵的第二行元素。通过将模式选择更改到63,并重复此过程,以获取64×64大小B矩阵中的所有元素,该矩阵是第一个基-64块的输出。在每个循环中生成相应的B矩阵输出。这就完成了二维FFT的列式计算。
C矩阵中的元素给出最终的二维FFT输出。每个时钟周期从第二个块生成一个输出。因此,需要4096个周期来产生二维FFT的所有4096输出。
图4展示了所提使用基-64块的二维FFT架构。输出的顺序由几个控制位控制。在这种体系结构中,对于给定的一组输入,在每个阶段,只计算下一阶段所需的输出而不损失任何性能,因此可以避免大多数中间缓冲区,在内存和延迟方面有很大优化,如图5和图6对比所示。
用图1所示基-64块执行一维FFT,其输出被输送到第二个基-64块执行逐行FFT,获得二维FFT。第一个处理器执行64点FFT操作,给出4K中间值。第二个FFT处理器对这些输出执行64点FFT运算,并给出最终的64×64点FFT。两个基-64块是相同的。
输入缓存:输入存储器块由两组64个RAMs组成,一组输入存储器读入数据,而另一组读出数据。输入被写入RAM的连续位置,即RAM0接收前64个输入,RAM1接收第65之后输入,依此类推。在读取操作期间,每个RAM提供一个输入,以便基-64块可以使用64个输入。读取操作并行完成。在这里,所有RAMs的读取地址都是相同的。
级间处理:级间处理由两组寄存器组成,每组64个寄存器。第一组寄存器被安排成64个移位寄存器的链。第一个基-64块的输出串联进入第一个组。第一组寄存器在每个时钟周期中都是预先处理的。每64个周期一次,第一组中所有64个寄存器的输出与第二组并行加载。第二个组中的寄存器用作第二个基-64块的输入。
控制电路:控制电路由一个12位递增计数器组成。输入侧的输入RAMs需要6位进行寻址。本发明提出架构中有两个这样的内存块。从该计数器产生读地址、写地址和芯片选择信号。此外,从该计数器产生两个基-64块的模式选择信号。在写入时,为每个RAMs分别生成芯片选择信号。读取时,并行访问所有RAMS的相同位置,并相应地生成控制信号。所有这些信号相对于前一级延迟是同步的。
连续流FFT:提出的FFT采用了一种支持连续流数据的新型数据调度机制。在这里,蝶形单元不断地对流数据进行计算。FFT处理器在每个时钟周期接收一个输入样本。

Claims (8)

1.一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:包括如下步骤:
(1)利用FFT算法的高度规则性,设计在ASIC和FPGA上实现的并行流水线架构;
(2)利用所述的并行流水线架构,使用六位模式选择信号作为控制信号来执行数据重排。
2.根据权利要求1所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:步骤(1)中,所述的并行流水线架构为两个并行展开基-64块级联来开发的64×64的二维FFT架构,使用基于基-4蝶形单元的基-64算法来表示所述的64×64FFT架构。
3.根据权利要求2所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:步骤(2)中,在所述的64×64的二维FFT架构中,使用六位模式选择信号作为控制信号来执行数据重排。
4.根据权利要求3所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:所述的二维FFT架构由两个一维N点FFT计算得到;一个N×N的二维FFT为N个行方向的一维FFT和N个列方向的一维FFT,然后在两个一维FFT之间产生N2个中间值进行存储。
5.根据权利要求3所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:所述的使用基于基-4蝶形单元的新型基64算法来表示所述的64×64FFT架构,具体包括如下步骤:一个完全展开的基-64架构使用并行的基4蝶形单元,为基本子块;基4蝶形单元有四个并行输入,每个基于两比特控制输入的输出称为模式选择;模式选择信号决定了四个输出中的一个输出的产生;根据模式选择信号,按任意顺序产生输出;
第一阶段有16个旋转因子只读存储器ROMs来存储W16;每个ROMs包含四个旋转因子值;第二阶段包括四个基4引擎和四个用于存储W64的ROMs;第二阶段的每个ROMs由16个旋转因子值组成;模式选择是一个6位控制信号;每个阶段都分配其中两位;根据每个阶段的模式,生成64个输出中的一个;最初,所有的基4引擎的模式选择都配置为模式0;第一阶段产生的输出与相应的旋转因子相乘;第二阶段执行类似的操作;需要四个基4引擎来处理从第一阶段获得的16个输出;同样,前四个输出是通过将所有四个基4引擎的模式选择配置为模式0来生成的,使第一阶段的基4引擎本身保持在模式0中;使用这四个输出,生成第三阶段所需的输出,并在最后阶段使用另一个模式选择。
6.根据权利要求5所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:所述的64×64FFT架构中的数据调度,包括如下步骤:
考虑矩阵A给出的存储在RAM中的64×64尺寸的输入数据,其中Ai,j是第i行和第j列中的元素;第一个基-64块中的数据调度和重新排序过程为:从模式选择信号设置为0开始,在循环1中输入为A1,1,A2,1,A3,1,...,A64,1;执行这64个输入的FFT,在第一个周期中产生B矩阵中的第一行的第一个输出,记为B1,1
在循环2中,输入A1,2,A2,2,A3,2,...,A64,2被给定,保持模式选择信号为0;产生的输出为B1,2;以类似的方式,在循环64中,输入A1,64,A2,64,A3,64,...,A64,64使用模式选择0,产生输出B1,64;计算出第一行中的所有元素;在第65个循环中,把B矩阵第一行中的所有元素,即B1,1,B1,2,...,B1,64,并行输入第二个基-64块;计算第一个基-64块的一行,第二个基-64块就开始执行下一阶段的计算;两个基-64块之间的中间寄存器存储第一个块的输出以供第二个块使用;在第二个基-64块中,模式选择信号在每个周期从0变为63,产生64个输出,即C1,1,C1,2,...,C1,64
由于要求在将第一个基-64块的输出应用于第二块之前对其重新排序,因此顺序递增模式选择信号是无效的;对于第一块输出必须按0、16、32、48、1、17、33、49、...、63的顺序给出第一个基-64块的模式选择;
在第65个循环中,第一个基-64的模式选择变为16,并且提供输入A1,1,A2,1,A3,1,...,A64,1;执行这64个输入的FFT,在第65个周期中计算B矩阵的第二行的第一个输出B2,1;在第66个循环中,计算B矩阵第二行的第二个输出,即B2,2,以此类推;在第128个循环中,计算得B2,64;因此,计算得到第二行中的所有元素;
在第129个循环中,第二块使用B矩阵的第二行开始计算,在64个循环中将模式选择设为0,1,2,3,...63,从而产生C矩阵的第二行元素;通过将模式选择更改到63,并重复此过程,以获取64×64大小的B矩阵中的所有元素,该矩阵是第一个基-64块的输出;在每个循环中生成相应的B矩阵输出;这就完成了二维FFT的列式计算。
7.根据权利要求6所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:在所述的二维FFT的输出中,C矩阵中的元素给出最终的二维FFT输出;每个时钟周期从第二个块生成一个输出;因此,需要4096个周期来产生二维FFT的所有4096输出。
8.根据权利要求6所述的一种基于基-64的二维FFT架构的优化数据重排方法,其特征在于:所述的二维FFT架构对基-64块使用并行展开实现,其输出的顺序由控制位控制;用第一个基-64块执行一维FFT,其输出被输送到第二个基-64块以执行逐行FFT,以获得二维FFT;第一个处理器执行64点FFT操作,给出4K中间值;第二个FFT处理器对这些输出执行64点FFT运算,并给出最终的64×64点FFT;两个基-64块是相同的。
CN202011245309.9A 2020-11-10 2020-11-10 一种基于基-64的二维fft架构的优化数据重排方法 Pending CN112328958A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011245309.9A CN112328958A (zh) 2020-11-10 2020-11-10 一种基于基-64的二维fft架构的优化数据重排方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011245309.9A CN112328958A (zh) 2020-11-10 2020-11-10 一种基于基-64的二维fft架构的优化数据重排方法

Publications (1)

Publication Number Publication Date
CN112328958A true CN112328958A (zh) 2021-02-05

Family

ID=74317874

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011245309.9A Pending CN112328958A (zh) 2020-11-10 2020-11-10 一种基于基-64的二维fft架构的优化数据重排方法

Country Status (1)

Country Link
CN (1) CN112328958A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073154A (en) * 1998-06-26 2000-06-06 Xilinx, Inc. Computing multidimensional DFTs in FPGA
CN1988402A (zh) * 2006-10-10 2007-06-27 东南大学 电力线载波通信系统的实现方法
CN101553808A (zh) * 2006-04-04 2009-10-07 高通股份有限公司 流水线fft架构和方法
CN103106180A (zh) * 2011-09-09 2013-05-15 德州仪器公司 恒定几何形状分裂基fft
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN105373367A (zh) * 2015-10-29 2016-03-02 中国人民解放军国防科学技术大学 支持标向量协同工作的向量simd运算结构
CN105893326A (zh) * 2016-03-29 2016-08-24 西安科技大学 基于fpga实现65536点fft的装置和方法
CN110245322A (zh) * 2019-05-09 2019-09-17 华中科技大学 一种基于硬件实现高速数据流实时Hilbert变换的方法和系统
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073154A (en) * 1998-06-26 2000-06-06 Xilinx, Inc. Computing multidimensional DFTs in FPGA
CN101553808A (zh) * 2006-04-04 2009-10-07 高通股份有限公司 流水线fft架构和方法
CN1988402A (zh) * 2006-10-10 2007-06-27 东南大学 电力线载波通信系统的实现方法
CN103106180A (zh) * 2011-09-09 2013-05-15 德州仪器公司 恒定几何形状分裂基fft
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN105373367A (zh) * 2015-10-29 2016-03-02 中国人民解放军国防科学技术大学 支持标向量协同工作的向量simd运算结构
CN105893326A (zh) * 2016-03-29 2016-08-24 西安科技大学 基于fpga实现65536点fft的装置和方法
CN110245322A (zh) * 2019-05-09 2019-09-17 华中科技大学 一种基于硬件实现高速数据流实时Hilbert变换的方法和系统
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
周国昌;张立新;: "基于RCSIMD的8192点FFT并行算法研究", 微电子学与计算机, no. 04 *

Similar Documents

Publication Publication Date Title
JP3749022B2 (ja) 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム
US5313413A (en) Apparatus and method for preventing I/O bandwidth limitations in fast fourier transform processors
Guan et al. Hierarchical design of an application-specific instruction set processor for high-throughput and scalable FFT processing
US20100128818A1 (en) Fft processor
Wang et al. Scheduling of data access for the Radix-2k fft processor using single-port memory
Richardson et al. Building conflict-free FFT schedules
Chen et al. Energy-efficient architecture for stride permutation on streaming data
Kala et al. High throughput, low latency, memory optimized 64K point FFT architecture using novel radix-4 butterfly unit
US11614945B2 (en) Apparatus and method of a scalable and reconfigurable fast fourier transform
CN112328958A (zh) 一种基于基-64的二维fft架构的优化数据重排方法
JP2010016831A (ja) 種々のサイズを有するdftを計算する装置
EP1076296A2 (en) Data storage for fast fourier transforms
Huang et al. A high-parallelism memory-based FFT processor with high SQNR and novel addressing scheme
Kala et al. Radix-43 based two-dimensional FFT architecture with efficient data reordering scheme.
Hazarika et al. Low-complexity continuous-flow memory-based FFT architectures for real-valued signals
Hsiao et al. Design of low-cost and high-throughput linear arrays for DFT computations: Algorithms, architectures, and implementations
Jones Design and parallel computation of regularised fast Hartley transform
Liu et al. Efficient large-scale 1D FFT vectorization on multi-core vector accelerator
Guan et al. Design of an application-specific instruction set processor for high-throughput and scalable FFT
Raman et al. Novel bit-reordering circuit for continuous-flow parallel FFT architectures
Dawwd et al. Reduced Area and Low Power Implementation of FFT/IFFT Processor.
Melander et al. An FFT processor based on the SIC architecture with asynchronous PE
Kala et al. Image reconstruction using novel two-dimensional fourier transform
Song et al. An efficient FPGA-based accelerator design for convolution
Kumar et al. FPGA implementation of radix-4-based two-dimensional FFT with and without pipelining using efficient data reordering scheme

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination