一种宽位累加器电路及其设计方法、可编程逻辑器件与流程

文档序号:12063315阅读:1195来源:国知局
一种宽位累加器电路及其设计方法、可编程逻辑器件与流程

本发明涉及FPGA(Field Programmable Gate Array,可编程逻辑器件)技术领域,尤其涉及一种宽位累加器电路及其设计方法、可编程逻辑器件。



背景技术:

累加器,在运算器中,是专门可用来存放算术或逻辑运算的一个操作数和运算结果的寄存器,能进行加、减、读出、移位、循环移位和求补等操作,是运算器的主要组成部分。在数字系统中也有着广泛的应用,是诸多数字系统数据通路中的重要运算部件,尤其是在高性能微处理器、数字信号处理器、图形图像系统、科学计算以及某些特定数据处理设备中更是不可或缺的组成部分,有着举足轻重的地位,常常会成为系统性能的瓶颈。

目前,在现有的FPGA中DSP(Digital Signal Processor,数字信号处理器)内嵌有累加器功能,但是DSP内嵌的累加器都是固定的,在实际应用中,若需求宽位累加器时,则需要借助DSP外部资源配置来进行实现,这会消耗大量FPGA的绕线资源,同时因为DSP外部绕线长度增加,会增大寄存器到DSP的延迟,从而会影响实现累加器的最高时钟频率。

因此,本领域技术人员亟待提供一种宽位累加器,以解决现有的宽位累加器需要通过借助外部配置资源实现的技术问题。



技术实现要素:

本发明提供了一种宽位累加器电路及其设计方法、可编程逻辑器件,以解决现有累加器需要借助DSP外部电路配置资源才能实现的技术问题。

为解决上述技术问题,本发明提供了一种宽位累加器电路,包括:第一输入端A、第二输入端B、第三输入端C、第四输入端PI、第一输出端P0、第一加法器以及与所述第一输入端A、第二输入端B及第三输入端C连接的第一支路、与所述第四输入端PI连接的第二支路、与所述第一输出端P0连接的第三支路,所述第一加法器将所述第一支路的输出结果与所述第二支路的输出结果进行运算,通过所述第三支路输出第一并行数据;

所述第一支路包括乘法器和第一选择器,所述乘法器用于将所述第一输入端A和第二输入端B输入的数据进行乘法运算,得到第一运算数据,并输出至所述第一选择器,所述第一选择器根据第一选择信号sel0从所述第一运算数据和所述第三输入端C输入的数据两个数据中选择一个数据输出至所述第一加法器;

所述第二支路包括第二选择器,所述第二选择器用于根据第二选择信号sel1从所述第四输入端PI输入的至少三个数据中选择一个数据输出至所述第一加法器;

所述第三支路包括第一输出寄存器preg1,所述第一输出寄存器preg1的输入端与所述第一加法器的输出端连接,所述第一输出寄存器preg1的输出端与所述第一输出端P0连接,用于输出第一并行数据。

进一步的,所述宽位累加器电路还包括第四支路,所述第四支路与所述第一加法器的输出端连接,用于将所述第一加法器输出的第一输出级联数据进行运算,输出第二并行数据。

进一步的,所述第四支路包括第三选择器、第二加法器、第二输出寄存器preg2以及与所述第二输出寄存器preg2连接的第二输出端P1,所述第三选择器根据第三选择信号sel2选择由所述第一输出级联数据经过右移M位得到的级联数据输出至所述第二加法器,所述第二加法器将所述第三选择器输出的右移M位得到的级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,并输出至所述第二输出寄存器preg2。

进一步的,若所述第四输入端PI输入的至少三个数据包括:由第一输入级联数据右移M位得到的级联数据、所述第一输出寄存器preg1输出的数据以及所述第一输出寄存器preg1输出的数据的低M位数据三个数据时,所述第二选择器为三选一选择器,所述三选一选择器根据第二选择信号sel1从该三个数据中选择一个输出给所述第一加法器。

