定序算术运算操作的方法和装置与流程

文档序号:12462849阅读:299来源:国知局
定序算术运算操作的方法和装置与流程

技术领域

这里呈现的实施方式涉及集成电路,并且,更具体地,涉及集成电路中的定序算术运算操作。



背景技术:

将可编程逻辑器件(PLD)作为集成电路的一个示例,由于使用PLD的应用增加了复杂性,因此将PLD设计为除包括通用可编程逻辑的模块以外,还包括可配置的专用模块,已经变得非常普遍。这样的专用模块可以包括已经被部分或全部硬线连接的电路,以执行一个或更多个专门任务,例如逻辑的或算术运算的操作。

专用模块还可以包括一个或更多个专用结构。通常以这类专用模块实现的这些结构的示例包括乘法器,算术逻辑单元(ALU),诸如随机存取存储器(RAM)模块、只读存储器(ROM)模块、内容可寻址存储器(CAM)模块的存储器单元,以及注册表文件,AND(与)/NAND(与非)/OR(或)/NOR(或非)阵列等,或者它们的组合。

已经在可编程逻辑器件(PLD)上提供的可配置专用处理模块的一个具体应用类型是经常应用在信号处理应用中的专用处理模块(SPB),所述信号处理应用包括数据信号、音频信号或视频信号的处理(作为示例)。在可配置专用处理模块包括执行乘法运算、求和运算,和/或乘法运算的累加的结构时,它们有时可以称为乘法-累加(MAC)模块。



技术实现要素:

根据本发明的某些方面,一种算术运算电路可以具有输出端、第一、第二和第三输入端,以及包括乘法器和配置电路。第一输入端可以耦合到以预定顺序提供多个信号的定序器电路,并且第一输入端可以从定序器电路接收多个信号中的第一信号。第二和第三输入端可以接收第二和第三信号。乘法器可以具有第一和第二乘法器输入端口和耦合到所述输出端的乘法器输出端口。配置电路可以配置算术运算电路以通过在第一模式中将第一和第二信号路由到第一和第二乘法器输入端口以实现第一算术运算功能,并且配置电路可以配置算术运算电路以通过在第二模式中将第二和第三信号路由到第一和第二乘法器输入端口以实现第二算术运算功能。

应当意识到的是,本发明可以以多种方式执行,例如过程、装置、系统、设备或计算机可读介质上的方法。下面描述本发明的几个有创新的实施方式。

在某些实施方式中,上述算术运算电路可以进一步包括加法器。加法器可以具有第一和第二加法器输入端口和加法器输出端口。第一加法器输入端口可以耦合到乘法器输出端口并且加法器输出端口可以耦合到所述输出端以及第二加法器输入端口。

如果需要,上述算术运算电路可以进一步包括寄存器。寄存器可以耦合在加法器输出端口和第二加法器输入端口之间,使得寄存器和加法器共同执行累加功能。

从附图和下面的优选实施方式的详细描述中,本发明进一步的特征、原理和各种优点将变得明显。

附图说明

图1是根据一个实施方式的示意性的具有专用处理模块的集成电路的图。

图2是根据一个实施方式的示意性的具有存储、处理,以及输入-输出电路的集成电路的图。

图3是根据一个实施方式的示意性的包括耦合到定序器模块的乘法-累加模块的专用处理模块的图。

图4是根据一个实施方式的示意性的耦合到定序器电路的另一个实施方式的专用处理模块的图。

图5是根据一个实施方式的示意性的模数计数器电路的图。

图6是根据一个实施方式的示意性的计数器电路的图。

图7是根据一个实施方式的示意性的有限脉冲响应(FIR)滤波器的图。

图8是示出根据一个实施方式的示意性的操作包括乘法-累加电路和定序器电路的集成电路的步骤的流程图。

具体实施方式

这里呈现的实施方式涉及集成电路,并且,更具体地,涉及集成电路中的定序算术运算操作。

可配置专用处理模块经常用于在诸如滤波器、采样器、模数转换器、数模转换器、信号压缩引擎、数字信号处理器(DSP)等的信号处理器件中执行算术运算操作。在该情况下,可配置专用处理模块经常配置为支持纯算术运算应用模式,其中输入信号由诸如乘法器和加法器或累加器的算术运算器来处理以执行诸如乘法-累加功能的算术运算功能。

很多上述信号处理器件以给定的顺序处理信号。例如,有限脉冲响应(FIR)滤波器,它是数字信号处理中所采用的最通用类型的滤波器中的一种,将当前输出信号计算为当前输入信号和预定数量的过去的输入信号的加权和。因此,将可配置专用处理模块与定序器电路配对可能是可取的,所述定序器电路控制可配置专用处理模块的信号到达以及可配置专用处理模块的配置。

本领域技术人员将会认识到的是,本示意性实施方式可以在没有这些具体细节中的一部分或全部的情况下实施。在另一个示例中,为了不对本实施方式产生不必要的误解,没有详细描述公知的操作。

图1中示出了一种集成电路的示意性实施方式,例如具有示意性互连电路的可编程逻辑器件(PLD)100。如图1所示,可编程逻辑器件(PLD)可以包括具有逻辑阵列模块(LAB)110的功能模块二维阵列,和诸如随机存取存储器(RAM)模块130的其他功能模块,以及诸如专用处理模块(SPB)120的可配置专用处理模块,专用处理模块(SPB)120可以包括例如算术运算器和定序器电路。例如LAB 110的功能模块可以包括接收输入信号并对输入信号执行定制功能以生成输出信号的较小的可编程区(例如,逻辑单元、可配置逻辑模块,或自适应逻辑模块)。

可编程逻辑器件100可以包括可编程存储器单元。存储器单元可以使用输入/输出单元(IOE)102加载配置数据(也称为编程数据)。一旦加载,每个存储器单元提供相应的静态控制信号,该静态控制信号控制相关功能模块(例如,LAB 110、SPB 120、RAM 130,或输入/输出单元102)的操作。

