用于高效fft和fir硬件加速器的计算模块的制作方法

文档序号:6595144阅读:194来源:国知局
专利名称:用于高效fft和fir硬件加速器的计算模块的制作方法
技术领域
本发明涉及一种用于计算FFT和FIR值的加速器。
背景技术
在许多工程应用的信号处理中需要对快速傅里叶变换(FFT)和有限冲激响应 (FIR)算法求解。在工程文献中对FFT和FIR的应用都进行了丰富的描述。FFT是一种计算离散傅里叶变换(DFT)及其逆运算的算法。FIR滤波器是一类数字滤波器,其冲激响应在充分长时间之后逐渐趋向于零。在计算FFT和FIR值时提高效率是信号处理系统的设计者坚持不懈的当前目标。

发明内容
描述了用于生成FFT和FIR值的高效硬件加速器的计算模块。硬件加速器具有用于接收数值的输入端和用于选择操作模式(例如FFT模式或者FIR模式)的模式选择器输入端。计算模块由主逻辑运算单元和第二逻辑运算单元构成。主逻辑运算单元处于FIR操作模式时输出FIR值;处于FFT操作模式时输出第一 FFT值。主逻辑运算单元给第二逻辑运算单元提供中间值,第二逻辑运算单元输出另外的FFT值而不考虑操作模式。在一些实施例中,可以增加寄存器来提供流水线支持。硬件加速器可以支持多种数值表示系统。—个方面,硬件加速器包括多个数值输入端,主逻辑运算单元和第二逻辑运算单元。多个数值输入端用于接收数值。主逻辑运算单元被配置为输出中间值和第一结果,第一结果是通过收到第一模式信号时对数值求第一代数表达式的值和收到第二模式信号时求第二代数表达式的值来确定的。第二逻辑运算单元被配置为输出第二结果,第二结果是通过对中间值求第三代数表达式的值来确定的。在硬件加速器的一些实施例中,主逻辑运算单元包括多个复用器,每个复用器被配置为当收到第一模式信号时选择第一输入端以及当收到第二模式信号时选择第二输入端。在一些实施例中,主逻辑运算单元还包括四个乘法器和三个加法器。在一些实施例中,数值包括n-1个系数值C。,C1,…,Clri和n_l个数据值X。,X1,…, Xlri,其中η是正整数。当收到第一模式信号时,乘法器、加法器和数值输入端被多个复用器连接来求第一代数表达式的值,第一代数表达式是CA+CA+Cy^—Cw^。在一些实施例中,当收到第二模式信号时,乘法器、加法器和数值输入端被多个复用器连接来求第二代数表达式的值,第二代数表达式是Xc^CciXfC1X3。在一些实施例中,中间值包括第一中间值I1,此处I1 = X1,和第二中间值I2,此处I2 = C2x2+c3x3 ;第二逻辑运算单元包括用于求第三代数表达式值的第二加法器,第三代数表达式是Ii+I2。在一些实施例中,中间值包括第三中间值I3,此处I3 = X0,以及第四中间值I4,此处I4 = CtlXJC1Xy在一些实施例中,第二逻辑运算单元还包括用于输出第三结果的第一减法器,第三结果通过对中间值求第四代数表达式的值来确定,第四代数表达式是I3-I4 ;还包括用于输出第四结果的第二减法器,第四结果通过对中间值求第五代数表达式的值来确定,第五表达式是I1-I2。 在硬件加速器的一些实施例中,数值被编码为浮点数。在硬件加速器的一些实施例中,数值被编码为定点数。在一些实施例中,硬件加速器还包括多个寄存器,这些寄存器被配置为实现流水线操作。在另一方面,硬件加速器包括模式选择器输入端,多个数据输入端,多个系数输入端;第一、第二和第三复用器;第一、第二、第三和第四乘法器;第一、第二、第三和第四加法器;以及第一和第二减法器。模式选择器输入端提供模式信号。多个数据输入端接收数字数据值,多个数据输入端包括第一、第二、第三和第四数据输入端。多个系数输入端接收数字系数值,多个系数输入端包括第一、第二、第三和第四系数输入端。第一复用器有第一复用器输出端,第一复用器输出端用于当模式信号处于第一状态时提供从第一数据输入端接收的数字数据值,以及当模式信号处于第二状态时提供从第三数据输入端接收的数字数据值。第二复用器有第二复用器输出端,第二复用器输出端用于当模式信号处于第一状态时提供从第二数据输入端接收的数字数据值,以及当模式信号处于第二状态时提供从第四数据输入端接收的数字数据值。第一乘法器有用于提供第一乘积的第一乘法器输出端,第一乘积是从第一系数输入端接收的数字的系数值与从第一复用器输出端接收的数字数据值的乘积。第二乘法器有用于提供第二乘积的第二乘法器输出端,第二乘积是从第三系数输入端接收的数字系数值与从第三数据输入端接收的数字的数据值乘积。第三乘法器有用于提供第三乘积的第三乘法器输出端,第三乘积是从第二系数输入端接收的数字系数值与从第二复用器输出端接收的数字数据值的乘积。第四乘法器有用于提供第四乘积的第四乘法器输出端,第四乘积是从第四系数输入端接收的数字系数值与从第四数据输入端接收的数字数据值的乘积。第一加法器有用于提供第一和的第一加法器输出端,第一和是从第一乘法器接收的第一乘积与从第三乘法器接收的第三乘积的总和。第二加法器有用于提供第二和的第二加法器输出端,第二和是从第二乘法器接收的第二乘积与从第四乘法器接收的第四乘积的总和。第三复用器有用于提供第三复用器输出数据的第三复用器输出端,当模式信号处于第一状态时,第三复用器输出数据是从第二加法器接收的第二和,以及当模式信号处于第二状态时,第三复用器输出数据是从第一数据输入端接收的数字数据值。第三加法器有用于提供第一输出数据的第一输出端,第一输出数据是从第三复用器接收的第三复用器输出数据与从第一加法器接收的第一和的总和。第四加法器有用于提供第二输出数据的第二输出端,第二输出数据是从第二数据输入端接收的数字数据值与从第二加法器接收的第二和的总和。第一减法器有用于提供第三输出数据的第三输出端,第三输出数据是从第一数据输入端接收的数字数据值与从第一加法器接收的第一和的差。第二减法器有用于提供第四输出数据的第四输出端,第四输出数据是从第二数据输入端接收的数字数据值与从第二加法器接收的第二和的差。在一些实施例中,硬件加速器还包括多个寄存器,其中所述多个寄存器被配置为实现流水线操作。在一些实施例中,硬件加速器还包括编码选择器输入端,该编码选择器输入端被配置为提供指定数值编码模式的信号。在一些实施例中,数值编码模式至少在浮点数模式和定点数模式之间可选。
仍在又一方面,硬件加速器包括多个数值输入端,多个数字系数输入端,多个复用器,多个乘法器,第一多个加法器,第二多个加法器以及多个减法器。多个数值输入端各自用于接收数值。多个数字系数输入端各自用于接收数字系数。多个复用器各自由模式信号控制并被连接到多个数值输入端的至少一个。多个乘法器各自被配置为输出一个数字的系数与一个数值之间的乘积。第一多个加法器各自被配置为输出来自多个乘法器输出的两个乘积的总和。第二多个加法器各自被配置为输出一个数值与由第一多个加法器中的一个输出的和之间的总和。多个减法器各自被配置为输出一个数值与由第一多个加法器中的一个输出的和之间的差。 在又一个方面,硬件加速器包括多个数值输入端,主逻辑运算单元和第二逻辑运算单元。多个数值输入端用于接收数值。主逻辑运算单元有第一输出端和多个中间输出端, 第一输出端被配置为当模式信号对应于FIR状态时,输出用数值计算出的FIR值,以及当模式信号对应于FFT状态时,输出用数值计算出的第一 FFT值;而且,多个中间输出端被配为输出用数值计算出的中间值。第二逻辑运算单元有多个第二输出端用于输出第二 FFT值, 第二逻辑运算单元被配置为基于中间值计算第二 FFT值而不考虑模式信号。在硬件加速器的一些实施例中,主逻辑运算器还包括四个乘法器,各自被配置为接收两个数值并输出这两个数值的乘积;两个加法器,各自被配置为输出两个乘积之和,这两个乘积从乘法器输出;和第三加法器,被配置为当模式信号对应于FIR状态时,对所述两个加法器的输出求和并且将该和作为FIR值输出。在一些实施例中,硬件加速器还包括多个寄存器,其中所述多个寄存器被配置为实现流水线操作。在一些实施例中,硬件加速器还包括编码选择器输入端,该编码选择器输入端被配置为提供指定数值编码模式的信号。在一些实施例中,数值编码模式至少在浮点数模式和定点数模式之间可选。


