专门处理块中的固定点和浮点算术运算器电路的制作方法

文档序号:16366589发布日期:2018-12-22 08:28阅读:215来源:国知局
专门处理块中的固定点和浮点算术运算器电路的制作方法

本专利文档要求具有2017年3月7日提交的共同待定、共同受让的申请号为15/451,467的美国专利和2016年5月3日提交的申请号为62/330,933的美国临时专利的权益,由此这些申请的公开通过引用被整体并入本文中。

本实施例涉及集成电路,并且更具体地说,涉及在集成电路中专门处理块中的固定点和浮点算术运算器电路。

背景技术

随着应用的复杂性增大,在集成电路中包括专门处理块已变得越来越普遍。此类专门处理块可被部分或完全硬连线以执行一个或多个特定任务,诸如逻辑的或数学的运算。专门处理块也可包含一个或多个专门结构,诸如可配置存储器组件的阵列。

在此类专门处理块中通常实现的结构的示例包括:乘法器、加法器、累加器、算术逻辑单元(alu)、桶式移位器、诸如先入先出(fifo)电路、后入先出(lifo)电路、串进并出(sipo)移位寄存器电路、并入串出(piso)移位寄存器电路、随机存取存储器(ram)电路、只读存储器(rom)电路、内容可寻址存储器(cam)电路的各种存储器组件或存储电路和寄存器堆、逻辑与、逻辑与非、逻辑或、逻辑或非阵列等或其组合。

有时也被称为数字信号处理(dsp)块的一个特别有用类型的专门处理块可用于处理数字信号,诸如视频信号、音频信号等。此类块经常也被称为乘法累加(mac)块,因为它们包括执行乘法运算和乘法运算的求和和/或累加的结构。

诸如可编程集成电路的集成电路经常包括专门处理块。那些专门处理块的每个包括乘法器、加法器和寄存器及允许以不同方式配置块的各种组件的可编程连接器(例如,复用器)。

一般情况下,在此类专门处理块中的算术运算器(加法器和乘法器)一直是固定点运算器。如果需要浮点运算器,则将使用装置的通用可编程逻辑或者使用在专门处理块内的固定点运算器与在通用可编程逻辑中的另外逻辑的组合,在专门处理块之外构建它们。

附图说明

图1示出根据一些实施例,诸如可编程集成电路的说明性集成电路的图。

图2是根据一些实施例,用于执行固定点和/或浮点运算的说明性专门处理块的图。

图3a是根据一些实施例,配置成使用级联链入(chain-in)端口,执行浮点乘加运算的说明性专门处理块的图。

图3b是根据一些实施例,配置成使用输入端口,执行浮点乘加运算的说明性专门处理块的图。

图4是根据一些实施例,生成两个浮点积的浮点和的说明性专门处理块的图。

图5是根据一些实施例,被布置在级联链中并且一起执行单精度浮点乘加运算和另外的浮点加法的两个说明性专门处理块的图。

图6是根据一些实施例,被布置在级联链中,使用级联链作为旁路路径,并且一起执行单精度浮点乘加运算和另外的浮点加法的两个说明性专门处理块的图。

图7是根据一些实施例,被布置在级联链中并且执行浮点数的两个向量的递归模式点积的八个说明性专门处理块的图。

图8是根据一些实施例的说明性基数-2蝴蝶电路的图。

图9是根据一些实施例,被布置在级联链中并且实现图8的说明性基数-2蝴蝶电路的八个说明性专门处理块的图。

图10是根据一些实施例,示出用于操作可配置以执行固定点算术运算和浮点算术运算的专门处理块的说明性步骤的流程图的图。

具体实施方式

本文中提供的本实施例涉及集成电路,并且更具体地说,涉及在集成电路中专门处理块中的固定点和浮点算术运算器电路。

浮点数是通常用于在计算系统中科学记数法中表示实数,并且设计成覆盖大的数值范围和多样精度要求。2008年8月29日公布的ieee754标准ansi/ieee标准754-2008通常用于浮点数。浮点数包括三个不同部分:符号、有时也被称为有效数的尾数、和指数。这些部分中的每个可由二进制数表示,并且在ieee754标准的格式中具有取决于精度的不同比特大小。例如,单精度浮点数可要求32比特,其被如下分布:一个符号比特(比特31)、八个指数比特(比特[30:23])和23个尾部比特(比特[22:0])。双精度浮点数可要求64比特,包括一个符号比特(比特63)、11个指数比特(比特[62:52])和52个尾部比特(比特[51:0])。半精度浮点数可要求16比特,包括一个符号比特(比特15)、5个指数比特(比特[14:10])和10个尾部比特(比特[9:0])。

根据ieee754标准,尾部可以也具有另外的比特。具有另外的比特的尾部有时也被称为扩展尾数。例如,扩展单精度尾数可具有五个另外的比特(即,扩展单精度尾数可由28比特而不是23比特组成)。添加到最低有效比特右侧的最后三比特表示舍入(round)、保护(guard)和粘滞(sticky)比特。

舍入和保护比特可在执行算术运算时提供另外的准确度。例如,将在最低有效比特位置中带有“1”的尾数除以2可使得舍入比特变成“1”。再除以2可使得保护比特变成“1”。因此,舍入和保护比特使得小于没有这些另外比特的尾数的数字的表示可以能够准确表示。粘滞比特可通过执行和舍入与保护比特一起的逻辑的或运算,记录被移位超过尾数的精度的值“1”的任何比特。

两比特如果需要,可超过最高有效比特位置而被添加,并且可吸收由浮点算术运算产生的任何溢出。

根据ieee754标准的浮点数的符号使用单比特来表示,其中“0”表示正数,并且“1”表示负数。

浮点数的指数优选是无符号二进制数,其对于单精度格式范围从0到255变动。为了表示极小数字,必需使用负指数。因此,指数优选具有负偏置。对于单精度浮点数,偏置优选是-127。例如,用于指数的140的值实际上表示(140-127)=13,并且100的值表示(100-127)=-27。对于双精度数,指数偏置优选是-1023。

如上所讨论的,根据ieee754标准,尾数是规格化数(即,它没有前导零,并且表示浮点数的精度组件)。因为尾数被以二进制格式存储,因此,前导比特能够是0或1,但对于规格化数,它将始终是1。因此,在其中数始终被规格化的系统中,前导比特无需被存储,并且能够被意指,有效地给予尾数一个额外比特的精度。

执行算术运算的专门处理块经常包括多个乘法器、加法器、寄存器和可编程连接器(例如,复用器),其允许以不同方式配置专门处理块的各种组件。一般情况下,在此类专门处理块中的算术运算器一直是固定点运算器。

如果需要浮点运算器,则将(例如,使用集成电路中的另外逻辑或者使用在专门处理块内的固定点运算器与在集成电路中的另外逻辑的组合)在专门处理块外构建它们。

然而,随着应用的复杂性增大,浮点运算器的使用已变得越来越普遍。因此,可期望的是提供可适于有效地实现固定点运算和浮点运算的专门处理块。

本领域技术人员将认识到,本示范实施例可在没有一些或所有这些特定细节的情况下被实践。在其它实例中,熟知的操作未被详细描述以免不必要地使本实施例晦涩。

图1示出根据一些实施例,诸如可编程集成电路100的说明性集成电路的图。

可编程集成电路100可具有用于驱动可编程集成电路100的信号关断和用于接收来自其它装置的信号的输入-输出电路系统102。输入-输出电路系统102可包括常规输入-输出电路系统、串行数据收发器电路系统、差分接收器和传送器电路系统或用于连接一个集成电路到另一集成电路的其它电路系统。

如所示出的,输入-输出电路系统102可被定位在可编程集成电路100的外围附近。如果需要,可编程集成电路100可具有以不同方式布置的输入-输出电路系统102。例如,输入-输出电路系统102可形成输入-输出电路系统的一个或多个列,其可被定位在可编程集成电路上的任何之处(例如,跨可编程集成电路的宽度均匀分布)。如果需要,输入-输出电路系统102可形成输入-输出组件的一个或多个行(例如,跨可编程集成电路的高度分布)。备选的是,输入-输出电路系统102可形成输出-输出组件的岛,其可被分布在可编程集成电路的表面上或者集群在选择的区域中。

诸如全局及本地垂直和水平导线与总线的垂直互连资源140和水平互连资源150可用于在可编程集成电路100上路由信号。垂直和水平互连资源140和150包括导线和在相应导线之间的可编程连接,并且因此有时被称为可编程互连。