在通常情形下,已加载的存储器单元的输出被施加到功能模块内的金属氧化物半导体晶体管的栅极以使特定晶体管导通或截止,从而配置功能模块内的逻辑,包括路由路径。可以以这种方式控制的可编程逻辑电路单元包括乘法器(例如,用于形成在互连电路中的路由路径的乘法器),查找表,逻辑阵列,AND、OR、NAND和NOR逻辑门,传输门(pass gate)等的一部分。

存储器单元可以使用任何适合的易失性和/或非易失性存储器结构,例如,随机存取存储器(RAM)单元,熔丝,抗熔丝,可编程只读存储器单元,掩膜可编程和激光可编程结构,机械式存储器装置(例如,包括局部机械谐振器),机械式操作的RAM(MORAM),这些结构的组合等。因为存储器单元在编程过程中被加载配置数据,因此,存储器单元有时被称为配置存储器、配置RAM(CRAM)、配置存储器单元或可编程存储器单元。

另外,可编程逻辑器件可以具有输入/输出单元(IOE)102,用于驱动信号离开PLD以及用于接收来自其他器件的信号。输入/输出单元102可以包括并行输入/输出电路、串行数据收发器电路、差分接收器及发送器电路,或者用于将一个集成电路连接到另一个集成电路的其他电路。如图所示,输入/输出单元102可以位于芯片的外围周围。如果需要,可编程逻辑器件可以以不同的方式布置输入/输出单元102。例如,输入/输出单元102可以形成可以位于可编程逻辑器件上的任何位置(例如,跨PLD的宽度均匀分布)的输入/输出单元的一个或更多个列。如果需要,输入/输出单元102可以形成输入/输出单元(例如,跨PLD的高度分布)的一个或更多个行。可替代地,输入/输出单元102可以形成输入/输出单元岛,可以遍布PLD的表面分布或聚集在所选区域内。

PLD也可以包括垂直路由通道140(即,沿PLD 100的纵轴形成的互连)和水平路由通道150(即,沿PLD 100的横轴形成的互连)形式的可编程互连电路,每个路由通道包括至少一个路径以路由至少一条线路。如果需要,互连电路可以包括双数据速率互连和/或单数据速率互连。

如果需要,路由线路可以比路由通道的整个长度短。长度为L的线路可以跨L个功能模块。例如,长度为4的线路可以跨4个模块。水平路由通道中的长度为4的线路可以称为“H4”线路,而垂直路由通道中的长度为4的线路可以称为“V4”线路。

不同的PLD可以具有连接到不同数量的路由通道的不同的功能模块。图1中示出了3-边的路由结构,其中,输入和输出连接布置在至路由通道的每个功能模块的3侧。其他路由结构也旨在包括在本发明的范围内。其他路由结构的示例包括1-边、11/2-边、2-边和4-边的路由结构。

在直接驱动路由结构中,每条线由驱动器在单逻辑点驱动。驱动器可以与乘法器相关联,该乘法器选择信号以在线路上驱动。在各通道沿其长度具有固定数量的线路的情形下,驱动器可以布置在线路的每个起点。

需要注意的是,除了图1中示出的互连电路拓扑外,其他路由拓扑也旨在包括在本发明的范围内。例如,路由拓扑可以包括沿其延伸的不同部分的斜线路、水平线路和垂直线路,以及在三维集成电路的情况下与器件平面垂直的线路,并且线路的驱动器可以位于除线路的一个端点以外的不同点处。路由拓扑可以包括基本上跨过整个PLD 100的全局线路,诸如跨过PLD 100的一部分的线路的部分全局线路,特定长度的交错的线路,较短的局部线路,或者任何其他适合的互连资源布局。

此外,应当理解的是,实施方式可以以任何集成电路实现。如果需要,这样的集成电路的功能模块可以以多级或多层的方式布置,其中多个功能模块互相连接以形成更大的模块。其他的器件布局可以使用未以行和列布置的功能模块。

图2示出根据本发明的集成电路200的另一个实施方式的框图。集成电路200可以包括存储器模块260、专用处理模块220、通用处理模块270和输入/输出电路240。

存储器模块260可以包括随机存取存储器(RAM)、先入先出(FIFO)电路、堆栈或后入先出(LIFO)电路、只读存储器(ROM)、寄存器、锁存器或者其他适合存储数据的存储器电路。输入/输出电路可以包括并行输入/输出电路、差分输入/输出电路、串行数据收发器电路或者其他适合发送和接收数据的输入/输出电路。

诸如导线和总线的内部互连资源230可以用于从一个部件向另一个部件发送数据或者从一个部件向一个或更多个其他部件广播数据。诸如导线和总线、光互连基础结构或具有可选中间交换机的有线和无线网络的外部互连资源250可以用于与其他器件通信。在某些实施方式中,内部互连资源230和/或外部互连资源250可以使用可配置的互连电路实现。

通用处理模块270可以包括嵌入式微处理器、微控制器或者其他处理电路。通用处理模块270可以具有诸如逻辑功能模块的组合及顺序逻辑电路和诸如寄存器的存储单元。通用处理模块270可以是可配置的或可编程的以实现任何任意功能。例如,通用处理模块270可以配置为实现包括算术运算功能和组合功能的任何功能。然而,通用处理模块270可能以比专用处理模块220低得多的效率执行功能。

与通用处理模块270相比较,专用处理模块220因专用的处理部件和互连资源的有限的可配置性而可以具有有限的功能性。例如,在某些实施方式中,专用处理模块220可以包括乘法器、加法器、累加器、移位器和其他算术运算电路以有助于有效实现算术运算功能,也可以不是可配置的,以实现组合功能,例如组合型的积之和(即,几个逻辑与(AND)功能的逻辑或(OR)功能)。如另一个示例,互连资源可以布置为使得专用处理模块220能够实现算术运算型的积之和(即,几个乘积的加法)。

专用处理模块220还可以包括存储单元,例如,寄存器、锁存器、存储器阵列,或者其他存储器电路。这样的存储单元可以用于不同目的。例如,在实现复用功能时,存储单元可以存储实现FIR滤波器或者选择并掩膜(mask)输入数据的系数。可替代地,存储单元可以用于流水线化(pipeline)关键路径或者在数据被处理之前同步数据。如果需要,专用处理模块220可以是可配置的,以在不同模式下操作。例如,专用处理模块220可以是可配置的,以操作为算术运算电路、多路复用器和/或寄存器流水线。