进一步的,当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的选择信号时,所述第一加法器将所述第一运算数据与所述第一输出寄存器preg1输出的数据进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第一并行数据。

进一步的,当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的低M位数据的选择信号时,所述第一加法器将所述第一运算数据与所述第一输出寄存器preg1输出的数据的低M位数据进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第三并行数据。

进一步的,当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的低M位数据的选择信号,所述第三选择信号sel2为由所述第一输出级联数据经过右移M位得到的级联数据的选择信号时,所述第一加法器将所述第一运算数据与所述第一输出寄存器preg1输出的数据的低M位数据进行加法运算,所述第一加法器根据运算结果输出第一输出级联数据至所述第三选择器,所述第三选择器与所述第二加法器连接,将经过右移M位得到的第一输出级联数据输出至所述第二加法器,所述第二加法器将所述右移M位得到的第一输出级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,输出运算结果至所述第二输出寄存器preg2,得到第四并行数据。

为了解决上述技术问题,本发明还提供了一种可编程逻辑器件,包括如上所述的宽位累加器电路。

为了解决上述技术问题,本发明还提供了一种宽位累加器电路设计方法,所述宽位累加器电路包括第一支路、第二支路、第一输出寄存器preg1、与所述第一输出寄存器preg1连接的第一输出端P0和第一加法器,其特征在于,所述方法包括:

在所述第一支路上设置乘法器和第一选择器,所述乘法器将第一输入端A和第二输入端B输入的数据进行乘法运算得到的第一运算数据输出至所述第一选择器,所述第一选择器根据第一选择信号sel0从所述第一运算数据和第三输入端C输入的数据两个数据中选择一个数据输出至所述第一加法器;

在所述第二支路上设置第二选择器,其中所述第二选择器为三选一选择器,所述第二选择器用于根据第二选择信号sel1从第四输入端PI输入的至少三个数据中选择一个数据输出至所述第一加法器,所述第一加法器将根据所述第一选择器输出的数据与所述第二选择器输出的数据进行运算,通过所述第一输出寄存器preg1输出第一并行数据;

在所述第一加法器的输出端上设置第四支路,所述第四支路与所述第一加法器的输出端连接,用于将所述第一加法器输出的第一输出级联数据进行运算,输出第二并行数据。

进一步的,所述在所述第一加法器和所述第一输出寄存器preg1之间设置第四支路包括:在所述第一加法器的输出端上设置第三选择器、第二加法器、第二输出寄存器preg2以及与所述第二输出寄存器preg2连接的第二输出端P1,所述第三选择器根据第三选择信号sel2选择由所述第一输出级联数据经过右移M位得到的级联数据输出至所述第二加法器,所述第二加法器将所述第三选择器输出的右移M位得到的级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,并输出至所述第二输出寄存器preg2,所述第二输出寄存器preg2输出第二并行数据。

本发明的有益效果是:

本发明提供了一种宽位累加器电路及其设计方法、可编程逻辑器件,直接通过配置可实现宽位累加器能节省数字逻辑处理模块外的FPGA绕线资源和寄存器资源;进一步的,可通过硬核直接配置支持宽位累加器功能,节省软IP资源;进一步地,通过硬核配置可直接实现的宽位累加器,不需要通过外部的寄存器和绕线,减少寄存器输出到逻辑运算单元之间的延时,使其时序性能优于通过软IP实现的累加器。

附图说明

图1为本发明第一实施例提供的宽位累加器电路的电路连接示意图;

图2为本发明第一实施例提供的2个级联输出的宽位累加器电路的电路连接示意图;

图3为本发明第一实施例提供的输出最大位宽48比特的宽位累加器电路的电路连接示意图;

图4为本发明第一实施例提供的输出最大位宽66比特的宽位累加器电路的电路连接示意图;

图5为本发明第二实施例提供的宽位累加器电路的设计方法流程图。

具体实施方式

下面通过具体实施方式结合附图对本发明提出的方案作进一步详细说明。