可编程逻辑区可包括可编程组件,诸如数字信号处理电路系统120、存储电路系统130或在逻辑阵列块110中组织的其它组合和时序逻辑电路系统。可编程逻辑区可配置成执行定制逻辑功能。如果需要,可编程逻辑区可包括数字信号处理电路系统120和存储电路系统130,两者可被组织在具有有限可配置性的专门块中。可编程逻辑区可包括另外的专门块,诸如可编程锁相环电路系统、可编程延迟锁定环电路系统或带有有限可配置性的其它专门块。

可编程集成电路100可包括可编程存储器组件。能够使用输入-输出电路系统102为这些存储器组件加载配置数据(有时也称为编程数据)。一旦被加载,存储器组件每个便提供对应静态控制信号,其控制可编程逻辑区中关联逻辑组件的操作。在典型的情形中,将加载的存储器组件的输出应用到可编程逻辑区中晶体管的门极,以开启或关闭某些晶体管,并且由此配置在可编程逻辑区中的逻辑和路由路径。可以此方式控制的可编程逻辑电路组件包括复用器(例如,用于形成在可编程互连中的路由路径的复用器)、查找表、逻辑阵列、异或(xor)、与(and)、或(or)、与非(nand)和或非(nor)逻辑门、选通门(passgate)、逆变器等。

存储器组件可使用任何适合的易失性和/或非易失性存储器结构,诸如随机存取存储器(ram)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩膜编程和激光编程的结构、这些结构的组合等。由于在编程期间为存储器组件加载了配置数据,存储器组件有时被称为配置存储器、配置ram或可编程存储器组件。

可使用任何适合的架构来组织可编程集成电路100的电路系统。作为示例,可在较大可编程逻辑区的一系列的行和列中组织可编程集成电路100的逻辑,每个较大可编程逻辑区包含多个较小逻辑区。

较小的区可例如是有时被称为逻辑组件(le)的逻辑的区,每个包含查找表、一个或多个寄存器和可编程复用器电路系统。较小的区也可以例如是有时被称为自适应逻辑模块(alm)的逻辑的区。每个自适应逻辑模块可包括一对加法器、一对关联寄存器和查找表或共享组合逻辑的其它块(即,来自一对le(在本上下文中有时被称为自适应逻辑组件或ale)的资源)。较大区的可以例如是包含多个逻辑组件或多个alm的逻辑阵列块(lab)。

在装置编程期间,配置数据被加载到配置可编程逻辑区的可编程集成电路100中,以便其逻辑资源执行所需的逻辑功能。

图2中示出可适于有效地实现固定点算术运算和/或浮点算术运算的专门处理块200的说明性实施例。

在此逻辑的表示中,忽略了实现细节以简化讨论,诸如寄存器和一些可编程路由特征,诸如可允许具体结构的输出在某些组件附近被路由或者直接被路由到专门处理块外的复用器和路由。另外,示出的一些组件可在实际实施例中被实现不止一次。例如,乘法器202可实际上表示两个或不止两个乘法器。

如所示出的,专门处理块200包括输入端口291、293、295和297、输出端口292和294、链入端口281、283和285、链出端口282、284和286、复用器221、222、223、224、208、209、210、271、272、273和274、预加法器电路201、算术运算器电路202、浮点舍入电路203、逻辑电路块204、浮点加法器电路205、固定点加法器电路206及移位器电路207。如所示出的,算术运算器电路202可包括乘法器电路262、另外的移位器电路263和另外的固定点加法器电路264。

乘法器电路262可以是实现固定点乘法运算的固定点乘法器电路。如果需要,乘法器电路262可以是实现浮点乘法运算的浮点乘法器电路。在一些实施例中,乘法器电路262可以是可配置的,以在执行浮点乘法运算或固定点乘法运算之间选择。

专门处理块200可在输出端口292和294产生输出信号,并且在输入端口291、293、295和297接收输入信号。如果需要,专门处理块200可被布置在与其它专门处理块(例如,在行或列中)一起的级联链中,并且经由在链入端口281、283和285的直接连接,接收来自相邻专门处理块的另外输入信号,以及经由其它直接连接将另外的输出信号从链出端口282、284和286提供到另一相邻专门处理块。

专门处理块200中的可配置互连中电路系统可在输入端口291、293、295和297、输出端口292和294、链入端口281、283和285、链出端口282、284和286、预加法器电路201、算术运算器电路202、浮点舍入电路203、逻辑电路块204、浮点加法器电路205、固定点加法器电路206、移位器电路207、乘法器电路262、另外的移位器电路263及另外的固定点加法器电路264之间路由信号。

如所示出的,可配置互连电路系统可包括复用器221、222、223、224、208、209、210、271、272、273和274和有时也被称为路由轨道的互连。

控制信号可控制由复用器221、222、223、224、208、209、210、271、272、273和274执行的选择。控制信号可由动态控制相应复用器的选择的逻辑电路生成和/或被存储在存储电路中。逻辑电路和/或存储电路可被定位在专门处理块200内。如果需要,一些或所有逻辑电路和/或存储电路可被定位在专门处理块200外,并且控制信号可通过另外的输入端口被提供到相应复用器。

可为每个复用器单独存储或者为多个复用器成组存储控制信号。存储电路可在专门处理块200的配置或重新配置期间加载控制信号。在一些实施例中,存储电路可以是集成电路的可编程存储器组件(例如,图1的可编程集成电路100)。

例如,复用器209可在将从浮点舍入电路203收到的积信号、从浮点加法器电路205收到的浮点和信号及从固定点加法器电路206收到的固定点和信号路由到输出端口294之间选择。复用器210可在将从浮点舍入电路203收到的积信号以及从逻辑电路块204收到的逻辑功能输出信号和从算术运算器电路202收到的固定点积信号的选择的信号路由到输出端口294之间选择。在一些实施例中,输出端口292和294可被组合成单个输出端口。在这些实施例中,复用器209和210可被组合成单个复用器。

作为另一示例,复用器208可在将从链入端口285收到的链入信号(例如,信号add_chain_in)、从浮点加法器电路205收到的浮点和信号及从移位器电路207收到的移位固定点和信号作为链出信号(例如,信号add_chian_out)路由到链出端口286之间选择。

在图2的逻辑的表示中,专门处理块200可实现固定点加法、浮点加法、带有或未带有优先加法(prioraddition)的固定点乘法、带有或未带有优先加法的浮点乘法或其组合、在与另外的电路系统一起实现更高精度浮点运算时的更高精度浮点运算的一部分(例如,与其它专门处理块或者与诸如图1的可编程集成电路100的逻辑阵列块110的另外逻辑电路系统一起)等。

考虑其中专门处理块200分别在输入端口291、293、295和297接收输入信号a、b、c和d和分别在链入端口281、283和285接收链入信号data_in、mult_chain_in和add_chain_in的情形。在此情形中,复用器221、222、223和224可分别在输入信号a与data_in之间,在b与data_in之间,在c与data_in之间及在d与data_in之间选择。

可配置互连电路系统可将第一选择的信号从复用器222路由到预加法器电路201和复用器274,并且可配置互连电路系统可将第二选择的信号从复用器221路由到预加法器电路201和可选复用器271。预加法器电路201可通过将第一和第二选择的信号相加,生成第一和信号,并且提供第一和信号到复用器271。

可配置互连电路系统的复用器271可在第一和信号与第二选择的信号之间选择,并且可配置互连电路系统可将选择的信号作为第一被乘数信号从复用器271路由到算术运算器电路202中的乘法器电路262。在复用器271中选择第二选择的信号意指旁路预加法器电路201。如果需要,复用器271可被忽略,并且通过提供零作为第一选择的信号,第二选择的信号可被提供到乘法器电路262。

可配置互连电路系统可将复用器223的输出作为第二被乘数信号路由到在算术运算器电路202中的乘法器电路262。

乘法器电路262可基于第一和第二被乘数信号,生成积信号。如果需要,移位器电路263可通过将来自乘法器电路262的积信号在预确定方向移位预确定数量的比特,生成移位积信号,所述预确定方向可以是向左或向右。

预确定数量和/或预确定方向可由动态控制移位运算的逻辑电路生成和/或被存储在存储电路中。逻辑电路和/或存储电路可被定位在专门处理块200内和/或在专门处理块200外,并且通过另外的输入端口被提供到移位器电路263。

在一些实施例中,通过提供零作为预确定数量,积信号可不被移位。在其它实施例中,算术运算器电路202可包括另外的复用器,其可使能在移位器电路263附近的旁路路径。