在某些实施方式中,专用处理模块220可以包括定序器电路,该定序器电路为专用处理模块中的算术运算操作提供数据以及控制专用处理模块中的算术运算操作的执行。例如,这样的定序器电路可以存储用于FIR滤波器实现的系数和数据,以及通过控制专用处理模块中的算术运算操作的执行来控制FIR滤波器实现。

在其他实施方式中,定序器电路可以与专用处理模块220配对(例如,用于实现FIR滤波器的目的)。作为示例,定序器电路可以使用存储器模块260和通用处理模块270中的资源实现。

图3示出了专用处理模块的一个实施方式,例如图2中的专用处理模块220。如图所示,专用处理模块300可以包括乘法-累加模块310和定序器模块320。专用处理模块300可以在输入端口接收输入信号,该输入信号可以被路由到乘法-累加模块310和定序器模块320。乘法-累加模块310可以根据从定序器模块320接收的控制信号和数据信号生成输出信号。

如果需要,乘法-累加模块310可以包括算术运算电路,例如乘法器、加法器、减法器、计数器、累加器等,和存储器电路,例如锁存器、寄存器、随机存取存储器(RAM)、先入先出(FIFO)电路、堆栈或后入先出(LIFO)电路、只读存储器(ROM)、寄存器、锁存器或者其他适合存储数据的存储器电路,以及可配置电路,该可配置电路配置乘法-累加模块310以通过在输入端、输出端、算术运算电路和存储器电路之间路由信号来实现预定算术运算功能。

定序器模块320可以包括一个或更多个存储器电路,例如锁存器、寄存器、随机存取存储器(RAM)、先入先出(FIFO)电路、堆栈或后入先出(LIFO)电路、只读存储器(ROM)、寄存器、锁存器或者其他适合存储数据的存储器电路,和算术运算电路,该算术运算电路实现地址信号的计算以在存储器电路实现存储器访问操作。作为示例,定序器模块320可以包括以预定数执行递增操作的计数器电路,和通过向上计数到最大数以生成该预定数的模数计数器电路等。

至专用处理模块300的输入340可以在乘法-累加模块310和定序器模块320之间共享。如果需要,输入可以从专用处理模块300的输入专有地路由到乘法-累加模块310的输入或者专有地路由到定序器模块320的输入。乘法-累加模块310和定序器模块320之间的直接连接330可以将信号从乘法-累加模块310的输入端路由到定序器模块320或者从定序器模块320的输入端路由到乘法-累加模块310。类似地,由定序器模块320生成的诸如数据信号和控制信号的信号可以通过直接连接330发送到乘法-累加模块310,以及诸如状态信号的信号可以从乘法-累加模块310发送到定序器模块320。

乘法-累加模块310可以生成输出信号并且向专用处理模块300的输出发送该输出信号。在一些实施方式中,定序器模块320可以向附加的乘法-累加模块发送数据和控制信号。这些控制信号可以通过直接连接330从定序器模块320向乘法-累加模块310发送,并且从那里向专用处理模块300的输出端发送。如果需要,定序器模块320可以直接向专用处理模块300的输出端发送数据和控制信号(未示出)。

图4是根据一个实施方式的耦合到定序器电路401的专用处理模块403的图。如图所示,专用处理模块403可以包括寄存器410-419、多路复用器430-437、预加法器440、加法器442、乘法器448和配置位460-463。

如图所示,专用处理模块403可以在输入端接收输入信号A、B、C和ACCUM,并且在输出端生成输出信号R。输入端和输出端可以通过可配置电路耦合到预加法器440、加法器442和乘法器448,该可配置电路可以通过使用配置位460-463、来自输入中的一个的控制信号ACCUM以及来自定序器电路401的控制信号控制多路复用器430-437以实现算术运算操作。可以具有用于专用处理模块403的若干配置选项。

例如,配置位C0(460)和C3(463)可以控制是否旁路预加法器440,配置位C1(461)可以设置加法器442中的初始累加值,以及配置位C2(462)可以控制是否旁路最后的累加级,该最后的累加级包括累加器回路中的加法器442和寄存器419。

如图所示,配置位C3(463)可以根据在输入端接收的信号A、B、C和ACCUM确定专用处理模块403是否工作于算术运算器模式,或者由于受定序器电路401控制以及根据从定序器401接收的信号确定专用处理模块403是否工作于定序模式。

如图所示,专用处理模块403在工作于算术运算器模式时,可以实现几个功能。例如,专用处理模块403可以通过将配置位C2(462)和C3(463)设置为0以及将C0(460)设置为1实现B与C的乘积(即,R=B*C)。作为另一个示例,专用处理模块403可以通过将配置位C3(463)设置为0以及将配置位C0(460)和C2(462)设置为1实现B与C的乘积并且基于控制位ACCUM累加结果R(即,R=B*C+(ACCUM?R:C1))。作为又一个示例,专用处理模块403可以通过将配置位C0(460)、C2(462)和C3(463)设置为0实现C与A和B之和的乘积(即,R=(A+B)*C)。作为另一个示例,专用处理模块403可以通过将配置位C0(460)和C3(463)设置为0以及将配置位C2(462)设置为1实现C与A和B之和的乘积并且基于控制位ACCUM累加结果R(即,R=(A+B)*C+(ACCUM?R:C1))。

如图4所示的专用处理模块403仅是示例性的并且不意在限制本发明的范围。如果需要,可以省略一些多路复用器以换取电路区域的灵活性。例如,省略多路复用器430、431、432、433和434可以使专用处理模块403的区域减少了4个多路复用器和相应的配置位C0(460)和C3(463)以及线路,代价是专用处理模块403能够不再受定序器401控制。

如果需要,专用处理模块403可以包括附加电路。例如,专用处理模块403可以包括附加电路,用于模式检测、四舍五入、饱和度、向上溢出及向下溢出控制,和/或附加算术运算电路,例如链式加法器(例如,从另一个专用处理模块接收结果信号并将该结果信号与结果R相加的加法器)或附加预加法器电路(例如,将B与C相加),仅举几个示例。算术运算电路(即,预加法器440、乘法器448和加法器442)可以实现整数算术运算、定点数算术运算,和/或浮点数算术运算(例如,单精度浮点数、双精度浮点数等)操作。如果需要,专用处理模块403可以包括允许旁路寄存器410-419中的一个或更多个的附加多路复用器。

