CN100378719C - 基2单路深度延时反馈的流水线构成fft处理器的实现方法 - Google Patents
基2单路深度延时反馈的流水线构成fft处理器的实现方法 Download PDFInfo
- Publication number
- CN100378719C CN100378719C CNB2005100428284A CN200510042828A CN100378719C CN 100378719 C CN100378719 C CN 100378719C CN B2005100428284 A CNB2005100428284 A CN B2005100428284A CN 200510042828 A CN200510042828 A CN 200510042828A CN 100378719 C CN100378719 C CN 100378719C
- Authority
- CN
- China
- Prior art keywords
- delay
- butterfly
- time
- processing unit
- storage unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基2单路深度延时反馈的流水线构成FFT处理器的实现方法,流水线的结构由四个复数加法器和一个复数乘法器以及两个蝶形处理单元组成,运算数据顺序流入,运算结果顺序流出;蝶形处理单元是模式可编程的,根据需要选择基4、基2或直通模式,因此长度为16的R2SD2F流水线能够分别用于计算基16、基8、基4和基2蝶形运算。本发明的方法通过更加合理地调度计算资源和减少重复运算,可以进一步提高运算单元的使用效率,减少资源需求。
Description
技术领域
本发明属于工程技术类数字信号处理技术领域,具体涉及R2SD2F流水线构成FFT处理器的实现方法。该方法可以广泛地用于信号分析、信号调制解调、信号压缩、FFT相关等众多数字信号处理环节,在加快系统处理速度的同时简化系统的软硬件设计,是一项对国防武器现代化建设与国民经济发展都十分有价值的技术。
背景技术
FFT/IFFT(快速傅立叶变换/逆快速傅立叶变换)在数字信号处理中是一种非常重要的算法,FFT处理器是快速傅立叶变换的硬件实现形式。在现代数字通信系统和数字电视广播系统中,如xDSL调制解调器、相位相关器、无线接收机等,各种具有不同优缺点的专用FFT处理器已成为其中的关键部件。
在现有的FFT处理器流水线结构设计中,采用基4蝶形处理单元(BF4)的结构一般可以比采用基2蝶形处理单元(BF2)节省约一半的乘法器,但如果采用传统的基4蝶形单元实现方式,所需的加法器是后者的两倍。R22SDF(基22单路延时反馈)和R4SDC(基4单路延时转换)结构是两种较优秀的创新结构。在R22SDF结构中,BF4由两个级连的BF2实现,与传统结构相比,在保持相同数目乘法器和寄存器的基础上,将加法器的数目减少一半,使处理单元的效率从25%提高到50%。在G.A.Bi的研究中,他提出的R4SDC结构巧妙地安排了进入运算单元的数据流,使BF4所需的加法器降到了3个,而传统结构与R22SDF结构中BF4所需的加法器分别是8个和4个。但R4SDC结构的蝶形处理单元没有考虑蝶形运算的重复性,另外相对R22SDF而言,增加了一倍的寄存器资源。
发明内容
本发明的目的在于,提供一种R2SD2F(基2单路深度延时反馈)的流水线构成FFT处理器的实现方法。
实现上述目的的技术解决方案是,基2单路深度延时反馈的流水线构成FFT处理器的实现方法,其特征在于,流水线的结构由四个复数加法器和一个复数乘法器以及两个蝶形处理单元组成,运算数据顺序流入,运算结果顺序流出;
上述蝶形处理单元是模式可编程的,根据需要选择基4、基2或直通模式,使长度为16的R2SD2F流水线能够分别用于计算基16、基8、基4和基2蝶形运算;
在流水线的每一级,均有三组延时寄存器,对于第p级来说,三组延时分别为:一组N/(2×4p-1)拍延时(Delay A),另外两组为N/4p拍延时(DelayB&C),在这里N等于16;即第一蝶形处理单元的输出分别经过8、4、和4拍的延时反馈输入到其输入端,而第二蝶形处理单元的输出端分别经过8、4、和4拍的延时反馈输入到同一蝶形处理单元的输入端;
第一蝶形处理单元的输出经过乘法器与旋转因子相乘后进入第二蝶形处理单元的一个输入端口,将两个蝶形处理单元联系起来构成一完整的流水线,待处理数据从第一蝶形处理单元的一个端口流入,最终结果从第二蝶形处理单元输出端口流出。
本发明的方法通过更加合理地调度计算资源和减少重复运算,可以进一步提高运算单元的使用效率,减少资源需求。
附图说明
图1是16点DFT的R2SD2F流水结构图;
图2是R2SD2F流水结构中的蝶形处理单元
图3是BPEI中的数据流,BPEI工作模式:基4蝶形运算;流水线工作模式:基16蝶形运算;
图4是BPEI中的数据流,BPEI工作模式:基2蝶形运算;流水线工作模式:基8蝶形运算;
图5是BPEI中的数据流,BPEI工作模式:直通模式。
以下结合附图对本发明作进一步详细说明。
具体实施方式
R2SD2F(Radix-2 Single“Deep”Delay Feedback,基2单路深度延时反馈)这种结构中,基16蝶形运算流水线仅由四个复数加法器和一个复数乘法器以及相应的蝶形处理单元组成,运算数据顺序流入,运算结果顺序流出,运算模块的效率达到100%。而且,R2SD2F结构中的流水线中相应的蝶形处理单元是模式可编程的,可以根据需要选择基4、基2或直通模式,因此长度为16的R2SD2F流水线能够分别用于计算基16、基8、基4和基2蝶形运算。
N点的离散傅立叶变换由式(1)定义:
如果将式(1)中的n,k分解成n=8n2+4n1+n0和k=4k0+2k1+k2,其中0≤n0,k0≤3,0≤n1,n2,k1,k2≤1,那么16点的离散傅立叶变换可写成:
式(2)可以进一步表述成
在R2SDF和R22SDF结构中运行16点离散傅立叶变换时,由于串行读取的关系,在以每16拍组成的一个周期内,第一个蝶形处理单元在每次的前半个周期均处于空闲状态,而对于第二个蝶形处理单元,也是分别只有两个1/4周期是有用的。换而言之,如此结构中的蝶形处理单元效率只有50%。然而,如果能够将运算结果适时地反馈回第一个蝶形处理单元的输入端,使之能够用原来的空闲时间来完成又一次蝶形运算,这样能够节省一个蝶形处理单元,使处理单元效率达到100%。
16点的R2SD2F(Radix-2Single“Deep”Delay Feedback,基2单路深度延时反馈)流水线结构由两个蝶形处理单元(BPE-I和BPE-II)以及相应的延时存储单元(Delay(n),n表示延时拍数)构成,如图1所示。
在流水线的每一级,均有三组延时寄存器,对于第p级来说,三组延时分别为:一组N/(2×4p-1)拍延时(Delay A),另外两组为N/4p拍延时(DelayB&C),在这里N等于16。即蝶形处理单元BPE-I的输出Fouta、Foutb、和Foutc分别经过8、4、和4拍的延时反馈输入到Fina、Finb、和Finc,而蝶形处理单元BPE-II的输出Fouta、Foutb、和Foutc分别经过8、4、和4拍的延时反馈输入到同一蝶形处理单元的Fina、Finb、和Finc。
蝶形处理单元BPE-I的Dout输出经过乘法器与旋转因子相乘后进入BPE-II的Din将两个蝶形处理单元联系起来构成一完整的流水线,待处理数据从蝶形处理单元BPE-I的Din端口流入,最终结果从蝶形处理单元BPE-II的Dout端口流出。
流水线中的蝶形处理单元设计如图2。它包括一个复数加法器、一个复属减法器、10组二选一转换开关及相应的连线组成。输入连接信号有:Din连至转换开关S9的1输入端和S5的0输入端,Fina分别连至S1的1输入端、S0的1输入端和S2的0输入端,Finb分别连至S1的0输入端、S3的1输入端和S6的1输入端,Finc连至S0的0输入端和S7的1输入端;中间连接信号有:S1的输出连至S9的0输入端,S5的输出及输出乘上-j的结果分别连至S8的0输入端和1输入端,S2的输出连至S3的0输入端,S6的输出连至S7的0输入端;加减法器的输入输出连接关系为:S0的输出Bina连至加法器的被加数端和减法器的被减数端,S9的输出Binb连至加法器的加数端和减法器的减数端,加法器的输出分别连至S2的1输入端、S4的1输入端和S6的0输入端,减法器的输出连至S4的0输入端和S5的1输入端;输出信号的连接关系为:Fouta连至S8的输出端,Foutb连至S4的输出端,Foutc连至S3的输出端,Dout连至S7的输出端。
在上述方法中,Delay A(图1中的Delay(2)和Delay(8))的作用与R2SDF和R22SDF中延时单元的作用是相同的,在每个周期的前半阶段用来实现对操作数的延时,后半阶段则用来实现对操作结果的延时,使基2蝶形运算后并行输出的结果再次串行化。与R2SDF和R22SDF结构不同的是,基2蝶形运算的结果并没有直接流入下一个蝶形处理单元,而是在经过Delay B&C(图1中的两个Delay(4)和两个Delay(1))后返回同一个蝶形处理单元的输入端,我们称之为“深”反馈(“deep”feedback),这第二次的基2蝶形运算结果还是经过Delay B&C再次实现串行化。
目前已知的FFT处理器流水线在完成N点DFT运算时资源需求见表1。
表1不同流水线结构的资源需求比较
流水线结构 | 乘法器数目 | 加法器数目 | 寄存器数目 | 转换开关数目 |
R2MDC | 2(log<sub>4</sub>N-1) | 4log<sub>4</sub>N | 3N/2-2 | 4log<sub>4</sub>N-2 |
R2SDF | 2(log<sub>4</sub>N-1) | 4log<sub>4</sub>N | N-1 | 4log<sub>4</sub>N |
R4SDF | log<sub>4</sub>N-1 | 8log<sub>4</sub>N | N-1 | 4log<sub>4</sub>N |
R4MDC | 3(log<sub>4</sub>N-1) | 8log<sub>4</sub>N | 5N/2-4 | 12(log<sub>4</sub>N-1) |
R4SDC | log<sub>4</sub>N-1 | 3log<sub>4</sub>N | 2N-2 | 5log<sub>4</sub>N |
R2<sup>2</sup>SDF | log<sub>4</sub>N-1 | 4log<sub>4</sub>N | N-1 | 5log<sub>4</sub>N |
R2SD<sup>2</sup>F(本发明) | log<sub>4</sub>N-1 | 2log<sub>4</sub>N | 4(N-1)/3 | 10log<sub>4</sub>N |
在所有这些流水线设计中,这项发明专利中提出的R2SD2F结构运算部件(乘法器与加法器)资源需求最少,但是在寄存器和转换开关需求上有所增加。与R22SDF结构相比,转换开关增加了一倍,寄存器数目增加了1/3。
一般来说,加法器和乘法器在实现时比寄存器与转换开关需要更多的晶体管资源,特别是对于较高精度的应用来说,相同位长的加法器和寄存器组(或是转换开关组)所需的资源比率能达到4.5~15倍。因此,通过增加少量的存储资源和转换开关来换取运算部件数目的减少通常是可取的。
根据一般通用数据,基本电路的资源需求如下表:
基本电路种类 | 晶体管数 |
二选一开关 | 6 |
寄存器 | 10 |
9位CLA(先行进位加法器) | 354 |
对于一个字长为9位的16点FFT流水线,R2SD2F、R4SDC和R22SDF几种算法在加法器、存储器和转换开关上的资源比较见下表:
流水线结构 | 基本电路数 | 各电路晶体管数 | 晶体管总数 |
R2SD<sup>2</sup>F(本文提出结构) | 4组9位CLAs20组9位寄存器组20组9位开关组 | 141618001080 | 4296 |
R4SDC | 6组9位CLAs30组9位寄存器组10组9位开关组 | 21242700540 | 5364 |
R2<sup>2</sup>SDF | 8组9位CLAs15组9位寄存器组10组9位开关组 | 28321350540 | 4722 |
随着设计中运算字长的增加,加法器所需的门电路资源数将以比存储器和开关快得多的速度增长,在此时,尤其是采用浮点加法器时,R2SD2F流水线及相应FFT处理器设计实现将更有吸引力。
基2蝶形运算:
流水线结构由第一蝶形处理单元和第二蝶形处理单元及相应的延时存储单元Delay(n)构成,n表示延时拍数;上述两个蝶形处理单元均包括一个复数加法器、一个复数减法器、10组二选一转换开关及相应的连线组成;
②第一蝶形处理单元的工作步骤:
第一蝶形处理单元处于直通工作模式,各转换器控制输入数据进入延时存储单元Delay(n),此时的n=8,经过8拍延时后再经进入延时单元Delay(n),此时的n=4,最后输出,经过与相应旋转因子的乘以后进入第二蝶形处理单元;
③第二蝶形处理单元的工作步骤:
第二蝶形处理单元处于基2蝶形运算工作模式,步骤如下:
(3.1)流水第0~11拍:等待数据到达;
(3.2)流水第12~13拍:处理数据经过第一蝶形处理单元后到达,控制输入数据进入延时单元Delay(n),此时的n=2,整个流水过程中一直如此;
(3.3)流水第14拍:控制经过2拍延时后的第一个数据进下面的延时单元Delay(n),实现基2蝶形运算操作数的对齐;
(3.4)流水第15拍:控制输入数据进入加减法器,开始基2蝶形运算,加法器运算结果输出到Dout,减法器运算结果经中间的延时单元Delay(1)实现串行化在下一拍输出到Dout。
(3.5)即从第15拍开始流水建立,这以后操作按(3.3),(3.4)操作以每两拍为一个循环进行,每拍从BPE-II的Dout端口顺序流出一个基2蝶形运算结果。
基4蝶形运算:
①按照图1与图2建立硬件资源和数据流的连接;
②BPE-I的工作步骤:BPE-I处于直通工作模式,与基2蝶形运算中②所述一致;
③BPE-II的工作步骤:BPE-II处于基4蝶形运算工作模式。
(3.1)流水第0~11拍:等待数据到达;
(3.2)流水第12~13拍:处理数据经过BPE-I后到达。控制输入数据经由Fouta进入延时单元Delay(2),实现第一级基2蝶形运算操作数的对齐;
(3.3)流水第14拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器输出进入中间的延时单元Delay(1),减法器输出进入延时单元Delay(2),为第二级的基2蝶形运算准备数据;
(3.4)流水第15拍:输入数据继续进入加减法器,第一级基2蝶形运算继续进行中。加法器输出继续进入中间的延时单元Delay(1),移出的数据经由Finb与Foutc进入图1中下面的延时单元Delay(1),实现第二级基2蝶形运算第一对数据的对齐。减法器输出继续进入延时单元Delay(2);
(3.5)流水第16拍:这时BPE-II的Din端的数据已是第二批次的待处理数据,经由Fouta进入延时单元Delay(2),准备开始又一次的流水操作,此时BPE-II的加减法器在两个批次的第一级基2蝶形运算间有2拍的处理时间,可以用来计算第一批次数据的第二级基2蝶形运算,加法器运算结果输出到Dout,减法器运算结果经中间的延时单元Delay(1)实现串行化在下一拍输出到Dout。
(3.6)流水第17拍:BPE-II的加减法器计算该处理单元第一批次第二级的第二次基2蝶形运算,加法器运算结果由Foutc进入图1中下面的延时单元Delay(1)实现串行化在下一拍输出到Dout,而减法器结果则经由Foutb进入中间的延时单元Delay(1)后在经由Foutc进入图1中下面的延时单元Delay(1)实现串行化在第19拍输出到Dout。
(3.7)从第16拍开始流水建立,这以后操作按(3.3),(3.4),(3.5),
(3.6)操作以每四拍为一个循环进行,每拍从BPE-II的Dout端口顺序流出一个基4蝶形运算结果。
基8蝶形运算:
①按照图1与图2建立硬件资源和数据流的连接;
②BPE-I的工作步骤:BPE-I处于基2蝶形运算工作模式。
(2.1)流水第0~7拍:控制Din输入数据经由Fouta进入延时单元Delay(8),整个流水过程中一直如此;
(2.2)流水第8~11拍:控制经过8拍延时后的前四个数据经Foutc进入图1中下面的延时单元Delay(4),实现第一级基2蝶形运算操作数的对齐;
(2.3)流水第12~15拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器运算结果输出到Dout,经过与相应旋转因子的乘以后进入BPE-II,减法器运算结果经中间的延时单元Delay(4)实现串行化在下一个四拍输出到Dout;
(2.4)从第12拍开始,BPE-I流水建立,这以后操作按(2.2),(2.3)操作以每八拍为一个循环进行,每拍从BPE-I的Dout端口顺序流出一个第一级基2蝶形运算结果。
③BPE-II的工作步骤:BPE-II处于基4蝶形运算工作模式。
(3.1)~3.6)操作与基4蝶形运算③中(3.1)~(3.6)所述一致,只是此时进行的分别是基8蝶形运算中的第二级与第三级;
(3.7)从第16拍开始整个流水线流水建立,这以后BPE-II操作按(3.3),(3.4),(3.5),(3.6)操作以每四拍为一个循环进行,每拍从BPE-II的Dout端口顺序流出一个基8蝶形运算结果。
基16蝶形运算:
①按照图1与图2建立硬件资源和数据流的连接;
②BPE-I的工作步骤:BPE-I处于基4蝶形运算工作模式。
(2.1)流水第0~7拍:控制输入数据进入延时单元Delay(8),实现第一级基2蝶形运算操作数的对齐;
(2.2)流水第8~11拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器输出进入中间的延时单元Delay(4),减法器输出进入延时单元Delay(8),为第二级的基2蝶形运算准备数据;
(2.3)流水第12~15拍:输入数据继续进入加减法器,第一级基2蝶形运算继续进行中。加法器输出继续进入中间的延时单元Delay(4),移出的数据经由Finb与Foutc进入图1中下面的延时单元Delay(4),实现第二级基2蝶形运算前四对数据的对齐。减法器输出继续进入延时单元Delay(8);
(2.4)流水第16~19拍:这时BPE-I的Din端的数据已是第二批次的待处理数据,经由Fouta进入延时单元Delay(8),准备开始又一次的流水操作。此时BPE-I的加减法器在两个批次的第一级基2蝶形运算间有8拍的处理时间,可以用来计算第一批次数据的第二级基2蝶形运算,加法器运算结果输出到Dout,经过与相应旋转因子的乘以后进入BPE-II,减法器运算结果经中间的延时单元Delay(4)实现串行化在下一个四拍输出到Dout。
(2.5)流水第20~23拍:BPE-I的加减法器计算第一批次第二级的后四次基2蝶形运算,加法器运算结果由Foutc进入图1中下面的延时单元Delay(4)实现串行化在下一个四拍输出到Dout,而减法器结果则经由Foutb进入中间的延时单元Delay(4)后在经由Foutc进入图1中下面的延时单元Delay(4)实现串行化在第28~31拍输出到Dout。
(2.6)从第16拍开始,流水建立,BPE-I流水建立,这以后操作按(2.2),(2.3),(2.4),(2.5)操作以每十六拍为一个循环进行,每拍从BPE-I的Dout端口顺序流出一个基4蝶形运算结果。
③BPE-II的工作步骤:BPE-II处于基4蝶形运算工作模式。
(3.1)流水第0~15拍:等待数据到达;
(3.2)流水第16~17拍:处理数据经过BPE-I后到达。控制输入数据经由Fouta进入延时单元Delay(2),实现第三级基2蝶形运算操作数的对齐;
(3.3)流水第18拍:控制输入数据进入加减法器,开始第三级基2蝶形运算,加法器输出进入中间的延时单元Delay(1),减法器输出进入延时单元Delay(2),为第四级的基2蝶形运算准备数据;
(3.4)流水第19拍:输入数据继续进入加减法器,第三级基2蝶形运算继续进行中。加法器输出继续进入中间的延时单元Delay(1),移出的数据经由Finb与Foutc进入图1中下面的延时单元Delay(1),实现第四级基2蝶形运算第一对数据的对齐。减法器输出继续进入延时单元Delay(2);
(3.5)流水第20拍:这时BPE-II的Din端的数据已是该处理单元第二批次的待处理数据,经由Fouta进入延时单元Delay(2),准备开始又一次的流水操作。此时BPE-II的加减法器在两个批次的第三级基2蝶形运算间有2拍的处理时间,可以用来计算该处理单元第一批次数据的第四级基2蝶形运算,加法器运算结果输出到Dout,减法器运算结果经中间的延时单元Delay(1)实现串行化在下一拍输出到Dout。
(3.6)流水第21拍:BPE-II的加减法器计算该处理单元第一批次第二级的第二次基2蝶形运算,加法器运算结果由Foutc进入图1中下面的延时单元Delay(1)实现串行化在下一拍输出到Dout,而减法器结果则经由Foutb进入中间的延时单元Delay(1)后在经由Foutc进入图1中下面的延时单元Delay(1)实现串行化在第23拍输出到Dout。
(3.7)从第20拍开始整个流水线流水建立,这以后BPE-II操作按(3.3),(3.4),(3.5),(3.6)操作以每四拍为一个循环进行,每拍从BPE-II的Dout端口顺序流出一个基16蝶形运算结果。
R2SD2F流水线及相应FFT处理器设计实现的可综合VHDL代码描述如下(代码中调用的模块Delay为通用延时单元,BF2为通用基2蝶形运算模块,MPYCF为通用旋转因子乘模块,它们不属于本发明专利创新范围,故不在此给出实现代码):
library IEEE;
use IEEE.std_logic_1164.all;
entity FFTPPL is
generic(
DW :integer:=16;
DL :integer:=64;
log4DL:integer:=3
);
port(
Din :in std_logic_vector(2*DW-1 downto 0);
rst :in std_logic;
clk :in std_logic;
Fren :in std_logic;
Dout :out std_logic_vector(2*DW-1 downto 0));
end FFTPPL;
architecture FFTPPL_arch of FFTPPL is
component LPPLBF
generic(
DW :integer:=16;
DLF :integer:=1);
port(
Din :in std_logic_vector(2*DW-1downto 0);
clk :in std_logic;
S :in std_logic_vector(9 downto 0);
Dout :out std_logic_vector(2*DW-1 downto 0));
end component;
component MPYCF
port(
Din :in std_logic_vector(2*DW-1 downto 0);
clk :in std_logic;
Dout :out std logic_vector(2*DW-1 downto 0));
end component;
component Ctrl
port(
rst :in std_logic;
clk :in std_logic;
Fren :in std_logic;
S :out std_logic_vector(9 downto 0));
end component;
type Dat_Array is array(0 to log4DL-1)of std logic_vector(2*DW-1 downto 0);
signal Din_Dat,Dout_Dat:Dat_Array;
signal S:std_logic_vector(9 downto 0);
begin
lp0:for I in 0 to log4DL-1 generate
lp1:if i=0 generate
Din_Dat(I)<=Din;
lp1_0:LPPLBF generic map(DLF=>DL/(4**(i+1)))
port map(
Din=>Din_Dat(I),clk=>clk,s=>s,Dout=>Dout_Dat(I));
end generate;
lp2:ifi>0 generate
lp2_1:MPYCF port map(
Din=>Dout_Dat(I-1),clk=>clk,Dout=>Din_Dat(I));
lp2_0:LPPLBF generic map(DLF=>DL/(4**(i+1)))
port map(
Din=>Din_Dat(I),clk=>clk,s=>s,Dout=>Dout_Dat(I));
end generate;
end generate;
u_ctrl:Ctrl port map(
rst=>rst,clk=>clk,Fren=>Fren,S=>S);
end FFTPPL_arch;
library IEEE;
use IEEE.std_logic_1164.all;
entity LPPLBF is
generic(
DW :integer:=16;
DLF :integer:=1
);
port(
Din :in std_logic_vector(2*DW-1 downto 0);
clk :in std_logic;
S :in std_logic_vector(9 downto 0);
Dout :out std_logic_vector(2*DW-1 downto 0));
end LPPLBF;
architecture LPPLBF_arch of LPPLBF is
signal Fouta,Foutb,Foutc:std_logic_vector(2*DW-1 downto 0);
signal Fina,Finb,Finc:std_logic_vector(2*DW-1 downto 0);
signal Bina,Binb,Bouta,Boutb:std_logic_vector(2*DW-1 downto 0);
signal tmp0,tmp1,tmp2,tmp3:std_logic_vector(2*DW-1 downto 0);
-------------------------------------------------------
--Function of BF2
--when Sel=0
--Bouta(2*DW-1 downto DW)=Bina(2*DW-1 downto DW)+Binb(2*DW-1
downto DW);
--Bouta(DW-1 downto 0)=Bina(DW-1 downto 0)+Binb(DW-1
downto 0);
--Boutb(2*DW-1 downto DW)=Bina(2*DW-1 downto DW)-Binb(2*DW-1
downto DW);
--Boutb(DW-1 downto 0)=Bina(DW-1 downto 0)-Binb(DW-1
downto 0);
--when Sel=1
--Bouta(2*DW-1 downto DW)=Bina(2*DW-1 downto DW)+Binb(2*DW-1
downto DW);
--Bouta(DW-1 downto 0)=Bina(DW-1 downto 0)-Binb(DW-1
downto 0);
--Boutb(2*DW-1 downto DW)=Bina(2*DW-1 downto DW)-Binb(2*DW-1
downto DW);
--Boutb(DW-1 downto 0)=Bina(DW-1 downto 0)+Binb(DW-1
downto 0);
component BF2
port(
Bina :in std_logic_vector(2*DW-1 downto 0);
Binb :in std_logic_vector(2*DW-1 downto 0);
Sel :in std_logic;
Bouta :out std_logic_vector(2*DW-1 downto 0);
Boutb :out std_logic_vector(2*DW-1 downto 0));
end component;
--------------------------------------------
component Delay
generic(DLF :integer:=1);
port(
Din :in std_logic_vector(2*DW-1 downto 0);
clk :in std_logic;
Dout :out std_logic_vector(2*DW-1 downto 0));
end component;
begin
Bina<=Fine when s(0)=′0′else Fina;
Binb<=tmp0 when s(0)=′0′else Din;
tmp0<=Finb when s(1)=′0′else Fina;
tmp1<=Fina when s(2)=′0′else Bouta;
Foutc<=tmp1 when s(3)=′0′else Finb;
Foutb<=Boutb when s(4)=′0′else Bouta;
tmp2<=Din when s(5)=′0′else Boutb;
tmp3<=Bouta when s(6)=′0′else Finb;
Dout<=tmp3 when s(7)=′0′else Finc;
Fouta<=tmp2 when s(8)=′0′else tmp2(DW-1 downto 0)&tmp2(2*DW-1 downtoDW);
u0:BF2 port map(
Bina =>Bina,
Binb =>Binb,
Sel =>s(9),
Bouta =>Bouta,
Boutb=>Boutb);
DelayA:Delay generic map(DLF=>DLF*2)
port map(Din=>Fouta,clk=>clk,Dout=>Fina);
DelayB:Delay generic map(DLF=>DLF)
port map(Din=>Foutb,clk=>clk,Dout=>Finb);
DelayC:Delay generic map(DLF=>DLF)
port map(Din=>Foutc,clk=>clk,Dout=>Finc);
end LPPLBF_arch;
FFTPPL为顶层源代码,它包含三个参数,分别是DW、DL、log4DL,分别表示数据宽度、变换长度和变换长度以4为底的对数。Ctrl模块是生成选通信号S的控制模块,它根据变换长度生成控制LPPLBF模块的选通信号,可根据需要按图3、4、5完成。
Claims (5)
1.基2单路深度延时反馈的流水线构成FFT处理器的实现方法,其特征在于,流水线的结构由四个复数加法器和一个复数乘法器以及两个蝶形处理单元组成,运算数据顺序流入,运算结果顺序流出;
上述蝶形处理单元是模式可编程的,选择基4、基2或直通模式,使长度为16的R2SD2F流水线能够分别用于计算基16、基8、基4和基2蝶形运算;
在流水线的每一级,均有三组延时寄存器,对于第p级来说,三组延时分别为:一组N/(2×4p-1)拍延时Delay A,另外两组为N/4p拍延时Delay B&C,在这里N等于16;即第一蝶形处理单元的输出分别经过8、4、和4拍的延时反馈输入到其输入端,而第二蝶形处理单元的输出端分别经过8、4、和4拍的延时反馈输入到同一蝶形处理单元的输入端;
第一蝶形处理单元的输出经过乘法器与旋转因子相乘后进入第二蝶形处理单元的一个输入端口,将两个蝶形处理单元联系起来构成完整的流水线,待处理数据从第一蝶形处理单元的一个端口流入,最终结果从第二蝶形处理单元输出端口流出。
2.如权利要求1所述的方法,其特征在于,所述的蝶形处理单元对基2蝶形运算按下列步骤进行:
流水线结构由第一蝶形处理单元及相应的延时存储单元Delay(n)和第二蝶形处理单元及相应的延时存储单元Delay(n)构成,n表示延时拍数;上述两个蝶形处理单元均包括一个复数加法器、一个复数减法器、10组二选一转换开关及相应的连线组成;
①第一蝶形处理单元的工作步骤:
第一蝶形处理单元处于直通工作模式,各转换器控制输入数据进入延时存储单元Delay(n),此时的n=8,经过8拍延时后再经进入延时存储单元Delay(n),此时的n=4,最后输出,经过与相应旋转因子的乘以后进入第二蝶形处理单元;
②第二蝶形处理单元的工作步骤:
第二蝶形处理单元处于基2蝶形运算工作模式,步骤如下:
流水第0~11拍:等待数据到达;
流水第12~13拍:处理数据经过第一蝶形处理单元后到达,控制输入数据进入延时存储单元Delay(n),此时的n=2,整个流水过程中状态保持一致不变;
流水第14拍:控制经过2拍延时后的第一个数据进下面的延时存储单元Delay(n),实现基2蝶形运算操作数的对齐;
流水第15拍:控制输入数据进入加减法器,开始基2蝶形运算,加法器运算结果输出,减法器运算结果经中间的延时存储单元Delay(1)实现串行化在下一拍输出;
即从第15拍开始流水建立,这以后操作按以每两拍为一个循环进行,每拍从第二蝶形处理单元的端口顺序流出一个基2蝶形运算结果。
3.如权利要求1所述的方法,其特征在于,所述的蝶形处理单元对基4蝶形运算按下列步骤进行:
流水线结构由第一蝶形处理单元及相应的延时存储单元Delay(n)和第二蝶形处理单元及相应的延时存储单元Delay(n)构成,n表示延时拍数;上述两个蝶形处理单元均包括一个复数加法器、一个复数减法器、10组二选一转换开关及相应的连线组成;
①第一蝶形处理单元的工作步骤:
第一蝶形处理单元处于直通工作模式,各转换器控制输入数据进入延时存储单元Delay(n),此时的n=8,经过8拍延时后再进入延时存储单元Delay(n),此时的n=4,最后输出,经过与相应旋转因子的乘以后进入第二蝶形处理单元;
②第二蝶形处理单元的工作步骤:
第二蝶形处理单元处于基4蝶形运算工作模式,步骤如下:
流水第0~11拍:等待数据到达;
流水第12~13拍:处理数据经过BPE-I后到达,控制输入数据进入延时存储单元Delay(2),实现第一级基2蝶形运算操作数的对齐;
流水第14拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器输出进入中间的延时存储单元Delay(1),减法器输出进入延时存储单元Delay(2),为第二级的基2蝶形运算准备数据;
流水第15拍:输入数据继续进入加减法器,第一级基2蝶形运算继续进行中,加法器输出继续进入中间的延时存储单元Delay(1),移出的数据进入延时存储单元Delay(1),实现第二级基2蝶形运算第一对数据的对齐,减法器输出继续进入延时存储单元Delay(2);
流水第16拍:这时第二蝶形处理单元的数据已是第二批次的待处理数据,进入延时存储单元Delay(2),准备开始又一次的流水操作,此时第二蝶形处理单元的加减法器在两个批次的第一级基2蝶形运算间有2拍的处理时间,可以用来计算第一批次数据的第二级基2蝶形运算,加法器运算结果输出,减法器运算结果经中间的延时存储单元Delay(1)实现串行化在下一拍输出;
流水第17拍:第二蝶形处理单元的加减法器计算该处理单元第一批次第二级的第二次基2蝶形运算,加法器运算结果进入延时存储单元Delay(1)实现串行化在下一拍输出,而减法器结果则进入中间的延时存储单元Delay(1)后在进入延时存储单元Delay(1)实现串行化在第19拍输出;
从第16拍开始流水建立,这以后操作以每四拍为一个循环进行,每拍从第二蝶形处理单元的端口顺序流出一个基4蝶形运算结果。
4.如权利要求1所述的方法,其特征在于,所述的蝶形处理单元对基8蝶形运算按下列步骤进行:
流水线结构由第一蝶形处理单元及相应的延时存储单元Delay(n)和第二蝶形处理单元及相应的延时存储单元Delay(n)构成,n表示延时拍数;上述两个蝶形处理单元均包括一个复数加法器、一个复数减法器、10组二选一转换开关及相应的连线组成;
①第一蝶形处理单元的工作步骤:
第一蝶形处理单元处于基2蝶形运算工作模式,步骤如下:
流水第0~7拍:控制输入数据进入延时存储单元Delay(8),整个流水过程中状态保持一致不变;
流水第8~11拍:控制经过8拍延时后的前四个数据进入延时存储单元Delay(4),实现第一级基2蝶形运算操作数的对齐;
流水第12~15拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器运算结果输出,经过与相应旋转因子的乘以后进入第二蝶形处理单元,减法器运算结果经中间的延时存储单元Delay(4)实现串行化在下一个四拍输出;
从第12拍开始,第一蝶形处理单元流水建立,这以后操作以每八拍为一个循环进行,每拍从第一蝶形处理单元的端口顺序流出一个第一级基2蝶形运算结果;
②第二蝶形处理单元的工作步骤:
第二蝶形处理单元处于基4蝶形运算工作模式,步骤如下:
流水第0~11拍:等待数据到达;
流水第12~13拍:处理数据经过第一蝶形处理单元后到达,控制输入数据进入延时存储单元Delay(2),实现第一级基2蝶形运算操作数的对齐;
流水第14拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器输出进入中间的延时存储单元Delay(1),减法器输出进入延时存储单元Delay(2),为第二级的基2蝶形运算准备数据;
⑤流水第15拍:输入数据继续进入加减法器,第一级基2蝶形运算继续进行中,加法器输出继续进入中间的延时存储单元Delay(1),移出的数据进入延时存储单元Delay(1),实现第二级基2蝶形运算第一对数据的对齐,减法器输出继续进入延时存储单元Delay(2);
流水第16拍:这时第二蝶形处理单元的数据已是第二批次的待处理数据,进入延时存储单元Delay(2),准备开始又一次的流水操作,此时第二蝶形处理单元的加减法器在两个批次的第一级基2蝶形运算间有2拍的处理时间,可以用来计算第一批次数据的第二级基2蝶形运算,加法器运算结果输出,减法器运算结果经中间的延时存储单元Delay(1)实现串行化在下一拍输出;
流水第17拍:第二蝶形处理单元的加减法器计算该处理单元第一批次第二级的第二次基2蝶形运算,加法器运算结果进入延时存储单元Delay(1)实现串行化在下一拍输出,而减法器结果则进入中间的延时存储单元Delay(1)后进入延时存储单元Delay(1)实现串行化在第19拍输出;
从第16拍开始整个流水线流水建立,这以后第二蝶形处理单元操作以每四拍为一个循环进行,每拍从第二蝶形处理单元端口顺序流出一个基8蝶形运算结果。
5.如权利要求1所述的方法,其特征在于,所述的蝶形处理单元对基16蝶形运算按下列步骤进行:
流水线结构由第一蝶形处理单元及相应的延时存储单元Delay(n)和第二蝶形处理单元及相应的延时存储单元Delay(n)构成,n表示延时拍数;上述两个蝶形处理单元均包括一个复数加法器、一个复数减法器、10组二选一转换开关及相应的连线组成;
①第一蝶形处理单元的工作步骤:
第一蝶形处理单元处于基4蝶形运算工作模式,步骤如下:
流水第0~7拍:控制输入数据进入延时存储单元Delay(8),实现第一级基2蝶形运算操作数的对齐;
流水第8~11拍:控制输入数据进入加减法器,开始第一级基2蝶形运算,加法器输出进入中间的延时存储单元Delay(4),减法器输出进入延时存储单元Delay(8),为第二级的基2蝶形运算准备数据;
流水第12~15拍:输入数据继续进入加减法器,第一级基2蝶形运算继续进行中,加法器输出继续进入中间的延时存储单元Delay(4),移出的数据经由Finb与Foutc进入延时存储单元Delay(4),实现第二级基2蝶形运算前四对数据的对齐,减法器输出继续进入延时存储单元Delay(8);
流水第16~19拍:这时第一蝶形处理单元的数据已是第二批次的待处理数据,进入延时存储单元Delay(8),准备开始又一次的流水操作,此时第一蝶形处理单元的加减法器在两个批次的第一级基2蝶形运算间有8拍的处理时间,可以用来计算第一批次数据的第二级基2蝶形运算,加法器运算结果输出,经过与相应旋转因子的乘以后进入第二蝶形处理单元,减法器运算结果经中间的延时存储单元Delay(4)实现串行化在下一个四拍输出;
流水第20~23拍:第一蝶形处理单元的加减法器计算第一批次第二级的后四次基2蝶形运算,加法器运算结果进入延时存储单元Delay(4)实现串行化在下一个四拍输出,而减法器结果则进入中间的延时存储单元Delay(4)后进入延时存储单元Delay(4)实现串行化在第28~31拍输出;
从第16拍开始,流水建立,第一蝶形处理单元流水建立,这以后操作以每十六拍为一个循环进行,每拍从第一蝶形处理单元端口顺序流出一个基4蝶形运算结果;
②第二蝶形处理单元的工作步骤:
第二蝶形处理单元处于基4蝶形运算工作模式,步骤如下:
流水第0~15拍:等待数据到达;
流水第16~17拍:处理数据经过第一蝶形处理单元后到达,控制输入数据进入延时存储单元Delay(2),实现第三级基2蝶形运算操作数的对齐;
流水第18拍:控制输入数据进入加减法器,开始第三级基2蝶形运算,加法器输出进入中间的延时存储单元Delay(1),减法器输出进入延时存储单元Delay(2),为第四级的基2蝶形运算准备数据;
流水第19拍:输入数据继续进入加减法器,第三级基2蝶形运算继续进行中,加法器输出继续进入中间的延时存储单元Delay(1),移出的数据进入延时存储单元Delay(1),实现第四级基2蝶形运算第一对数据的对齐,减法器输出继续进入延时存储单元Delay(2);
流水第20拍:这时第二蝶形处理单元的数据已是该处理单元第二批次的待处理数据,进入延时存储单元Delay(2),准备开始又一次的流水操作,此时第二蝶形处理单元的加减法器在两个批次的第三级基2蝶形运算间有2拍的处理时间,可以用来计算该处理单元第一批次数据的第四级基2蝶形运算,加法器运算结果输出,减法器运算结果经中间的延时存储单元Delay(1)实现串行化在下一拍输出;
流水第21拍:第二蝶形处理单元的加减法器计算该处理单元第一批次第二级的第二次基2蝶形运算,加法器运算结果进入延时存储单元Delay(1)实现串行化在下一拍输出,而减法器结果则进入中间的延时存储单元Delay(1)后进入延时存储单元Delay(1)实现串行化在第23拍输出;
从第20拍开始整个流水线流水建立,这以后第二蝶形处理单元以每四拍为一个循环进行,每拍从第二蝶形处理单元的端口顺序流出一个基16蝶形运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100428284A CN100378719C (zh) | 2005-06-16 | 2005-06-16 | 基2单路深度延时反馈的流水线构成fft处理器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100428284A CN100378719C (zh) | 2005-06-16 | 2005-06-16 | 基2单路深度延时反馈的流水线构成fft处理器的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1700203A CN1700203A (zh) | 2005-11-23 |
CN100378719C true CN100378719C (zh) | 2008-04-02 |
Family
ID=35476270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100428284A Expired - Fee Related CN100378719C (zh) | 2005-06-16 | 2005-06-16 | 基2单路深度延时反馈的流水线构成fft处理器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100378719C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847137B (zh) * | 2009-03-27 | 2013-04-24 | 杭州中科微电子有限公司 | 一种实现基2fft计算的fft处理器 |
CN101937423B (zh) * | 2009-07-01 | 2012-06-13 | 中兴通讯股份有限公司 | 一种流水式fft/ifft的处理系统 |
CN102129419B (zh) * | 2011-03-04 | 2016-02-03 | 中山大学 | 基于快速傅立叶变换的处理器 |
CN102768654A (zh) * | 2011-05-05 | 2012-11-07 | 中兴通讯股份有限公司 | 具有fft基2蝶运算处理能力的装置及其实现运算的方法 |
CN103761074B (zh) * | 2014-01-26 | 2016-08-17 | 北京理工大学 | 一种流水结构定点fft字长配置方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504890A (zh) * | 2002-12-03 | 2004-06-16 | 中国科学院计算技术研究所 | 数据全并行的fft处理器地址映射方法和系统 |
CN1167025C (zh) * | 2000-11-10 | 2004-09-15 | 三星电子株式会社 | 补偿输出位信号的快速傅立叶变换设备及方法 |
WO2005008516A2 (en) * | 2003-07-18 | 2005-01-27 | Cygnus Communications Canada Co. | Recoded radix-2 pipelined fft processor |
-
2005
- 2005-06-16 CN CNB2005100428284A patent/CN100378719C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1167025C (zh) * | 2000-11-10 | 2004-09-15 | 三星电子株式会社 | 补偿输出位信号的快速傅立叶变换设备及方法 |
CN1504890A (zh) * | 2002-12-03 | 2004-06-16 | 中国科学院计算技术研究所 | 数据全并行的fft处理器地址映射方法和系统 |
WO2005008516A2 (en) * | 2003-07-18 | 2005-01-27 | Cygnus Communications Canada Co. | Recoded radix-2 pipelined fft processor |
Non-Patent Citations (2)
Title |
---|
一种高速并行FFT处理器的VLSI结构设计. 万红星,陈禾,韩月秋.电子技术应用,第5期. 2005 * |
数据全并行FFT处理器的设计. 谢应科,付博.计算机研究与发展,第41卷第6期. 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1700203A (zh) | 2005-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
He et al. | A new approach to pipeline FFT processor | |
CN100405361C (zh) | 用于执行计算操作的方法、系统以及设备 | |
Cheng et al. | High-throughput VLSI architecture for FFT computation | |
CN110765709B (zh) | 一种基于fpga的基2-2快速傅里叶变换硬件设计方法 | |
Yang et al. | An efficient locally pipelined FFT processor | |
Chiper et al. | Systolic algorithms and a memory-based design approach for a unified architecture for the computation of DCT/DST/IDCT/IDST | |
Shieh et al. | Word-based Montgomery modular multiplication algorithm for low-latency scalable architectures | |
CN100378719C (zh) | 基2单路深度延时反馈的流水线构成fft处理器的实现方法 | |
CN101149730B (zh) | 使用主要因素算法的最佳离散傅利叶转换方法及装置 | |
CN109144469B (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
Olivieri | Design of synchronous and asynchronous variable-latency pipelined multipliers | |
CN101847137B (zh) | 一种实现基2fft计算的fft处理器 | |
CN108021781A (zh) | 一种可参数化的fft ip核设计和优化方法 | |
CN102707931A (zh) | 一种基于并行数据通道的数字信号处理器 | |
US5481488A (en) | Block floating point mechanism for fast Fourier transform processor | |
US8396913B2 (en) | Fast fourier transform architecture | |
CN114186183B (zh) | 一种轻量化的fft运算方法及其实现装置 | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
CN105975436B (zh) | 一种SoC系统中通用可配置加速单元的IP电路 | |
Samudrala et al. | Parallel and pipelined VLSI implementation of the new radix-2 DIT FFT algorithm | |
Hong et al. | Design and implementation of a high-speed matrix multiplier based on word-width decomposition | |
TWI235954B (en) | Method and system for performing a multiplication operation and a device | |
Saha et al. | ASIC implementation of high speed processor for calculating discrete fourier transformation using circular convolution technique | |
CN1553310A (zh) | 高速低功耗乘法器的对称分割算法及电路结构 | |
Petrovsky et al. | Automatic generation of split-radix 2-4 parallel-pipeline FFT processors: hardware reconfiguration and core optimizations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080402 Termination date: 20150616 |
|
EXPY | Termination of patent right or utility model |