如果需要,移位积信号可在另外的固定点加法器电路264中被添加到来自链入端口283的mult_chain_in信号以生成算术运算器电路输出信号。在一些实施例中,可添加零到移位积信号。在其它实施例中,算术运算器电路202可包括另外的复用器,其可使能在另外的固定点加法器电路264附近的旁路路径。

可配置互连电路系统可将算术运算器电路输出信号输送到浮点舍入电路203和逻辑电路块204。

浮点舍入电路203可基于预确定的舍入方案,执行从算术运算器电路202收到的算术运算器电路输出信号的舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

如果需要,浮点舍入电路203可执行规格化运算。规格化运算可包括将算术运算器电路输出信号的尾数移位以恢复“1”作为如ieee754标准所要求的前导比特,并且相应地递增或递减算术运算器电路输出信号的对应指数。

例如,规格化运算可将算术运算器电路输出信号的尾数向右移位n个比特位置,并且将算术运算器电路输出信号的指数递增n,其中n是整数。在另一示例中,规格化运算可将算术运算器电路输出信号的尾数向左移位n个比特位置,并且将算术运算器电路输出信号的指数递减n。

如果需要,专门处理块200内的指数处理电路可执行由舍入和规格化运算造成的指数的调整。在一些实施例中,专门处理块200可只执行在制造专门处理块期间已预确定的一个舍入方案。在其它实施例中,可在各种各样舍入方案之中选择预确定的舍入方案。例如,可使用控制信号来选择预确定的舍入方案。如果需要,存储电路可存储控制信号(例如,在专门处理块200的配置期间被加载的可编程存储器组件中)。

逻辑电路块204可执行逻辑的运算。如果需要,逻辑电路块204可对从算术运算器电路202收到的算术运算器电路输出信号执行任何一元逻辑的运算。例如,仅举几个示例,逻辑电路块204可执行逆运算或恒等运算。如果需要,逻辑电路块204可对来自复用器224的选择的信号和算术运算器电路输出信号执行任何二进制逻辑的运算。例如,仅举几个示例,逻辑电路块204可执行逻辑与运算、逻辑与非运算、逻辑或运算、逻辑或非运算、逻辑异或运算、逻辑异或非运算、左移位运算或右移位运算。

在一些实施例中,逻辑电路块204可只执行在制造专门处理块期间已预确定的一个逻辑运算。在其它实施例中,可在各种各样逻辑运算之中选择逻辑的运算。例如,可使用控制信号来选择逻辑的运算。如果需要,存储电路可存储配置逻辑电路块204的控制信号(例如,在专门处理块200的配置期间被加载的可编程存储器组件中)。如果需要,查找表(lut)可实现逻辑电路块204。

如果需要,来自逻辑电路块204的输出信号可作为mult_chain_out信号被提供到链出端口284和到复用器272。

可配置互连电路系统的复用器272可在来自逻辑电路块204的输出信号与算术运算器电路输出信号之间选择,并且可配置互连电路系统可将选择的信号作为来自复用器272的被加数信号路由到固定点加法器电路206。选择在复用器272中的算术运算器电路输出信号意指将逻辑电路块204旁路。如果需要,可忽略复用器272,并且通过在逻辑电路块204中选择例如恒等函数、带有“1”的逻辑与或者带有“0”的逻辑或,将算术运算器电路输出信号提供到固定点加法器电路206。

可配置互连电路系统的复用器273可在来自链入端口285的add_chain_in信号与来自复用器224的选择的信号之间选择,并且可配置互连电路系统可将选择的信号作为来自复用器273的被加数信号路由到固定点加法器电路206和路由到浮点加法器电路205。

可配置互连电路系统的复用器274可在来自复用器222的第二选择的信号与来自浮点舍入电路203的舍入的浮点信号之间选择,并且可配置互连电路系统可将选择的信号作为被加数信号路由到浮点加法器电路205。

因此,基于可配置互连电路系统的配置,固定点加法器电路206可生成来自复用器224的选择的信号与来自算术运算器电路202的算术运算器电路输出信号的固定点和信号、来自复用器224的选择的信号与来自逻辑电路块204的输出信号的固定点和信号、来自链入端口285的add_chain_in信号与算术运算器电路输出信号的固定点和信号,或者add_chain_in信号与来自逻辑电路块的输出信号的固定点和信号。

类似地,基于可配置互连电路系统的配置,浮点加法器电路205可生成来自复用器224的选择的信号与来自复用器222的第二选择的信号的浮点和信号、来自复用器224的选择的信号与来自浮点舍入电路203的舍入的浮点信号的浮点和信号、来自链入端口285的add_chain_in信号与第二选择的信号的浮点和信号,或者add_chain_in信号与舍入的浮点信号的浮点和信号。

可配置互连电路系统可将浮点和信号输送到复用器208和209,并且将固定点和信号输送到移位器电路207和复用器209。移位器电路207可通过将固定点和信号向左或向右移位预确定数量的比特,生成移位固定点和信号。

预确定数量和/或方向可由动态控制移位运算的逻辑电路生成。如果需要,移位运算的预确定数量和/或方向可被存储在静态控制移位运算的存储电路中。逻辑电路和/或存储电路可被定位在专门处理块200内和/或在专门处理块200外,由此可通过另外的输入端口将预确定数量提供到移位器电路207。

在一些实施例中,通过提供零作为预确定数量,固定点和信号可不被移位。在其它实施例中,专门处理块200可包括从在移位器电路207附近的固定点加法器电路206到复用器208的旁路路径。

如所示出的,可配置互连电路系统的复用器208可在来自移位器电路207的移位固定点信号、来自浮点加法器电路205的浮点和信号及来自链入端口285的add_chain_in信号之间选择,并且可配置互连电路系统可将选择的信号作为add_chain_out信号路由到链出端口286。

可配置互连电路系统的复用器209可在来自固定点加法器电路206的固定点和信号、来自浮点加法器电路205的浮点和信号及来自浮点舍入电路203的舍入的浮点信号之间选择,并且可配置互连电路系统可将选择的信号作为信号e路由到链出端口294。

如果需要,可配置互连电路系统的复用器210可在来自逻辑电路块204的输出信号和来自算术运算器电路202的算术运算器电路输出信号及来自来自浮点舍入电路203的舍入的浮点信号之间选择,并且可配置互连电路系统可将选择的信号作为信号f路由到输出端口292。

在某些实施例中,专门处理块200可实现另外的特征。例如,专门处理块200可包括从复用器209的输出通过寄存器到复用器273的另外输入的路径,由此使得浮点累加或固定点累加能够实现(如果需要的话)。基于可配置互连电路系统的配置,专门处理块200可实现如上所描述的不同算术运算。图3a是根据一些实施例,配置成使用级联链入端口来执行浮点乘加运算的说明性专门处理块(诸如图2的专门处理块200)的图。

如所示出的,专门处理块300a可包括可配置成实现浮点乘法或固定点乘法的算术运算器电路302、浮点舍入电路312、浮点加法器电路313和可包括复用器321、322、323和324的可配置互连电路系统及在专门处理块300a中的路由轨道。

专门处理块300a可接收在输入端口的输入信号a、b、c和d和在链入端口的链入信号data_in和add_chain_in。如果需要,信号data_in、a、b、c和d可以是浮点数或浮点数的部分(例如,浮点数的尾数和/或指数)。

可配置互连电路系统的复用器321、322、323和324可分别在输入信号a与data_in之间,在b与data_in之间,在c与data_in之间,以及在d与data_in之间选择,并且将复用器321和323的输出作为第一和第二被乘数信号路由到算术运算器电路302。算术运算器电路302可基于第一和第二被乘数信号,生成浮点积信号,并且可配置互连电路系统可将浮点积信号输送到浮点舍入电路312。浮点舍入电路312可基于预确定的舍入方案,执行从算术运算器电路302收到的浮点积信号的舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

如果需要,浮点舍入电路312可执行规格化运算。规格化运算可包括将浮点积信号的尾数移位以恢复“1”作为如ieee754标准所要求的前导比特,并且相应地递增或递减浮点积信号的指数。例如,规格化运算可将浮点积信号的尾数向右移位n个比特位置,并且将浮点积信号的指数递增n,其中n是整数。在另一示例中,规格化运算可将浮点积信号的尾数向左移位n个比特位置,并且将浮点积信号的指数递减n。