如果需要,专用处理模块403可以具有更多或更少的输入和输出。例如,专用处理模块403可以仅具有单一输出和6个输入。在该示例中,单一输出可以由在加法器输出和乘法器输出之间进行选择的多路复用器驱动(未示出)。

专用处理模块403中的每个信号可以包括数据的多个位。例如,输入信号A、B和C均可以为9位、12位、16位、18位、25位、27位、32位、36位等。如果需要,每对信号(即,A与B,A与C,或B与C)可以具有不同的位数。例如A可以为18位,而B和C为25位。作为另一个示例,A与B可以为27位,而C为18位,或者反之亦然。这些示例仅是示意性的。

类似地,如果存在如上所述的附加的输出信号,输出信号可以具有相同的位数。可替代地,所有的输出信号可以具有不同的位宽。

专用处理模块403可以具有与图4所示的不同数量的乘法器448和/或加法器442。例如,专用处理模块403可以包括4个乘法器448和3个加法器442,从而允许4个独立的乘法,2个独立的2个乘积之和或4个乘积之和。

乘法器448可以是任何类型的乘法器。例如,乘法器448可以是浮点数乘法器、定点数乘法器、整数乘法器,仅举几个示例。类似地,加法器442和预加法器440可以是任何类型的加法器。例如,加法器442和/或预加法器440可以是浮点数加法器、定点数加法器、整数加法器,仅举几个示例。

如果需要,专用处理模块403可以具有从由加法器442驱动的输出端寄存器419返回到乘法器448的输入端的反馈路径(未示出),以允许实现和之积功能。

定序器电路401提供到专用处理模块403的数据和控制信号。专用处理模块403可以基于控制信号对数据信号执行算术运算操作。定序器电路401可以包括存储器电路,例如寄存器420-424和随机存取存储器(RAM)模块490和491,以及算术运算电路,例如加法器450和452,以及计数器470、471、482和483。

如果需要,计数器482和483可以实现模数计数器。模数计数器可以在时钟信号的每个触发事件递增并且在达到最大值时重置为0。图5示出了一种示意性的模数计数器500。如图所示,模数计数器500可以包括逻辑或(OR)门510、加法器520、多路复用器530、比较器550和寄存器540和560。模数计数器500可以具有两个输入和两个输出。第一输入可以接收清零信号CLR,而第二输入接收模数计数器递增的值(例如,递增1)。如果需要,这个值可以在模数计数器中使用附加寄存器进行编程(未示出)。在该情形下,第二输入可以被省略。

第一输出端提供实际计数CNT和指示是否达到计数器的最大值的标志MAX。在模数计数器被重置为0之前可以达到的最大值可以存储在寄存器560中。一旦接收到值为1的清零信号CLR,逻辑OR门可以输出值为1的信号,相应地,该信号可以通过在时钟信号的第一触发事件时在多路复用器530的输入处选择0以将存储在寄存器540中的信号值设置为0。考虑其中最大值为3并且清零信号CLR被取消断言(de-assert),以及将它的值从1变为0的情形。在该情形下,寄存器540可以向加法器520、比较器550和输出CNT提供值为0的信号。

比较器550可以确定存储在寄存器560中的最大值(例如,3)不同于由寄存器540提供的信号的值(例如,0)。因此,在输出MAX提供的标志信号的值可以保持为0。现在接收值为0的清零信号CLR和值为0的标志信号MAX的逻辑OR门510的输出可以变为0。加法器520可以将值为1的信号与来自寄存器540的值为0的信号相加并且在时钟信号的第二触发事件时将和(即,值为1的信号)存储在寄存器540中,以及向加法器520、比较器550和输出CNT提供值为1的信号。

比较器550可以确定存储在寄存器560中的最大值(例如,3)不同于由寄存器540提供的信号的值(例如,1)。因此,在输出MAX提供的标志信号的值可以保持为0。现在接收值为0的清零信号CLR和值为0的标志信号MAX的逻辑OR门510的输出可以保持为0。加法器520可以将值为1的信号与来自寄存器540的值为1的信号相加并且在时钟信号的第二触发事件时将和(即,值为2的信号)存储在寄存器540中,以及向加法器520、比较器550和输出CNT提供值为2的信号。

比较器550可以确定存储在寄存器560中的最大值(例如,3)不同于由寄存器540提供的信号的值(例如,2)。因此,在输出MAX提供的标志信号值可以保持为0。现在接收值为0的清零信号CLR和值为0的标志信号MAX的逻辑OR门510的输出可以保持为0。加法器520可以将值为1的信号与来自寄存器540的值为2的信号相加并且在时钟信号的第三触发事件时将和(即,值为3的信号)存储在寄存器540中,以及向加法器520、比较器550和输出CNT提供值为3的信号。

比较器550可以确定寄存器560中存储的最大值(例如,3)与由寄存器540提供的信号的值(例如3)相同。因此,在输出MAX提供的标志信号的值可以从0变为1。现在接收值为0的清零信号CLR和值为1的标志信号MAX的逻辑OR门510的输出可以从0变为1,这样可以通过在时钟信号的第四触发事件时在多路复用器530的输入处选择0以将存储在寄存器540中的信号的值设置为0,并且向加法器520、比较器550和输出CNT提供值为0的信号。在CLR保持被取消断言并且时钟信号继续提供触发事件时,模数计数器500可以通过从0计数到3重复上面描述的相同操作。

图4的计数器470和471可以实现全N位计数器。计数器470和471可以响应于在输入INC接收的信号以设置的递增量向上计数。如果需要,计数器470和471可以被配置有初始值,该初始值在输入CLR的信号有效时加载到计数器。在输出CNT提供的当前计数是来自N位计数器的单独输出。

图6示出了具有加法器660、多路复用器640和650、寄存器610、620、630以及输入INC、CLR和输出CNT的N位计数器的示例。寄存器610可以确定在输入CLR的信号被断言(即,输入CLR的信号的值为1)时将要加载到寄存器620的初始值。寄存器630可以确定每次输入INC的信号被断言时应用到计数器的递增量。

