具有用于执行浮点快速傅立叶变换和复数乘法的专用处理块的集成电路的制作方法

文档序号:17731727发布日期:2019-05-22 02:53阅读:374来源:国知局
具有用于执行浮点快速傅立叶变换和复数乘法的专用处理块的集成电路的制作方法

本发明一般涉及集成电路,并且具体地说,涉及具有浮点算术电路的集成电路。



背景技术:

可编程逻辑器件(pld)包括被设计成允许用户按照用户的具体需要定制电路的逻辑电路,诸如查找表(lut)和基于乘积的和(sum-of-product)的逻辑。此可配置逻辑通常被分成称为逻辑元件(le)的单独逻辑电路。le可以在一起被编成群以形成可以被配置成共享相同资源(例如寄存器和存储器)的更大逻辑块,其被称为逻辑阵列块(lab)。除了此可配置逻辑,pld还包括被用于连接le和lab的输入和输出的可编程互连或路由电路。此可编程逻辑和路由电路的组合被称为软逻辑。

除了软逻辑,pld还可以包括实现特定预定义逻辑功能的专用处理块,并且因而不能由用户进行配置。这种专用处理块可以包括已经被部分或完全硬连线以执行一个或多个特定任务(诸如逻辑或数学运算)的pld上的电路的集中。通常在这种专用处理块中实现的结构的示例包括:加法器、乘法器、算术逻辑单元(alu)、桶形移位器(barrel-shifter)、各种存储器元件(例如fifo/lifo/sipo/ram/rom/cam块和寄存器文件)、逻辑and/nand/or/nor阵列等、或其组合。

已经在pld上提供的专用处理块的一种特别有用的类型是数字信号处理(dsp)块。针对dsp块的常见应用是支持快速傅立叶变换(fft)和类似的算术运算。例如,cooley-tukeyfft算法涉及递归地将fft运算分解成更小的离散傅立叶变换(dft),其然后能使用“蝶形”计算进行组合。在基数-2的情况下,其中所述运算接收两个复数输入,并且被分解成两个更小的子变换,所述蝶形计算要求六个实数加法类型运算和四个实数乘法运算(即,加法与乘法的比为1.5)。然而,常规dsp块包括仅一个乘法器和仅一个加法器(即,乘法器与加法器的比为1:1)。结果,常规dsp块对执行的fft运算不是优化的。

是在此上下文内,出现了本文描述的实施例。



技术实现要素:

此发明一般涉及集成电路,并且更具体地说,涉及包括专用处理块的可编程集成电路。专用处理块可以是用于支持复数算术运算的至少部分硬连线的块,并且有时被称为数字信号处理(dsp)块。

按照实施例,每个dsp块可以包括用于接收第一输入信号的第一输入端口、用于接收第二输入信号的第二输入端口、用于接收第三输入信号的第三输入端口、用于从多个dsp块被连接成链的布置中的先前邻近dsp块接收第四输入信号的第四输入端口、乘法器电路、加法器电路以及第一、第二和第三输出。加法器电路可以是混合加法器,其能并行地在dsp块的第一输出生成和信号并且在dsp块的第二输出生成差信号两者。所述乘法器可以从第一和第二输入端口接收第一和第二输入,并且可以生成对应的乘积信号。

dsp块可以进一步包括第一、第二和第三路由复用器。第一路由复用器可以具有从乘法器接收乘积信号的第一输入、接收第三输入信号的第二输入、经由旁路路径接收第二输入信号的第三输入、接收第四输入信号的第四输入以及馈送到加法器电路中的输出。第二路由复用器可以具有接收第三输入信号的第一输入、接收第四输入信号的第二输入、被耦合到dsp块的第一输出的第三输入以及也馈送到加法器电路中的输出。第三路由复用器可以具有直接从乘法器接收乘积信号的第一输入、接收第三输入信号的第二输入、经由反馈路径被耦合到dsp块的第一输出的第三输入以及用作dsp块的第三输出的输出。dsp块的第三输出可以被直接连接到多个dsp块被连接成链的布置中的随后邻近dsp块。

在一种合适的布置中,四个dsp块可以被连接成链以实现基数-2快速傅立叶变换(fft)电路。所述四个dsp块可以接收第一复数输入x(其包括实分量xreal和虚分量ximag)、第二复数输入y(其包括实分量yreal和虚分量yimag)以及复数旋转因子w(其包括实分量wreal和虚分量wimag),并输出对应的复数蝶形顶部和底部信号。具体地说,所述链中的第一和第三dsp块可以输出复数蝶形顶部信号,而所述链中的第二和第四dsp块可以输出复数蝶形底部信号以用于基数-2fft。以这种方式实现的多个基数-2蝶形可以被组合在一起以形成还要更高阶基数蝶形。

在另一个合适的布置中,至少三个dsp块可以被连接成链以实现接收第一和第二复数输入信号并且输出复数乘积输出信号的复数乘法器电路。所述复数乘法器电路可要求第四dsp块以实现用于生成复数输出信号的karatsuba分解。karatsuba分解还可要求与四个dsp块分开的两个加法器。在另一个实施例中,可以仅需要三个dsp块以实现用于生成复数输出信号的gaussian方法。gaussian方法可要求位于所述链中的三个dsp块外部的仅一个加法器或者三个加法器。

本发明的另外特征、其特性和各种优点根据附图和如下详细描述将更加明显。

附图说明