第一实施例:

请参见图1,图1为本发明第一实施例提供的宽位累加器电路的电路连接示意图,由图1可知,在本实施例中,本发明提供的宽位累加器电路包括:第一输入端A、第二输入端B、第三输入端C、第四输入端PI、第一输出端P0、第一加法器adder0以及与所述第一输入端A、第二输入端B以及第三输入端C连接的第一支路、与所述第四输入端PI连接的第二支路、与所述第一输出端P0连接的第三支路,其中,第一加法器adder0adder0的两个输入端分别与第一支路和第二支路的输出端连接,用于将第一支路和第二支路的输出结果进行运算处理,根据运算结果输出第一输出级联数据,并且所述第一加法器adder0还将输出的第一输出级联数据输出至所述第三支路,通过第一输出端P0输出第一并行数据。

如图1所示,所述第一支路包括乘法器multipler和第一选择器mux0,所述乘法器multipler的输出端分别与所述第一输入端A和第二输入端B连接,用于接收通过所述第一输入端A和第二输入端B并行输入的数据,并将接收到的两个数据进行乘法运算,得到第一运算数据;进一步的,所述乘法器multipler将所述第一运算数据输出至所述第一选择器mux0中的其中一个输入端,所述第一选择器mux0的另一个输入端与所述第三输入端C连接,所述第一选择器mux0根据第一选择信号sel0从所述乘法器multipler输出的第一运算数据以及第三输入端C输入的数据两个数据中选择一个数据输出至所述第一加法器adder0。

所述第二支路包括第二选择器mux1,所述第二选择器mux1的输入端与第四输入端PI连接,输出端与所述第一加法器adder0的输入端连接,用于根据第二选择信号sel1从所述第四输入端PI输入的至少三个数据中选择一个数据输出至所述第一加法器adder0。

所述第三支路包括第一输出寄存器preg1,所述第一输出寄存器preg1的输入端与所述第一加法器adder0的输出端连接,所述第一输出寄存器preg1的输出端与所述第一输出端P0连接,用于输出第一并行数据。

如图2所示,所述宽位累加器电路还包括第四支路,所述第四支路与所述第一加法器adder0的输出端连接,用于将所述第一加法器adder0输出的第一输出级联数据进行运算,输出第二并行数据。

具体的,所述第四支路包括第三选择器mux2、第二加法器adder1、第二输出寄存器preg2以及与所述第二输出寄存器preg2连接的第二输出端P1,其中,优选的,所述第三选择器mux2采用三选一选择器,所述第三选择器mux2的输入端与第一加法器adder0的输出端连接,输出端与所述第二加法器adder1的输入端连接,所述第二加法器adder1的输出端与所述第二输出寄存器preg2连接,所述第二输出端P1与所述第二输出寄存器preg2的输出端连接。

在本实施例中,所述第三选择信号sel2为选择右移后的级联数据时,所述第三选择器mux2用于根据第三选择信号sel2选择由所述第一输出级联数据经过右移M位得到的级联数据输出至所述第二加法器adder1,所述第二加法器adder1将所述第三选择器mux2输出的右移M位得到的级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,并输出至所述第二输出寄存器preg2,所述第二输出寄存器preg2输出第二并行数据。

在本实施例中,若所述第四输入端PI输入的至少三个数据包括:由第一输入级联数据右移M位得到的级联数据、所述第一输出寄存器preg1输出的数据以及所述第一输出寄存器preg1输出的数据的低M位数据三个数据时,所述第二选择器mux1为三选一选择器,所述三选一选择器根据第二选择信号sel1从该三个数据中选择一个输出给所述第一加法器adder0,优选的,该M为大于等于18且小于48(18≤M<48)的正整数。

进一步的,所述第三输入端C和第四输入端PI可以为合并,具体的,当所述第三输入端C输入的数据同为所述第一输出寄存器preg1输出的数据时,所述第三输入端C和第四输入端PI可以共用。