在一些实施例中,专门处理块300a可只执行在制造专门处理块期间已预确定的一个舍入方案。在其它实施例中,可在各种各样舍入方案之中选择预确定的舍入方案。例如,可使用控制信号来选择预确定的舍入方案。如果需要,存储电路可存储控制信号(例如,在专门处理块300a的配置期间被加载的可编程存储器组件中)。

浮点加法器电路313可接收来自浮点舍入电路312的舍入的浮点信号和来自链入端口的add_chain_in信号,并且基于收到的信号,生成浮点和信号,以及将浮点和信号(例如,经由可配置互连电路系统)提供为在输出端口的信号e和/或在链出端口的信号add_chain_out。

图3b是根据一些实施例,配置成使用输入端口来执行浮点乘加运算的说明性专门处理块(诸如图2的专门处理块200)的图。

如所示出的,专门处理块300b可包括可配置成实现浮点乘法或固定点乘法的算术运算器电路302、浮点舍入电路312、浮点加法器电路313和可包括复用器321、322、323和324的可配置互连电路系统和在专门处理块300b中的路由轨道。

专门处理块300b可接收在输入端口的输入信号a、b、c和d和在链入端口的链入信号data_in。如果需要,信号data_in、a、b、c和d可以是浮点数或浮点数的部分(例如,浮点数的尾数和/或指数)。

可配置互连电路系统的复用器321、322、323和324可分别在输入信号a与data_in之间,在b与data_in之间,在c与data_in之间,以及在d与data_in之间选择,并且将复用器321和323的输出作为第一和第二被乘数信号路由到算术运算器电路302。算术运算器电路302可基于第一和第二被乘数信号,生成浮点积信号,并且可配置互连电路系统可将浮点积信号输送到浮点舍入电路312。

浮点舍入电路312可基于预确定的舍入方案,对从算术运算器电路302收到的浮点积信号执行舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

在一些实施例中,专门处理块300b可只执行在制造专门处理块期间已预确定的一个舍入方案。在其它实施例中,可在各种各样舍入方案之中选择预确定的舍入方案。例如,可使用控制信号来选择预确定的舍入方案。如果需要,存储电路可存储控制信号(例如,在专门处理块300b的配置期间被加载的可编程存储器组件中)。

浮点加法器电路313可接收来自浮点舍入电路312的舍入的浮点信号和来自复用器324的选择的信号,并且基于收到的信号,生成浮点和信号,以及将浮点和信号(例如,经由可配置互连电路系统)提供为在输出端口的信号e和/或在链出端口的信号add_chain_out。

图4是根据一些实施例,生成两个浮点积的浮点和的说明性专门处理块(例如,图2的专门处理块200)的图。

如所示出的,专门处理块400可包括可配置成实现每个浮点乘法的算术运算器电路415和416、浮点舍入电路417和418、浮点加法器电路435和可包括复用器421、422、423和424的可配置互连电路系统及在专门处理块400中的路由轨道。

在一些实施例中,算术运算器电路415和416可由图2的算术运算器电路202实现,其被分解成能独立实现两个浮点算术运算的两个算术运算器电路。例如,算术运算器电路的一部分可包括18x18固定点乘法器,其可被分解成两个9x9固定点乘法器。在其它情况下,更大的乘法器可由更小的乘法器组成。作为示例,四个18x18乘法器可被组合以形成一个36x36乘法器。作为另一示例,两个18x18乘法器可被组合以形成一个27x27乘法器,但18x18乘法器之一可本身由18x9和27x9乘法器组成。

在一些情形中,专门处理块400可配置成实现固定点运算及两个半精度浮点乘法的相加、两个半精度浮点乘法、半精度浮点乘加运算、单精度浮点乘法运算的一部分或单精度浮点乘加运算的一部分。在这些情形中,专门处理块400可包括被分解成两个kxl乘法器电路的mxn乘法器电路,其中k小于或等于m,并且l小于或等于n。例如,18x22乘法器电路可被分解成两个18x11乘法器电路,或者18x25乘法器可被分解成两个18x12乘法器电路。专门处理块400可接收在输入端口的输入信号a、b、c和d和在链入端口的链入信号data_in。如果需要,信号data_in、a、b、c和d可以是浮点数或浮点数的部分。

可配置互连电路系统的复用器421、422、423和424可分别在输入信号a与data_in之间,在b与data_in之间,在c与data_in之间,以及在d与data_in之间选择,并且将复用器421和422的输出作为第一和第二被乘数信号路由到算术运算器电路415和将复用器423和424的输出作为第三和第四被乘数信号路由到算术运算器电路416。

算术运算器电路415可基于第一和第二被乘数信号,生成第一浮点积信号,并且可配置互连电路系统可将第一浮点积信号输送到浮点舍入电路417。算术运算器电路416可基于第三和第四被乘数信号,生成第二浮点积信号,并且可配置互连电路系统可将第二浮点积信号输送到浮点舍入电路418。

浮点舍入电路417和418可基于预确定的舍入方案,分别执行第一和第二浮点积信号的舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

如果需要,浮点舍入电路417和418可每个执行规格化运算。规格化运算可包括将第一和第二浮点积信号的尾数移位以恢复“1”作为如ieee754标准所要求的前导比特,并且相应地递增或递减第一和第二浮点积信号的指数。

在一些实施例中,浮点舍入电路417和418可不执行规格化运算,并且提供非规格化舍入的浮点信号到浮点加法器电路435。

浮点加法器电路435可接收来自浮点舍入电路417和418的舍入的浮点信号,并且基于收到的信号,生成浮点和信号,以及将浮点和信号(例如,经由可配置互连电路系统)提供为在输出端口的信号e。

如果需要,诸如图2的专门处理块200的两个实例的两个相邻专门处理块可被组合以实现更大精度浮点运算。作为示例,带有18x25比特乘法器电路的专门处理块可与具有另一18x25比特乘法器电路的另一专门处理块组合,以实现如单精度浮点乘法运算所要求的25x25比特乘法运算。图5是根据一些实施例,被布置在级联链中并且一起执行单精度浮点乘加运算和另外的浮点加法的两个说明性专门处理块500a和500b的图。

如果需要,专门处理块500a可具有通过有时也被称为块间连接的第一级联连接输送信号data_in到专门处理块500b的第一链入端口的第一链出端口。专门处理块500a可具有经由第二级联连接输送信号mult_chain_in到专门处理块500b的第二链入端口的第二链出端口。

如所示出的,专门处理块500a和500b可每个包括乘法器电路562、移位器电路563、浮点加法器电路505和可包括复用器521、522、523和524的可配置互连电路系统及路由轨道。

乘法器电路562可以是实现固定点乘法运算的固定点乘法器电路。如果需要,乘法器电路562可以是实现浮点乘法运算的浮点乘法器电路。在一些实施例中,乘法器电路562可以是可配置的,以在执行浮点乘法运算或固定点乘法运算之间选择。

专门处理块500b可进一步包括固定点加法器电路564、浮点舍入电路503和指数处理电路550。如果需要,专门处理块500a和500b可以是相同的。换言之,专门处理块500a也可包括固定点加法器电路564、浮点舍入电路503和指数处理电路550。

专门处理块500a和500b可接收在输入端口的输入信号a、b、c、d、g和exp_in和在链入端口的链入信号data_in。如果需要,信号data_in、a、b、c、d和g可以是浮点数或浮点数的部分。在一些情形中,data_in、a、b、c、d和g可表示浮点数的尾数。作为示例,考虑其中g是具有至少尾数和指数的单精度浮点数,并且exp_in具有关于单精度浮点数a和c的指数的信息。例如,exp_in可以是a和c的指数的级联。作为另一示例,专门处理块500b可具有两个指数输入,一个用于a的指数,并且另一个用于c的指数。

如果需要,指数处理电路550可使用a和c的相应指数,确定浮点乘法运算的指数。例如,指数处理电路550可生成a和c的相应指数之和,并且与单精度浮点偏置的绝对值(即,+127)相加以考虑到a和c的相应指数均被偏置的事实。

在一些实施例中,专门处理块500a和500b之外的另外电路系统可确定浮点乘法运算的偏指数结果(即,在未执行尾数乘法部分的规格化情况下的指数结果)。在这些实施例中,exp_in可表示偏指数结果,并且指数处理电路550可在浮点乘法运算的尾数结果的规格化期间递增或递减exp_in以确定最终指数结果。