图1是按照实施例的说明性可编程集成电路的图。

图2是按照实施例的说明性专用处理块的图。

图3是按照实施例的说明性基数-2蝶形运算的图。

图4是示出按照实施例在图2中示出的类型的专用处理块的链如何能被用于支持基数-2蝶形运算的图。

图5是示出按照实施例的基数-2蝶形运算的图形表示的图。

图6是示出按照实施例的基数-4蝶形运算的图形表示的图。

图7-图9是示出按照实施例的复数乘法运算的各种示例性电路实现的图。

具体实施方式

本文呈现的实施例涉及集成电路,并且更具体地说,涉及能用于在集成电路上执行复数算术运算的数字信号处理器。本领域技术人员将认识到,本示例性实施例可在没有一些或所有的这些特定细节的情况下来实践。在其它实例中,众所周知的操作未被详细描述,以免不必要地使本实施例模糊。

图1中示出了集成电路(诸如可编程逻辑器件(pld)100)的说明性实施例。如图1中所示,可编程逻辑器件(pld)可以包括功能块的二维阵列,其包括逻辑阵列块(lab)110和其它功能块,诸如随机存取存储器(ram)块130以及专用处理块,诸如专用处理块(spb)120。诸如lab110的功能块可包括较小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号并对输入信号执行定制的功能以产生输出信号。

可编程逻辑器件100可包含可编程存储器元件。存储器元件可以使用输入/输出元件(ioe)102而被加载有配置数据(也称为编程数据)。一旦被加载,则存储器元件每个提供对应的静态控制信号,其控制相关联的功能块(例如,lab110、spb120、ram130或输入/输出元件102)的操作。

在典型的情景中,加载的存储器元件的输出被施加到功能块中的金属氧化物半导体晶体管的栅极,以使某些晶体管导通或关断,并且由此配置包含路由路径的功能块中的逻辑。可以采用这种方式控制的可编程逻辑电路元件包含以下的部分:复用器(例如用于形成互连电路中的路由路径的复用器)、查找表、逻辑阵列、and、or、nand、和nor逻辑门、通过门(passgate)等。

存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,诸如随机存取存储器(ram)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程的和激光编程的结构、机械存储器器件(例如,包括本地化的机械谐振器)、机械操作的ram(moram)、这些结构的组合、等。因为存储器元件在编程期间被加载有配置数据,因此存储器元件有时被称为配置存储器、配置ram(cram)、配置存储器元件或可编程存储器元件。

此外,可编程逻辑器件可以具有用于驱动信号离开器件100以及用于从其它器件接收信号的输入/输出元件(ioe)102。输入/输出元件102可以包含并行输入/输出电路、串行数据收发器电路、差分接收器和传送器电路或者用于将一个集成电路连接到另一个集成电路的其它电路。如所示,输入/输出元件102可以位于芯片的外围周围。

如果期望的话,则可编程逻辑器件可以具有以不同方式布置的输入/输出元件102。例如,输入/输出元件102可以形成一列或多列的输入/输出元件,其可以位于可编程逻辑器件上的任何位置(例如,跨pld的宽度均匀分布)。如果期望的话,则输入/输出元件102可以形成一行或多行的输入/输出元件(例如,跨pld的高度分布)。备选地,输入/输出元件102可以形成输入/输出元件的岛(island),其可以分布在pld的表面之上,或者聚集在选择的区域中。

pld还可以包括以垂直路由通道140(即,沿pld100的垂直轴形成的互连)和水平路由通道150(即,沿pld100的水平轴形成的互连)的形式的可编程互连电路,每个路由通道包括至少一个轨道以路由至少一条线。如果期望的话,则互连电路可以包括双数据速率互连和/或单数据速率互连。

如果期望的话,则路由线可以短于路由通道的整体长度。长度l的线可以跨越l个功能块。例如,长度四的线可以跨越四个块。水平路由通道中的长度四的线可被称为“h4”线,而垂直路由通道中的长度四的线可被称为“v4”线。

不同的pld可具有不同的功能块,其连接到不同数量的路由通道。图1中描绘了三面的路由架构,其中输入和输出连接被呈现在每个功能块到路由通道的三面上。其它路由架构也意图被包含在本发明的范围内。其它路由架构的示例包括1面的、11/2面的、2面的和4面的路由架构。

在直接驱动路由架构中,每条线由驱动器在单个逻辑点被驱动。所述驱动器可以与选择要在线上驱动的信号的复用器相关联。在沿其长度具有固定数量的线的通道的情况下,驱动器可以被放置在线的每个起始点处。

注意,在本发明的范围内还意图包含除了图1描绘的互连电路的拓扑之外的其它路由拓扑。例如,路由拓扑可以包括沿其延伸的不同部分的对角线、水平线和垂直线,以及在三维集成电路的情况下垂直于器件平面的线,并且线的驱动器可位于与线的一端不同的点。路由拓扑可以包括跨越基本上所有pld100的全局线、部分的全局线(诸如跨越pld100的一部分的线)、具体长度的交错线、较小的局部线或者任何其它合适的互连资源布置。

此外,应当理解,实施例可以在任何集成电路中实现。如果期望的话,则这种集成电路的功能块可以被布置在多个功能块被互连在其中以形成还要更大的块的更多级或层中。其它器件布置可以使用不按行和列来布置的功能块。

图2是示出诸如块120的专用处理块可如何包括诸如浮点乘法电路200和浮点加法器电路202的各种浮点算术运算符电路的图。

