布斯-华莱士树型乘法器 【技术领域】
本发明属于电子元件技术领域,涉及一种乘法器,可用于各类微处理器、数字信号处理器(DSP)中。
背景技术
乘法器作为基本的运算单元应用于各类微处理器、数字信号处理器(DSP)及专用集成电路(ASIC)中。目前的乘法器已经具有了较高的性能,但由于现代信息处理中安全保密应用重要性的不断提高,对乘法器性能也在不断提出越来越高的要求。
早期乘法器大多采用移位加算法及阵列乘法器算法。这两种算法从实现方法来看,乘数的每一位都会产生部分积,且只产生1或0倍的部分积形式。因而,当乘法操作数位宽比较宽时,运算量就非常大。实际上当乘数的某一位为0时,并不会产生具有实际意义的部分积,更不需要进行累加运算。在实际运算的过程中,部分积的产生和部分积累加次数是由乘数中值为“1”的个数决定。布斯编码算法是针对补码运算的一种部分积产生算法,它将乘数重新编码以减少乘数中值为“1”的个数,从而减少了部分积的数目和部分积累加的次数,有效的提高了乘法器运算的效率。在布斯编码算法中,被广泛使用的一种布斯编码算法是改进的布斯编码算法,即二阶布斯编码算法。
改进的布斯编码算法可应用到有符号和无符号的乘法数,它基本上可以将部分积的数目缩减至非布斯编码算法的一半。当乘法操作数N为奇数时,部分积的数目为(N+1)/2,当N为偶数时,部分积的数目为(N/2)+1。它极大程度的减少了部分积压缩模块所占用的面积和产生的延时,提高了乘法器单元的性能并减少了面积。
在部分积压缩阶段被广泛采用的一种压缩技术是华莱士树压缩算法,它将部分积按列分组,每一列对应一组加法器,各列同时相加,前一列进位传至后一列,生成新的部分积。采用同样方法化简新的部分积,直至剩下最后两行部分积,再采用一种快速加法器相加得积。这种部分积压缩方法通过尽可能的对操作数进行并行运算,以此来达到提高乘法运算速度的目的。所以,布斯编码算法和华莱士压缩树相结合的混合型算法经常被应用于高速乘法器结构中。
在采用这种混合型算法实现乘法器时,改进的布斯算法将乘数按每一组三位进行划分。三位分别是低位、本位、高位,其中低位来自于低一组中的最高位。从而产生{±2,±1,0}倍数的部分积,之后再用华莱士树将这些部分积相加总。
负部分积的实现分为两个阶段。第一阶段,利用布斯编码算法产生正部分积的非,并输出到华莱士压缩树中。第二阶段,在这一行部分积非的最低有效位加1,这个1放在下一行部分积与本部分积最低有效位相对齐的地方,如图10所示。
由于改进布斯编码算法所产生的部分积有正负之分,压缩时华莱士树结构就会产生很大差异。图6和图8分别为进行了部分积符号扩展的正部分积阵列结构和负部分积阵列结构,图7和图9分别为正部分积压缩器阵列结构和负部分积压缩器阵列结构。其中负部分积阵列结构会因为最后一行部分积符号位而导致多余一行部分的影响。在对这一行部分积进行压缩时就需要额外的压缩器,这一行压缩器,不但增加了压缩级数使得乘法器延时较大,而且在版图实现时这种华莱士树结构也比较复杂。
随着人们对高性能乘法器的追求,改进的布斯编码算法由于其产生的部分积数目仍然比较多,不在适合于更高性能的乘法器。产生的部分积数目越少,乘法迭代的次数就越少,从而乘法运算的速度就越快。三阶布斯编码算法产生的部分积是非布斯编码算法的三分之一,所以其越来越多的应用于高性能乘法器中。
三阶布斯编码算法将乘数分为四位一组,其中三位来自本组,最低位来自相邻低位组中的最高位,如图13所示。三阶布斯编码算法产生{±4,±3,±2,±1,0}倍数的部分积。±3倍的部分积,常被人们称为“难倍数”部分积,实现时需要在部分积编码模块中增设一个“难倍数”部分积实现电路,图11所示。但这种三阶布斯编码算法与改进的布斯编码算法一样,均会产生负部分积,同样也会导致乘法器延时较大,电路和版图实现复杂的问题。
【发明内容】
本发明的目的在于克服上述已有技术的不足,提出一种布斯-华莱士树型乘法器,通过对部分积实现电路地改进,避免因负部分积符号而需要额外部分积压缩器的影响,减少部分积压缩级数,提高乘法器速度,同时使得部分积压缩阵列结构更加规整,易于版图实现。
为实现上述目的,本发明的布斯-华莱士树型乘法器包括:部分积产生模块、部分积压缩模块和最后两行部分积相加总的加法器模块,其中部分积产生模块中改进的部分积产生单元包括:
布斯编码电路,用于对乘数重新编码以产生部分积的倍数控制信号和符号控制信号。部分积倍数控制信号输出到部分积中间态产生电路,部分积符号控制信号输出到部分积结果产生电路中。
部分积中间态产生电路,根据布斯编码所产生的控制信号产生相应倍数的部分积中间态,并将部分积中间态输出到部分积结果产生电路中。
部分积结果产生电路,依据布斯编码所产生的控制信号及部分积中间态电路的产生结果产生最终的正、负部分积。
所述的部分积结果产生电路由负部分积运算电路和二选一选择器构成,该负部分积运算电路用于对部分积中间态结果进行运算,产生负部分积输出到二选一选择器中;根据布斯编码电路所产生的部分积符号控制信号,该二选一选择器对负部分积运算电路结果和部分积中间态产生电路结果进行选择,产生相应倍数及类型的部分积,并输出到部分积压缩模块中。
所述的部分积压缩电路由六级压缩电路组成的阵列结构,该阵列结构形状为规则的直角梯形结构。
本发明通过在部分积产生电路中增设负部分积运算电路,改变了最后一行部分积的类型,能够有效减少部分积压缩阵列级数,并使其结构规整化易于版图实现。同时有效提升了乘法器的运行速度,在不增加电路面积的情况下,将16位乘法器的运行速度提升13%。
【附图说明】
图1为本发明乘法器的整体结构图;
图2为本发明中的最后一个部分积产生电路图;
图3为本发明中的部分积阵列图;
图4为本发明中的部分积压缩器阵列图;
图5为传统乘法器的整体结构图;
图6为传统乘法器中正部分积阵列图;
图7为传统乘法器中正部分积压缩器阵列图;
图8为传统乘法器中负部分积阵列图;
图9为传统乘法器中负部分积压缩器阵列图;
图10为传统乘法器中负部分积实现图;
图11为传统乘法器中部分积产生电路图;
图12为传统乘法器中部分积压缩器阵列图;
图13为三阶布斯编码图。
具体的实现方式
参照图5,目前公知的三阶布斯-华莱士树型乘法器基本结构主要由部分积的产生模块、部分积压缩模块及最终加法器模块构成,其中:
部分积产生模块,通过对乘数重新编码产生相应倍数的部分积中间态及部分积符号,并将所产生的部分积中间态及部分积符号输出到部分积压缩模块中。
部分积压缩阵列模块,依据部分积压缩器阵列结构,对所有部分积中间态和部分积符号同时进行压缩处理,直至产生最后两行部分积,并将其输出到最终加法器模块中。
最终加法器模块,将部分积压缩阵列所产生的最后两行部分积进行相加总得到乘积结果。
所述的部分积产生模块,由6个部分积产生单元021构成,其结构如图11所示,它包括:布斯编码电路、一般倍数部分积实现电路和“难倍数”部分积实现电路。该布斯编码电路用于对乘数重新编码,以产生部分积的倍数控制信号和符号控制信号;该一般倍数部分积实现电路主要实现{±4,±2,±1}倍数的部分积中间态;该“难倍数”部分积实现电路主要实现±3倍数的部分积中间态结果。
布斯编码所产生的部分积倍数控制信号输出到一般倍数部分积实现电路和“难倍数”部分积实现电路,而部分积符号则输出到部分积压缩阵列中。一般倍数实现电路和“难倍数”实现电路将其所产生的部分积中间态结果输出到部分积压缩模块中。
传统乘法器中为了简化电路结构,将负部分积的实现分成如图10所示的两个阶段:第一个阶段在部分积产生电路中,产生相应倍数的部分积中间态,并输出到部分积压缩阵列中。第二阶段在部分积压缩阶段,通过在部分积中间态末尾加1产生负部分积。由于部分积产生电路会产生正、负部分积,而正、负部分积阵列结构不同,所以其压缩器阵列结构也将会产生差异。当所有部分积均为正时,部分积符号全为0,所以部分积阵列最后一行不会出现由符号位构成的额外一行部分积,其部分积阵列结构如图6所示,相应的部分积压缩器阵列结构如图7所示。当所有部分积均为负时,部分积符号全为1,其部分积阵列结构最后一行将会出现由符号位组成的部分积,其结构如图8,而部分积压缩器阵列如图9所示。
由于布斯-华莱士树型乘法器同时需要对正、负部分积进行处理,所以传统的布斯-华莱士树型乘法器结构必须同时兼顾正、负部分积压缩器阵列结构。而负部分积压缩器阵列结构由于需要对符号位压缩而需要额外部分积压缩器,会导致部分积压缩器阵列结构不规整及压缩级数较大的问题,所以传统布斯-华莱士树型乘法器中部分积压缩器阵列结构如图12所示,该结构也存在部分积压缩器阵列结构不规整及压缩级数较大的缺点。
为了减少传统布斯-华莱士树型乘法器中延时较大,部分积压缩器阵列结构复杂的问题,本发明通过在最后一行部分积产生电路中增设负部分积运算电路,降低了传统布斯-华莱士树型乘法器延时,解决了部分积压缩器阵列结构复杂,版图实现难的问题。
参照图1,本发明中的布斯-华莱士树型乘法器结构包括:部分积产生模块、部分积压缩模块和最终加法器模块。其中:
部分积产生模块,通过对乘数重新编码以产生相应倍数的部分积中间态、部分积符号和部分积结果。它由5个部分积产生单元021和1个改进的部分积产生单元022构成。部分积产生单元021的电路结构与传统乘法器中部分积产生单元021电路相同。该改进的部分积产生单元022电路结构如图2所示。它包括:布斯编码电路、部分积中间态产生电路和部分积结果产生电路。布斯编码电路用于对乘数重新编码以产生部分积的倍数控制信号和符号控制信号;部分积中间态产生电路根据布斯编码所产生的控制信号产生相应倍数的部分积中间态;部分积结果产生电路,用于产生部分积结果。其中部分积结果产生电路由负部分积运算电路和二选一选择器构成,它的工作原理是:负部分积运算电路对部分积中间态进行运算,产生负部分积输出到二选一选择器中,二选一选择器根据布斯编码电路所产生的部分积符号控制信号,对负部分积运算电路结果和部分积中间态产生电路结果进行选择,产生相应倍数及类型的部分积。部分积产生单元022的工作原理是:布斯编码电路产生的部分积倍数控制信号输出到部分积中间态产生电路中,部分积符号控制信号输出到部分积结果产生电路中。部分积中间态产生电路产生的部分积中间态结果输出到部分积结果产生电路中。部分积结果产生电路将所产生的正、负部分积输出到部分积压缩模块中。
部分积压缩模块,依据部分积压缩器阵列结构,对所有的部分积进行压缩处理,直至产生最后两行部分积,并将最后两行部分积输出到最终加法器模块中。本发明乘法器中,由于改变了部分积产生模块中最后一个部分积产生单元所产生的部分积类型,使得最后一行部分积不会将符号位带入部分积阵列中,所以与传统布斯-华莱士树型乘法器的部分积阵列相比,其部分积阵列能够减少一行部分积,从而减少部分积压缩级数,规整化了部分积阵列结构,如图3所示。在使用图3所示部分积阵列进行压缩时,压缩器阵列结构将由传统的部分积压缩器阵列结构图12改变成本发明中的图4所示。图4所示的部分积压缩器阵列与图12所示的传统的部分积压缩器阵列相比,减少了部分积压缩器阵列中压缩阵列的级数及压缩器的数量,从而简化了电路实现时的级数及电路连线的复杂度。
最终加法器模块,将部分积压缩阵列所产生的最后两行部分积进行相加总得到乘积结果。
本发明与现有技术相比,其优势在于降低了乘法器电路结构和版图实现的复杂度,同时在不增加面积的情况下,能够提升乘法器的运行速度。