16位加法器及其实现方法、运算电路及芯片
技术领域
本申请实施例涉及电路领域,尤其涉及一种16位加法器及其实现方法、运算电路及芯片。
背景技术
16位加法器是数字电路设计中常用电路之一,例如,16位加法器常常用于中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)等复杂逻辑芯片,也常常用于微控制单元(Microcontroller Unit,MCU)、现场可编程门阵列(Field Programmable Gate Array,FPGA)等综合性设计芯片。
相关技术中,16位加法器在计算每个比特位的求和结果时,通常需要先获取相邻前一比特位的进位输出,例如,在计算第2比特位的求和结果时需要先获取第1比特位的进位输出,在计算第3比特位的求和结果时需要先完获取进位链中第2比特位的进位输出。以此类推,计算第15比特位的求和结果时先获取进位链中第14比特位的进位输出,整个计算过程耗时较长,且计算速度较低。
发明内容
有鉴于此,本申请实施例提供了一种16位加法器及其实现方法、运算电路及芯片,用以克服上述全部或部分技术缺陷。
第一方面,本申请实施例提供了一种16位加法器,其包括:
N个进位模块,每个进位模块对应第一加数和第二加数中的多个比特位,其中,第n个进位模块与第n-1个进位模块连接,以用于接收所述第n-1进位模块输出的级间进位参数,所述第一加数和所述第二加数为16位二进制数,N为大于1且小于15的整数,n为大于1且小于或等于N的整数;每个进位模块包括预处理单元和多个进位计算单元,一个进位计算单元对应所述第一加数和所述第二加数的一个比特位;
其中,所述第n个进位模块包含的预处理单元,用于对对应的所述第一加数和第二加数中的多个比特位进行预处理;
所述第n个进位模块包含的多个进位计算单元,用于根据所述预处理的结果和所述第n-1个进位模块的级间进位参数进行运算,生成所述第n个进位模块对应的每个比特位的进位输出和所述第n个进位模块的级间进位参数;
求和模块,所述求和模块与所述N个进位模块电连接,以用于根据所述第一加数和第二加数中的每个比特位、以及对应的进位输出进行运算,得到对应的求和结果。
第二方面,本申请提供了一种16位加法器的实现方法,其包括:
接收第一加数和第二加数,所述第一加数和第二加数按照比特位从低到高的顺序划分为N个数据组,每个数据组包括所述第一加数和所述第二加数中的多个比特位,N为大于1且小于15的整数;
对所述每个数据组包含的多个比特位进行预处理;
计算所述每个数据组包含的多个比特位的进位输出,其中,对于N个数据组中的第n个数据组,根据所述第n个数据组的预处理结果和第n-1个数据组的级间进位参数进行运算,生成所述第n个数据组对应的每个比特位的进位输出和所述第n个进位模块的级间进位参数,n为大于1且小于或等于N的整数;
根据所述第一加数和第二加数中的每个比特位、以及对应的进位输出进行运算,得到对应的求和结果。
第三方面,本申请提供了一种运算电路,所述运算电路包括根据第一方面任一实施例提供的加法器。
第四方面,本申请提供了一种芯片,所述芯片包括根据第二方面任一实施例提供的运算电路。
本申请实施例提供了一种16位加法器及其实现方法、运算电路和芯片,由于加法器包括N个进位模块,每个进位模块对应第一加数和第二加数中的多个比特位,且每个进位模块包括预处理单元和多个进位计算单元,第n个进位模块包含的预处理单元用于对对应的第一加数和第二加数中的多个比特位进行预处理,第n个进位模块包含的多个进位计算单元,用于根据预处理的结果和第n-1个进位模块的级间进位参数进行运算,生成第n个进位模块对应的每个比特位的进位输出和第n个进位模块的级间进位参数,这使得在获取到第n-1个进位模块输出的级间进位参数时,第n个进位模块中的每个进位计算单元可以直接利用预处理结果和第n-1个进位模块输出的级间进位参数并行计算对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出,以用于求和运算,由此可以缩短整个计算过程的时长,提高计算速度。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本申请实施例的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比值绘制的。附图中:
图1为本申请实施例提供的一种16位加法器的结构示意图;
图2为本申请实施例提供的一种16位加法器的进位模块中的第一预处理单元的电路示意图;
图3为本申请实施例提供的一种16位加法器的进位模块中的第二预处理单元的电路示意图;
图4位本申请实施例提供的一种16位加法器的一个示例性进位模块的电路图;
图5为本申请实施例提供了一种16位加法器的进位链的示意图;
图6为本申请实施例提供的一种16位加法器的实现方法的示意性流程图。
具体实施方式
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
图1为本申请实施例提供的一种加法器的结构示意图。本实施例的加法器可以为独立的硬件电路结构,也可以为芯片或微处理器等其他器件的基础电路单元结构。如图1所示,本申请实施例提供的16位加法器包括N个进位模块10,N为大于1且小于15的整数。每个进位模块对应第一加数和第二加数中的多个比特位,其中,第一加数和第二加数为16位二进制数。例如,一个进位模块可以对应第一加数和第二加数中的2个比特位、3个比特位或更多个比特位等。应理解,N个进位模块10中的每个进位模块对应的第一加数和第二加数中的比特位的数量可以相同,也可以不同。
其中,第n个进位模块与第n-1个进位模块连接,以用于接收第n-1进位模块输出的级间进位参数,由此,基于第n-1个进位模块输出的级间进位参数,计算第n个进位模块的级间进位参数和第n个进位模块对应的每个比特位的进位输出。其中,n为大于1且小于或等于N的整数。
每个进位模块包括预处理单元和多个进位计算单元,一个进位计算单元对应第一加数和第二加数的一个比特位。
本实施例中,第n个进位模块包含的预处理单元,用于对对应的第一加数和第二加数中的多个比特位进行预处理。
可选地,在本申请的一种实现方式中,预处理结果包括:组内进位生成信号和组内进位传播信号。第n个进位模块包含的预处理单元,具体用于:对对应的第一加数和第二加数中的每个比特位进行运算,生成每个比特位对应的进位生成信号和进位传播信号;基于对应的至少一个比特位的进位生成信号和进位传播信号分别生成每个比特位的组内进位生成信号和组内进位传播信号。
具体地,对对应的第一加数和第二加数中的每个比特位进行逻辑与运算,生成每个比特位的进位生成信号,进位生成信号为第一加数和第二加数中的对应比特位的逻辑与值运算结果。对对应的第一加数和第二加数中的每个比特位进行逻辑或运算,生成每个比特位的进位传播信号,进位传播信号为第一加数和第二加数中的对应比特位的逻辑或值运算结果。为了便于电路实现时的整体化布局,在本申请实施例中,有时也将每个比特位的进位生成信号进行逻辑非运算的结果称为进位生成信号。类似地,将每个比特位的进位传播信号进行逻辑非运算的结果称为进位传播信号。
在得到第n个进位模块对应的每个比特位的进位生成信号和进位传播信号之后,第n个进位模块包含的预处理单元还可以对相邻的多个比特位的进位生成信号进行逻辑或运算,生成组内进位生成信号,第n个进位模块包含的预处理单元还可以对相邻的多个比特位的进位传播信号进行逻辑与运算,生成组内进位传播信号。为了便于电路实现时的整体化布局,在本申请实施例中,有时也将组内进位生成信号进行逻辑非运算的结果称为组内进位生成信号。类似地,将组内进位传播信号进行逻辑非运算的结果称为组内进位传播信号。
例如,对于第一加数A和第二加数B中的第i个比特位,第i个比特位的进位生成信号Gi=Ai·Bi,第i个比特位的进位传播信号Pi=Ai+Bi。如上所述,为了便于电路实现时的整体化布局,第i个比特位的进位生成信号和进位传播信号有时也分别被表示为或第j个比特位到第i个比特位的组内进位产生信号Gi:j=Gi+Gi+1+…+Gi,第j个比特位到第i个比特位的组内进位传播信号Pi:j=Pi·Pi+1·…·Pi。如上所述,为了便于电路实现时的整体化布局,第j个比特位到第i个比特位的组内进位产生信号和进位传播信号有时也可以被表示为和
此外,Gi:j=Gi:k+Gk-1:j,并且,Pi:j=Pi:k·Pk-1:j,其中,k为按照比特位从低到高的顺序位于第j个比特位到第i个比特位之间的任一比特位。
本实施例中,第n个进位模块包含的多个进位计算单元,用于根据预处理的结果和第n-1个进位模块的级间进位参数进行运算,生成第n个进位模块对应的每个比特位的进位输出和第n个进位模块的级间进位参数。
可选地,在本申请的一种实施例中,第n个进位模块包含的每个进位计算单元,具体用于根据对应的比特位的组内进位生成信号和组内进位传播信号以及第n-1个进位模块的级间进位参数进行运算,生成对应的比特位的进位输出。
对于第n个进位模块对应的多个比特位中的最高位,该最高比特位对应的进位计算单元,还用于将在第n个进位模块对应的最高位的进位输出的计算中得到的进位参数,作为第n个进位模块的级间进位参数。
其中,进位参数是在每个比特位的进位输出的计算过程中得到中间量,进位参数与进位输出之间存在预设关系。每个比特位的进位输出可以基于该比特位的进位参数与该比特位的进位传播信号进行运算得到,具体地,每个比特位的进位输出为该比特位的进位参数与该比特位的进位传播信号的逻辑与运算结果。例如,若第i个比特位的进位输出为Ci,第i个比特位的进位传播信号为Pi,第i个比特位的进位参数为Cpi,则预设关系为:Ci=Pi·Cpi。
若第n-1个进位模块对应的多个比特位中的最高位为第(k-1)个比特位,则在第n-1个进位模块中的多个进位计算单元在计算第(k-1)个比特位的进位输出Ck-1时得到进位参数Cpk-1,作为第n-1个级间进位参数。若第n个进位模块的预处理单元输出结果中包括组内进位生成信号Gi:k和组内进位生成信号Pi-1:k,则第i个比特位的进位输出为Ci=Gi:k+Pi:k-1·Cpk-1。此外,由于Pi:k-1·Cpk-1=Pi:k·Pk-1·Cpk-1,因此,Ci=Gi:k+Pi:k·Ck-1也成立。
由于Gi:k和Pi:k可以通过预处理单元处理得到,因此,第n个进位模块中与第i个比特位对应的进位计算单元在得到第n-1个进位模块的级间进位参数Ck-1时,可以通过简单的逻辑运算,得到第i个比特位的进位输出或进位参数。此外,由于第n个进位模块中的预处理单元可以对第n个进位模块对应的多个比特位进行预处理得到对应的多个组内进位生成信号和组内进位传播信号第n个进位模块中的多个进位计算单元可以,基于对应的组内进位生成信号和组内进位传播信号并行计算每个比特位的进位输出,由此提高进位计算的效率。
应理解,为了便于电路实现时的整体化布局,进位参数Cpk-1和进位输出Ck-1有时也被表示为和
本申请实施例中,由于第n个进位模块包含的预处理单元对对应的第一加数和第二加数中的多个比特位进行预处理,第n进位模块包含的多个进位计算单元,用于根据预处理的结果和第n-1个进位模块的级间进位参数进行运算,生成第n个进位模块对应的每个比特位的进位输出和第n个进位模块的级间进位参数,这使得在获取到第n-1个进位模块输出的级间进位参数时,第n个进位模块中的每个进位计算单元即可以直接利用预处理结果和第n-1个进位模块输出的级间进位参数并行计算对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出。
此外,如图1所示,16位加法器还包括求和模块,该求和模块与N个进位模块电连接,以用于根据第一加数和第二加数中的每个比特位、以及对应的进位输出进行运算,得到对应的求和结果。
例如,对于第一加数A和第二加数A中的第i个比特位,可以根据以下求和公式,得到第i个比特位的求和结果。该公式为:
其中,Ci-1为第一加数A和第二加数A中的第i-1个比特位的进位输出。
本实施例中,由于基本上并行计算16位二进制数据中每个比特位的进位输出,因此,可以基本上并行地计算16位二进制数据中每个比特位的求和结果,由此可以缩短整个计算过程的时长,提高计算速度。
可选地,在本申请的一种实施例中,第n个进位模块对应的第一加数和第二加数中的比特位的数量等于或大于第n-1个进位模块对应的第一加数和第二加数中的比特位的数量。
由于第n个进位模块对应的每个比特位的进位输出的计算依赖于第n-1个进位模块的级间进位参数,因此,第n个进位模块中的每个进位计算单元的进位运算时间相对于第n-1个进位模块中的每个进位计算单元的进位运算时间具有一定的逻辑时延。通过使第n个进位模块对应的第一加数和第二加数中的比特位的数量等于或大于第n-1个进位模块对应的第一加数和第二加数中的比特位的数量,可以充分利用这一逻辑延时进行组内进位生成信号和组内进位传播信号的计算,避免第n个进位模块在计算时等待第n-1个进位模块的级间进位参数的情况出现,有利于进一步减小运算所耗费的时间。
可选地,在本申请的一种实施例中,N等于3,第1个进位模块对应第一加数和第二加数的第0比特位至第3比特位,第2个进位模块对应第一加数和第二加数的第4比特位至第7比特位,第3个进位模块对应第一加数和第二加数的第8比特位至15比特位。由此,使得加法器的布局较为集中,面积较小,有利于整体结构化布局。
应当理解,在本实施例中,进位模块的数量N可以为2个、4个、或者更多个,并且每个进位模块对应的具体比特位可以根据需要进行设置,本实施例对此不做限定。
实施例二
基于实施例一提供的16位加法器,进一步,本实施例提供了图1所示的16位加法器中的一个进位模块的结构示意图。应理解,该进位模块可以为实施例一中的N个进位模块中的任一进位模块,为了便于描述,下文中将该进位模块称为第n个进位模块。在本实施例中,第n个进位模块包含的预处理单元包括交替布置的至少一个第一预处理单元和至少一个第二预处理单元。
本实施例中,第一预处理单元用于对对应的第一加数和第二加数中的第i个比特位和第i-1个比特位进行运算,生成第一预处理结果,第一预处理结果指示第i个比特位和第i-1个比特位的进位生成信号的逻辑或运算结果,i为奇数。
可选地,在本申请的一种具体的实现方式中,如图2所示,第一预处理单元包括:第一与门201、第二与门202和第一或非门203,第一与门201的第一输入端和第二输入端分别接收第i个比特位,第一与门201的输出端连接至第一或非门203的第一输入端;第二与门202的第一输入端和第二输入端分别接收第i-1个比特位,第二与门202的输出端连接至第一或非门203的第二输入端,第一或非门203的输出端输出第一预处理结果。例如,若第一加数为A,第二加数为B,则第一预处理结果为其中,Gi和Gi-1为第i个比特位的进位生成信号和第i-1个比特位的进位生成信号。
应理解,第一预处理单元也可以直接由与或非门这种结构实现,本实施例对此不做限定。
本实施例中,第二预处理单元用于对对应的第一加数和第二加数中的第j个比特位和第j-1个比特位进行运算,生成第二预处理结果,第二预处理结果指示第j个比特位和第j-1个比特位的进位传播信号的逻辑与运算结果,j为偶数。
可选地,在本申请的一种具体的实现方式中,如图3所示,第二预处理单元包括:第一或门301、第二或门302和第一与非门303,第一或门301的第一输入端和第二输入端分别接收第j个比特位,第一或门301的输出端连接至第一与非门的第一输入端;第二或门302的第一输入端和第二输入端分别接收第j-1个比特位,第二或门302的输出端连接至第一与非门303的第二输入端,第一与非门303的输出端输出第二预处理结果。例如,若第一加数为A,第二加数为B,则第一预处理结果为其中,Pj和Pj-1为第j个比特位的进位传播信号和第j-1个比特位的进位传播信号。
应理解,第二预处理单元也可以直接由或与非门这种结构实现,本实施例对此不做限定。
相应地,第n个进位模块包含的多个进位计算单元,用于基于至少一个第一预处理结果和至少一个第二预处理结果以及第n-1个进位模块的级间进位参数得到对应的比特位的进位输出。例如,如图4所示,在一个示例中,第n个进位模块对应第一加数和第二加数中的4至7个比特位,则第n个进位模块对应的预处理单元共生成2个第一预处理结果(也即,GON_5_4)和(也即,GON_7_6),以及2个第二预处理结果(也即,PAN_4_3)、(也即,PAN_6_5),第n个进位模块包含的多个进位计算单元可以基于这些第一预处理结果和第二预处理结果,结合第n-1个进位模块的级间进位参数得到第n个进位模块对应的比特位的进位输出。
可选地,在本申请的一个实施例中,第n个进位模块包含的预处理单元还包括第三预处理单元和第四预处理单元,第三预处理单元分别对至少一个第一预处理单元输出的第一预处理结果和至少一个第二预处理单元输出的第二预处理结果中的相邻至少两个进行运算,以生成对应的第三预处理结果和第四预处理结果,第三预处理结果指示对应的相邻多个比特之间的进位参数,第四预处理结果指示对应的相邻多个比特的进位传播信号的逻辑与运算结果。第n个进位模块包含的多个进位计算单元,用于基于第三预处理结果和第四预处理结果以及第n-1个进位模块的级间进位参数得到对应的比特位的进位输出。
例如,第三预处理单元对第一预处理结果和以及第二预处理结果进行运算,生成指示第4个比特位至第7个比特位之间的进位参数第四预处理单元对基于第二预处理结果和第二预处理结果进行运算,生成指示第3个比特位至第6个比特位的进位生成信号的逻辑或运算结果,即一个组内进位传播信号(也即,PAN_6_3)。对应的进位计算单元可以基于第三预处理结果GON_7_4和第四预处理结果PAN_6_3,结合第n-1个进位模块的级间进位参数得到第7个比特位的进位输出。
可选地,在本申请的一种实施例中,第n个进位模块包含的多个进位计算单元包括与第i个比特位对应的第一进位计算单元,第一进位计算单元包括第三或门、第三与门和第二或非门;
第三或门的第一输入端连接至对应的第二预处理单元的输出端,第三或门的第二输入端连接至第n-1个进位模块输出的级间进位参数,第三或门的输出端连接至第三与门的第一输入端,第三与门的第二输入端连接至对应的第一预处理单元的输出端,第三与门的输出端输出第i个比特的进位参数;
第三与门的输出端连接至第二或非门的第一输入端,第二或非门的第二输入端接收第i个比特位的进位传播信号,第二或非门的输出端连接至求和模块,以向求和模块输出第i个比特位的进位输出。
例如,如图4所示,第n-1个进位模块对应第一加数和第二加数中的0至3个比特位,第n个进位模块对应第一加数和第二加数中的4至7个比特位为例,第n个进位模块包含的预处理单元包括交替布置的第一预处理单元和第二预处理单元401~404,以及交替布置的第一进位计算单元和第二进位计算单元405~408。对于第5个比特位,对应的第一进位计算单元406中的第三或门的第一输入端连接至对应的第二预处理单元401的输出端以得到(也即,PAN_4_3),第三或门的第二输入端连接至第n-1个进位模块输出的级间进位参数(也即,CPN_3_0),第三或门的输出端连接至第三与门的第一输入端,第三与门的第二输入端连接至对应的第一预处理单元的输出端以得到(也即,GON_5_4),第三与门的输出端输出第5个比特位的进位参数(也即,CPN_5_0)。第三与门的输出端连接至第二或非门的第一输入端,第二或非门的第二输入端接收第5个比特位的进位传播信号(也即,PN_5),第二或非门的输出端输出进位输出
(也即,CN_5_0),即第5个比特位的进位输出基于第5个比特位的组内进位生成信号G5:4和组内进位传播信号P5:3以及第1个进位模块的级间进位参数得到。
此外,由于C5=G5:4+P5:3·CP3=G5:4+P5:4·C3,因此,也可以理解为,第5个比特位的进位输出基于第5个比特位的组内进位生成信号G5:4和组内进位传播信号P5:4以及第n-1个进位模块的级间进位输出得到。
又例如,如图4所示,对于第7个比特位,对应的第一进位计算单元408中的第三或门的第一输入端连接至对应的第四预处理单元410的输出端以得到(也即,PAN_6_3),第三或门的第二输入端连接至第n-1个进位模块输出的级间进位参数(也即,CPN_3_0),第三或门的输出端连接至第三与门的第一输入端,第三与门的第二输入端连接至对应的第四预处理单元409的输出端以得到第三与门的输出端输出第7个比特位的进位参数 (也即,CPN_7_0)。第三与门的输出端连接至第二或非门的第一输入端,第二或非门的第二输入端接收第7个比特位的进位传播信号(也即,PN_7),第二或非门的输出端输出进位输出(也即,CN_7_0),即第7个比特位的进位输出基于第7个比特位的组内进位生成信号G7:4和组内进位传播信号P7:3以及第1个进位模块的级间进位参数得到。
此外,由于第7个比特位为第2个进位模块对应的最高位,因此在第2个比特位的进位输出的计算中得到的进位参数(也即CP_7_0)作为第2个进位模块的级间进位输出,提供给第3个进位模块。
可选地,在本申请的一种实施例中,多个进位计算单元还包括第j个比特位对应的第二进位计算单元,第二进位计算单元包括第四或门和第二与非门。
第四或门的第一输入端连接至对应的第二预处理单元的输出端,第四或门的第二输入端连接至第n-1个进位模块输出的级间进位参数或第j-1个比特位的进位参数,第四或门的输出端连接至第二与非门的第一输入端,第二与非门的第二输入端接收第j个比特位对应的进位生成信号,第二与非门的输出端连接至求和模块,以向求和模块输出第j个比特位的进位输出。
同样地,如图4所示,对于第4个比特位,对应的第二进位计算单元405中的第四或门的第一输入端连接至对应的第二预处理单元的输出端,以得到第四或门的第二输入端连接至第n-1个进位模块输出的级间进位参数第四或门的输出端连接至第二与非门的第一输入端,第二与非门的第二输入端接收第4个比特位对应的进位生成信号(也即,GN_4),第二与非门的输出端输出 (也即,C_4),即第4个比特位的进位输出基于第4个比特位的组内进位生成信号G4和组内进位传播信号P4:3以及第n-1个进位模块的级间进位参数CP3得到。此外,由于C4=G4+P4·P3·CP3=G4+P4·C3,也可以理解为,第5个比特位的进位输出基于第5个比特位的组内进位生成信号G4和组内进位传播信号P4以及第n-1个进位模块的级间进位输出C3得到。
又例如,如图4所示,对于第6个比特位,对应的第二进位计算单元中的第四或门的第一输入端连接至对应的第二预处理单元的输出端,以得到(也即,PAN_6_5),第四或门的第二输入端连接至第5个比特位的进位参数,以得到(也即,CPN_5_0),第四或门的输出端连接至第二与非门的第一输入端,第二与非门的第二输入端接收第6个比特位对应的进位生成信号(也即,GN_6),第二与非门的输出端输出即第6个比特位的进位输出基于第6个比特位的组内进位生成信号G6和组内进位传播信号P6:5以及第5个比特位的进位参数CP5得到。
应理解,图4仅是用于说明本申请实施例提供的加法器的进位模块的一种示例,16位加法器中的各个进位模块中的预处理单元和多个进位计算单元的连接关系可以根据需要进行调整,本实施例对此不做限定。
本实施例中,由于每个进位模块中的第一预处理单元、第二预处理单元、第三预处理单元和第四预处理单元对每个进位模块对应的第一加数和第二加数中的多个比特位进行预处理,每个进位模块包含的多个进位计算单元,这使得每个进位模块在获取到前一进位模块输出的级间进位参数时,每个进位模块中的多个进位计算单元即可以直接利用预处理结果和前一进位模块输出的级间进位参数并行计算对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出。
如图5所示,第1进位模块501对应于第一加数和第二加数中的第0个比特位至第3个比特位,第2进位模块502对应于第一加数和第二加数中的第4个比特位至第7个比特位,第3进位模块503对应于第一加数和第二加数中的第8个比特位至第15个比特位。第1进位模块501、第2进位模块502和第3进位模块503中的预处理单元对对应的比特位进行预处理,第1个进位模块对应的多个比特位中的最高位(即第3个比特位)的进位参数作为级间进位参数提供至第2进位模块,以由第2进位模块中的多个进位计算单元计算第2进位模块对应的每个比特位的进位输出,同时,第2进位模块对应的多个比特位中的最高位(即第7个比特位)基于预处理结果和第1进位模块的级间进位输出得到第7比特位的级间进位参数,并提供至第3进位模块,以由第3进位模块中的多个进位计算单元计算第3进位模块对应的每个比特位的进位输出,由此基本上实现了并行计算16位二进制数据中每个比特位的进位输出,以用于求和模块504根据第一加数A和第二加数A中的每个比特位和对应的进位输出并行计算每个比特位的求和结果,由此可以缩短整个计算过程的时长,提高计算速度。
此外,通过有规律地布置第一预处理单元、第二预处理单元、第三预处理单元、第四预处理单元、第一进位计算单元和第二进位计算单元,可以在提高16位加法器的计算速度的同时,减少16位加法器的占用面积,并且使得布线较为集中,有利于整体结构化布局。
需要指出的是,图5仅是用于说明本实施实施例提供的16位加法器的进位链的一种具体示例,根据实际需要,进位模块的数量可以为2个、4个、或者更多个,并且每个进位模块对应的具体比特位可以根据需要进行设置,本实施例对此不做限定。
实施例三
基于上述实施例提供的16位加法器,本申请实施例提供一种16位加法器的实现方法。图6为本申请实施例提供的一种16位加法器的实现方法的流程图。如图6所示,该16位加法器的实现方法包括:
S601、接收第一加数和第二加数,第一加数和第二加数按照比特位从低到高的顺序划分为N个数据组,每个数据组包括第一加数和第二加数中的多个比特位,N为大于1且小于15的整数;
S602、对每个数据组包含的多个比特位进行预处理;
S603、计算每个数据组包含的多个比特位的进位输出,其中,对于N个数据组中的第n个数据组,根据第n个数据组的预处理结果和第n-1个数据组的级间进位参数进行运算,生成第n个数据组对应的每个比特位的进位输出和第n个进位模块的级间进位参数,n为大于1且小于或等于N的整数;
S604、根据第一加数和第二加数中的每个比特位、以及对应的进位输出进行运算,得到对应的求和结果。
可选地,在本申请的一种实施例中,步骤S602具体包括:
对对应的第一加数和第二加数中的每个比特位进行运算,生成每个比特位对应的进位生成信号和进位传播信号;基于对应的至少一个比特位的进位生成信号和进位传播信号分别生成每个比特位的组内进位生成信号和组内进位传播信号;
相应地,步骤S603具体包括:
根据每个数据组对应的比特位的组内进位生成信号和组内进位传播信号以及前一数据组的级间进位参数进行运算,生成每个数据组对应的比特位的进位输出。
可选地,在本申请的一种实施例中,计算每个数据组包含的多个比特位的进位输出,还包括:将每个数据组对应的多个比特位中的最高位的进位输出的计算中得到的进位参数,作为所述数据组的级间进位参数,其中,最高位的进位输出基于最高位的进位参数与最高位的进位传播信号进行运算得到。
可选地,在本申请的一种实施例中,每个数据组对应的第一加数和第二加数中的比特位的数量等于或大于前一数据组对应的第一加数和第二加数中的比特位的数量。
可选地,在本申请的一种实施例中,N等于3,第1个数据组对应第一加数和第二加数的第0比特位至第3比特位,第2个数据组对应第一加数和第二加数的第4比特位至第7比特位,第3个数据组对应第一加数和第二加数的第8比特位至15比特位。
本申请实施例提供的16位加法器的实现方法,用于实现前述装置实施例中的16位加法器,并具有相应的装置实施例的有益效果,此处不再赘述。
实施例四
本申请实施例提供了一种运算电路,该运算电路包括根据前述实施例一和二中任一项提供的16位加法器。其原理与效果类似,此处不再赘述。
实施例五
本申请实施例提供了一种芯片,该芯片包括根据前述实施例四提供的运算电路。其原理与效果类似,此处不再赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种向量计算装置及方法