浮点数在计算系统中以科学记数法来表示实数是常见的,并且被设计为覆盖大数值范围和多样的精度要求。ieee754标准通常用于浮点数。浮点数包括三个不同部分:(1)浮点数的符号、(2)尾数和(3)指数。这些部分中的每个可以由二进制数来表示并且,在ieee754格式中,取决于精度具有不同的位大小。

例如,单精度浮点数要求32位,其被分布如下:一个符号位(位32)、八个指数位(位[31:24])和23个尾数位(位[23:1])。双精度浮点数要求64位,包括一个符号位(位64)、11个指数位(位[63:53])和52个尾数位(位[52:1])。在dsp块120支持单精度32位输入和输出的图2的示例仅仅是说明性的,并不用作限制本实施例的范围。一般而言,dsp块120可以配置成支持广泛范围的精度(例如,配置成支持10位尾数、11位尾数、12位尾数、14位尾数、23位尾数或其它合适的尾数宽度)。在仍有其它合适的实施例中,乘法器200和加法器202备选地也可以是定点算数电路。

一般而言,专用处理块120可以包括已经被部分或完全硬连线以执行一个或多个特定任务(诸如逻辑或数学运算)的电路的集中。专用处理块120还可以包含一个或多个专用结构,诸如可配置存储器元件的阵列。已经在可编程逻辑器件(pld)上提供的专用处理块的一种特别有用类型是能用于处理音频信号(作为示例)的数字信号处理(dsp)块。当它们包括用于执行乘法运算、求和、和/或乘法运算的累加的结构时,这种块有时也可被称为乘法累加(“mac”)块。

一些应用的实现可要求多于一个的专用处理块。对于这种功能的示例包括诸如有限脉冲响应(fir)滤波器、快速傅立叶变换(fft)运算(只提出了几个)的向量(点乘积)运算或乘积的和运算的实现。在给定的专用处理块中产生的并在另一个专用处理块中消耗的信号有时可要求使用在处理块外部之外的互连资源。在延迟和功耗方面,这种资源的使用可能不是有效的。因此,可期望的是,在邻近专用处理块之间引入直接互连资源连同可配置互连电路,其可将信号路由往来于那些直接互连资源。

仍参考图2,dsp块120可以进一步包括(除了乘法器200和加法器202之外)输入寄存器204-1、204-2和204-3、输出寄存器206-1和206-2以及路由复用器208、210和212。输入寄存器204-1可以在块120的第一输入端口接收第一输入信号in1;输入寄存器204-2可以在块120的第二输入端口接收第二输入信号in2;并且输入寄存器204-3可以在块120的第三输入端口接收第三输入信号in3。输入信号in1、in2和in3可以经由外部互连资源被路由到dsp块120的输入端口。

乘法器200可以具有从第一输入寄存器204-1接收信号的第一输入、从第二输入寄存器204-2接收信号的第二输入以及在其处生成对应的乘积信号的输出。复用器208可具有从乘法器200接收乘积信号的第一(1)输入、直接从第三输入寄存器204-3接收信号的第二(2)输入、经由旁路路径209直接从第二输入寄存器204-2接收信号的第三(3)输入、在块120的第四输入端口接收第四输入信号in4的第四(4)输入、以及输出。第四输入端口可以被直接连接到邻近dsp块120(例如,输入信号in4可以经由硬连线的直接连接路径211被接收)。在邻近dsp块之间使用固定直接连接路径有助于降低对于外部可编程互连路由资源的路由复杂性,当多个dsp块120连接成链时,所述外部可编程互连路由资源将会以其它方式被需要以将输出信号从一个dsp块路由到另一个dsp块的输入。

复用器210可具有直接从第三输入寄存器204-3接收信号的第一(1)输入、从直接连接路径211接收输入信号in4的第二(2)输入、经由反馈路径207-1从输出寄存器206-1接收输出信号outl的第三(3)输入、以及输出。

加法器202可以具有从复用器208的输出接收信号的第一输入、从复用器210的输出接收信号的第二输入、在其上提供对应的和的第一(+)输出以及在其上提供对应的差的第二(-)输出。在共同受让的美国专利no.8,645,449中描述了能够以这种方式同时生成和与差浮点信号两者的加法器电路202(有时称为组合或混合加法器),所述专利通过引用以其整体被结合于本文中。和输出使用第一输出寄存器206-1被锁存,而差输出使用第二输出寄存器206-2被锁存。寄存器206-1具有在其处提供块120的输出信号out1的输出,而寄存器206-2具有在其处提供块120的输出信号out2的输出(即,寄存器206的输出可以用作块120的输出端口)。

复用器212可包括被直接连接到乘法器200的输出的第一(1)输入、被直接连接到输入寄存器204-3的输出的第二(2)输入、经由反馈路径207-2接收信号out1的第三(3)输入和在其处提供输出信号out3的输出。当多个dsp块120被串联连接时,输出信号out3可以经由硬连线路径211被直接馈送到后续dsp块,并且将用作针对后续dsp块的输入信号in4。

