一种FFT处理器的制作方法

文档序号:12734207阅读:509来源:国知局
一种FFT处理器的制作方法与工艺

本实用新型涉及电子通信技术领域,尤其涉及一种FFT处理器。



背景技术:

快速离散傅里叶变换(FFT)/快速反傅里叶变换(IFFT)是离散傅里叶变换(DFT)/离散反傅里叶变换(IDFT)的快速实现方式,是数字信号处理中常用的技术。由于DFT/FFT运算和IDFT/IFFT运算过程基本一致,因此FFT和IFFT可以采用相同的电路实现方法。

Cooley和Tukey实用新型了FFT算法,FFT的的基本思想是将原有N点序列分解成两个或更多的较短序列并重新组合成原序列的DFT,使间接算法的运算次数比直接计算DFT的运算次数少得多,从而提高DFT的计算速度。

一方面,FFT/IFFT的分解运算基本可分为两类:一类是将时间序列x(n)进行逐次分解,称为按时间抽取算法(Decimation In Time,DIT);另一类将傅立叶变换序列X(k)进行分解,称为按频率抽取算法(Decimation In Frequency,DIF)。而按照FFT分解的短序列的个数M,可以将FFT/IFFT算法可以分为若干种,一般称为基-M算法。例如,基2FFT算法可以将N点DFT运算分解成 个2点DFT运算过程;基4FFT算法可以将N点DFT运算分解成个4点DFT运算过程;基8FFT算法可以将N点DFT运算分解成个8点DFT运算过程。

另一方面,当前FFT处理器的硬件实现结构包括递归结构、流水线结构和全并行结构。递归结构又叫共享内存结构,所占硬件资源最少,只有一个运算处理单元,但所需运算时间较长,不能连续处理FFT计算请求,只适应于偶尔需要FFT运算的场合;流水线结构采用多级运算单元,前一级运算单元将结果送入下一级运算单元后可计算下一次FFT而无需等待FFT运算完成,流水线结构可连续计算前后数据不重叠的N点FFT;对于前后数据重叠的连续FFT计算,只能采用全并行结构,该结构每一级运算针对点数N设置对应的运算单元,每一级运算时延可低至单个系统时钟周期,可实现任意N点FFT的连续计算,但占用硬件资源巨大。实际应用中需要作任意N点FFT连续计算的场合非常少,因此采用流水线设计FFT处理器最为普遍。

上述FFT处理器的流水线结构主要有3类:单路延时转接器结构(Single-path Delay Commutator, SDC)、多路延时转接器结构(Multi-path Delay Commutator, MDC)和单路延时反馈转接器结构(Single-path Delay Feedback, SDF)。因为基2SDC(R2SDC)结构在基2 蝶形分解运算时与R2SDF相比没有优势,所以基2FFT处理器主要采用基2MDC(R2MDC)和基2SDF(R2SDF)结构。

基2MDC和基2SDF结构都具有控制简单易于实现的特点,占用的电路资源也相差不大,其中基2SDF结构需要的存储器少一点,而基2MDC结构的计算时延更短一些。但基2MDC和基2SDF结构的复数乘法器的利用率较低(只有50%),因此整个FFT处理器需要的乘法器数量较多。

由于FFT/IFFT运算由复数乘法和复数加法运算构成,乘法运算远比加法运算复杂,因此FFT处理器的电路规模主要由复数乘法器决定。基2MDC和基2SDF结构会因为复数乘法器利用率过低导致电路资源占用较大。

又一方面,FFT处理器的数据格式目前主要有定点格式、浮点格式和块浮点格式。定点格式计算简单,但是需要考虑数据溢出检测和处理机制,数据动态范围小;浮点格式计算精度高,能处理的数据动态范围大,还能有效减少计算的累积误差,但占用的电路资源巨大且功耗较高。常用的块浮点结构由于利用共享指数,因此可以基于定点运算模块处理较大的数据动态范围,但是每一级运算需要块浮点整理单元调整共享指数,而块浮点整理单元需要作统计运算处理,其数据格式并不适合流水式的电路结构。

因此,现有技术还有待发展。



技术实现要素:

鉴于上述现有技术的不足之处,本实用新型的目的在于提供一种FFT处理器,旨在解决现有FFT处理器占用电路资源大,数据格式与流水式电路结构不匹配的问题。

为了达到上述目的,本实用新型采取了以下技术方案:

一种FFT处理器,包括输入模块、运算模块以及输出模块,所述运算模块包括基2蝶式运算单元,其中,所述基2蝶式运算单元至少包括一个用于统一浮点输入数据指数的指数对齐电路、用于执行定点数据运算的运算单元以及用于执行指数规格化处理的规格化电路;

所述指数对齐电路将指数对齐后的浮点输入数据的统一的指数部分传输至所述规格化电路;所述运算单元接收指数对齐后的浮点输入数据的基数部分并执行对应的FFT运算;

所述规格化电路根据所述指数部分,对所述运算单元的运算结果执行指数规格化处理以生成浮点输出数据;

所述运算单元包括一个或多个定点加法器、定点乘法器和/或定点减法器。

所述的FFT处理器,其中,所述运算模块包括:输入级运算模块和若干递归运算模块;

所述递归运算模块至少包括延时单元、用于替换转接器的缓存单元以及所述基2蝶式运算单元;

所述缓存单元在预定的时钟周期内,根据对应的控制信号,输入第一输入信号或第二输入信号至所述基2蝶式运算单元中;所述第一输入信号为原始输入信号,所述第二输入信号为原始输入信号经过第一阶段的基2蝶式运算的运算结果。

所述的FFT处理器,其中,所述运算模块包括:第一输入级运算模块;

所述第一输入级运算模块包括至少一个延时单元、用于保存参与第一级基2蝶式运算的旋转因子的旋转因子保存单元以及所述基2蝶式运算单元;

所述第一输入级运算模块接收输入模块的输入信号,执行FFT运算的第一级基2蝶式运算。

所述的FFT处理器,其中,所述缓存单元包括:数据选择器、输入控制电路、输出控制电路以及至少两个双接口RAM;

所述数据选择器根据预定的切换控制信号,输入对应的输入信号至所述输入控制电路;所述输入控制电路将数据缓存在所述双接口RAM中,并由所述输出控制电路调用存储在所述双接口RAM中的缓存数据。

所述的FFT处理器,其中,所述输入控制电路包括至少一个第一计数器;

所述输入控制电路接收缓存数据并通过所述第一计数器,令递归运算模块执行对应的第一级蝶式运算或第二级蝶式运算。

所述的FFT处理器,其中,所述输出控制电路至少包括一个第二计数器;所述第二计数器根据输入信号,输出控制所述递归运算模块执行对应的蝶式运算的浮点信号。

所述的FFT处理器,其中,所述输入模块为串并转换模块;所述串并转换模块包括两个延时器;

至少一个所述延时器用于并行输出FFT运算的时域输入数据以及与所述时域输入数据延迟对应个采样点的延时信号。

所述的FFT处理器,其中,所述运算模块还包括:第二输入级运算模块;

所述第二输入级运算模块至少包括一个延时转换器和数据选择器;所述第二输入级运算模块通过所述数据选择器,在预定的时钟周期,控制所述基2蝶式运算单元执行第一级基2蝶式运算或第二级基2蝶式运算。

所述的FFT处理器,其中,通过如下算式计算判断值:

;其中,L为判断值,N为FFT运算的采样点数量,为向上取整函数;

在判断值为奇数时,通过第一输入级运算模块执行输入级运算;

在判断值为偶数时,通过第二输入级运算模块执行输入级运算。

所述的FFT处理器,其中,根据如下算式计算所述递归运算模块的数量:

在判断值为奇数时,;其中,L为判断值,S为递归运算模块的数量;

在判断值为偶数时,;其中,L为判断值,S为递归运算模块的数量。

有益效果:本实用新型提供的一种FFT处理器,通过伪浮点运算的方式来取代现有的块浮点结构,可以通过定点运算单元实现FFT运算的同时,令输入和输出数据均为浮点数据。该伪浮点运算结构,不需要多个数据共享指数字段,计算的精度较高,而且前置的对齐运算的颗粒度较小,运算的规模和时间延迟均远小于现有的块浮点结构,更适合应用于流水结构实现。

附图说明

图1为本实用新型实施例提供的FFT处理器的输入/输出接口示意图。

图2为本实用新型实施例提供的FFT处理器的示意图。

图3为本实用新型实施例提供的FFT处理器的输入模块的示意图。

图4为本实用新型实施例提供的FFT处理器的输出模块的示意图。

图5为本实用新型实施例提供的FFT处理器的第一输入级运算模块的示意图。