如图3所示,为输出最大位宽48比特的宽位累加器电路示意图,若所述第一输入端A和第二输入端B输入的数据均为18比特的数据A[17:0]和B[17:0],且所述第一选择器mux0、第二选择器mux1对应的选择信号分别为:当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的选择信号时,所述第一加法器adder0将所述第一运算数据与所述第一输出寄存器preg1输出的数据Pr[47:0]进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第一并行数据P0[47:0],其对应的计算公式为:P0[47:0]=Pr[47:0]+A[17:0]*B[17:0]。

如图4所示,为输出最大位宽66比特的宽位累加器电路的示意图,具体的实现66比特的输出具体的通过2个级联的输出来实现,其中第一个级联输出的数据P1为18比特,第2个级联输出的数据P2为48比特,2个级联输出相叠加起来刚好为最大的并行输出66比特。

当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的低M位数据的选择信号时,所述第一加法器adder0将所述第一运算数据与所述第一输出寄存器preg1输出的数据的低M位数据{30'h0,Pr0[17:0]}进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第三并行数据P1[17:0],其对应的计算公式为:P1[17:0]={30'h0,Pr0[17:0]}+A[17:0]*B[17:0]。

进一步的,在所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的低M位数据的选择信号的基础上,所述第三选择信号sel2为由所述第一输出级联数据经过右移M位得到的级联数据的选择信号时,所述第一加法器adder0根据运算结果输出第一输出级联数据PO[47:0]至所述第三选择器mux2,所述第三选择器mux2根据第三选择信号首先将第一输出级联数据右移18位后,得到右移级联数据PO[47:0]>>>18,并选择该右移级联数据输出PO[47:0]>>>18至所述第二加法器adder1,所述第二加法器adder1将所述右移18位得到的级联数据与所述第二输出寄存器preg2输出的数据Pr1[47:0]进行加法运算,输出运算结果至所述第二输出寄存器preg2,得到第四并行数据P2[65:18]=Pr1[47:0]+PO[47:0]>>>18。

对应的,本发明还提供了一种可编程逻辑器件,其包括本实施例提供的宽累加器电路,所述宽累加器电路中的第一支路、第二支路、第三支路、第四支路、乘法器multipler、选择器通过所述可编程逻辑器件的硬核配置来实现。

本实施例提供的宽位累加器电路,通过硬核配置可直接实现的宽位累加器,不需要通过外部的寄存器和绕线,解决了现有累加器需要借助DSP外部电路配置资源才能实现的问题,同时也减少寄存器输出到逻辑运算单元之间的延时,使其时序性能优于通过软IP实现的累加器。

第二实施例:

图5为本发明第饿实施例提供的宽位累加器电路设计方法的流程图,请参考图5,该宽位累加器电路包括:第一支路、第二支路、第一输出寄存器preg1、与所述第一输出寄存器preg1连接的第一输出端P0和第一加法器adder0,在设计该电路时,具体是通过硬核配置来实现,其配置设计流程如下所示:

S501,在所述第一支路上设置乘法器multipler和第一选择器mux0。

在该步骤中,通过硬核配置为第一支路配置有乘法器multipler和二选一选择器,将所述乘法器multipler的两个输入端分别与第一输入端A、第二输入端B连接,用于接收两个输入端输入的数据A[17:0]和B[17:0],并且将A[17:0]和B[17:0]进行乘法运算,得到第一运算数据输出至二选一选择器,所述二选一选择器根据第一选择信号sel0从所述第一运算数据和第三输入端C输入的数据Pr[47:0]两个数据中选择一个数据输出至所述第一加法器adder0。

S502,在所述第二支路上设置第二选择器mux1。

在该步骤中,通过硬核配置为第二支路配置三选一选择器,在所述三选一选择器的输入端中输入三个数据,包括由第一输入级联数据右移M位得到的级联数据、所述第一输出寄存器preg1输出的数据以及所述第一输出寄存器preg1输出的数据的低M位数据三个数据,所述三选一选择器根据第二选择信号sel1从该三个数据中选择一个输出给所述第一加法器adder0。