可以使用相同的时钟信号或使用不同的时钟信号来控制输入寄存器204(例如,寄存器204-1、204-2和204-3)和输出寄存器206(例如,寄存器206-1和206-2)。一般可以使用不同的控制信号来控制复用器208、210和212,以提供期望的路由配置。在图2的示例性布置中配置的,dsp块120内的中间输出能同时被路由到多个不同的目的地。例如,乘法器200的输出可以被同时路由到复用器208和212两者。作为另一个示例,寄存器204-3的输出也可以被同时路由到复用器208和212两者。作为仍有另一个示例,输入信号in4可以被同时路由到复用器208和210两者。以这种方式形成的同时内部路由连接能帮助改进对于dsp块120的性能和功率密度两者。

按照实施例,结合图2描述的类型的dsp块120可以适合于执行快速傅立叶变换(fft)运算。图3示出了基数-2fft蝶形计算的数据流程。“蝶形”指的是fft算法的部分,它将较小的离散傅立叶变换(dft)的结果组合成较大的dft,或者反之亦然。这种结构流程可能出现在cooley-tukeyfft算法或viterbi算法(作为示例)的上下文中。基数-2蝶形能用于构造更高基数蝶形(例如,基数-4蝶形、基数-6蝶形、基数-8蝶形等)。

如图3中所示,基数-2蝶形可接收两个复数输入x和y。复数输入x具有实部xreal和虚部ximag。类似地,复数输入y具有实部yreal和虚部yimag。基数-2蝶形可以生成两个对应的复数蝶形顶部以及底部输出bflytop和bflybot,它们两者都具有实部(即bflytopreal和bflybotreal)和虚部(即bflytopimag和bflybotimag)。具体而言,在步骤304-1可以通过将信号xreal和yreal相加来生成信号bflytopreal,而在步骤304-2可以通过将信号ximag和yimag相加来生成信号bflytopimag。

在步骤304-3,可以从信号xreal中减去信号yreal,以获得第一中间差值。在步骤304-4,可以从信号ximag中减去信号yimag,以获得第二中间差值。这些中间差值然后可以乘以复数旋转因子w,并且然后随后被组合以产生bflybot信号。旋转因子可具有实部wreal和虚部wimag。具体而言,第一中间差值可以按因子wreal缩放(在步骤306-1),而第二中间差值可以按因子wimag缩放(在步骤306-2),其结果可以在步骤304-5相减以生成输出bflybotreal。类似地,第一中间差值也可以按因子wimag缩放(在步骤306-4),而第二中间差值可以按因子wreal缩放(在步骤306-3),其结果可以在步骤304-6相加在一起以生成输出bflybotimag。

通过检查,基数-2蝶形流程包括六个实数加法类型(+/-)运算和四个实数乘法运算。换言之,fft运算要求1.5的乘法器与加法器的比。然而,常规dsp块只包括1:1的乘法器与加法器的比。因此,使用常规dsp块实现fft算法将是效率低的,特别是当在蝶形结构中还有大量宽总线(例如,32位宽总线或更多)时。

图4示出了dsp电路400的一个合适的实施例,其配置成支持基数-2蝶形,同时与常规fft电路相比,使用小得多的一组软路由连接。如图4中所示,dsp电路400可以仅包括连接成链的四个dsp块120(例如,dsp块120-1、120-2、120-3和120-4),并且从而包括合计为仅四个乘法器200和四个加法器202。在图4的阴影信号路径中示出了四个加法运算(例如,在图3中虚线302左侧的步骤304-1、304-2、304-3和304-4),而乘法运算(在虚线302右侧的步骤304和306)由短划线信号路径表示。

具体而言,块120-1可以在其第三输入端口接收信号ximag并且在其第四输入端口接收信号yimag。信号yimag可以在先前dsp块(未示出)的第三未使用的输入端口被接收,并且经由路径211被路由到dsp块120-1。例如,dsp块120-4的第三输入端口是未使用的,并且能用于接收针对另一组四个dsp块的信号yimag。块120-1中的复用器208可以配置成将信号yimag路由到块120-1中的加法器202的顶部输入,而块120-1中的复用器210可以配置成将信号ximag路由到块120-1中的加法器202的右侧输入(参见阴影路径)。加法器202然后可以输出对应的和信号,所述和信号等于bflytopimag,以及对应的第一差信号,所述差信号等于(ximag-yimag)。然后,第一差信号可以经由外部软路由互连资源被路由返回到块120-1的第一输入端口。块120-1的乘法器200可以从其第二输入端口接收此差值以及信号wreal,并且生成第一乘积信号,所述乘积信号然后经由复用器212被直接路由到块120-2的第四输入端口。

现在参考dsp块120-3,块120-3可以在其第三输入端口接收信号xreal,并且在其第四输入端口接收信号yreal。信号yreal可以在先前dsp块120-2的第三输入端口被接收,并且使用块120-2中的复用器212被路由到dsp块120-3。块120-3中的复用器208可以配置成将信号yreal路由到块120-3中的加法器202的顶部输入,而块120-3中的复用器210可以配置成将信号xreal路由到块120-3中的加法器202的右侧输入(参见阴影路径)。块120-3的加法器202然后可以输出对应的和信号,所述和信号等于bflytopreal,以及对应的第二差信号,所述差信号等于(xreal-yreal)。然后,在块120-1的第二输出端口生成的第一差信号(ximag-yimag)可以经由外部软路由互连资源被路由返回到块120-3的第一输入端口。块120-3的乘法器200可以从其第二输入端口接收第一差值以及还有信号wimag,并且生成第二乘积信号,所述乘积信号然后经由块120-3的复用器212被直接路由到块120-4的第四输入端口。