图6为本实用新型实施例提供的FFT处理器的第二输入级运算模块的示意图。

图7为本实用新型实施例提供的FFT处理器的递归运算模块的示意图。

图8为本实用新型实施例提供的FFT处理器的缓存单元的示意图。

图9为本实用新型实施例提供的FFT处理器的输入控制电路的示意图。

图10本实用新型实施例提供的FFT处理器的输出控制电路的示意图。

图11本实用新型实施例提供的FFT处理器的输入控制电路的基2蝶式运算单元的示意图。

具体实施方式

本实用新型提供一种FFT处理器。为使本实用新型的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本实用新型进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本实用新型,并不用于限定本实用新型。

如图1所示,为本实用新型具体实施例的一种FFT处理器的外部接口示意图。在本实用新型实施例提供的FFT处理器的外部接口包括:第一输入接口(输入数据以In_Frame表示)、第二输入接口(输入数据以In_Enable表示)以及第三输入接口(输入数据以In_Data表示)。其中,第一输入接口的数据(如In_Data)是串行输入数据,指参与N点FFT运算的N个时域输入数据,其每个数据均包括实部(I分部)和虚部(Q分部)。第二输入接口的数据(如In_Enable)是数据使能信号。只有当In_Enable为有效时,输入的In_Data才是有效的;第三输入接口的数据(如In_Frame)是帧同步信号,对于N个FFT数据组成的数据帧,In_Frame只在帧数据的第一个数据输入时有效,其他时候In_Frame均无效。

除输入接口外,还包括第一输出接口(输出数据以Out_Frame表示)、第二输出接口(输出数据以Out_Valid表示)以及第三输出接口(输出数据以Out_Data表示),其中第一输出接口的输出数据(如Out_Data)是串行输出结果,即N点FFT运算的频域输出结果。相对应地,该输出结果也是N个数据,每个数据包括实部(I分部)和虚部(Q分部)。第二输出接口的输出数据(如Out_Valid)是数据输出有效信号,只有当Out_Valid为有效时,输出结果的Out_Data才是有效的。

在本实施例中提供的FFT处理器采取串行连续输出结果的方式。这样的,在FFT处理器输出一帧计算结果的过程中,Out_Valid是连续有效的。而第三输出接口的输出数据(如Out_Frame)是帧同步信号,在输出N点FFT运算结果组成的数据帧的时候,Out_Frame只在帧数据的第一个数据输出时有效,其他时候In_Frame均无效。

如图2所示,该FFT处理器包括:输入模块10、运算模块20以及输出模块30。所述运算模块20包括若干基2蝶式运算单元200。

在本实例中,所述运算模块20可以包括:第一输入级运算模块21,第二输入级运算模块22以及若干个递归运算模块23。该FFT处理器具体使用的运算模块20以及所需要的使用的递归运算模块23具体可以通过如下算式计算判断值:

(1)

其中,L为判断值,是一个正整数参数值;N为FFT运算的采样点数量,为向上取整函数。在判断值为奇数时,通过第一输入级运算模块21执行输入级运算。而在判断值为偶数时,通过第二输入级运算模块22执行输入级运算。

具体的,所述需要使用的递归运算模块的数量根据如下算式计算:在判断值为奇数时,;其中,L为判断值,S为递归运算模块的数量。而在判断值为偶数时,;其中,L为判断值,S为递归运算模块的数量。

如图5所示,所述第一输入级运算模块21包括至少一个延时单元211、用于保存参与第一级基2蝶式运算的旋转因子的旋转因子保存单元212以及所述基2蝶式运算单元213。其中,所述第一输入级运算模块21接收输入模块的输入信号,执行FFT运算的第一级基2蝶式运算。

以下进一步的阐述该第一输入级运算模块21的工作过程。如图5所示,该第一输入级运算模块21的输入信号包括2路并行输入的基2运算数据DataA和DataBase、数据使能信号Ena和帧同步信号Sync。其输出信号包括:2路并行输出的基2运算结果DataA和DataBase、输出结果使能信号Ena和输出帧同步信号Sync。

在本实施例中,第一输入级运算模块21用于完成FFT运算的第一级基2蝶形运算。如图5所示,第一输入级运算模块21由延时单元211、旋转因子保存单元212和基2蝶式运算单元213组成。旋转因子保存单元212用于保存参与第一级基2蝶形运算的旋转因子,并依次送入基2蝶式运算单元213中,供蝶式运算使用。