作为示例,考虑寄存器610和630分别存储值为3和2的信号的情形。进一步考虑在每次时钟信号的第三触发事件之前输入INC的信号的值为1,使得寄存器620可以在接下来的触发事件时存储加法器660的输出。进一步考虑输入CLR的信号在时钟信号的第一触发事件被断言,在时钟信号的随后的触发事件被取消断言。

在该情形下,寄存器620可以在时钟信号的第一触发事件存储值为3的信号,并且在第一和第二触发事件时在输出CNT、加法器660和寄存器620的输入提供值为3的信号。加法器660可以计算来自寄存器620的值为3的信号与寄存器630中存储的值为2的信号的和,并且将值为5的信号提供为结果。输入INC的信号可以选择加法器的输出并且在寄存器620的输入提供值为5的信号,寄存器620在第三触发事件存储该信号。

寄存器620可以在第四和第五触发事件时在输出CNT、加法器660和寄存器620的输入提供值为5的信号。加法器660可以计算来自寄存器620的值为5的信号与存储在寄存器630中的值为2的信号的和,并且将值为7的信号提供为结果。输入INC的信号可以选择加法器的输出,并且在寄存器620的输入提供值为7的信号,寄存器620在第六触发事件存储该信号。

因此,计数器600可以在时钟信号的每三个触发事件以2递增,从而,来自时钟信号的第9至第11、第12至第14、第15至第17和第18至第20等的触发事件的在输出CNT的信号的值为9、11、13、15等。

再次参考图4,由计数器470和471提供的信号可以确定RAM 490的读取地址和写入地址。计数器470和471可以实现大小分别与RAM 490读取地址的宽度和写入地址的宽度相匹配的N位计数器。换句话说,如果RAM 490是需要5位读取和写入地址的32位深RAM,则计数器470和471将都是5位计数器。

如图所示,计数器482可以确定RAM 491的读取地址并且大小可以与RAM 491要求的读取地址相匹配。计数器483可以在RAM 490的输入WR确定写入标志。

如上所述,有限脉冲响应(FIR)滤波器是数字信号处理中采用的最通用类型的滤波器中的一种。在图7中示出了根据一个实施方式的示意性的有限脉冲响应(FIR)滤波器的图。

如图所示,FIR滤波器700可以包括N个乘法器730、(N-1)个加法器750和(N-1)个单位延迟单元710。单位延迟单元可以是允许信号延迟若干采样的任何电路单元。作为示例,单位延迟单元可以由存储器单元或可以将信号延迟一个采样的流水线单元实现,其中一个采样可以在多个或部分的时钟周期内。因此,单位延迟单元可以是流水线单元,例如缓冲存储器、寄存器、锁存器、移位寄存器或先入先出(FIFO),仅举几个例子。

乘法器730接收分别来自FIR滤波器输入和单位延迟单元710的信号并且将该信号分别乘以系数h(0)、h(1)、h(2),...,h(N-1)。系数可以存储在任何存储器电路中,例如,寄存器、RAM电路等。加法器750可以接收相应的乘积以及来自前一加法器750的和,并且执行加法运算以生成全部之前计算的乘积之和。因此,图7的FIR滤波器的传递函数为:

y(n)=h(0)*x(n)+h(1)*x(n-1)+...+h(N-1)*x(n-(N-1))

(1)

图7中描述的FIR滤波器700仅是示例性的并且不意在限制本发明的范围。如果需要,FIR滤波器可以随滤波器中的抽头数变化(例如,等式(1)中的参数N)。增加抽头数量可以增加计算FIR滤波器输出所需要的时钟周期的数量。

FIR滤波器可以随抽取率变化,抽取率指FIR滤波器的每个输出消耗的输入的数量(例如,输入信号被定时钟(clock)在100兆赫(MHz)并且输出信号在50MHz)。如果需要,抽取率可以包括分数率,分数率指非整数抽取率(例如,输入信号被定时钟在100MHz并且输出信号在75MHz)。

FIR滤波器可以随插值率变化,插值率指由FIR滤波器消耗的每个输入生成的输出的数量(例如,输入信号被定时钟在100MHz并且输出信号在200MHz)。如果需要,插值率可以包括分数率,分数率指非整数插值率(例如,输入信号被定时钟在100MHz并且输出信号在150MHz)。

FIR滤波器可以随通道的数量变化,通道的数量指希望共享相同硬件资源的输入流的数量。如果需要,多个通道可以交织为随后由公共的FIR滤波器处理的单一流,从而确保每个FIR计算使用来自单一通道的采样。

FIR滤波器可以包括对称的系数。具有对称的系数的FIR滤波器可以被更有效的实现。例如,如果为6抽头FIR滤波器指定的权重集是{115,231,517,517,231,115},则FIR计算通常将需要的6个乘法可以通过在乘法之前经由减少的权重集{115,231,517}做预加法而减少到3个。

在某些实施方式中,定序器电路401可以与专用处理模块403一起实现有限脉冲响应(FIR)滤波器。例如,RAM 490可以提供一个写入端口和两个读取端口。RAM 490可以通过在写入访问操作期间在写入端口写入输入信号值以存储要滤波的信号(例如,等式(1)的信号x)。RAM 490可以在读取访问操作期间在两个读取端口提供已存储的信号值。从RAM 490检索的信号值可以经由定序器电路401的输出与专用处理模块403之间的直接耦合连接发送给专用处理模块403。

RAM 491可以存储在FIR计算期间使用的系数、控制位和存储器地址偏移量。RAM 491可以具有读取端口,在专用处理模块403的行为主要由从RAM491读取的信号确定时,该读取端口连续提供相同的信号。如果需要,RAM 491可以具有写入端口。作为示例,写入端口可以实现动态更新存储在RAM 491中的信号(例如,如果可替代的滤波器行为是期望的)。