现在参考dsp块120-2,dsp块120-2可以在其第一输入端口接收经由外部软路由互连从块120-3的第二输出端口被路由的第二差信号,并且在其第二输入端口接收信号wimag。块120-2内的乘法器200可以接收这两个信号,并生成对应的第三乘积信号。块120-2中的复用器208可以配置成将第三乘积信号路由到块120-2中的加法器202的顶部输入,而块120-2中的复用器210可以配置成将第一乘积信号路由到块120-2中的加法器202的右侧输入。然后,块120-2中的加法器202可以生成等于bflybotimag的对应的和信号。

现在参考dsp块120-4,dsp块120-4也可以在其第一输入端口接收经由外部软路由互连从块120-3的第二输出端口被路由的第二差信号,并且在其第二输入端口接收信号wreal。块120-4内的乘法器200可以接收这两个信号,并生成对应的第四乘积信号。块120-4中的复用器208可以配置成将第四乘积信号路由到块120-4中的加法器202的顶部输入,而块120-4中的复用器210可以配置成将第二乘积信号路由到块120-4中的加法器202的右侧输入。然后,块120-4中的加法器202可以生成等于bflybotreal的对应的差信号。

以这种方式配置的,电路400中的1∶1的乘法器与加法器的比,连同能够输出和值和差值两者的算术电路202的使用,有效地支持了1∶1.5的乘法器与加法器运算的比。没有任何冲突地使用了所有内部直接连接路径。在任何两个邻近dsp块之间只使用了一个总线,并且始终在相同方向(例如,从右到左)上。如这样布置的,加法器部分(由阴影路径表示)和乘法器部分(由虚线路径表示)能被分开。

图4的基数-2蝶形结构还可用于构建基数-4蝶形。图5和图6是图示基数-2蝶形和基数-4蝶形之间的差异的图形表示。如图5的图形500中所示,基数-2蝶形接收两个复数输入x和y,并且执行单交叉或蝶形计算。在步骤502,计算x+y的和。在步骤504,计算x-y的差。所述和,其可以包括实部和虚部,等于信号bflytop。所述差可以按复数旋转因子t进行缩放,以生成信号bflybot,其也是复数值。图5因此是图3的简化图形表示。

图6是基数-4蝶形的图形表示,其有时被称为“蜻蜓(dragonfly)”。如图6中所示,基数-4蜻蜓图形600可具有四个复数输入a-d,并且生成四个复数输出。图6的具体实现在两个阶段中实现了基数-4蝶形。第一阶段仅具有加法类型的运算。例如,在步骤602计算第一复数和(a+c);在步骤604计算第二复数和(b+d);在步骤606计算第一复数差(a-c);并且在步骤608计算第二复数差(b-d)。复数乘法对于第一阶段没有被示出,因为它们减少到(1,0)、(-1,0)、(0,j)和(0,-j),其全都能通过平常的运算(诸如切换实数和复数值或者求反)来完成。浮点表示中的求反是平常的,因为只需要反转符号位。

第二阶段可以具有加法和乘法运算两者。例如,在步骤610计算第一复数输出(a+b+c+d);在步骤612,通过按第一旋转因子t1缩放差值[(a+c)-(b+d)]来计算第二复数输出;在步骤614,通过按第二旋转因子t2缩放和值[(a-c)+(b-d)]来计算第三复数输出;以及在步骤616通过按第三旋转因子r3缩放差值[(a-c)-(b-d)]来计算第四复数输出。通过检查,基数-4蝶形结构可以由四个基数-2蝶形来构造,除了基数-2蝶形中的一个具有两个复数乘法器(即,图6的底部右侧部分)。换言之,可以使用直接连接路径和还有外部软路由连接来互连16个dsp块120以实现基数-4蜻蜓。

最终结果是复数乘法之前的16个实数加法运算(因为每步涉及实数和虚数加/减)以及三个复数乘法。如上所述,复数乘法运算独立于加法器阶段,因此在第一阶段中将会是可用的复数乘法中的任何一个可以被用于第二阶段中的附加的复数乘法。这留下本将以其它方式在第一阶段中被使用的一个复数乘法未使用,但是由于它独立于蝶形的加法器部分,因此它能在别处被用于处理。使用基数-4构造的其它优点是,时延和功耗将低于基数-2蝶形,因为复数乘法器的整层被旁路了。

按照另一个合适的实施例,图2中所示类型的专用处理块120也可以在fft运算的上下文之外被使用,以支持其它复杂的算术运算,诸如复数乘法运算。复数乘法通常能表述如下:

(a+bj)*(c+dj)=(ac-bd)+j(ad+bc)(1)

如以上等式1中所示,a表示第一复数的实部,b表示第一数的虚部,c表示正与第一复数相乘的第二复数的实部,并且d表示第二复数的虚部。所得到的乘积具有等于(ac-bd)的实部以及等于(ad+bc)的虚部。

获得这些最终结果的一种方法是首先生成三个部分乘积:(1)(a+b)*(c+d)、(2)ac和(3)bd。最终的实部然后能通过计算[(2)减(3)]来获得,而最终的虚部能通过计算[(1)减(2)减(3)]来获得。复数乘法实现的这种类型有时被称为karatsuba分解,能使用图7的布置来实现所述分解。