该基2蝶式运算单元213用于基2蝶形运算,其输入信号包括并行输入运算数据DataA和DataBase、帧同步信号Sync、数据使能信号Ena和用于基2蝶形运算的旋转因子。

延时单元211将输入Sync和Ena信号延时输出,保证输出信号Sync和Ena与基2蝶式运算单元213的输出结果DataA和DataB配合使用。

如图6所示,所述第二输入级运算模块22至少包括一个延时转换器221、数据选择器222和所述基2蝶式运算单元223。在运算过程中,所述第二输入级运算模块22通过所述数据选择器,在预定的时钟周期,控制所述基2蝶式运算单元223执行第一级基2蝶式运算或第二级基2蝶式运算。

以下进一步的阐述该第二输入级运算模块22的工作过程。如图6所示,该第二输入级运算模块22的输入信号包括:2路并行输入的基2运算数据DataA和DataBase、数据使能信号Ena和帧同步信号Sync。其输出信号包括2路并行输出的基2运算结果DataA和DataBase、输出结果使能信号Ena和输出帧同步信号Sync。

该第二输入级运算模块22可以用于执行FFT运算的第一级和第二级的基2蝶形运算。如图6所示,第二输入级运算模块22具体可以由延时单元220、旋转因子存储单元225、数据选择器222、计数器224、延时转接器221和基2蝶式运算单元223组成。

基2蝶式运算单元223用于执行基2蝶形运算,其输入信号包括并行输入运算数据DataA和DataB、帧同步信号Sync、数据使能信号Ena和用于基2蝶形运算的旋转因子。

该第二输入级运算模块相对于上述第一输入级运算模块,除相类似地运算结构外,还包含了一个由延时转接器221和数据选择器222构成的反馈环路。

在输入帧同步信号Sync有效之后的N/2个时钟周期(N为N点的FFT运算,即采样点数量),数据选择器222选择输入信号DataA和DataB作为运算数据送入基2蝶式运算单元223,完成FFT运算的第一级基2蝶形运算。

而在与其连续的N/2个时钟周期内,数据选择器222选择延时转接器221的反馈支路数据作为运算数据送入基2蝶式运算单元223,完成FFT运算的第二级基2蝶形运算。L位计数器224受到输入数据使能信号Ena和输入帧同步信号Sync控制。该计数器224输出CNT[L-1:0]的最高位CNT[L-1]作为数据选择器222的切换控制信号,控制数据选择器选择输入信号或者反馈支路信号送入基2蝶式运算单元223。

与第一输入级运算模块相类似地,旋转因子保存单元225用于保存参与参与第一级和第二级基2蝶形运算的旋转因子,并依次送入基2蝶式运算单元223中,供蝶式运算使用。延时单元220将输入Sync和Ena信号延时输出,保证输出信号Sync和Ena与基2蝶式运算单元223在第二个N/2个时钟周期的计算输出结果DataA和DataB配合使用。

如图7所示,所述递归运算模块23至少包括延时单元231、用于替换转接器的缓存单元232以及所述基2蝶式运算单元233。所述缓存单元232在预定的时钟周期内,根据对应的控制信号,输入第一输入信号或第二输入信号至所述基2蝶式运算单元中。所述第一输入信号为原始输入信号,所述第二输入信号为原始输入信号经过第一阶段的基2蝶式运算的运算结果。由此,结合使用的存储器,结合了递归运算的优点,有效的节省了运算电路的资源,提高了利用率。

本实用新型实施例提供的FFT处理器可以包含有S个具有多路延时缓存结构的递归运算模块(编号从1到S)。各个递归运算模块可用于实现级联的两级基2蝶形运算。相比于传统的单路延时反馈结构和多路延时转接器结构的基2蝶形运算电路,该递归运算模块在不影响流水线结构的情况下,结合递归方法的优点,使得电路的资源利用率可以提高100%(一倍),即在实现相同计算规模的情况下可以节省大约一半的电路资源。

递归运算模块输入信号包括:并行输入运算数据A和B、帧同步信号Sync、数据使能信号Ena和用于基2蝶形运算的旋转因子。该多路延时缓存结构具体实现方法如下:

第一阶段,在输入帧同步信号Sync有效之后的N/2个时钟周期,缓存单元232打开直通数据通道选择输入信号DataA和DataB作为运算数据送入基2蝶式运算单元233,完成N/2组的基2蝶形运算。所述基2蝶式运算单元233的输出结果通过反馈支路送入缓存单元232暂存。