在一些实施方式中,在读取访问操作中从RAM 491检索的字可以包括多个部分。例如,该字可以包括FIR滤波器的系数(例如,图7的信号h(0),h(1),...,h(N-1))。如果需要,该字的一些部分可以用于计算RAM 490的读取地址(例如,信号OFFSET0和OFFSET1用于确定在确定RAM 490的读取地址时要向基准地址加入的地址偏移量),而其他部分可以控制专用处理模块403的可配置电路(例如,信号ACCUM可以控制是否使用包括加法器442和寄存器419的累加回路并且信号PREADD可以控制是否使用预加法器440),从而控制专用处理模块403中的FIR滤波器计算的执行。

在某些实施方式中,FIR滤波器计算需要的存储器访问序列可以细分为两个地址。因此,加法器450和452可以用于通过分别组合计数器470生成的计数与偏移量OFFSET1和OFFSET0来计算用于在RAM 490的读取访问操作的读取地址。第一地址可以包括在每个FIR计算的结束时更新的基准地址,并且第二地址可以是偏移量,该偏移量被应用到基准地址以确定特定周期期间需要的访问。

如图所示,定序器电路401可以生成两个偏移量值(即,OFFSET0和OFFSET1)并且具有两个加法器(例如,加法器450和452),这是因为专用处理模块403具有预加法器440,预加法器440能够同时接收两个数据值。在一些实施方式中,专用处理模块403可能能够同时接收不同数量的数据输入。因此,偏移量的数量、地址加法器的数量和RAM 490的端口的数量可以相应变化。作为示例,专用处理模块403可以具有三元预加法器(即,计算3个输入信号之和的预加法器)。在该示例中,定序器电路401可以生成3个偏移量值并且具有3个加法器。

如果需要,专用处理模块403的输入(例如,信号A、B、C和ACCUM)可以向定序器电路401提供输入。例如,输入A可以作为耦合到RAM 490的写入数据端口的FIR滤波器的输入信号。作为另一个示例,输入B、C和ACCUM可以分别作为RAM 491的写入数据信号、写入地址信号和写入使能信号。如果需要,定序器电路401可以包括输入CLR。在输入CLR接收的信号可以将计数器470、471、482和483设置为已知状态。

定序器电路401可以包括寄存器420-424以补偿经由RAM模块490和491的延迟。考虑RAM模块490和491具有用于读取操作的2周期延迟的情形。在该情形下,寄存器420和421可以补偿经由RAM模块491的读取延迟,并且寄存器423和424可以补偿经由RAM模块490的读取延迟。用于延迟补偿的寄存器的数量可以随RAM模块的延迟变化。例如,在RAM模块491具有3周期读取延迟的情形下,在计数器470和加法器450和452之间将需要3个寄存器(即,寄存器420、421和以串联方式耦合的附加寄存器)。

图4的专用处理模块403和定序器电路401可以配置为实现不同类型的FIR滤波器,该滤波器通过适当地配置计数器470、471、482和483,以及存储器491以读取来自输入A的信号值(例如,等式(1)的信号x)并且在输出R提供已滤波的输出(例如,等式(1)的信号y)。

作为示例,考虑7抽头、非对称、单-通道FIR滤波器。这样的FIR滤波器可以在专用处理模块403中需要7个乘法。7个乘法可以需要7个周期。因此,计数器482和483可以配置为实现在达到最大值6之后重置为0的模7计数器。

到达输入A的信号可以每7个时钟周期采样并被存储在RAM 490中,并且包含在计数器470中的基准地址可以每7个周期递增。计数器470和471均可以配置为以1为递增量。计数器471可以配置有初始值7并且计数器470可以配置有初始值0。这样做使得在当前值被写入RAM 490之后FIR计算使用来自7个时隙的值。

在该示例中,FIR滤波器是非对称的。因此,不需要预加法器440并且信号PREADD保持0。包括加法器442、寄存器419和多路复用器437的专用处理模块的累加回路可以在第一个时钟周期关闭,而在随后的6个时钟周期开启。因此,RAM 491可以在地址0分别包括信号OFFSET0、OFFSET1、COEFF、ACCUM以及PREADD的值0,不考虑(DC)、h(6)、0和0。信号OFFSET0、OFFSET1、COEFF、ACCUM和PREADD的值可以在RAM 491的地址1分别是1、DC、h(5)、1和0,在RAM 491的地址2分别为2、DC、h(4)、1和0,在RAM 491的地址3分别为3、DC、h(3)、1和0,在RAM491的地址4分别为4、DC、h(2)、1和0,在RAM 491的地址5分别为5、DC、h(1)、1和0,以及在RAM 491的地址6分别为6、DC、h(0)、1和0。

在另一个示例中,考虑7抽头、对称、双-通道FIR滤波器。这样的FIR滤波器可以在专用处理模块中使用预加法器440,从而将专用处理模块403中的乘法数量减少到4。4个乘法可以需要4个周期。因此,计数器482和483可以配置为实现在达到最大值3之后重置为0的模4计数器。

到达输入A的信号可以每4个时钟周期采用并被存储在RAM 490中,并且包括在计数器470中的基准地址可以每4个周期递增。计数器470和471两者均可以配置为以1为递增量。计数器471可以配置有初始值14,并且计数器470可以配置有初始值为0。计数器471的初始值14是必要的,以适应从2个通道到达并在FIR滤波器计算中交织的数据信号。

在该示例中,FIR滤波器是对称的。因此需要预加法器440并且信号PREADD保持1,直到信号PREADD可以为0的最后一个时钟周期,这是因为抽头数为奇数。包括加法器442、寄存器419和多路复用器437的专用处理模块的累加器回路可以在第一个时钟周期关闭,而在随后的6个时钟周期开启。两个偏移量信号均可以用于基准数据,该基准数据存储在RAM 490中具有2的偶数倍数的地址处(例如,补偿双通道FIR计算的交织)。

因此,RAM 491可以包括在地址0的信号OFFSET0、OFFSET1、COEFF、ACCUM和PREADD分别为0、12、h(0)、0和1的值。信号OFFSET0、OFFSET1、COEFF、ACCUM和PREADD的值可以在RAM 491的地址1分别为2、10、h(1)、1和1,在RAM 491的地址2分别为4、8、h(2)、1和1,在RAM 491的地址3分别为6、DC、h(3)、1和1。