S503,判断所述第一选择信号sel0和第二选择信号sel1是否满足第一条件,若满足,则输出第一并行数据。

在该步骤中,具体的所述第一选择信号sel0和第二选择信号sel1满足第一条件为:当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的选择信号时,所述第一加法器adder0将所述第一运算数据与所述第一输出寄存器preg1输出的数据进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第一并行数据。

在本实施例中,当宽位累加器电路只需要输出最大数据为48比特时,只需要通过执行步骤S501-S503即可实现,通过控制第一选择器mux0选择输出乘法器multipler的运算结果,以及控制所述第二选择器mux1选择输出第一输出寄存器preg1输出的数据,即可实现一个最大输出为48比特的宽位累加器,具体电路连接如图3所示。

但是,若输出的数据为大于48比特时,则还需要在通过步骤S501-S503设计的宽位累加器电路的基础上,再增加一级输出,具体如步骤S504-S507。

S504,在所述第一加法器adder0的输出端上设置第四支路。

在该步骤中,具体是通过硬核配置在所述第一加法器adder0的输出端上设置第三选择器mux2、第二加法器adder1、第二输出寄存器preg2以及与所述第二输出寄存器preg2连接的第二输出端P1,所述第三选择器mux2根据第三选择信号sel2选择由所述第一输出级联数据经过右移M位得到的级联数据输出至所述第二加法器adder1,所述第二加法器adder1将所述第三选择器mux2输出的右移M位得到的级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,并输出至所述第二输出寄存器preg2。

S505,判断所述第一选择信号sel0和第二选择信号sel1是否满足第二条件,若满足,则输出第三并行数据。

当所述第一选择信号sel0为所述第一运算数据的选择信号,所述第二选择信号sel1为所述第一输出寄存器preg1输出的数据的低M位数据的选择信号时,所述第一加法器adder0将所述第一运算数据与所述第一输出寄存器preg1输出的数据的低M位数据进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第三并行数据。

S506,在步骤S505的基础上,选择第三选择信号sel2为由所述第一输出级联数据经过右移M位得到的级联数据的选择信号。

S507,根据第三选择信号sel2,所述第四支路将所述第一加法器adder0输出的第一输出级联数据进行运算,输出第四并行数据。

具体的,该第二并行数据是通过2个级联的输出来实现,其中第1个级联输出的数据P1为18比特,第2个级联输出的数据P2为48比特,2个级联输出相叠加起来刚好为最大的并行输出66比特。

首先,第1个级联输出是由所述第一加法器adder0将所述第一运算数据与所述第一输出寄存器preg1输出的数据的低M位数据进行加法运算,输出运算结果至所述第一输出寄存器preg1,得到第三并行数据。

在第一个级联输出完成后,由第2个级联输出继续输出,具体是由所述第一加法器adder0根据运算结果输出第一输出级联数据至所述第三选择器mux2,将经过右移M位得到的第一输出级联数据输出至所述第二加法器adder1,所述第二加法器adder1将所述右移M位得到的第一输出级联数据与所述第二输出寄存器preg2输出的数据进行加法运算,输出运算结果至所述第二输出寄存器preg2,得到第四并行数据。

通过第1个级联和第2个级联的交替输出,从而实现了最高输出位数达到66比特的并行数据。

综上所述,通过本发明的实施,至少存在以下有益效果:

本发明提供了一种宽位累加器电路及其设计方法、可编程逻辑器件,直接通过硬核配置可实现宽位累加器,不仅能节省数字逻辑处理模块外的FPGA绕线资源和寄存器资源,还可以节省软IP资源;进一步地,通过硬核配置可直接实现的宽位累加器,不需要通过外部的寄存器和绕线,减少寄存器输出到逻辑运算单元之间的延时,使其时序性能优于通过软IP实现的累加器。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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