第二阶段,在紧接着的N/2个时钟周期,缓存单元232关闭直通数据通道选择缓存单元232暂时保存的反馈支路数据作为运算数据送入基2蝶式运算单元233,完成第二阶段的N/2组的基2蝶形运算。

L位计数器受到输入数据使能信号Ena和输入帧同步信号Sync控制,计数器输出CNT[L-1:0]的最高位CNT[L-1]作为递归缓存单元的切换控制信号,控制缓存单元232选择输入信号或者反馈支路信号送入基2蝶式运算单元233。

参与第一和第二共计两个阶段(每阶段N/2组的基2蝶形运算)的基2蝶形运算的旋转因子可以保存在对应的存储单元中,并依次送入基2蝶式运算单元233执行运算。

延时单元231将输入Sync和Ena信号延时输出,保证输出信号Sync和Ena与基2蝶式运算单元233第二阶段的N/2个时钟周期的计算输出结果OutA和OutB配合使用。

更具体的,如图8所示,所述缓存单元的输入信号包括2组输入数据、切换控制信号Ctrl、数据使能信号Ena和帧同步信号Sync;输出信号包括2路并行输出数据A和B、输出数据使能信号Ena和输出帧同步信号Sync。

在2组输入数据中,一组来自于反馈支路,包括2路并行的基2运算结果OutA和OutB;另外一组来自于递归运算模块外部,包括2路并行输入的基2运算数据DataA和DataB。

缓存单元是上述递归运算模块内部的核心控制单元,其能够通过控制基2蝶式运算单元233的输入数据时序,协调各电路单元实现2个阶段的基2蝶形运算。如图8所示,该缓存单元232由数据选择器(Mux)2321、输入控制电路2322、双口RAM2323、输出控制电路2324和延时单元2325组成。

具体的,所述输入控制电路2322接收缓存数据并通过所述递归运算模块,执行对应的第一级蝶式运算或第二级蝶式运算。

以如下具体实例对所述输入控制电路2322的工作流程进行详细描述。如图9所示,输入控制电路的输入信号包括2路并行输入的缓存数据MuxA和MuxB、数据使能信号Ena和帧同步信号Sync;输出信号包括2路并行输出的数据DataA/DataB以及对应的双口RAM写入地址Addr/AddrB、输出结果使能信号Ena和输出帧同步信号Sync。

输入控制电路负责待缓存数据流MuxA和MuxB的存储写入时序控制,包括交换2322A、计数器2322B、按位异或2322C、延时2322D四个电路单元。在该输入控制电路中,核心单元是一个L位计数器2322B。该计数器受到输入数据使能信号Ena和输入帧同步信号Sync控制,计数器的输出信号是CNT[L-1:0];计数器的低L-1位输出,即CNT[L-2:0]直接输出作为L-1位的双口RAM写入地址信号AddrA;CNT[L-2:0]与参数P做按位异或运算,运算结果作为L-1位的双口RAM写入地址信号AddrB;CNT[L-1:0]中的第q位,即CNT[q]作为交换电路的控制信号,当CNT[q]为低电平时,数据MuxA和MuxB直通,即DataA=MuxA且DataB=MuxB;当CNT[q]为高电平时,数据MuxA和MuxB交叉,即DataA=MuxB且DataB=MuxA。

参数P和q是两个与输入控制电路所在的递归运算模块的位置编号有关的重要参数,其中参数q的具体计算方法如下:

FFT处理器共计有S个递归运算模块,每个运算模块的编号为s,s的取值范围是[1,S]。当L为奇数时,递归运算模块做第一阶段运算时参数q=L-2s,递归运算模块做第二阶段运算时,参数q=L-2s-1。

当L为偶数时,递归运算模块做第一阶段运算时参数q=L-2s-1,递归运算模块做第二阶段运算时参数q=L-2s-2。参数P由参数q决定,具体计算公式为:P=2^(q+1)。

延时单元2322D将Sync和Ena信号延时输出,保证输出信号Sync和Ena与双口RAM的写入数据DataA/DataB、写入地址Addr/AddrB配合使用。

另外,如图10所示,所述输出控制电路2324至少包括一个计数器;所述计数器根据输入信号,输出控制所述递归运算模块执行对应的蝶式运算的浮点信号。