进一步考虑a、b、c和d是单精度浮点数的尾数(即,包括23比特)。如果需要,a、b、c和d中至少之一可以是单精度浮点数的扩展尾数(即,包括不止23比特)。进一步考虑a_msb和a_lsb是尾数a的部分,并且c_msb和c_lsb是尾数c的部分。尾数a的部分和尾数c的部分可以是不同的。如果需要,尾数a的部分(即,a_msb和a_lsb)和/或尾数c的部分(即,c_msb和c_lsb)可至少部分重叠。在一些实施例中,尾数a的部分(即,a_msb和a_lsb)和/或尾数c的部分(即,c_msb和c_lsb)可以是相同的。

例如,a_msb、a_lsb、c_msb和c_lsb可以分别是a[22:0]、a[22:0]、c[22:12]、c[11:0]。在另一示例中,a_msb、a_lsb、c_msb和c_lsb可以分别是a[24:13]、a[12:0]、c[24:0]、c[24:0]。

在此情形中,专门处理块500a可接收信号a_msb、c_msb、b和d,并且可配置互连电路系统的复用器521、522、523和524可分别选择输入信号a_msb、b、c_msb和d,并且将复用器521和523的输出作为第一和第二被乘数信号路由到乘法器电路562,并且将复用器522和524的输出作为第一和第二被加数信号路由到浮点加法器电路505。

专门处理块500a的浮点加法器电路505可基于第一和第二被加数信号生成浮点和信号,并且可配置互连电路系统可将浮点和信号作为信号e输送到专门处理块500a的输出端口。

专门处理块500a的乘法器电路562可基于第一和第二被乘数信号,生成浮点积信号,并且可配置互连电路系统可将浮点积信号输送到移位器电路563。在其中第一和第二被乘数信号分别是浮点尾数a和c的部分(即,a_msb和c_msb)的上述情形中,乘法器电路562可配置成执行第一和第二被乘数信号的固定点乘法运算,并且浮点积信号可以是浮点尾数或浮点尾数的一部分。

移位器电路563可将浮点积信号向左或向右移位预确定数量的比特。例如,浮点积信号可不被移位。可配置互连电路系统可将移位的浮点积信号路由到专门处理块500a的链出端口。

专门处理块500b可接收信号a_lsb、c_lsb、exp_in和g,并且专门处理块500b的可配置互连电路系统的复用器521、522、523和524可分别选择输入信号a_lsb、exp_in、c_lsb和g,并且将复用器521和523的输出作为第三和第四被乘数信号路由到乘法器电路562,将复用器522的输出路由到指数处理电路550,以及将复用器524的输出作为第一被加数信号路由到浮点加法器电路505。

专门处理块500b的乘法器电路562可基于第三和第四被乘数信号,生成另一浮点积信号,并且可配置互连电路系统可将该另一浮点积信号输送到移位器电路563。在其中第三和第四被乘数信号分别是浮点尾数a和c的部分(即,a_lsb和c_lsb)的上述情形中,乘法器电路562可配置成执行第三和第四被乘数信号的固定点乘法运算,并且该另一浮点积信号可以是浮点尾数或浮点尾数的一部分。专门处理块500b的移位器电路563可将该另一浮点积信号向左或向右移位预确定数量的比特。作为示例,该另一浮点积信号可不被移位。如果需要,由专门处理块500b的移位器电路563执行的移位运算可取决于由专门处理块500a的移位器电路563执行的移位运算。例如,浮点积信号可由专门处理块500a的移位器电路563移位,或者另一浮点积信号可以由专门处理块500b的移位器电路563移位。在另一示例中,浮点积信号和另一浮点积信号二者可分别由专门处理块500a和500b的移位器电路563相对于彼此被移位。

可配置互连电路系统可将该另一移位的浮点积信号和来自链入端口的信号mult_chain_in路由到专门处理块500b的固定点加法器电路564。

专门处理块500b的固定点加法器电路564可计算该另一移位的浮点积信号和信号mult_chain_in之和,由此计算尾数a和b的积。

浮点舍入电路503可基于预确定的舍入方案,对尾数a和b的积执行舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

如果需要,浮点舍入电路503可执行规格化运算。规格化运算可包括将尾数a和b的积移位以恢复如ieee754标准所要求的作为前导比特的“1”。

浮点舍入电路503可提供信息到指数处理电路550。指数处理电路550可基于信号exp_in和从浮点舍入电路503收到的信息,确定信号exp_out。例如,如果舍入运算产生进位信号,并且规格化运算要求右移一比特以恢复作为尾数a和b的积的前导比特的“1”,则指数处理电路550可递增exp_in。

浮点舍入电路503可在专门处理块500b中提供舍入的浮点积到浮点加法器电路505。如果需要,浮点加法器电路505可将舍入的浮点积与复用器524的输出相加,并且将浮点和提供为在专门处理块500b的输出端口的输出信号f。如果复用器524已选择信号g,则输出信号f可表示a*b+g。因此,两个专门处理块500a和500b可实现浮点加法(例如,e=b+d)和浮点乘加运算(例如,f=a*c+g)。

诸如收缩浮点fir滤波器的一些应用可要求多个浮点乘法运算的累加。在图5的示例中,输入信号g可表示另一浮点乘法运算的结果。在一些实施例中,之前浮点乘法运算的结果可经由在链入端口的级联连接被收到,并且与当前浮点乘法运算的累加可在每个另一专门处理块的浮点加法器中进行。

图6是根据一些实施例,被布置在级联链中,使用在专门处理块600a中的级联链作为旁路路径,并且一起执行单精度浮点乘加运算和另外的浮点加法的两个说明性专门处理块600a和600b的图。

如果需要,专门处理块600a可具有通过有时也被称为块间连接的第一级联连接输送信号data_in到专门处理块600b的第一链入端口的第一链出端口。专门处理块600a可具有第二链出端口,其输送信号add_chain_in到复用器675,并且从该处输送到第二链出端口,以及通过第二级联连接到专门处理块600b的第二链入端口。专门处理块600a可具有经由第三级联连接输送信号mult_chain_in到专门处理块600b的第三链入端口的第三链出端口。

如所示出的,专门处理块600a和600b可每个包括乘法器电路662、移位器电路663、浮点加法器电路605和可包括复用器621、622、623、624和675的可配置连接电路系统及路由轨道。专门处理块600b可进一步包括固定点加法器电路664、浮点舍入电路603、指数处理电路650和复用器673。如果需要,专门处理块600a和600b可以是相同的。换而言之,专门处理块600a也可包括固定点加法器电路664、浮点舍入电路603、指数处理电路650和复用器673。专门处理块600a和600b可接收在输入端口的输入信号a、b、c、d、g和exp_in和在相应链入端口的链入信号data_in和add_chain_in。如果需要,信号data_in、add_data_in、a、b、c、d和g可以是浮点数或浮点数的部分。在一些情形中,data_in、add_chain_in、a、b、c、d和g可表示浮点数的尾数。

作为示例,考虑在其中add_chain_in是具有至少尾数和指数的单精度浮点数,并且exp_in具有关于单精度浮点数a和c的指数的信息。例如,exp_in可以是a和c的指数的级联。作为另一示例,专门处理块600b中具有两个指数输入,一个用于a的指数,并且另一个用于c的指数。

如果需要,指数处理电路650可使用a和c的相应指数,确定浮点乘法运算的指数。例如,指数处理电路650可生成a和c的相应指数之和,并且与单精度浮点偏置的绝对值(即,+127)相加以考虑到a和c的相应指数均被偏置的事实。

在一些实施例中,专门处理块600a和600b外的另外电路系统可确定浮点乘法运算的偏指数结果(即,在没有尾数乘法部分的规格化情况下的指数结果)。在这些实施例中,exp_in可表示偏指数结果,并且指数处理电路650可在浮点乘法运算的尾数结果的规格化期间递增或递减exp_in以确定最终指数结果。

进一步考虑a、b、c和d是单精度浮点数的尾数(即,包括23比特)。如果需要,a、b、c和d中至少之一可以是单精度浮点数的扩展尾数(即,包括不止23比特)。进一步考虑a_msb和a_lsb是尾数a的部分,并且c_msb和c_lsb是尾数c的部分。

尾数a的部分和尾数c的部分可以是不同的。如果需要,尾数a的部分(即,a_msb和a_lsb)和/或尾数c的部分(即,c_msb和c_lsb)可至少部分重叠。在一些实施例中,尾数a的部分(即,a_msb和a_lsb)和/或尾数c的部分(即,c_msb和c_lsb)可以是相同的。

例如,a_msb、a_lsb、c_msb和c_lsb可以分别是a[22:0]、a[22:0]、c[22:12]、c[11:0]。在另一示例中,a_msb、a_lsb、c_msb和c_lsb可以分别是a[24:13]、a[12:0]、c[24:0]、c[24:0]。