结合附图阅读下述的详细描述可以更好地理解本发明及其实施例。这些附图中, 元件并不必须按比例绘制。一般而言,在多个附图中出现的相应元件由相同的参考标记进行标识。在这些附图中图1是强调输入端的硬件加速器的实施例的简化框图;图2是硬件加速器的实施例的框图;图3是被配置为FIR模式的图2的硬件加速器的实施例的框图;图4是被配置为FFT模式的图2的硬件加速器的实施例的框图;以及图5是可流水线操作的硬件加速器的实施例的框具体实施例方式存在高效地计算FFT和FIR值的需求。提出一种用于高效FIR和FFT硬件加速器的计算模块来满足上述需求。这样的硬件加速器可以用在数字信号处理器(DSP)和其他类型的微处理器中。该硬件加速器支持基本上使用相同硬件的FFT模式和FIR模式。在一些实施例中,FIR硬件就是FFT硬件的子集。
图1示出硬件加速器100的实施例。硬件加速器的模式(例如FFT或FIR)可以由例如模式选择器输入端80上的信号的状态来确定。(例如,模式选择信号可以是二进制信号,其用高位或者“1”状态表示选择FIR模式和用低位或者“0”状态表示选择FFT模式, 或者反之亦然。)硬件加速器可以接收来自数据输入端20的输入数据。在一些实施例中, 数据输入端20包括输入端22、输入端24、输入端26和输入端28。系数数据可由硬件加速器经系数输入端10来接收。在一些实施例中,系数输入端10包括输入端12、输入端14、输入端16和输入端18。硬件加速器100提供输出端60。在一些实施例中,数据输出端60包括输出端62、输出端64、输出端66和输出端68。 输入数据和系数数据可包括以任何适当的形式表示的数值。在一些实施例中,数值表示系统是可选择的。编码选择器输入端90可用于指定硬件加速器100的数值表示系统。进而,输入和输出的解释和使用依赖于被选择的数值表示系统。一些实施例中,硬件加速器可以被视为具有主逻辑运算单元110和第二逻辑运算单元120。这两个逻辑运算单元可以由接口 130操作性地连接。主逻辑运算单元包含以FIR 模式计算期望的输出所需的所有硬件。第二逻辑运算单元包含以FTT模式计算需要的附加输出所需的所有附加硬件。主逻辑运算单元110可以执行输入数据和系数数据的代数运算,并根据操作模式在输出端62上提供FIR输出数据或者第一 FFT输出数据。代数运算可由嵌入主逻辑运算单元110的元件来执行和辅助,例如复用器、乘法器、加法器、减法器和类似元件。主逻辑运算单元110也可在中间输出端上经由接口 130向第二逻辑运算单元120提供中间数据。第二逻辑运算单元执行中间数据的代数运算并分别在输出端64、输出端66和输出端68上提供第二、第三和第四FFT数据。代数运算可由嵌入第二逻辑运算单元120的元件来执行和辅助,例如复用器、乘法器、加法器、减法器和类似元件。在一些实施例中,需要主逻辑运算单元的每个嵌入式元件来执行FIR计算,并且需要主逻辑运算单元和第二逻辑运算单元的每个嵌入元件执行FFT计算。换句话说,在一些实施例中主逻辑运算单元的每个元件用于所有计算,第二逻辑运算单元的每个元件用于每次FFT计算。图2中详细示出了这样的硬件加速器的实施例。硬件加速器100包括几个不同类型的元件复用器(MUX)(例如72)、乘法器(例如32)、加法器(例如42)和减法器(例如56)。复用器72、76和78可以根据控制信号选择左输入信号或者右输入信号,并且复制所选择的信号作为输出信号。乘法器32、34、36和38可以接收第一输入信号和第二输入信号,并产生乘积作为输出。加法器42、44、52和54可以接收第一输入信号和第二输入信号, 并产生和作为输出。最后,减法器56和58可以接收第一输入信号和第二输入信号,从第一输入信号减去第二输入信号,并产生差作为输出。硬件加速器100能进行FIR计算和基2 (也称为“radix 2”)FFT计算。加法器54 和减法器56和58组成了第二逻辑运算单元120。其他元件组成了主逻辑运算单元110 (在图2中未标注)。注意,图2的实施例中,第二逻辑运算单元120没有复用器,并且因此操作可不依赖于模式选择器的模式输入(图1)。作为复用器操作的示例,参考MUX 72。MUX 72分别从连接到左输入端70的数据输入端22和连接到右输入端71的数据输入端26接收数据。取决于在控制输入端73收到的控制信号,MUX 72复制左输入端79上的输入信号或者右输入端71上的输入信号到输出端75上。在一些实施例中,在控制输入端73、77和79收到的控制信号是从模式选择器输入端80接收的(图1)。作为乘法器操作的示例,参考乘法器32。乘法器32在输入端30和31上分别接收来自MUX72的输出端和系数输入端12的输入信号。内部执行乘法运算,并且乘积被提供到输出端33上。作为加法器操作的示例,参考加法器54。加法器54在输入端50和51上分别接收来自输入端24和加法器44的数据。内部执行加法运算,并且和被提供到输出端64上。作为减法器操作的示例,参考减法器56。减法器56在输入端55和57上分别接收来自数据输入端22和加法器42的输出端的数据。内部执行减法运算,从输入端55上的数据值减去输入端57上的数据值。该差被提供为输出端66上的数据。本领域技术人员可以明白在图示的实施例中采用的复用器、乘法器和其他组成元件的合适设计。输入端12、14、16、18、22、24、26和28各自可以携带包含任意数量比特位的数字信号。对于硬件加速器100,输入端12、14、16、18、22、24、26和28分别携带信号Ctl,C1, C2,C3, X0^X1 X2和&。这些数字信号包括数值信息,该数值信息可以表示为浮点数、定点数或者由任何其他适当的数值表示系统表示。在一些实施例中,硬件加速器100可以在各种数值表示系统之间切换。可以任何适当的方法向硬件加速器100指定数值表示系统。在一些实施例中,由编码选择器输入端 90接收的信号可以指定数值表示系统。每个元件可以被配置为接收关于数值表示系统的信息以确保合适的计算。在一些实施例中,输入信号和/或系数信号可包含指定数值表示系统的信息。例如,系数信号10可采用指定数值表示系统的头部编码作为开端。在使用浮点表示的一些实施例中使用24位乘法器和加法器/减法器。在使用定点表示的一些实施例中使用32位乘法器和80位加法器/减法器。然而,本发明及其实施例绝不受操作数大小的限制。FIR 运算已经描述了硬件加速器100的总体的功能,现提供以FIR模式运算的示例。在FIR模式,期望的数据输出信号O62是O62 = C0Xc^C1XAC2XfC3X3 1这里,所有符号表示实数。应注意该期望的数据输出要求四个乘法步骤和三个加法步骤。图3示出了被配置为FIR模式的硬件加速器的运算。和X3的数据值分别由数据输入端22、24、26和28提供。类似地,C。,C1, C2和C3的值分别由系数输入端12、14、 16和18提供。期望的数据输出信号O62被提供到输出端62上。在FIR模式不需要输出端 64,66和68上的数据输出。模式选择器输入端80 (图1)分别向MUX72和76的控制输入端73和77提供信号, 这对应于选择左输入端。在图3中,这个选择被图示为MUX72和76的左输入端和输出端之间的连接线101。MUX 72将Xtl传递到乘法器32,同时MUX76将X1传递到乘法器36。模式选择器输入端80向MUX 78的控制输入端79提供信号,这对应于选择右输入端;即加法器44的输出端。图3中,MUX 78的选择被图示为右输入端和输出端之间的连接线103。复用器为该配置时,期望的数据输出被提供到输出端62上。应指出只有第二逻辑运算单元120的元件(即,加法器54和减法器56和58)提供未被使用的结果。所有其他元件用于产生公式1的解作为输出端62上的数据。硬件加速器100 (图1)通常可支持任何适当数量的FIR项的计算。FIR输出信号可以数学形式表示为
权利要求
1.一种硬件加速器,包括多个数值输入端,用于接收数值;主逻辑运算单元,被配置为输出中间值和第一结果,所述第一结果是通过收到第一模式信号时对数值求第一代数表达式的值以及收到第二模式信号时求第二代数表达式的值来确定的;第二逻辑运算单元,被配置为输出第二结果,所述第二结果是通过对中间值求第三代数表达式的值来确定的。
2.如权利要求1所述的硬件加速器,其中所述主逻辑运算单元包括多个复用器,每个复用器被配置为当收到第一模式信号时选择第一输入端以及当收到第二模式信号时选择第二输入端。
3.如权利要求2所述的硬件加速器,其中所述主逻辑运算单元还包括四个乘法器和三个加法器。
4.如权利要求3所述的硬件加速器,其中所述数值包括n-1个系数值Ctl, C1,…,Clri,和n-1个数据值Xtl, X1,…,Xlri,其中η是正整数;以及当收到第一模式信号时,所述乘法器、加法器和数值输入端被所述多个复用器连接来求第一代数表达式的值,所述第一代数表达式是CA^CA+ty^—CyXM。
5.如权利要求4所述的硬件加速器,其中当收到第二模式信号时,所述乘法器、加法器和数值输入端被所述多个复用器连接来求第二代数表达式的值,所述第二代数表达式是 X0+C0X2+C1X3o
6.如权利要求5所述的硬件加速器,其中中间值包括第一中间值I1和第二中间值I2,其中I1 = X1, I2 = C2x2+C3x3 ;以及第二逻辑运算单元包括用于求第三代数表达式值的第二加法器,所述第三代数表达式是 I^l2O
7.如权利要求6所述的硬件加速器,其中中间值包括第三中间值I3和第四中间值I4,其中I3 = \,I4 = C0XJC1X3 ;第二逻辑运算器还包括用于输出第三结果的第一减法器,所述第三结果通过对中间值求第四代数表达式的值来确定,所述第四代数表达式是I3-I4 ;和第二逻辑运算器还包括用于输出第四结果的第二减法器,所述第四结果通过对中间值求第五代数表达式的值来确定,所述第五表达式是I1-I215
8.如权利要求1所述的硬件加速器,其中数值被编码为浮点数。
9.如权利要求1所述的硬件加速器,其中数值被编码为定点数。
10.如权利要求1所述的硬件加速器,还包括多个寄存器,所述寄存器被配置为实现流水线操作。
11.一种硬件加速器,包括模式选择器输入端,用于提供模式信号;多个数据输入端,用于接收数字数据值,所述多个数据输入端包括第一、第二、第三和第四数据输入端;多个系数输入端,用于接收数字系数值,所述多个系数输入端包括第一、第二、第三和第四系数输入端;第一复用器, 具有第一复用器输出端,所述第一复用器输出端用于当模式信号处于第一状态时提供从第一数据输入端接收的数字数据值,以及当模式信号处于第二状态时提供从第三数据输入端接收的数字数据值;第二复用器,具有第二复用器输出端,所述第二复用器输出端用于当模式信号处于第一状态时提供从第二数据输入端接收的数字数据值,以及当模式信号处于第二状态时提供从第四数据输入端接收的数字数据值;第一乘法器,具有用于提供第一乘积的第一乘法器输出端,所述第一乘积是从第一系数输入端接收的数字系数值与从第一复用器输出端接收的数字数据值的乘积;第二乘法器,具有用于提供第二乘积的第二乘法器输出端,所述第二乘积是从第三系数输入端接收的数字系数值与从第三数据输入端接收的数字数据值的乘积;第三乘法器,具有用于提供第三乘积的第三乘法器输出端,所述第三乘积是从第二系数输入端接收的数字系数值与从第二复用器输出端接收的数字数据值的乘积;第四乘法器,具有用于提供第四乘积的第四乘法器输出端,所述第四乘积是从第四系数输入端接收的数字系数值与从第四数据输入端接收的数字数据值的乘积;第一加法器,具有用于提供第一和的第一加法器输出端,所述第一和是从第一乘法器接收的第一乘积与从第三乘法器接收的第三乘积的总和;第二加法器,具有用于提供第二和的第二加法器输出端,所述第二和是从第二乘法器接收的第二乘积与从第四乘法器接收的第四乘积的总和;第三复用器,具有用于提供第三复用器输出数据的第三复用器输出端,当模式信号处于第一状态时,所述第三复用器输出数据是从第二加法器接收的第二和,以及当模式信号处于第二状态时,所述第三复用器输出数据是从第一数据输入端接收的数字数据值;第三加法器,具有用于提供第一输出数据的第一输出端,所述第一输出数据是从第三复用器接收的第三复用器输出数据与从第一加法器接收的第一和的总和;第四加法器,具有用于提供第二输出数据的第二输出端,所述第二输出数据是由第二数据输入端接收的数字数据值与从第二加法器接收的第二和的总和;第一减法器,具有用于提供第三输出数据的第三输出端,所述第三输出数据是由第一数据输入端接收的数字数据值与从第一加法器接收的第一和的差;以及第二减法器,具有用于提供第四输出数据的第四输出端,所述第四输出数据是由第二数据输入端接收的数字数据值与从第二加法器接收的第二和的差。
12.如权利要求11所述的硬件加速器,还包括多个寄存器,其中所述多个寄存器被配置为实现流水线操作。
13.如权利要求11所述的硬件加速器,还包括编码选择器输入端,被配置为提供指定数值编码模式的信号。
14.如权利要求13所述的硬件加速器,其中数值编码模式至少在浮点数模式和定点数模式之间可选。
15.一种硬件加速器,包括多个数值输入端,各自用于接收数值; 多个数字系数输入端,各自用于接收数字系数;多个复用器,各自由模式信号控制并被连接到所述多个数值输入端的至少一个;多个乘法器,各自被配置为输出一个数字系数与一个数值之间的乘积;第一多个加法器,各自被配置为输出来自所述多个乘法器输出的两个乘积的总和;第二多个加法器,各自被配置为输出一个数值与由所述第一多个加法器中的一个输出的和之间的总和;多个减法器,各自被配置为输出一个数值与由所述第一多个加法器中的一个输出的和之间的差。
16.一种硬件加速器,包括多个数值输入端,用于接收数值;主逻辑运算单元,具有第一输出端和多个中间输出端,所述第一输出端被配置为当模式信号对应于FIR状态时,输出用数值计算出的FIR值,以及当模式信号对应于FFT状态时,输出用数值计算出的第一 FFT值,而且,所述多个中间输出端被配为输出用数值计算出的中间值;以及第二逻辑运算单元,具有多个用于输出第二 FFT值的第二输出端,所述第二逻辑运算单元被配置为基于中间值计算第二 FFT值而不考虑模式信号。
17.根据权利要求16所述的硬件加速器,其中所述主逻辑运算单元还包括四个乘法器,各自被配置为接收两个数值并输出所述两个数值的乘积;两个加法器,各自被配置为输出两个乘积之和,所述乘积从所述乘法器输出;以及第三加法器,被配置为当模式信号对应于FIR状态时,对所述两个加法器的输出求和并且将该和作为FIR值输出。
18.如权利要求16所述的硬件加速器,还包括多个寄存器,其中所述多个寄存器被配置为实现流水线操作。
19.如权利要求16所述的硬件加速器,还包括编码选择器输入端,被配置为提供指定数值编码模式的信号。
20.如权利要求19所述的硬件加速器,其中所述数值编码模式至少在浮点数模式和定点数模式之间可选。
全文摘要
一种可运行在FFT模式和FIR模式的硬件加速器。硬件加速器可接收输入数据和系数数据并为所选择的模式执行计算。在FFT模式,计算基2FFT,产生对应于两个复数四个实数输出。在FIR模式,产生一个实数输出。硬件加速器可使用三个复用器从FFT模式向FIR模式转换。所有FIR组件可以在FFT模式中使用。可以增加寄存器来提供流水线操作支持。硬件加速器可以支持多个数值表示系统。
文档编号G06F17/14GK102171682SQ200980139643
公开日2011年8月31日 申请日期2009年8月4日 优先权日2008年8月8日
发明者B·勒纳 申请人:美国亚德诺半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1