以如下具体实例对所述输出控制电路2324的工作流程进行详细描述。如图10所示,输出控制电路的输入信号包括2路并行输入的双口RAM读取数据DataA/DataB、数据使能信号Ena和帧同步信号Sync;输出信号包括2路并行的输出数据A/B和双口RAM读取地址Addr/AddrB、输出结果使能信号Ena和输出帧同步信号Sync。

输出控制电路负责双口RAM的缓存数据的读取时序控制,包括交换2324A、计数器2324B、D触发器组(DFFs)2324C、延时2324D四个电路单元。相类似地,输出控制电路的核心单元是一个L位计数器2324B。该计数器受到输入数据使能信号Ena和输入帧同步信号Sync控制,计数器的输出信号是CNT[L-1:0];计数器的低L-1位输出,经过D触发器组(DFFs)延时一个时钟周期后,即CNT[L-2:0]输出作为L-1位的双口RAM读取地址信号AddrA和AddrB; CNT[L-1:0]中的第q位,即CNT[q]作为交换电路的控制信号,当CNT[q]为低电平时,数据DataA和DataB直通,即A=DataA且B=DataB;当CNT[q]为高电平时,数据DataA和DataB交叉,即A=DataB且B=DataA。

参数q是与输入控制电路所在的递归运算模块的位置编号有关的重要参数,参数q的具体计算方法如下:

FFT处理器共计有S个递归运算模块,每个运算模块的编号为s,s的取值范围是[1,S]。当L为奇数时,递归运算模块做第一阶段运算时参数q=L-2s,递归运算模块做第二阶段运算时,参数q=L-2s-1。

当L为偶数时,递归运算模块做第一阶段运算时参数q=L-2s-1,多路延时缓存结构的递归运算模块做第二阶段运算时参数q=L-2s-2。

延时单元2324D将Sync和Ena信号延时输出,保证输出信号Sync和Ena与控制输出电路的输出数据A/B配合使用。

数据选择器(Mux)在切换控制信号Ctrl的控制下实现两个阶段的基2蝶形运算输入数据控制。

其中,第一阶段,Ctrl为低电平的N/2个时钟周期,Mux选择输入信号DataA和DataB作为MuxA和MuxB送给下一级的输入控制电路;第二阶段,Ctrl为高电平的N/2个时钟周期,Mux选择输入信号OutA和OutB作为MuxA和MuxB送给下一级的输入控制电路。

双口RAM_A和双口RAM_B是缓存单元的数据存储电路,每块双口RAM可以存储N/2个数据,负责缓存调整其中一路的输入数据。

输入控制电路2322负责依次接收数据流MuxA和MuxB,根据相关参数产生数据流DataA和DataB以及对应的双口RAM写入地址信号AddrA和AddrB,然后将数据流DataA和DataB存入双口RAM_A和双口RAM_B。输出控制电路2324负责产生双口RAM的读取地址信号AddrA和AddrB,从双口RAM的读取数据后调整输出。

延时单元2324D将Sync和Ena信号延时输出,保证输出信号Sync和Ena与双口RAM的输出结果DataA和DataB配合使用。

其中,所述输入模块10为串并转换模块。所述串并转换模块包括两个延时器100。具体的,如图3所示,该输入模块10包括两个延时器100。其中一个延时器100用于并行输出FFT运算的时域输入数据以及与所述时域输入数据延迟对应个采样点的延时信号(如图3所示,分别对应于DataB和DataA)。而另一个延时器可以用于使能信号和帧同步信号的延时输出(In_Frame延迟后输出的信号是Sync,信号In_Enable延迟后输出的信号是Ena)。当然,应当说明的是,Ena、DataA和DataB都只有在Sync之后的N/2个点有效,再之后的N/2个点会被后续电路忽略。

其中,所述输出模块30亦为串并转换模块。具体的,如图4所示,输出并串转换模块30可以包括2个双口RAM(31A和31B)、2个计数器(32A和32B)、2个延时器33和1个数据选择器34(Mux)。

其中,2个双口RAM分别31用于缓存2路并行输入的数据OutA/OutB,计数器32A在输入信号Ena和Sync的同步下顺序产生2个双口RAM的数据写入地址。L位计数器32B在输入信号Ena和Sync的延时信号同步下循环计数,计数器的输出为CNT[L-1:0],其中CNT的最高位CNT[L-1]用于控制数据选择器的切换,当CNT[L-1]为低电平时,Mux选择双口RAM_A的读取数据作为串行输出结果Out_Data;当CNT[L-1]为高电平时,Mux选择双口RAM_B的读取数据作为串行输出结果Out_Data。CNT的低位CNT[L-1:0]经过高位低位逆序反转后得到CNT[0:L-1],用于驱动2个双口RAM的读取地址AddrA/AddrB。