在此情形中,专门处理块600a可接收信号a_msb、c_msb、b和d,并且可配置互连电路系统的复用器621、622、623和624可分别选择输入信号a_msb、b、c_msb和d,并且将复用器621和623的输出作为第一和第二被乘数信号路由到乘法器电路662,并且将复用器622和624的输出作为第一和第二被加数信号路由到浮点加法器电路605。

专门处理块600a的浮点加法器电路605可基于第一和第二被加数信号生成浮点和信号,并且可配置互连电路系统可将浮点和信号作为信号e输送到专门处理块600a的输出端口。专门处理块600a的复用器675可接收信号add_chain_in和浮点和信号,并且选择通过链出端口和级联连接传播信号add_chain_in到专门处理块600b的对应链入端口。

专门处理块600a的乘法器电路662可基于第一和第二被乘数信号,生成浮点积信号,并且可配置互连电路系统可将浮点积信号输送到移位器电路663。在其中第一和第二被乘数信号分别是浮点尾数a和c的部分(即,a_msb和c_msb)的上述情形中,乘法器电路662可配置成执行第一和第二被乘数信号的固定点乘法运算,并且浮点积信号可以是浮点尾数或浮点尾数的一部分。

移位器电路663可将浮点积信号向左移位预确定数量的比特。例如,如果信号a_lsb具有n个比特,则浮点积信号可被向左移位2n个比特。

可配置互连电路系统可将移位的浮点积信号路由到专门处理块600a的链出端口。

专门处理块600b可接收信号a_lsb、c_lsb、exp_in和add_chain_in,并且专门处理块600b的可配置互连电路系统的复用器621、622、623和673可分别选择输入信号a_lsb、exp_in、c_lsb和add_chain_in,并且将复用器621和623的输出作为第三和第四被乘数信号路由到乘法器电路662,将复用器622的输出路由到指数处理电路650,以及将复用器673的输出作为第一被加数信号路由到浮点加法器电路605。

专门处理块600b的乘法器电路662可基于第三和第四被乘数信号,生成另一浮点积信号,并且可配置互连电路系统可将该另一浮点积信号输送到移位器电路663。在其中第三和第四被乘数信号分别是浮点尾数a和c的部分(即,a_lsb和c_lsb)的上述情形中,乘法器电路662可配置成执行第三和第四被乘数信号的固定点乘法运算,并且该另一浮点积信号可以是浮点尾数或浮点尾数的一部分。

专门处理块600b的移位器电路663可将该另一浮点积信号在预确定方向(例如,向左或向右)移位预确定数量的比特。作为示例,该另一浮点积信号可不被移位。如果需要,由专门处理块600b的移位器电路663执行的移位运算可取决于由专门处理块600a的移位器电路663执行的移位运算。例如,浮点积信号可由专门处理块600a的移位器电路663移位,或者另一浮点积信号可以由专门处理块600b的移位器电路663移位。在另一示例中,浮点积信号和另一浮点积信号可均分别由专门处理块600a和600b的移位器电路663相对于彼此被移位。

可配置互连电路系统可将该另一移位的浮点积信号和来自链入端口的信号mult_chain_in路由到专门处理块600b的固定点加法器电路664。

专门处理块600b的固定点加法器电路664可计算该另一移位的浮点积信号和信号mult_chain_in之和,由此计算尾数a和b的积。

浮点舍入电路603可基于预确定的舍入方案,对尾数a和b的积执行舍入运算。舍入方案可以是适合用于舍入浮点数的任何舍入方案,仅举几个示例,诸如有时也被称为截短的向零舍入、向下舍入、向上舍入、向最近的数舍入、向最近的偶数舍入。

如果需要,浮点舍入电路603可执行规格化运算。规格化运算可包括将尾数a和b的积移位以恢复如ieee754标准所要求的作为前导比特的“1”。

浮点舍入电路603可提供信息到指数处理电路650。指数处理电路650可基于信号exp_in和从浮点舍入电路603收到的信息,确定信号exp_out。例如,如果舍入运算产生进位信号,并且规格化运算要求右移一比特以恢复作为尾数a和b的积的前导比特的“1”,则指数处理电路650可递增exp_in。

浮点舍入电路603可在专门处理块600b中提供舍入的浮点积到浮点加法器电路605。如果需要,浮点加法器电路605可将舍入的浮点积与复用器673的输出相加,并且将浮点和提供为在专门处理块600b的输出端口的输出信号f,以及经由复用器675提供为在专门处理块600b的链出端口的信号add_chain_out。

如果复用器673已选择信号add_chain_in,则输出信号f可表示f=a*b+add_chain_in。因此,两个专门处理块600a和600b可实现浮点加法(例如,e=b+d)和浮点乘加运算(例如,f=add_chain_out=a*c+add_chain_in)。

如果需要,不止两个专门处理块可配置成一起执行浮点数的两个向量的递归模式点积。作为示例,此类递归模式点积能够用于除其它之外,实现直接ii型fir滤波器。图7是根据一些实施例,被布置在级联链中并且执行浮点数的两个向量的递归模式点积的八个说明性专门处理块700a、700b、700c、700d、700e、700f、700g和700h的图。

如所示出的,专门处理块700a-700h的每个专门处理块可包括乘法器电路762。级联链中的每个其它专门处理块(即,专门处理块700b、700d、700f和700h)可进一步包括浮点加法器电路705和固定点加法器电路764。

如果需要,所有专门处理块700a-700h可以是相同的。换而言之,专门处理块700a、700c、700e和700g也可包括固定点加法器电路764和浮点加法器电路705。如果需要,专门处理块700a-700h的至少一些专门处理块可包括可包含复用器的可配置互连电路系统和如图7中所示出的配置成在相应输入、乘法器电路762、固定点加法器电路764、浮点加法器电路705及输出之间实现连接的路由轨道。在一些实施例中,图2的专门处理块200可实现专门处理块700a-700h的至少一些专门处理块。

考虑在其中专门处理块700a-700h配置成实现向量x和y的点积e=x*y的情形。向量x和y可以是x=(a,c,e,g,i,k,m,o)和y=(b,d,f,h,j,l,n,p),其中a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p是浮点数的尾数。如果需要,向量x和y可以是x=({a,c},{e,g},{i,k},{m,o})和y=({b,d},{f,h},{j,l},{n,p}),其中a、e、i、m、b、f、j和n是浮点数的尾数的msb,并且c、g、k、o、d、h、l和p是浮点数的尾数的lsb。

如所示出的,专门处理块700c和700d一起生成值b,其中b=(e*f+g*h)。类似地,专门处理块700g和700h一起生成值d,其中d=(m*n+o*p)。专门处理块700a-700h的可配置互连电路系统可将值b和d分别从专门处理块700d和700h的输出分别路由到专门处理块700b和700f的输入。

专门处理块700a和700b可一起生成值a,其中a=(a*b+c*d+b)=(a*b+c*d+e*f+g*h)。类似地,专门处理块700e和700f一起生成值c,其中c=(i*+k*l+d)=(i*j+k*l+m*n+o*p)。专门处理块700a-700h的可配置互连电路系统可将值a和c分别从专门处理块700b和700f的输出路由到专门处理块700d的输入。专门处理块700d的浮点加法器705可通过将a加到c,生成e=x*y。

因此,专门处理块的每个另外对可被类似地配置。例如,专门处理块700a和700b可与专门处理块700e和700f类似地配置,并且专门处理块700c和700d可与专门处理块700g和700h类似地配置。如例如在由此被整体并入本文中的专利号为9,207,908美国专利中所示出的,结果的递归结构是点积的非常有效的低时延实现。

在一些情形中,专门处理块700a、700c、700e和700g也包括浮点加法器电路705。在这些情形中,如在图6中所示出的,专门处理块700a、700c、700e和700g的浮点加法器电路705可被独立访问以在被用作fir滤波器时(作为示例)针对此结构提供预加法器。

全部包括乘法器电路和浮点加法器电路的专门处理块可有效地实现浮点快速傅立叶变换(fft)。例如,考虑实现如图8中所示出的说明性基数-2蝴蝶电路。

基数-2蝴蝶电路可接收三个复输入(x_real,x_imag)、(y_real,y_imag)和(w_real,w_imag)。如果需要,w_real和w_imag可表示旋转因子的实部和虚部。如所示出的,x_real和y_real可被相加以计算实输出的msb(即,bflytop_real)。类似地,x_imag和y_imag可被相加以计算虚输出的msb(即,bflytop_imag)。