在另一个示例中,考虑6抽头非对称、以3抽取、以2插值、单-通道FIR滤波器。以P抽取的FIR滤波器可以在每个FIR计算中接收P个输入,并且以Q插值的FIR滤波器可以在每个FIR计算中生成Q个输出。相比之下,非抽取且非插值滤波器可以在每个FIR计算期间接收一个输入并且生成一个输出。

非抽取且非插值6抽头滤波器可以需要系数为h(0)、h(1)、h(2)、h(3)、h(4)和h(5)的6个乘法。然而,以3抽取并且以2插值的FIR滤波器可以细分为2个滤波器,其中第一个使用系数h(1)、h(3)和(5),并且第二个使用系数h(0)、h(2)和h(4)。整个FIR计算可能需要6个乘法,该6个乘法可以跨两个单独的输出分割。

为实现6抽头、非对称、以3抽取、以2插值、单-通道FIR滤波器,计数器470可以配置为从0开始并且以3为递增量以补偿在每个FIR计算期间在RAM 490中存储3个新采样的抽取率。计数器482可以配置为在达到最大值5之后折回(wrapping around)的模6计数器。计数器471可以配置为从5开始并且以1为递增量。计数器483可以配置为在达到最大值1之后折回的模2计数器。

在该示例中,FIR滤波器是非对称的。因此,不需要预加法器440并且信号PREADD保持0。因同样原因,信号OFFSET1可以保持不考虑(DC)。包括加法器442、寄存器419和多路复用器437的专用处理模块的累加器回路可以在第一和第四时钟周期关闭,而在第二、第三、第五和第六时钟周期开启。因此,第一输出可以在第三时钟周期结束时生成,并且第二输出可以在第六时钟周期结束时生成。

因此,RAM 491可以在地址0分别包括信号OFFSET0、OFFSET1、COEFF、ACCUM和PREADD的值0,不考虑(DC)、h(5)、0和0。信号OFFSET0、OFFSET1、COEFF、ACCUM和PREADD的值可以在RAM 491的地址1分别为1、DC、h(3)、1和0,在RAM 491的地址2分别为2、DC、h(1)、1和0,在RAM 491的地址3分别为2、DC、h(4)、0和0,在RAM 491的地址4分别为3、DC、h(2)、1和0,在RAM 491的地址5分别为4、DC、h(0)、1和0。

图8是示出根据一个实施方式的操作集成电路的示意性步骤的流程图,所述集成电路包括乘法-累加电路和定序器电路,例如包括乘法-累加模块310和定序器模块320的图3的专用处理模块300,或者包括图4的定序器电路401和专用处理模块403的乘法-累加部分。

在步骤810中,定序器电路中的第一存储器电路可以接收第一读取地址信号。例如,图4的定序器电路301的RAM 491可以接收来自模数计数器482的读取地址信号。

在步骤820中,读取访问操作可以从基于第一地址信号的第一存储器电路中的第一位置检索控制信号。例如,读取访问操作可以从图4的RAM 491检索信号OFFSET0、OFFSET1、ACCUM、COEFF和PREADD。

在步骤830中,定序器电路中的加法器可以基于控制信号计算第二读取地址信号。例如,图4的加法器450可以基于从RAM 491接收的信号OFFSET0计算RAM 490的读取地址信号。

在步骤840中,另一个读取访问操作可以从基于第二读取地址信号的定序器电路中的第二存储器电路中的第二位置检索数据信号。例如,定序器电路401的RAM 490可以从加法器450接收读取地址信号并且执行另一个读取访问操作,该操作在由读取地址信号确定的RAM 490中的位置检索数据信号。

在步骤850中,乘法-累加电路可以通过将数据信号乘以系数信号来计算输出信号。例如,可以包括乘法器448、加法器442和寄存器419的图4的专用处理模块403的乘法-累加部分可以通过使用乘法器448将从RAM 490检索的数据信号乘以从RAM 491检索的系数信号COEFF来计算输出信号R。

这里描述的方法和装置可以包括在任何适合的电子设备中或电子设备的系统中。例如,所述方法和装置可以被并入诸如微处理器或者其他IC的众多类型的设备中。IC的示例包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、粗粒度可编程逻辑器件(CGPLD)、粗粒度可重新配置阵列(CGRA)、专用标准产品(ASSP)、专用集成电路(ASIC)、数字信号处理器(DSP)、图形处理单元(GPU),仅举一些示例。

这里描述的集成电路可以是数据处理系统的部分,所述数据处理系统包括一个或更多个下列部件;处理器;存储器;I/O电路;和外围设备。所述集成电路可以用在大量应用中,例如计算机联网、数据联网、仪器仪表、视频处理、数字信号处理,或者期望利用使用定序器电路与专用处理模块的优点的任何适合的其他应用中。

尽管方法操作是以具体顺序描述的,但是应当理解的是,可以在所描述的操作之间执行其他操作,可以调整所描述的操作,使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许以与处理有关的各种时间间隔发生处理操作的系统中,只要重叠操作的处理以期望的方式执行。

附加实施方式:

附加实施方式1.一种算术运算电路,包括:输出端;第一输入端,耦合到以预定顺序提供多个信号的定序器电路,其中,所述第一输入端从所述定序器电路接收所述多个信号中的第一信号;第二和第三输入端,接收第二和第三信号;乘法器,具有第一和第二乘法器输入端口和乘法器输出端口,其中,乘法器输出端口耦合到所述输出端;以及配置电路,用于配置所述算术运算电路以通过在第一模式中将所述第一和第二信号路由到所述第一和第二乘法器输入端口实现第一算术运算功能,以及用于配置所述算术运算电路以通过在第二模式中将所述第二和第三信号路由到所述第一和第二乘法器输入端口实现第二算术运算功能。

附加实施方式2.根据附加实施方式1所述的算术运算电路,还包括:加法器,具有第一和第二加法器输入端口和加法器输出端口,其中,所述第一加法器输入端口耦合到所述乘法器输出端口并且所述加法器输出端口耦合到所述输出端并耦合到所述第二加法器输入端口。

附加实施方式3.根据附加实施方式2所述的算术运算电路,还包括:寄存器,耦合在所述加法器输出端口和所述第二加法器输入端口之间,其中,所述寄存器和所述加法器共同实现累加功能。