如图7中所示,复数乘法器电路700可以包括串联连接的四个dsp块120-1、120-2、120-3和120-4。在dsp块之外需要两个附加的浮点加法器电路702和704。加法器702可以接收a和b,并输出和(a+b)。类似地,加法器704可以接收c和b,并输出和(c+d)。这两个和可以被传递到块120-1中的乘法器200的输入,并且对应的乘积(a+b)*(c+d)然后可以经由块120-1中的复用器212被直接路由到块120-1的第四输入端口。

同时,块120-2可以在其第一和第二输入端口分别接收a和c。块120-2的第三输入端口可以是未使用的。块120-2中的乘法器200可以接收信号a和c,并输出对应的乘积(ac)。块120-2中的复用器208可以配置成将乘积ac路由到块120-2中的加法器202的顶部输入,而块120-2中的复用器210可以配置成将乘积(a+b)*(c+d)路由到块120-2中的加法器202的右侧输入(参见短划线路径)。块120-2的加法器202然后可以生成差值[(a+b)*(c+d)-ac]。而且,块120-2的乘法器200同时可以经由块120-2的复用器212将乘积信号ac直接路由到块120-3的第四输入端口。

块120-3可以在其第一和第二输入端口分别接收b和d。块120-3的第三输入端口也可以是未使用的。块120-3中的乘法器200可以接收信号b和d,并输出对应的乘积(bd)。块120-3中的复用器208可以配置成将乘积bd路由到块120-3中的加法器202的顶部输入,而块120-3中的复用器210可以配置成将从块120-2直接接收的乘积ac路由到块120-3中的加法器202的右侧输入(参见短划线路径)。块120-3的加法器202然后可以生成差值(ac-bd),其表示期望的输出的实部(例如,参见以上等式1)。而且,块120-3的乘法器200同时可以经由块120-3的复用器212将乘积信号bd直接路由到块120-4的第四输入端口。

块120-4可以在其第三输入端口经由外部软路由互连资源从块120-2的外部输出端口接收差值[(a+b)*(c+d)-ac]。块120-4中的复用器208可以配置成将乘积bd路由到块120-4中的加法器202的顶部输入,而块120-4中的复用器210可以配置成将差值[(a+b)*(c+d)-ac]路由到块120-4中的加法器202的右侧输入(参见短划线路径)。块120-4的加法器202然后可以生成新的差值{[(a+b)*(c+d)-ac]-bd},其简化为(ad+bc),是期望的输出的虚部。

在图7的示例中,至少块120-2和120-3中的乘法器200的输出被同时路由到不同的目的地(例如,向下到复用器208并且向左到复用器212两者)。由于块120-4的第一和第二输入端口是未使用的,因此四个dsp块的多个群能被链接在一起,以使得块120-4的两个未使用的端口能分别用作接收(a+b)和(c+b)的下一个群中的块120-1的第一和第二端口。换言之,给定群700中的块120-4能与邻近群700中的块120-1交叠(即,至少一个dsp块能在两个邻近复数乘法电路700之间被共享)。