x_real与y_real的差和x_imag与y_imag的差可分别生成值a和b。a可以与w_imag相乘,并且b与w_imag相乘以分别形成m_imag和m_real。

可从a与w_real的积减去m_real以计算实输出的lsb(即,bflybot_real)。m_imag可与b和w_real的积相加以计算虚输出的lsb(即,bflybot_imag)。

如所示出的,可使用四个乘法器和六个加法器来实现图8的基数-2蝴蝶电路,其中六个加法器中的3个加法器有效地实现减法运算。此类基数-2蝴蝶电路可被有效地映射到如图9中所示出的被布置在级联链中的八个说明性专门处理块900a、900b、900c、900d、900e、900f、900g和900h。

如所示出的,专门处理块900a-900h的每个专门处理块可包括多个乘法器电路962和浮点加法器电路905。级联链中的每个其它专门处理块(即,专门处理块900a、900c、900e和900g)可进一步包括固定点加法器电路964。

如果需要,所有专门处理块900a-900h可以是相同的。换而言之,专门处理块900b、900d、900f和900h还可包括固定点加法器电路964。如果需要,专门处理块900a-900h的至少一些专门处理块可包括可包含复用器的可配置互连电路系统和如图9中所示出的配置成在相应输入、乘法器电路962、固定点加法器电路964、浮点加法器电路905及输出之间实现连接的路由轨道。在一些实施例中,图2的专门处理块200可实现专门处理块900a-900h的至少一些专门处理块。

每个其它专门处理块的浮点加法器电路905可接收来自相应专门处理块的输入的浮点数,并且实现这些浮点数的加法或减法运算。例如,专门处理块900b和900f可分别接收信号x_imag和y_imag,并且生成信号b和bflytop_imag,而专门处理块900d和900h分别接收信号x_real和y_real,并且生成信号a和bflytop_real。

如所示出的,专门处理块900a-900h的每个乘法器电路962可实现浮点尾数乘法运算的一部分,并且专门处理块900a、900c、900e和900g中固定点加法器电路964可将多个部分组合成完整的浮点尾数乘法运算。因此,每对专门处理块900a和900b、900c和900d、900e和900f、900g和900h可实现完整的浮点尾数乘法运算。

例如,专门处理块900a和900b可分别接收信号b的lsb和msb(即,b2和b1)和信号w_real(即,w_real_2和w_real_l),并且使用乘法器电路962和固定点加法器电路964来生成b和w_real的积。

类似地,专门处理块900c和900d可分别接收信号a的lsb和msb(即,a2和a1)和信号w_imag的lsb和msb(即,w_imag_2和w_imag_l),并且使用乘法器电路962和固定点加法器电路964来生成作为a和w_imag的积的m_imag。专门处理块900e和900f可分别接收信号b的lsb和msb(即,b2和b1)和信号w_imag的lsb和msb(即,w_imag_2和w_imag_l),并且使用乘法器电路962和固定点加法器电路964来生成作为b和w_imag的积的m_real。专门处理块900g和900h可分别接收信号a的lsb和msb(即,a2和a1)和信号w_real的lsb和msb(即,w_real_2和w_real_l),并且使用乘法器电路962和固定点加法器电路964来生成a和w_real的积。

如所示出的,专门处理块900a和900g的浮点加法器电路905可接收来自相应专门处理块的输入的浮点数,并且实现此浮点数与由相应乘法器电路962和固定点加法器电路964计算的积的加法或减法运算。例如,专门处理块900a可生成作为信号m_imag与信号b和w_real的积之和的信号bflybot_imag。类似地,专门处理块900g可生成作为信号m_real与信号a和w_real的积之差的信号bflybot_real。

如图9中所示出的,专门处理块900c和900e的浮点加法器电路905保持未使用,并且可在不同计算中被独立使用(如果需要的话)。

图10是根据一些实施例,示出用于操作可配置以执行固定点算术运算和浮点算术运算的专门处理块的说明性步骤的流程图的图。

在操作1010期间,专门处理块可分别在第一、第二、第三和第四输入端口接收第一、第二、第三和第四输入信号。例如,图2的专门处理块200可分别在输入端口291、293、295和297接收输入信号a、b、c和d。

在操作1020期间,专门处理块可使用第一可配置互连电路系统,以在第一、第二和第三输入信号之中选择第一和第二被乘数,并且将第一和第二被乘数路由到算术运算器电路。例如,图2的专门处理块200可使用可配置互连电路系统(例如,互连和复用器221、222、223和271),以在输入信号a、b和c之中选择第一和第二被乘数,并且将第一和第二被乘数路由到算术运算器电路202。

在操作1030期间,专门处理块可使用第二可配置互连电路系统,以在第二和第四输入信号和来自算术运算器电路的算术运算器电路输出信号之中选择第一和第二被加数,并且将第一和第二被加数路由到浮点加法器电路和固定点加法器电路。例如,图2的专门处理块200可使用可配置互连电路系统(例如,互连和复用器221、224、272、273和274),以在输入信号b和c和来自算术运算器电路202的算术运算器电路输出信号之中选择第一和第二被加数,并且将第一和第二被加数路由到浮点加法器电路205和固定点加法器电路206。

在操作1040期间,专门处理块可使用第三可配置互连电路系统,以在来自浮点加法器电路的浮点加法器电路输出信号、来自固定点加法器电路的固定点加法器电路输出信号及来自算术运算器电路的算术运算器电路输出信号之中选择输出信号,并且将输出信号路由到输出端口。例如,图2的专门处理块200可使用可配置互连电路系统(例如,互连和复用器209),以在来自浮点加法器电路205的浮点加法器电路输出信号、来自固定点加法器电路206的固定点加法器电路输出信号及来自算术运算器电路202的算术运算器电路输出信号之中选择输出信号e,并且将输出信号e路由到输出端口294。

本文中描述的方法和设备可被并入任何适合的电路或电路的系统中。例如,方法和设备可被并入许多类型的装置(诸如微处理器或其它集成电路)中。仅举几个示例,示例集成电路包括可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpga)、电可编程逻辑装置(epld)、电可擦除可编程逻辑装置(eepld)、逻辑单元阵列(lca)、现场可编程门阵列(fpga)、粗粒度可重构架构(cgra)、数字信号处理(dsp)电路、专用标准产品(assp)、专用集成电路(asic)。

本文中描述的集成电路可以是包括以下组件中的一个或多个的数据处理系统的一部分:处理器;存储器;i/o电路系统;和外设装置。数据处理系统能够在广泛的多种应用中被使用,诸如计算机联网、数据联网、仪表化、视频处理、数字信号处理或其中使用有效地执行浮点算术运算和固定点算术运算的电路系统的优点是可期望的任何适合的其它应用。

集成电路可配置成执行各种各样不同逻辑功能。例如,集成电路可被配置为与系统处理器协作工作的处理器或控制器。集成电路也可被用作用于仲裁对数据处理系统中的共享资源的访问的仲裁器。在又一示例中,集成电路可被配置为在处理器与系统中其它组件之一之间的接口。在一个实施例中,集成电路可以是受让人所拥有的装置的系列之一。

虽然方法操作是以特定顺序描述,但应理解的是,其它操作可在描述的操作之间被执行,并且描述的操作可被调整成使得它们在稍微不同时间进行,或者描述的操作可被分布在允许在与处理关联的各种间隔处进行处理操作的系统中。

前面所述只是说明实施例的原理,并且在不脱离本文中公开的实施例的范围和精神的情况下(出于说明和非限制的目的而呈现),本领域技术人员可进行各种修改。前面所述实施例可单独或在任何组合中被实现。

以下示例涉及另外实施例。

示例1是一种专门处理块,其可配置以执行固定点算术运算和浮点算术运算,包括第一、第二、第三和第四输入端口、算术运算器电路、浮点加法器电路、固定点加法器电路、耦合第一、第二和第三输入端口到算术运算器电路的第一可配置互连电路系统、耦合算术运算器电路和第二和第四输入端口到浮点加法器电路和固定点加法器电路的第二可配置互连电路系统。

示例2包括示例1的主题,并且能够可选地进一步包括输出端口和耦合浮点加法器电路、固定点加法器电路和算术运算器电路到输出端口的第三可配置互连电路系统。

示例3包括示例2的主题,其中第三可配置互连电路系统进一步包括复用器,其基于控制信号,在从算术运算器电路收到的积信号、从浮点加法器电路收到的浮点和信号与从固定点加法器电路收到的固定点和信号之间选择。