2个延时器33用于输入Sync和Ena信号的延时,保证Sync和Ena的延时信号可用于控制计数器32A和计数器32B正确的产生双口RAM的写入地址和读取地址。Sync和Ena经过2级延时后的输出信号就是输出结果信号Out_Valid和输出帧同步信号Out_Frame,与本电路模块输出的FFT运算结果Out_Data配合,供后端使用。

在本实用新型的另一实施例中,如图3所示,所述基2蝶式运算单元200至少包括一个用于统一浮点输入数据指数的指数对齐电路210、用于执行定点数据运算的运算单元220以及用于执行指数规格化处理的规格化电路230。

所述指数对齐电路将指数对齐后的浮点输入数据的统一的指数部分传输至所述规格化电路;所述运算单元接收指数对齐后的浮点输入数据的基数部分并执行对应的FFT运算;

所述规格化电路根据所述指数部分,对所述运算单元的运算结果执行指数规格化处理以生成浮点输出数据;所述运算单元包括一个或多个定点加法器、定点乘法器和/或定点减法器。

以下结合图11所示的实施例,具体陈述该基2蝶式运算单元200的具体工作原理。如图11所示,输入信号包括2路并行输入的运算数据A/B、旋转因子、数据使能信号Ena和帧同步信号Sync。

输出信号包括2路并行输出的运算结果OutA/OutB、输出结果使能信号Ena和输出帧同步信号Sync。

基2蝶式运算单元200采用按频率抽取的FFT算法计算R2蝶形运算,即:OutA=A+B,OutB=(A-B)*旋转因子。在该基2蝶式运算单元200,所有运算数据和计算结果都采用浮点数据类型,所有浮点运算数据在进入基2蝶式运算单元200后首先通过指数对齐电路210,将所有输入浮点数据的指数都向指数最大的输入数据对齐。这样,经过指数对齐后的所有输入运算数据的指数部分相同并将相同的指数部分统一送至指数规格化电路230。基数部分送至对应的定点加法器、定点减法器和定点乘法器(即运算单元220部分),完成FFT算法中的基2蝶形运算。最后的运算结果通过指数规格化电路结合之前的统一指数,针对每一个基2蝶形运算结果作指数规格化处理。

由此,基2蝶式运算单元200的输出结果OutA/OutB是浮点数据类型。进一步通过延时单元将Sync和Ena信号延时输出,保证输出信号Sync和Ena与输出的计算结果OutA/OutB配合使用。

上述基2蝶式运算单元200的输入运算数据和输出运算结果都是浮点数据类型,而运算单元本身采用定点加法器、定点减法器和定点乘法器完成数据运算过程,由此采用“伪浮点”这样的术语来表示这一特定的运算数据结构。

一方面,该数据运算结构与传统浮点R2蝶形运算单元相比,该蝶形运算单元采用定点运算电路,因此电路规模要小得多,能为大多数应用场合所接受。

另一方面,与块浮点R2蝶形运算单元相比,该运算单元的每一个中间计算结果都采用独立的指数存储,而且指数对齐过程所导致的数据精度损失要小得多,因此其计算精度要明显优于块浮点R2蝶形运算单元。另外,该运算单元的指数对齐和指数规格化电路由于处理的数据量远远少于块浮点R2蝶形运算单元的类似电路,因此该运算单元200的电路规模、计算时延等方面也要优于块浮点R2蝶形运算单元。

相对于传统的定点型R2蝶形运算单元不能满足计算精度需求,而浮点型R2蝶形运算单元需要过多的电路资源以及块浮点型运算单元需要统一N点中间运算结果的指数,存在不利于流水线结构实现的缺点,本实用新型实施例提供的基2蝶式运算单元200能够很好的克服上述问题,在兼顾准确度和电路资源的同时,满足流水线结构的实现特点,具有良好的应用前景。

可以理解的是,对本领域普通技术人员来说,可以根据本实用新型的技术方案及本实用新型构思加以等同替换或改变,而所有这些改变或替换都应属于本实用新型所附的权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1