在另一个合适的布置中,首先能生成三个部分乘积:(1’)a*(c+d)、(2’)d*(a+b)和(3')c*(b-a)。最终乘积的实部然后能通过计算[(1’)减(2’)]来获得,而最终虚部能通过计算[(1’)加(3’)]来获得。复数乘法实现的这种类型有时被称为gaussian分解,能使用图8的布置来实现所述分解。

如图8中所示,复数乘法器电路800可以仅包括串联连接的三个dsp块120-1、120-2和120-3。在dsp块之外需要三个附加的浮点加法器电路802、804和806。加法器802可以接收b和a,并输出差(b-a)。加法器804可以接收c和d,并输出和(c+d)。加法器806可以接收a和b,并输出和(a+b)。块120-1可以从加法器802的输出接收差(b-a),并且还可以在其第二输入端口接收c。块120-1的乘法器200可以接收这两个输入并计算对应的乘积c*(b-a),其然后可以经由块120-1的复用器212被直接传递到块120-2的第四输入端口。

同时,块120-2可以从加法器804的输出接收和(c+d),并且还可以在其第二输入端口接收a。块120-2的乘法器200可以接收这两个输入并计算对应的乘积a*(c+d),其然后可以经由块120-2的复用器212被直接传递到块120-3的第四输入端口。块120-2中的复用器208可以配置成同时将乘积a*(c+d)路由到块120-2中的加法器202的顶部输入,而块120-2中的复用器210可以配置成将乘积c*(b-a)路由到块120-2中的加法器202的右侧输入(参见短划线路径)。块120-2的加法器202然后可以生成和值[a(c+d)+c(b-a)],其简化为(ad+bc)-期望的输出的虚部。

现在参考块120-3,块120-3可以从加法器806的输出接收和(a+b),并且还可以在其第二输入端口接收d。块120-3的乘法器200可以接收这两个输入并计算对应的乘积d*(a+b)。块120-3中的复用器208可以配置成将乘积d*(a+b)路由到块120-3中的加法器202的顶部输入,而块120-3中的复用器210可以配置成将乘积a*(c+d)路由到块120-3中的加法器202的右侧输入(参见短划线路径)。块120-3的加法器202然后可以生成差值[a(c+d)-d(a+b)],其简化为(ac-bd)-期望的输出的实部。

与图7的实现相比,图8的配置以一个附加的外部加法器(即,三个外部加法器而不是两个)为代价采用了更简单的内部连接模式。在gaussian分解的仍有另一个合适的版本中,首先能生成三个部分乘积:(1")b*(c-d)、(2")c*(a-b)和(3")d*(a+b)。最终乘积的实部然后能通过计算[(1’’)加(2’’)]来获得,而最终的虚部能通过计算[(1’’)加(3’’)]来获得。在图9的布置中示出了复数乘法实现的这种类型。

如图9中所示,复数乘法器电路900可以仅包括连接成链的三个dsp块120-1、120-2和120-3。块120-1可以在其第三输入端口接收信号a并且在其第四输入端口接收信号b。信号b可以在先前dsp块(未示出)的第三输入端口被接收,并且经由路径211被路由到dsp块120-1。例如,dsp块120-3的第三输入端口是未使用的,并且能用于接收针对另一组三个dsp块的信号b。块120-1中的复用器208可以配置成将信号b路由到块120-1中的加法器202的顶部输入,而块120-1中的复用器210可以配置成将信号a路由到块120-1中的加法器202的右侧输入(参见阴影路径)。块120-1的加法器202然后可以输出对应的和信号(a+b)以及对应的差信号(a-b)。

在块120-1的第一输出端口生成的和信号(a+b)然后可以经由外部软路由互连资源被路由返回到块120-3的第一输入端口。在块120-1的第二输出端口生成的差信号(a-b)然后可以经由外部软路由互连资源被路由返回到块120-1的第一输入端口。块120-1的乘法器200可以从其第二输入端口接收差值(a-b)以及还有信号c,并生成对应的乘积c*(a-b),其然后经由块120-1的复用器212被直接路由到块120-2的第四输入端口。

同时,块120-2可以从加法器902的输出接收差(c-d),并且还可以在其第二输入端口接收信号b。块120-2的乘法器200可以接收这两个输入并计算对应的乘积b*(c-d),其然后可以经由块120-2的复用器212被直接传递到块120-3的第四输入端口。块120-2中的复用器208可以配置成同时将乘积b*(c-d)路由到块120-2中的加法器202的顶部输入,而块120-2中的复用器210可以配置成将乘积c*(a-b)路由到块120-2中的加法器202的右侧输入(参见虚线路径)。块120-2的加法器202然后可以生成和值[b(c-d)+c(a-b)],其简化为(ac-bd)-期望的输出的实部。

现在参考块120-3,块120-3可以从块120-1的第一输出端口接收和(a+b),并且还可以在其第二输入端口接收d。块120-3的乘法器200可以接收这两个输入并计算对应的乘积d*(a+b)。块120-3中的复用器208可以配置成将乘积d*(a+b)路由到块120-3中的加法器202的顶部输入,而块120-3中的复用器210可以配置成将乘积b*(c-d)路由到块120-3中的加法器202的右侧输入(参见短划线路径)。块120-3的加法器202然后可以生成和值[d(a+b)+b(c-d)],其简化为(ad+bc)-期望的输出的虚部。

与图8的实现相比,图9的配置仅采用一个外部加法器(即,总共一个外部加法器而不是三个)。值(a+b)和(a-b)能由块120-1中的加法器202来计算,其中b输入来自于在右边的邻近复数乘法器900(未示出)的最右块的未使用的输入。

图3-6中示出的示例性fft蝶形结构以及图7-9中示出的复数乘法实现仅仅是说明性的,并且不用作限制本实施例的范围。如果期望的话,则结合图2描述的类型的dsp块120可以用于构建任何合适基数的其它fft元件,用于使用分解算法的任何类型来构建复数乘法器,或者用于实现复数算术功能的任何其它合适类型、等。

到目前为止已经描述了关于集成电路的实施例。本文描述的方法和设备可被合并到任何适合的电路中。例如,它们可被合并到各种类型的器件,诸如可编程逻辑器件、应用特定标准产品(assp)以及专用集成电路(asic)中。可编程逻辑器件的示例包含可编程阵列逻辑(pal)、可编程逻辑阵列(pla)、现场可编程逻辑阵列(fpla)、电可编程逻辑器件(epld)、电可擦除可编程逻辑器件(eepld)、逻辑单元阵列(lca)、复杂可编程逻辑器件(cpld)和现场可编程门阵列(fpga),只是提出了几个。

本文在一个或多个实施例中描述的可编程逻辑器件可以是包含一个或多个如下组件的数据处理系统的部分:处理器;存储器;io电路;和外围器件。数据处理能被用在各种各样的应用中,诸如计算机连网、数据连网、仪表化、视频处理、数字信号处理或者其中使用可编程或可重新编程逻辑的优点是可期望的任何适合的其它应用。可编程逻辑器件能用于执行各种不同的逻辑功能。例如,可编程逻辑器件能配置为与系统处理器协同工作的处理器或控制器。可编程逻辑器件还可作为用于对数据处理系统中的共享资源的存取进行仲裁的仲裁器来使用。在仍有另一个示例中,可编程逻辑器件能配置为在处理器与系统中其它组件中的一个之间的接口。

示例:

以下示例有关于另外的实施例。

示例1是一种集成电路,包括:连接成链的多个专用处理块,其中所述链中的每个专用处理块包括:第一输入端口,所述第一输入端口接收第一输入信号;第二输入端口,所述第二输入端口接收第二输入信号;第三输入端口,所述第三输入端口接收第三输入信号;第一算术电路,所述第一算术电路接收所述第一和第二输入信号;第二算术电路,所述第二算术电路从所述第一算术电路选择性地接收信号,并且所述第二算术电路生成输出信号;以及复用器,所述复用器具有直接从所述第一算术电路接收信号的第一输入、从所述第三输入端口接收所述第三输入信号的第二输入、从所述第二算术电路接收所述输出信号的第三输入以及被直接连接到所述链中的邻近专用处理块的输出。

示例2是示例1所述的集成电路,其中所述第一算术电路可选地包括乘法器电路,并且其中所述第二算术电路包括加法器电路。

示例3是示例1所述的集成电路,其中所述第二算术电路可选地包括混合加法器电路,所述混合加法器电路生成和信号作为所述输出信号,并且所述混合加法器电路进一步生成不同于所述和信号的差信号。

示例4是示例1所述的集成电路,其中每个专用处理块可选地进一步包括:附加的复用器,所述附加的复用器具有直接从所述第一算术电路接收信号的第一输入、从所述第三输入端口接收所述第三输入信号的第二输入以及被耦合到所述第二算术电路的输出。

示例5是示例4所述的集成电路,其中所述链中的每个专用处理块进一步包括直接从所述链中的邻近专用处理块接收第四输入信号的第四输入端口,并且其中所述附加的复用器进一步包括经由旁路路径从所述第二输入端口接收所述第二输入信号的第三输入以及从所述第四输入端口接收所述第四输入信号的第四输入。

示例6是示例1-5中任一项所述的集成电路,其中每个专用处理块可选地进一步包括:第四输入端口,所述第四输入端口直接从所述链中的邻近专用处理块接收第四输入信号;以及附加的复用器,所述附加的复用器具有从所述第三输入端口接收所述第三输入信号的第一输入、从所述第四输入端口接收所述第四输入信号的第二输入以及经由反馈路径接收所述输出信号的第三输入。

示例7是示例6所述的集成电路,其中所述附加的复用器进一步包括被直接连接到所述第二算术电路的输出。

示例8是一种集成电路,包括:基数-2快速傅立叶变换(fft)蝶形电路,所述基数-2快速傅立叶变换(fft)蝶形电路仅包括以该顺序连接成链的第一、第二、第三和第四数字信号处理(dsp)块,其中所述四个dsp块中的每个包括一个乘法器电路和一个加法器电路。

示例9是示例8所述的集成电路,其中所述dsp块中的至少一个dsp块的所述加法器电路可选地并行输出和信号与差信号。

示例10是示例8所述的集成电路,可选地进一步包括:附加的基数-2fft蝶形电路,所述附加的基数-2fft蝶形电路也仅包括四个dsp块,其中所述基数-2fft蝶形电路中的所述第一dsp块具有从所述附加的基数-2fft蝶形电路的未使用的输入接收信号的输入。

示例11是示例8所述的集成电路,其中所述第一dsp块中的所述乘法器电路可选地输出被路由到所述第二dsp块的第一信号,并且其中所述第二dsp块中的所述乘法器电路输出被路由到所述第二dsp块中的所述加法器电路的第二信号。

示例12是示例8所述的集成电路,其中所述第一dsp块具有可选地接收被路由到所述第一dsp块的所述加法器电路的第一信号的输入端口,并且其中所述第二dsp块具有接收被直接路由到所述第三dsp块的第二信号的输入端口。

示例13是示例8所述的集成电路,其中所述四个dsp块中的每个乘法器电路可选地接收相应的旋转因子。

示例14是示例8-13中任一项所述的集成电路,其中所述第一和第三dsp块可选地生成蝶形顶部信号的实和虚部,并且其中所述第二和第四dsp块生成蝶形底部信号的实和虚部。

示例15是示例14所述的集成电路,其中所述第一dsp块可选地进一步生成第一差信号,并且其中所述第三dsp块进一步生成不同于所述第一差信号的第二差信号。

示例16是一种集成电路,包括:复数乘法器电路,所述复数乘法器电路至少包括以该顺序连接成链的第一、第二和第三数字信号处理(dsp)块,所述复数乘法器电路接收第一复数输入信号和第二复数输入信号,并且所述复数乘法器电路输出复数输出信号。

示例17是示例16所述的集成电路,其中所述复数乘法器电路可选地进一步包括第四dsp块,其中所述四个dsp块共同实现用于生成所述复数输出信号的karatsuba分解,并且其中所述复数乘法器电路进一步包括与所述四个dsp块分开的两个加法器。

示例18是示例17所述的集成电路,可选地进一步包括:附加的复数乘法器电路,所述附加的复数乘法器电路也包括多个dsp块,其中所述复数乘法器电路和所述附加的复数乘法器电路共享一个dsp块。

示例19是示例16-18中任一项所述的集成电路,其中所述三个dsp块共同实现用于生成所述复数输出信号的gaussian方法,并且其中所述复数乘法器电路进一步包括在所述三个dsp块外部的并且将相应的和信号馈送到所述三个dsp块中的三个加法器。

示例20是示例16-18中任一项所述的集成电路,其中所述三个dsp块共同可选地实现用于生成所述复数输出信号的gaussian方法,并且其中所述复数乘法器电路进一步包括在所述三个dsp块外部的并且将差信号馈送到所述链中的所述第二dsp块中的仅一个加法器。

例如,上面描述的设备的所有可选特征也可以相对于本文描述的方法或过程来实现。前述内容仅仅是此发明原理的说明,本领域技术人员能进行各种修改。前述实施例可单独实现或以任何组合实现。

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