集成电路器件中的离散傅里叶变换的制作方法

文档序号:6360159阅读:185来源:国知局
专利名称:集成电路器件中的离散傅里叶变换的制作方法
技术领域
本发明涉及在集成电路器件中执行离散傅里叶变换运算,并且具体地在诸如可编程逻辑器件(PLD)之类的可编程集成电路器件中执行离散傅里叶变换运算。
背景技术
离散傅里叶变换(DFT)是可以在信号处理应用中用来分析采样信号中包含的频率、求解偏微分方程并且执行其它运算如卷积或者大整数相乘的傅里叶变换类型。DFT可以用来构造快速傅里叶变换(FFT)。此外,更小DFT可以用来构造更大DFT。这使DFT对于在集成电路器件如可编程逻辑器件(PLD)中的专用数字信号处理(DSP)电路块中计算FFT而言特别有用,因为可以在个别DSP块中计算个别更小DFT。

发明内容
本发明涉及通过用定点运算替换浮点乘法运算来减少为了执行DFT运算而需要的资源。这之所以可以完成是因为DFT计算中的旋转因子数目相对小,并且它们在彼此的小数目的位内。因此,可以使用定点乘法器而不是使用浮点乘法器计算DFT。通过存储每个旋转因子的多个副本而每个副本被移位不同量来获得所需精度。待相乘的值的指数之间的差值用作旋转因子储存器中的索引以取回适当移位的旋转因子。因此,根据本发明,提供一种用于执行离散傅里叶变换的电路。该电路包括浮点加法级,用于将离散傅里叶变换运算的输入值的尾数(mantissa)相加;以及定点级,用于将浮点加法级的输出乘以旋转因子。定点级包括存储器,用于存储多个旋转因子集合,那些集合中的每个集合包括被移位不同量的相应旋转因子的副本;以及电路,用于确定在浮点级的输出的指数之间的差值并且用于使用该差值作为索引以从每个集合中的该相应旋转因子的那些副本之中选择。也提供一种在可编程器件上配置这样的电路的方法、一种这样可配置的可编程器件和一种编码有用于执行该方法的软件的机器可读数据存储介质。