附加实施方式4.根据附加实施方式3所述的算术运算电路,还包括:第四输入端,耦合到所述定序器电路,其中,所述第四输入端从所述定序器电路接收控制信号;以及多路复用器,耦合在所述寄存器和所述第二加法器输入端口之间,其中,所述多路复用器根据所述控制信号将所述寄存器从所述第二加法器输入端口去耦合。

附加实施方式5.根据附加实施方式1所述的算术运算电路,还包括:第四和第五输入端,耦合到所述定序器电路,其中,所述第四和第五输入端从所述定序器电路接收多个信号中的第四和第五信号;以及预加法器,具有第一和第二预加法器输入端口,分别从所述第四和第五输入端接收第四和第五信号,并且其中所述预加法器计算所述第四和第五信号的和。

附加实施方式6.根据附加实施方式5所述的算术运算电路,还包括:第六输入端,耦合到所述定序器电路,其中所述第六输入端从所述定序器电路接收控制信号;以及多路复用器,接收来自所述第四输入端的所述第四信号、来自所述预加法器的所述和,以及来自第六输入端的所述控制信号,以及在第二模式中根据所述控制信号在所述第四信号和所述和之间进行选择。

附加实施方式7.根据附加实施方式1所述的算术运算电路,其中,所述定序器电路包括:存储器电路,以预定顺序输出所述多个信号。

附加实施方式8.根据附加实施方式7所述的算术运算电路,其中,所述定序器电路还包括:计数器电路,耦合到所述存储器电路并且以预定数递增以生成所述存储器电路的写入地址;以及附加计数器电路,耦合到所述计数器电路并且生成所述预定数。

附加实施方式9.一种定序器电路,包括:线路,传输提供多个触发事件的时钟信号;计数器,在所述多个触发事件中的第一触发事件以大于1的预定数递增以生成计数器输出;存储器电路,接收写入数据信号、读取地址信号,和所述计数器输出,其中,在所述多个触发事件的第二触发事件存储器电路在基于所述计数器输出的第一地址存储所述写入数据信号,并且输出从基于所述读取地址信号的第二地址的读取数据信号;以及输出端,耦合到算术运算电路,其中,所述输出端接收来自所述存储器电路的所述读取数据信号并且向所述算术运算电路发送所述读取数据信号。

附加实施方式10.根据附加实施方式9所述的定序器电路,其中,所述计数器在所述第一触发事件之后随即发生的所述多个触发事件中的第三触发事件递增预定数。

附加实施方式11.根据附加实施方式9所述的定序器电路,还包括:模数计数器电路,耦合到所述计数器电路,其中,所述模数计数器在所述多个触发事件的每个触发事件递增1直至大于1的最大数,并且提供所述最大数作为至所述计数器电路的所述预定数。

附加实施方式12.根据附加实施方式9所述的定序器电路,还包括:加法器,接收第一和第二信号,计算所述第一和第二信号的和,以及将所述和提供为至所述存储器电路的所述读取地址信号;以及附加计数器,在所述多个触发事件中的所述第一触发事件递增大于1的附加预定数以生成附加计数器输出,并且将所述附加计数器输出提供为至所述加法器的所述第一信号。

附加实施方式13.根据附加实施方式12所述的定序器电路,还包括:附加存储器电路,接收附加读取地址信号并且在所述多个触发事件的所述第二触发事件输出来自基于所述附加读取地址信号的第三地址的附加读取数据信号,其中,所述附加读取数据信号的第一部分被提供为至所述加法器的所述第二信号,并且其中,所述附加读取数据信号的第二部分被提供为至所述算术运算电路的控制信号;以及模数计数器电路,耦合到所述附加计数器电路和所述附加存储器电路,其中,所述模数计数器电路在所述多个触发事件中的每个触发事件以1递增计数直至最大数,并且提供所述最大数作为至所述附加计数器电路的所述附加预定数并且提供所述计数作为至所述附加存储器电路的所述附加读取地址信号。

附加实施方式14.根据附加实施方式13所述的定序器电路,其中所述算术运算电路还包括:乘法-累加电路,基于来自所述定序器电路的所述读取数据信号和所述控制信号实现乘法-累加功能。

附加实施方式15.一种操作包括乘法-累加电路和定序器电路的集成电路的方法,包括:在所述定序器电路的第一存储器电路接收第一读取地址信号;从基于所述第一读取地址信号的所述第一存储器电路中的第一位置检索控制信号;使用所述定序器电路中的加法器电路基于所述控制信号计算第二读取地址信号;从基于所述第二读取地址信号的所述定序器电路的第二存储器电路中的第二位置检索数据信号;以及使用所述乘法-累加电路通过将所述数据信号乘以系数信号计算输出信号。

附加实施方式16.根据附加实施方式15所述的方法,还包括:使用模数计数器电路生成增量信号和最大数信号,其中所述第一读取地址基于所述增量信号;使用另一个计数器电路利用所述最大数信号递增计数器输出信号;以及向所述加法器电路发送所述计数器输出信号。

附加实施方式17.根据附加实施方式15所述的方法,还包括:使用计数器电路生成写入地址信号;以及向所述第二存储器电路发送所述写入地址信号。

附加实施方式18.根据附加实施方式15所述的方法,还包括:从所述第一存储器电路检索所述系数信号;以及向所述乘法-累加电路发送所述系数信号。

附加实施方式19.根据附加实施方式18所述的方法,其中,基于所述数据信号计算输出信号还包括:使用所述控制信号控制乘法-累加电路中的选择器电路以将所述系数信号和所述数据信号路由到所述乘法-累加电路中的乘法器;以及使用所述乘法器计算所述系数信号和所述数据信号的乘积。

附加实施方式20.根据附加实施方式19所述的方法,还包括:使用所述乘法器计算附加系数信号和附加数据信号的附加乘积;以及使用所述乘法-累加电路中的累加器计算所述乘积与所述附加乘积的累加作为所述输出信号。

上面仅是说明了本发明的原理,本领域技术人员在不脱离本发明的范围和精神的情况下可以做出各种修改。

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