示例4包括示例1-2的任何一个示例的主题,其中算术运算器电路进一步包括乘法器电路,其基于经由第一可配置互连电路系统收到的第一和第二被乘数信号,生成积信号。

示例5包括示例4的主题,其中算术运算器电路进一步包括第五输入端口、通过将来自乘法器电路的积信号在预确定方向移位预确定数量的比特,生成移位积信号的移位器电路以及通过将移位积信号与从第五输入端口收到的另一信号相加,生成算术运算器电路输出信号的另外的固定点加法器电路。

示例6包括示例1、2或4的任何一个示例的主题,并且能够可选地进一步包括耦合在算术运算器电路与浮点加法器电路之间的浮点舍入电路,其基于预确定的舍入方案,对从算术运算器电路收到的信号执行舍入运算。

示例7包括示例1、2、4或6的任何一个示例的主题,并且能够可选地进一步包括耦合在算术运算器电路与固定点加法器电路之间的逻辑电路块,其中逻辑电路块可配置以对从算术运算器电路收到的信号执行逻辑的运算。

示例8包括示例1、2、4、6或7的任何一个示例的主题,并且能够可选地进一步包括预加法器,其经由第一可配置互连电路系统的第一部分,从第一和第二输入端口接收第一和第二被加数信号,基于第一和第二被加数信号,生成和,以及经由第一可配置互连电路系统的第二部分,将该和发送到算术运算器电路。

示例9是一种用于操作可配置以执行固定点算术运算和浮点算术运算的专门处理块的方法,包括分别在第一、第二、第三和第四输入端口接收第一、第二、第三和第四输入信号;使用第一可配置互连电路系统,以在第一、第二和第三输入信号之中选择第一和第二被乘数,并且将第一和第二被乘数路由到算术运算器电路;使用第二可配置互连电路系统,以在第二和第四输入信号和来自算术运算器电路的算术运算器电路输出信号之中选择第一和第二被加数,并且将第一和第二被加数路由到浮点加法器电路和固定点加法器电路;以及使用第三可配置互连电路系统,以在来自浮点加法器电路的浮点加法器电路输出信号、来自固定点加法器电路的固定点加法器电路输出信号及来自算术运算器电路的算术运算器电路输出信号之中选择输出信号,并且将输出信号路由到输出端口。

示例10包括示例9的主题,进一步包括使用在算术运算器电路中的乘法器电路,以基于第一和第二被乘数,生成积信号。

示例11包括示例10的主题,进一步包括使用算术运算器电路中的移位器电路,以通过将积信号在预确定方向移位预确定数量的比特,生成移位积信号。

示例12包括示例11的主题,进一步包括在第五输入端口接收第五输入信号;以及使用在算术运算器电路中的另外固定点加法器电路,以通过将移位积信号与第五输入信号相加,生成算术运算器电路输出信号。

示例13包括示例9或10的任一示例的主题,进一步包括使用耦合在算术运算器电路与浮点加法器电路之间的浮点舍入电路,以对算术运算器电路输出信号执行浮点舍入运算。

示例14包括示例9、10或13的任一示例的主题,进一步包括使用耦合在算术运算器电路与固定点加法器电路之间的逻辑电路块,以对算术运算器电路输出信号执行逻辑的运算。

示例15包括示例9、10、13或14的任何一个示例的主题,进一步包括使用第一可配置互连电路系统的第一部分,将第一和第二输入信号从第一和第二输入端口路由到预加法器;使用预加法器,以基于第一和第二输入信号,生成和信号;以及使用第一可配置互连电路系统的第二部分,以将该和信号路由到算术运算器电路。

示例16是一种包括专门处理块的集成电路,专门处理块可配置以执行固定点算术运算和浮点算术运算,并且包括:分别接收第一、第二、第三和第四输入信号的第一、第二、第三和第四输入端口;输出端口;基于第一和第二被乘数信号,生成积信号的算术运算器电路;浮点加法器电路;固定点加法器电路;耦合第一、第二和第三输入端口到算术运算器电路的第一可配置互连电路系统,其中第一可配置互连电路系统配置成在第一、第二和第三输入信号之中选择第一和第二被乘数,并且将第一和第二被乘数路由到算术运算器电路;耦合算术运算器电路和第二和第四输入端口到浮点加法器电路和固定点加法器电路的第二可配置互连电路系统;以及耦合浮点加法器电路、固定点加法器电路和算术运算器电路到输出端口的第三可配置互连电路系统。

示例17包括示例16的主题,其中专门处理块进一步包括链出端口和移位器电路,移位器电路耦合在算术运算器电路与链出端口之间,并且通过将积信号在预确定方向移位预确定数量的比特,生成移位积信号。

示例18包括示例16-17的任何一个示例的主题,其中第二可配置互连电路系统配置成将第二和第四输入信号路由到浮点加法器电路,并且其中浮点加法器电路通过将第二与第四输入信号相加,生成浮点和。

示例19包括示例17-18的任何一个示例的主题,进一步包括另外的专门处理块,其可配置成以执行浮点算术运算和固定点算术运算,并且包括:分别接收第五、第六和第七输入信号的第五、第六和第七输入端口;基于第三和第四被乘数信号,生成另外的积信号的另外的算术运算器电路;耦合第五、第六和第七输入端口到另外的算术运算器电路的第四可配置互连电路系统,其中第四可配置互连电路系统配置成在第五、第六和第七输入信号之中选择第三和第四被乘数,并且将第三和第四被乘数路由到另外的算术运算器电路;耦合到专门处理块的链出端口,并且接收移位积信号的链入端口;以及生成移位积信号与另外的积信号之和的另外的加法器电路。

示例20包括示例19的主题,其中另外的专门处理块进一步包括接收第八输入信号的第八输入端口和通过将该和与第八输入信号相加,生成浮点和的另外的浮点加法器电路。

示例21包括示例16的主题,并且进一步包括存储电路。

示例22包括示例21的主题,其中从由以下项组成的群组中选择存储电路:先入先出电路、后入先出电路、串入并出移位寄存器电路、并入串出移位寄存器电路、随机存取存储器电路、只读存储器电路、内容可寻址存储器电路及寄存器堆。

示例23包括示例16的主题,并且进一步包括引脚和从引脚接收串行化数据信号,并且将串行化数据信号的至少一部分并行化的串行接收器电路。

示例24包括示例16的主题,并且进一步包括引脚和接收来自专门处理块的并行数据信号,将并行数据信号串行化以生成串行化的数据信号,以及将串行化数据信号传送到引脚的串行传送器电路。

示例25包括示例16的主题,并且进一步包括可编程逻辑区。

示例26包括示例25的主题,其中可编程逻辑区包括多个查找表电路。

示例27包括示例16的主题,并且进一步包括耦合到专门处理块的输入端口的互连资源。

示例28包括示例27的主题,其中互连资源包括水平和垂直互连资源。

示例29包括示例27的主题,其中互连资源包括多个导线。

示例30包括示例29的主题,并且进一步包括在多个导线的第一导线与多个导线的第二导线之间的可编程连接。

示例31是一种专门处理块,其可配置以执行固定点算术运算和浮点算术运算,包括:用于接收输入信号的输入;用于执行算术运算和生成算术结果信号的第一电路;用于生成浮点和的第二电路;用于生成固定点和的第三电路;用于将输入信号路由到第一电路的第一可配置互连;用于将算术结果信号和输入信号中的两个路由到第二和第三电路的第二可配置互连。

示例32包括示例31的主题,并且能够可选地进一步包括输出端口和用于耦合浮点和、固定点和及算术结果信号路由到输出端口的第三可配置互连。

示例33包括示例31-32的任何一个示例的主题,其中第一电路进一步包括用于基于经由第一可配置互连收到的第一和第二被乘数信号,生成积信号的乘法器。

示例34包括示例33的主题,其中第一电路进一步包括用于通过将积信号在预确定方向移位预确定数量的比特,生成移位积信号的移位器。

示例35包括示例34的主题和用于执行输入信号的另一输入信号和移位积信号的固定点加法的第四电路。

示例36包括示例31、32或35的任何一个示例的主题,并且能够可选地进一步包括用于基于预确定的舍入方案,对算术结果信号执行舍入运算的舍入电路。

示例37包括示例31、32、35或36的任何一个示例的主题,并且能够可选地进一步包括用于对算术结果信号执行逻辑的运算的逻辑电路。

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