在考虑与以下附图结合进行的下文具体描述后,将清楚本发明的更多特征、其性质和各种优点,在附图中,相似标号全篇指代相似部分,并且在附图中图I示出了基数为4的离散傅里叶变换的逻辑结构;图2示出了图I的逻辑结构的已知改进;图3示出了根据本发明的一个实施例的基数为4的离散傅里叶变换的逻辑结构;图4是根据本发明的一个实施例的图3的逻辑结构的一个实现方式的简化框图;图5是与图4的实现方式结合的地址偏移计算的一个实现方式的简化框图;图6示出了根据本发明的另一实施例的基数为4的离散傅里叶变换的逻辑结构;图7是用于执行根据本发明的方法的编码有机器可执行指令集的磁数据存储介质的截面图;图8是用于执行根据本发明的方法的编码有机器可执行指令集的光学可读数据存储介质的截面图;并且图9是例示性系统的简化框图,该系统运用并入本发明的可编程逻辑器件。
具体实施例方式基数为4的DFT具有四个复输入(Rl,II)、(R2,12)、(R3,13)和(R4,14)。如图I中可见,在第一个仓(bin) ({1,1,1,1})的计算100中,使用加法器101、102、103将实部全部相加,并且使用加法器111、112、113将所有虚部全部相加。DFT的这一部分仅需要加法器。计算实输出104为实求和103与实旋转因子107的乘积106与虚求和113与虚旋转因子117的乘积116之间的差值105。计算虚输出114为实求和103与虚旋转因子117的乘 积126与虚求和113与实旋转因子107的乘积136的求和115。除了乘法器106、116、126、136之外,可以使用加法器来实现运算。通过将{I, -j, -I, j}、{1,-1,1, -1}和{I, j, -I, -j}应用于输入值来计算基数为4的DFT的附加仓。在浮点运算中,容易实施(例如,通过反转符号位)取非(negation)。类似地,通过交换数的实分量和虚分量来实现与j相乘,这可以使用乘法器以及异或函数来实施。因此,可以在添加这些附加函数(未示出)时用与图I相似的结构实现附加仓。在基数为16的DFT中,将需要两个基数为4的级。在第一级的输出上的复乘法器将具有应用的有限数目的复旋转因子——WpWpWyWyWpWpWg,其中Wx = e_2〃x/16。图I中所示算符可以是根据用于浮点计算的IEEE754-1985标准的浮点算符。图2示出了如何可以如在于2007年I月22日提交的、共同未决的、共同转让的第11/625,655号美国专利申请中描述的那样通过使用浮点算符来使用更少资源计算图I的计算,在该专利申请中,大部分时间以非规格化形式维持浮点数,(a)为了根据前述IEEE754-1985标准的输出或者(b)当精度损失可能出现时才为规格化的。因此,加法201、202、203、211、212、213是浮点算符,但是在那些运算期间值未被规格化。然而,在乘法级205之前,在206、216处规格化所得的求和。在乘法级205内,乘法器215、225、235、245、加法器255和减法器265是浮点算符,但是在那些运算期间值未被规格化。然而,在207、217处规格化结果以用于在204、214处的输出。这与图I的实现方式相比可以导致资源使用减少约50%。可以观察到,在规格化块206、216之后,实尾数和虚尾数二者在因子二或者彼此内,但是它们的指数可以不同。在下一 DFT块之前用于复乘法的旋转因子也将可能具有小数目的值。例如,对于具有两个基数为4的DFT级的、基数为16的DFT而言,组成实旋转因子和虚旋转因子的值的十进制量值是1、0. 9239,0. 7071和O. 3827,它们在表达为二进制数时都在彼此的两位内。因而,如果比浮点尾数的精度更大一些的乘法器可用,则可以主要使用定点算术来实施复乘法从而节省附加资源。在根据本发明的一个实施例中,常用于单精度浮点乘法的36位乘法器与用于存储多个旋转因子的存储器一起可用。根据本发明的这一实施例,可以通过存储每个旋转因子为被移位不同量的多个定点副本来将用于DFT计算的旋转因子转换成定点数。DFT输入向计算仅保持浮点输入。在输入与旋转因子之间的指数差值被确定并且用作索引以从旋转因子存储器查找适当移位的旋转因子而不损失任何精度。在图3中示出了这一逻辑构造300。如在图2的情况下那样,加法201、202、203、211、212、213是浮点算符,但是在那些运算期间值未被规格化。同样,在乘法级305之前,在206,216处规格化所得的求和。在乘法级305中,乘法器315、325、335、345、加法器355和减法器365是定点算符。乘法器315、325、335、345的输出让它们的相对值相互对准,从而它们可以由加法器355和减法器365相加或者相减。可以通过对旋转因子移位来实现乘法器输出的对准。每个旋转因子的移位量将是乘法器输入的指数之间的差值。在一个实施例中,对于每个乘法器对(即生成实输出的对和生成虚输出的对)而言,一个旋转因子将不被移位而另一旋转因子将被移位。虽然这在逻辑上可以由图3中所示的移位器代表,但是如下文讨论的那样在图4中示出了一个物理实现方式。
较大输出值将是与接近一(即在一的两位量值内)的旋转因子相乘的规格化数据值。因此,将有在输出上需要的可能的规格化,但是在如上文讨论的那样分解成基数为4的子段(subsection)的、基数为16的DFT的情况下,将有最多为3位的规格化。可以在规格化206、216之后根据可以按照输出尾数规格化值调整的最大指数计算输出指数308。在任何调整之前的指数值用作索引以在309处选择适当移位的旋转因子。逻辑构造300可能未节省大量逻辑,但是它可以减少延时。然而,在图4中示出了逻辑构造300的一个物理实施例400。非规格化的浮点加法器201、202、203、211、212、213、规格化模块206、216和定点乘法器315、325、335、345、加法器355和减法器365的布置与在逻辑构造300中相同。为实旋转因子提供存储器401,而为虚旋转因子提供存储器402。由于用于多数大型DFT构造的旋转因子数目有限——例如,用于基数为16的DFT中的第一级的10个旋转因子(其中的4个可以唯一)和用于基数为64的DFT的第一级的51个旋转因子(其中的约35个可以唯一),所以移位都可以被预先计算并且存储于存储器中。例如,在集成电路器件(诸如来自可从Altera Corporation获得的STRATIX 系列可编程逻辑器件的可编程逻辑器件)中,在器件上提供充分数目的嵌入式存储器模块以服务于这一功能。存储器401、402中的每个存储器可以根据需要包括多个这样的嵌入式存储器模块。然而,为了简化图示,在图4中将存储器401、402中的每个存储器示出为单个存储器模块。在所示例子中,存储器401、402中的每个存储器是双端口存储器。因而,每个存储器可以由相应成对地址411、421和412、422寻址。每个地址对的成员可以视为单个地址的较高部分和较低部分,其中较低地址部分411、412标识若干旋转因子中的哪个旋转因子正被访问,而较高地址部分421、422标识该旋转因子的哪个移位版本正被访问。执行地址的生成如下实输出具有两个乘法——实数据X实旋转和虚数据X虚旋转。对于这一情况,地址I将用来访问实旋转和虚旋转。为了计算地址I的实偏移(与实旋转存储器的偏移),从虚数据的指数减去实数据的指数。如果该数为零或者正(虚指数>实指数),则这是偏移值(并且也是移位值)。如果该数为负(实指数>虚指数),则该数归零。
为了计算地址I的虚偏移(与虚旋转存储器的偏移),从实数据的指数减去虚数据的指数。如果该数为零或者正(实指数>虚指数),则这是偏移值(并且也是移位值)。如果该数为负(虚指数>实指数),则该数归零。虚输出具有两个乘法——实数据X虚旋转和虚数据X实旋转。对于这一情况,地址2将用来访问实旋转和虚旋转。为了计算地址2的实偏移(与虚旋转存储器的偏移),从虚数据的指数减去实数据的指数。如果该数为零或者正(虚指数>实指数),则这是偏移值(并且也是移位值)。如果该数为负(实指数>虚指数),则该数归零。为了计算地址2的虚偏移(与实旋转存储器的偏移),从实数据的指数减去虚数据的指数。如果该数为零或者正(实指数>虚指数),则这是偏移值(并且也是移位值)。如果该数为负(虚指数>实指数),则该数归零。 如可见,地址I和地址2的计算相同。实偏移去往实旋转存储器的读地址I和虚旋转存储器的读地址2。虚偏移去往实旋转存储器的读地址2和虚旋转存储器的读地址I。在图5中示出了用于计算实偏移和虚偏移的逻辑500。如可见,通过在503处从实数据的指数506减去虚数据的指数505来计算虚偏移501。结果513在508处与它的最高有效位523的反转507取AND,如果结果513为负,则这使结果501归零。类似地,通过在553处从虚数据的指数505减去实数据的指数506来计算实偏移502。结果563在558处与它的最高有效位573的反转557取AND,如果结果563为负,则这使结果502归零。在图6中所示的一个备选实施例600中,取代如图4中的全规格化206、216,为了规格化实输入601和虚输入611而需要的相应移位量由前导零计数(Count Leading Zero)模块602、612确定,并且如通过在603处比较前导零计数来选择的较小移位(即为了规格化值601、611中的较大值而需要的移位)在移位器604、614中用来对两个输入601、611左移位。因此,输入601、611中的一个输入将保持它的全部量值,而输入601、611中另一输入将仅保持它的部分量值。然而,由于如上文讨论的那样旋转因子都为近似相同数量级,并且假设是诸如来自前述STRATIX 系列的可编程逻辑器件之类的器件,所以当乘法器615、625、635、645为36位宽时,即使对单精度(23位尾数)值右移位仍然可以维持它的准确度。作为本发明的一个实现方式的例子,考虑IK流式(streaming)FFT。传统上,这可以使用五个基数为4的级来实施,其中的前四级将需要复乘法器。将有256个元件从而需要共计数以千计的旋转因子。使用本发明,可以使用基数为16的级、基数为4的级和基数为16的级来实施IK流式FFT。基数为16的级将使用优化的内部复乘法器,而在输出上为标准复乘法器。备选地,可以在输出上使用优化的复乘法器。就64个复旋转因子而言,这在已经预先计算所有移位时将需要约(32或者36) X64 =约2,000个复旋转因子存储器位置。下一个基数为4的级可以使用优化的复乘法器,因为将仅有16个旋转因子,或者当已经预先计算所有移位时将需要共计约(32或者36) X 16 =约512个复旋转因子存储器位置。最末的基数为16的级将使用内部优化复乘法器而旋转因子数目与第一级大约相同。用于实现根据本发明的用于对可编程器件编程以执行DFT的方法的指令可以编码于机器可读介质上,从而由适当计算机或者相似设备执行以实施本发明的用于对PLD或者其它可编程器件编程或者配置以如上文描述的那样执行加法和减法运算的方法。例如,个人计算机可以配备有PLD可以连接到的接口,并且个人计算机可以由用户用来使用适当软件工具(诸如可从 San Jose, California 的 Altera Corporation 获得的 QUARTUS II软件)对PLD编程。图7呈现了可以编码有机器可读程序的磁数据存储介质800的截面,该机器可读程序可以由系统(诸如前述个人计算机或者其它计算机或者相似设备)执行。介质800可以是软盘或者硬盘或者磁带,该介质具有可以是常规的适当衬底801和在一侧或者两侧上的包含磁畴(不可见)的可以是常规的适当涂层802,可以磁性变更这些磁畴的极性或者定向。介质800除了在它可以是磁带的情况下之外也可以具有用于接收盘驱动或者其它数据存储设备的主轴的开口(未不出)。对介质800的涂层802的磁畴极化或者定向以便以可以是常规的方式对机器可执行程序编码以用于由具有待编程的PLD可以插入于其中的插座或者外围附件的编程系统 (诸如个人计算机或者其它计算机或者相似系统)执行以根据本发明配置PLD的适当部分,这些部分如果有则包括它的专门化处理块。图8示出了也可以编码有这样的机器可执行程序的光学可读数据存储介质810的截面,该机器可执行程序可以由系统(诸如前述个人计算机或者其它计算机或者相似设备)执行。介质810可以是常规紧致盘只读存储器(⑶-ROM)或者数字视频盘只读存储器(DVD-ROM)或者可重写介质(诸如 CD-R、CD-RW、DVD-R、DVD-RW、DVD+R、DVD+RW 或者DVD+RAM)或者光学可读和光磁可重写的光磁盘。介质810优选地具有可以是常规的适当衬底811和通常在衬底811的一侧或者两侧上的可以是常规的适当涂层812。在基于⑶或者基于DVD的介质的情况下,如公知的那样,涂层812有反射性并且印刻有在一层或者多层上布置的多个凹点812以对机器可读程序编码。通过从涂层812的表面反射激光来读取凹点布置。在涂层812上面提供优选为基本上透明的保护涂层814。在光磁盘的情况下,如公知的那样,涂层812无凹点812,但是具有在比如由激光(未示出)加热至某一温度以上时可以磁性改变极性或者定向的多个磁畴。可以通过测量从涂层812反射的激光的极化来读取畴的定向。畴的布置如上文描述的那样对程序编码。根据本发明编程的PLD 90可以使用于许多种类的电子设备中。一种可能的使用是在图9中所示数据处理系统900中。数据处理系统900可以包括以下部件中的一个或者多个部件处理器901 ;存储器902 ;1/0电路903 ;以及外围设备904。这些部件由系统905耦合在一起并且填充于终端用户系统907中包含的电路板906上。系统900可以使用于广泛多种应用(诸如计算机联网、数据联网、仪器使用、视频处理、数字信号处理)或者其中希望有使用可编程或者可再编程逻辑的优点的任何其它应用中。PLD 90可以用来执行多种不同逻辑功能。例如,PLD 90可以配置为与处理器901配合工作的处理器或者控制器。PLD 90也可以用作仲裁器,该仲裁器用于仲裁对系统900中的共享资源的访问。在又一例子中,PLD 90可以配置为在处理器901与系统900中的其它部件之一之间的接口。应当注意,系统900仅为示例性,并且本发明的真实范围和精神应当由所附权利要求指示。各种技术可以用来实施如上文描述的并且并入本发明的PLD90。将理解,前文仅举例说明本发明的原理,并且本领域技术人员可以进行各种修改而不脱离本发明的范围和精神实质。例如,可以按照任何希望的数目和/或布置在PLD上 提供本发明的各种单元。本领域技术人员将理解本发明可以由除了描述的仅出于例示而非限制的目的而呈现的实施例之外的实施例实现,并且本发明仅受所附权利要求的限制。
权利要求
1.一种用于执行离散傅里叶变换运算的电路,所述电路包括 浮点加法级,用于将所述离散傅里叶变换运算的输入值的尾数相加;以及 定点级,用于将所述浮点加法级的输出乘以旋转因子,所述定点级包括 存储器,用于存储多个旋转因子集合,所述集合中的每个集合包括被移位不同量的相应旋转因子的副本,以及 电路,用于确定在所述浮点级的所述输出的指数之间的差值并且用于使用所述差值作为索引以从所述集合中的每个集合中的所述相应旋转因子的所述副本之中选择。
2.根据权利要求I所述的电路,其中所述浮点加法级包括用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器。
3.根据权利要求2所述的电路,其中 所述用于将所述尾数的实部相加的至少一个加法器和所述用于将所述尾数的虚部相加的至少一个加法器执行非规格化加法;并且 所述浮点加法级还包括规格化级,所述规格化级用于规格化所述用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的非规格化输出。
4.根据权利要求3所述的电路,其中所述规格化级包括 第一规格化模块,用于规格化所述用于将所述尾数的实部相加的至少一个加法器的输出;以及 第二规格化模块,用于规格化所述用于将所述尾数的虚部相加的至少一个加法器的输出。
5.根据权利要求3所述的电路,其中所述规格化级包括 第一移位器,用于所述用于将所述尾数的实部相加的至少一个加法器的输出; 第二移位器,用于所述用于将所述尾数的虚部相加的至少一个加法器的输出; 第一前导零计数模块,用于确定所述用于将所述尾数的实部相加的至少一个加法器的输出上的前导零的第一数目; 第二前导零计数模块,用于确定所述用于将所述尾数的虚部相加的至少一个加法器的输出上的前导零的第二数目;以及 比较器,用于确定前导零的所述第一数目和所述第二数目中的哪个数目较小并且用于将前导零的所述第一数目和所述第二数目中的所述较小者应用于所述第一移位器和所述第二移位器中的每个移位器作为所述用于将所述尾数的实部相加的至少一个加法器的所述输出和所述用于将所述尾数的虚部相加的至少一个加法器的所述输出被移位的位置数目。
6.根据权利要求2所述的电路,其中 所述旋转因子包括实旋转因子和虚旋转因子;并且 所述定点级还包括 第一乘法器,用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以实旋转因子; 第二乘法器,用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以虚旋转因子;减法器,用于从所述第一乘法器的输出减去所述第二乘法器的输出; 第三乘法器,用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以虚旋转因子; 第四乘法器,用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以实旋转因子;以及 加法器,用于将所述第四乘法器的输出与所述第三乘法器的输出相加。
7.根据权利要求I所述的电路,其中 所述存储器包括存储被移位不同量的所述多个旋转因子的两端口存储器; 所述两端口存储器的第一地址输入选择所述相应旋转因子中的一个旋转因子;并且所述差值是所述两端口存储器的第二地址输入,所述第二地址输入选择所述相应旋转因子中的所述一个旋转因子的所述移位的副本之一。
8.一种将可编程集成电路器件配置为用于执行离散傅里叶变换运算的电路的方法,所述方法包括 将所述可编程集成电路器件的逻辑配置为用于将所述离散傅里叶变换运算的输入值的尾数相加的浮点加法级;并且 将所述可编程集成电路器件的逻辑配置为用于将所述浮点加法级的输出乘以旋转因子的定点级,所述定点级包括 存储器,用于存储多个旋转因子集合,所述集合中的每个集合包括被移位不同量的相应旋转因子的副本,以及 电路,用于确定在所述浮点级的所述输出的指数之间的差值并且用于使用所述差值作为索引以从所述集合中的每个集合中的所述相应旋转因子的所述副本之中选择。
9.根据权利要求8所述的方法,其中 所述将所述可编程集成电路器件的逻辑配置为浮点加法级包括将所述可编程集成电路器件的逻辑配置为用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器。
10.根据权利要求9所述的方法,其中 所述将所述可编程集成电路器件的逻辑配置为用于将所述尾数的实部相加的至少一个加法器和所述用于将所述尾数的虚部相加的至少一个加法器包括配置所述可编程集成电路器件的逻辑以执行非规格化加法;并且 所述将所述可编程集成电路器件的逻辑配置为浮点加法级包括将所述可编程集成电路器件的逻辑配置为规格化级,所述规格化级用于规格化所述用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的非规格化输出。
11.根据权利要求10所述的方法,其中所述将所述可编程集成电路器件的逻辑配置为规格化级包括 将所述可编程集成电路器件的逻辑配置为第一规格化模块,所述第一规格化模块用于规格化所述用于将所述尾数的实部相加的至少一个加法器的输出;并且 将所述可编程集成电路器件的逻辑配置为第二规格化模块,所述第二规格化模块用于规格化所述用于将所述尾数的虚部相加的至少一个加法器输出的。
12.根据权利要求10所述的方法,其中所述将所述可编程集成电路器件的逻辑配置为规格化级包括 将所述可编程集成电路器件的逻辑配置为第一移位器,所述第一移位器用于所述用于将所述尾数的实部相加的至少一个加法器的输出; 将所述可编程集成电路器件的逻辑配置为第二移位器,所述第二移位器用于所述用于将所述尾数的虚部相加的至少一个加法器的输出; 将所述可编程集成电路器件的逻辑配置为第一前导零计数模块,所述第一前导零计数模块用于确定所述用于将所述尾数的实部相加的至少一个加法器的输出上的前导零的第一数目; 将所述可编程集成电路器件的逻辑配置为第二前导零计数模块,所述第二前导零计数模块用于确定所述用于将所述尾数的虚部相加的至少一个加法器的输出上的前导零的第二数目;并且 将所述可编程集成电路器件的逻辑配置为比较器,所述比较器用于确定前导零的所述第一数目和所述第二数目中的哪个数目较小并且用于将前导零的所述第一数目和所述第二数目中的所述较小者应用于所述第一移位器和所述第二移位器中的每个移位器作为所述用于将所述尾数的实部相加的至少一个加法器的所述输出和所述用于将所述尾数的虚部相加的至少一个加法器的所述输出被移位的位置数目。
13.根据权利要求9所述的方法,其中 所述旋转因子包括实旋转因子和虚旋转因子;并且 所述将所述可编程集成电路器件的逻辑配置为定点级还包括 将所述可编程集成电路器件的逻辑配置为第一乘法器,所述第一乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以实旋转因子; 将所述可编程集成电路器件的逻辑配置为第二乘法器,所述第二乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以虚旋转因子; 将所述可编程集成电路器件的逻辑配置为减法器,所述减法器用于从所述第一乘法器的输出减去所述第二乘法器的输出; 将所述可编程集成电路器件的逻辑配置为第三乘法器,所述第三乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以虚旋转因子; 将所述可编程集成电路器件的逻辑配置为第四乘法器,所述第四乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以实旋转因子;并且 将所述可编程集成电路器件的逻辑配置为加法器,所述加法器用于将所述第四乘法器的输出与所述第三乘法器的输出相加。
14.根据权利要求8所述的方法,其中 所述存储器包括存储被移位不同量的所述多个旋转因子的两端口存储器; 所述将所述可编程集成电路器件的逻辑配置为定点级包括将所述可编程集成电路器件的逻辑配置为所述两端口存储器的第一地址输入以选择所述相应旋转因子中的一个旋转因子;并且 所述将所述可编程集成电路器件的逻辑配置为定点级包括配置所述可编程集成电路器件的逻辑以使用所述差值作为所述两端口存储器的第二地址输入,所述第二地址输入选择所述相应旋转因子中的所述一个旋转因子的所述移位的副本之一。
15.一种可编程集成电路器件,包括 可配置为用于将离散傅里叶变换运算的输入值的尾数相加的浮点加法级的逻辑;以及 可配置为用于将所述浮点加法级的输出乘以旋转因子的定点级的逻辑,所述定点级包括 存储器,用于存储多个旋转因子集合,所述集合中的每个集合包括被移位不同量的相应旋转因子的副本,以及 电路,用于确定在所述浮点级的所述输出的指数之间的差值并且用于使用所述差值作为索引以从所述集合中的每个集合中的所述相应旋转因子的所述副本之中选择。
16.根据权利要求15所述的可编程集成电路器件,其中 可配置为浮点加法级的所述逻辑包括可配置为用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的逻辑。
17.根据权利要求16所述的可编程集成电路器件,其中 作为用于将所述尾数的实部相加的至少一个加法器和所述用于将所述尾数的虚部相加的至少一个加法器的所述可编程集成电路器件包括可配置成执行非规格化加法的逻辑;并且 可配置为浮点加法级的所述逻辑包括可配置为规格化级的逻辑,所述规格化级用于规格化所述用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的非规格化输出。
18.根据权利要求17所述的可编程集成电路器件,其中可配置为规格化级的所述逻辑包括 可配置为第一规格化模块的逻辑,所述第一规格化模块用于规格化所述用于将所述尾数的实部相加的至少一个加法器的输出;以及 可配置为第二规格化模块的逻辑,所述第二规格化模块用于规格化所述用于将所述尾数的虚部相加的至少一个加法器的输出。
19.根据权利要求17所述的可编程集成电路器件,其中可配置为规格化级的所述逻辑包括 可配置为第一移位器的逻辑,所述第一移位器用于所述用于将所述尾数的实部相加的至少一个加法器的输出; 可配置为第二移位器的逻辑,所述第二移位器用于所述用于将所述尾数的虚部相加的至少一个加法器的输出; 可配置为第一前导零计数模块的逻辑,所述第一前导零计数模块用于确定所述用于将所述尾数的实部相加的至少一个加法器的输出上的前导零的第一数目; 可配置为第二前导零计数模块的逻辑,所述第二前导零计数模块用于确定所述用于将所述尾数的虚部相加的至少一个加法器的输出上的前导零的第二数目;以及 可配置为比较器的逻辑,所述比较器用于确定前导零的所述第一数目和所述第二数目中的哪个数目较小并且用于将前导零的所述第一数目和所述第二数目中的所述较小者应用于所述第一移位器和所述第二移位器中的每个移位器作为所述用于将所述尾数的实部相加的至少一个加法器的所述输出和所述用于将所述尾数的虚部相加的至少一个加法器的所述输出被移位的位置数目。
20.根据权利要求16所述的可编程集成电路器件,其中 所述旋转因子包括实旋转因子和虚旋转因子;并且 可配置为定点级的所述逻辑还包括 可配置为第一乘法器的逻辑,所述第一乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以实旋转因子; 可配置为第二乘法器的逻辑,所述第二乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以虚旋转因子; 可配置为减法器的逻辑,所述减法器用于从所述第一乘法器的输出减去所述第二乘法器的输出; 可配置为第三乘法器的逻辑,所述第三乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以虚旋转因子; 可配置为第四乘法器的逻辑,所述第四乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以实旋转因子;以及 可配置为加法器的逻辑,所述加法器用于将所述第四乘法器的输出与所述第三乘法器的输出相加。
21.根据权利要求15所述的可编程集成电路器件,其中 所述存储器包括存储被移位不同量的所述多个旋转因子的两端口存储器; 可配置为定点级的所述逻辑包括可配置为所述两端口存储器的第一地址输入以选择所述相应旋转因子中的一个旋转因子的逻辑;并且 可配置为定点级的所述逻辑包括可配置为使用所述差值作为所述两端口存储器的第二地址输入的逻辑,所述第二地址输入选择所述相应旋转因子中的所述一个旋转因子的所述移位的副本之一。
22.—种编码有机器可执行指令的机器可读数据存储介质,所述指令用于将可编程集成电路器件配置为用于执行离散傅里叶变换运算的电路,所述指令包括 用于将所述可编程集成电路器件的逻辑配置为浮点加法级的指令,所述浮点加法级用于将所述离散傅里叶变换运算的输入值的尾数相加;以及 用于将所述可编程集成电路器件的逻辑配置为定点级的指令,所述定点级用于将所述浮点加法级的输出乘以旋转因子,所述定点级包括 存储器,用于存储多个旋转因子集合,所述集合中的每个集合包括被移位不同量的相应旋转因子的副本,以及 电路,用于确定在所述浮点级的所述输出的指数之间的差值并且用于使用所述差值作为索引以从所述集合中的每个集合中的所述相应旋转因子的所述副本之中选择。
23.根据权利要求22所述的机器可读数据存储介质,其中 所述用于将所述可编程集成电路器件的逻辑配置为浮点加法级的指令包括用于将所述可编程集成电路器件的逻辑配置为用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的指令。
24.根据权利要求23所述的机器可读数据存储介质,其中 所述用于将所述可编程集成电路器件的逻辑配置为用于将所述尾数的实部相加的至少一个加法器和所述用于将所述尾数的虚部相加的至少一个加法器的指令包括用于配置所述可编程集成电路器件的逻辑以执行非规格化加法的指令;并且 所述用于将所述可编程集成电路器件的逻辑配置为浮点加法级的指令包括用于将所述可编程集成电路器件的逻辑配置为规格化级的指令,所述规格化级用于规格化所述用于将所述尾数的实部相加的至少一个加法器和用于将所述尾数的虚部相加的至少一个加法器的非规格化输出。
25.根据权利要求24所述的机器可读数据存储介质,其中所述用于将所述可编程集成电路器件的逻辑配置为规格化级的指令包括 用于将所述可编程集成电路器件的逻辑配置为第一规格化模块的指令,所述第一规格化模块用于规格化所述用于将所述尾数的实部相加的至少一个加法器的输出;以及 用于将所述可编程集成电路器件的逻辑配置为第二规格化模块的指令,所述第二规格化模块用于规格化所述用于将所述尾数的虚部相加的至少一个加法器的输出。
26.根据权利要求24所述的机器可读数据存储介质,其中所述用于将所述可编程集成电路器件的逻辑配置为规格化级的指令包括 用于将所述可编程集成电路器件的逻辑配置为第一移位器的指令,所述第一移位器用于所述用于将所述尾数的实部相加的至少一个加法器的输出; 用于将所述可编程集成电路器件的逻辑配置为第二移位器的指令,所述第二移位器用于所述用于将所述尾数的虚部相加的至少一个加法器的输出; 用于将所述可编程集成电路器件的逻辑配置为第一前导零计数模块的指令,所述第一前导零计数模块用于确定所述用于将所述尾数的实部相加的至少一个加法器的输出上的前导零的第一数目; 用于将所述可编程集成电路器件的逻辑配置为第二前导零计数模块的指令,所述第二前导零计数模块用于确定所述用于将所述尾数的虚部相加的至少一个加法器的输出上的前导零的第二数目;以及 用于将所述可编程集成电路器件的逻辑配置为比较器的指令,所述比较器用于确定前导零的所述第一数目和所述第二数目中的哪个数目较小并且用于将前导零的所述第一数目和所述第二数目中的所述较小者应用于所述第一移位器和所述第二移位器中的每个移位器作为所述用于将所述尾数的实部相加的至少一个加法器的所述输出和所述用于将所述尾数的虚部相加的至少一个加法器的所述输出被移位的位置数目。
27.根据权利要求23所述的机器可读数据存储介质,其中 所述旋转因子包括实旋转因子和虚旋转因子;并且 所述用于将所述可编程集成电路器件的逻辑配置为定点级的指令还包括 用于将所述可编程集成电路器件的逻辑配置为第一乘法器的指令,所述第一乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以实旋转因子; 用于将所述可编程集成电路器件的逻辑配置为第二乘法器的指令,所述第二乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以虚旋转因子; 用于将所述可编程集成电路器件的逻辑配置为减法器的指令,所述减法器用于从所述第一乘法器的输出减去所述第二乘法器的输出; 用于将所述可编程集成电路器件的逻辑配置为第三乘法器的指令,所述第三乘法器用于将所述用于将所述尾数的实部相加的至少一个加法器的输出乘以虚旋转因子;用于将所述可编程集成电路器件的逻辑配置为第四乘法器的指令,所述第四乘法器用于将所述用于将所述尾数的虚部相加的至少一个加法器的输出乘以实旋转因子;以及用于将所述可编程集成电路器件的逻辑配置为加法器的指令,所述加法器用于将所述第四乘法器的输出与所述第三乘法器的输出相加。
28.根据权利要求22所述的机器可读数据存储介质,其中 所述存储器包括存储被移位不同量的所述多个旋转因子的两端口存储器; 所述用于将所述可编程集成电路器件的逻辑配置为定点级的指令包括将所述可编程集成电路器件的逻辑配置为所述两端口存储器的第一地址输入以选择所述相应旋转因子中的一个旋转因子;并且 所述用于将所述可编程集成电路器件的逻辑配置为定点级的指令包括配置所述可编程集成电路器件的逻辑以使用所述差值作为所述两端口存储器的第二地址输入,所述第二地址输入选择所述相应旋转因子中的所述一个旋转因子的所述移位的副本之一。
全文摘要
执行离散傅里叶变换的电路。可以在固定逻辑器件中提供或者可以向诸如可编程逻辑器件之类的可编程集成电路器件中配置该电路。该电路包括浮点加法级,用于将离散傅里叶变换运算的输入值的尾数相加;以及定点级,用于将浮点加法级的输出乘以旋转因子。定点级包括存储器,用于存储多个旋转因子集合,那些集合中的每个集合包括被移位不同量的相应旋转因子的副本;以及电路,用于确定在浮点级的输出的指数之间的差值并且用于使用该差值作为索引以从每个集合中的该相应旋转因子的那些副本之中选择。
文档编号G06F17/14GK102844752SQ201180018339
公开日2012年12月26日 申请日期2011年2月28日 优先权日2010年3月2日
发明者M·朗哈默 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1