本发明涉及固定系数串行乘法及其电路的方法,特别(但并非唯一)涉及除三的二进制处理电路。 在数字信号处理系统(DSP)中利用的一种通用标准部件是乘法器,就是一个二进制数据字乘以另一个二进制数据字或固定系数的数字电路。
特别重要的是专门设计的乘以固定系数 1/3 的数字电路,这些电路应用的可能范围包括:
(1)需要使用系数为 1/3 的数字滤波器;
(2)从以2为基数(二进制)的数字表示法变换成以3为基数(三进制)数字表示法的系统。
在先有技术中,通常实际用的是包括许多二进制全加器的阵列,以实现系数的乘法。概括地回顾这一技术,请读者参考论文“数字信号处理的理论和应用”,L.R.拉宾纳(Rabiner)和B·戈尔德(Gold),Prentice-Hall出版,1975年,514~524页。作为这种技术的典型,在N位数据字的处理中,对固定系数并行乘法,使用一个(N/2)(N-1)的加法器阵列,对固定系数串行乘法,则使用一个N/2加法器和N位锁存器阵列。在大规模集成电路(LSI)的设计中,这种加法器占据了芯片的基本空间,而且需要这样多的加法器显然也是个缺点。
本发明打算作为先有技术的一种简单替换物。在本发明的基本实现过程中,仅需要一个全加器。
根据本发明的一个方面,提供一种固定系数串行乘法,其中,把第一个已作数字编码的字的各位(即被乘数),顺序地加到全加器的一个输入端,产生顺序位的输出信号,将此输出信号逐位地延时周期间隔的整数倍,倒相后,加到全加器的另一个输入端,这样,在全加器的输出端,产生第二个已数字编码的字即乘法积项。
在上述方法中,固定系数取决于每位输出信号所延时的周期间隔数。因此,如引入一个周期间隔延时,就能得到固定系数“三分之一”(即除三)的乘法。按照相同方法,固定系数1/2(n+1)对应于延时n个周期间隔。当被乘数和乘法器系数是整数关系时,所产生的乘积项是数字编码的整数。当这两项不是那种关系时,所产生的字是数字编码的组合,包括有限字长的整数部分和无限字长的非整数部分(相似于循环小数)之和。所以,在上述给出的示例,除三的乘法其乘积项包括整数部分和双值部分。虽然能够根据需要来处理这样的合成乘积项,以提供舍位或舍入,但是,优选的方法是修改被乘数,使之给出简单的整数结果。
由此,根据本发明的另一方面,提供了固定系数串行乘法的一种优选方法。其中,按照上述方法,首先处理被乘数,以便决定一个依赖于被乘数校正项的值。按此决定,把被乘数校正并加到全加器上,以便在加法器的输出端,产生整数字乘积。
虽然上述优选方法可以在被乘数用于加法器之前,通过校正以修改被乘数而实现,但是,把被乘数和校正项加到加法器各个分别的输入端,借以同时完成被乘数的校正和系数的乘法,这是既方便又优越的。
优选的方法可以这样来完成,即利用全加器和反馈网络来产生所需要的校正项,并通过利用全加器和反馈网络来完成被乘数的校正和系数的乘法。为了处理被乘数,更为方便的是在两个相继的步骤中,利用一个共用的全加器和反馈网络来完成此方法中校正项的产生、校正-乘法各步骤。
根据本发明的又一方面,提供数字电路来完成固定系数的串行乘法,该电路包括:一个全加器;连接到加法器输出及其一个输入之间的延时和倒相反馈网络;连接到加法器和网络上,用来控制该加法器和网络的串行运算的第一控制装置。
在上述电路中,全加器包括一个进位位锁存器,反馈网络包括一个或多个延时位存储单元。由这种电路运算所产生的乘积项不仅依赖于被乘数的值,还依赖于锁存器和(一个或多个)延时位存储单元的起始状态。从下面可以看出,后一种依赖性可以用来提供中间被乘数的校正,以抑制不完全小数乘积项的产生。在上述电路的改进形式中,为了决定锁存器和(一个或多个)存储单元的起始状态,并进行所需要的被乘数的校正,提供了对被乘数敏感的控制装置。
象下面更详细讨论的那样,所提供的除三数字电路包括:一个包括进位位锁存器的全加器;连接到加法器输出及其第一输入端之间的反馈网络,该反馈网络包括一个单位周期延时的存储单元和一个倒相器;连接到加法器第二输入端的被乘数转发器(例如,移位寄存器);在转发器和加法器之间所插入的异或门;用以控制转发器、门、锁存器和存储单元的控制逻辑装置。
上面所公开的除三电路适于处理正、负(2的补码)奇数字长的二进制编码的被乘数。这种电路的第一次运算在进位锁存器和延时存储单元中形成溢出存储。在第二次运算起始时,它们处于提供被乘数校正所需要的状态。
当要求采取专用电路,并须使电路器件保持最少时,上述除三电路是具有优点的。应该注意,要求电路的时钟速率至少是乘法执行速率的2*N倍。因此,这种电路可能用于LSI器件的设计,其中半导体(例如,硅)的面积必须保持为最小,但是,可以使用若干兆赫的系统时钟速率,以利用当前CMOS(互补的金属氧化物半导体晶体管)技术快速运算的优点。
按照这种技术要求的附图包括:
图1示出根据本发明原理的乘法器基本组成部分的电路框图;
图2示出上图乘法器整个电路的电路框图;
图3示出用作使上图乘法器工作的时钟和控制信号波形(a)~(d)的定时图;
图4示出上面图2所示乘法器的输入端配置改进的电路框图;
图5示出根据图2所示乘法器的二进制到三进制码变换器全部电路的框图;
图6示出使图5中变换器工作的时钟和控制信号波形(a)~(f)的定时图。
下面通过一个实例并参考附图来描述本发明的实施方案。
图1示出除三数字电路1的基本组成部分。电路1包括一个靠进位位锁存器5完成的二进制全加器3,还有一个包括单位间隔延时单元9和倒相器11的反馈网络7。反馈网络7连接在加法器3的输出端8和此加法器3的一个输入端B之间。被乘数串行地加到此加法器3的另一个输入端A。
执行除三所需要的系统传递函数可以写成Y=X/3,其中X为二进制输入字,Y为所需要的输出。它还可以写成
3*Y=X
即 Y=X-(2*Y)
这个方程式通过Y本身来定义输出Y,通常这在因果系统中是不可能实现的。可是,比较严格的验证表明2*Y值正是所需要的,在串行系统中,这相当于延时一个时钟周期,就是说,把系统的输出延时一个时钟周期并从输入中减去。
(通过一般化,这里记为除(2M+1)处理,则传递函数可以写成下列形式:
Y=X-(2M*Y)
这可以通过引入延时M个时钟周期来实现)。
很不幸的是这种基本系统具有一个主要缺点,就是:如果被乘数是可被3除尽的整数,则它只产生有限的乘积项。对于所有其它整数,产生一个数,它是所需要的结果与余数除以三后的双值表示之和。双值数系统起因于以下列形式来表示二进制小数的能力:
……010101010101(基数2)=- 1/3
……101010101010(基数2)=- 2/3
有可能修改电路1而使其不产生双值数,并能适应正的和负的二进制输入数。第一个修改是限制电路1,使其仅采用奇数(3、5、7、9等)字长的输入,而输出二进制数据字的字长也是奇数。下一个修改是使被处理的输入字通过系统两次。第一次运算产生不需要的双值表示的结果,但是需要这样地来保留进位位和延时位存储单元,即如果把它们用为下一次运算的起始条件,就能使输出是所需要的结果。最后的修改是倒相符号位或最高有效位,以使系统能够采用正、负二进制数来运算。
图2示出实现除三功能的整个电路,它包括下列电路器件:存储输入二进制字的N位移位寄存器13;倒相输入字最高有效位的异或门15;二进制全加器3;进位位锁存器5,它是二进制加法器3的一个组成部分;一位延时单元9;对延时单元9输出倒相的倒相器11;为驱动电路提供信号正确顺序的控制逻辑17。
驱动电路所需要的运算顺序如下(由控制逻辑17所产生的有关波形示于图3)。
a)把要除以三的数、即被乘数装入移位寄存器13。这可以通过把字并行装入或者从移位寄存器13的尾端把字移入来完成。如果字是移入的,即可同时执行下述e)的运算。
b)把进位位锁存器5和延时单元9清零。
c)把N-1个时钟周期加到系统中,在每一时钟周期内,把移位寄存器13的输出直接通过异或门15,加到全加器3的进位位;在该全加器上还加有从延时单元9来的和把延时单元9中存储的结果进行倒相后的信号;以及存储在进位位锁存器5中的进位信号。在此过程中,把移位寄存器13的输出反馈到输入,这样,二进制字能够再次使用。
d)在最后的时钟周期内,除掉从移位寄存器13到串行加法器3的输入被异或门15倒相以外,其运算完全如c)所述。
e)存储在进位位锁存器5和延时单元9中的数据保持不变,而且把另外的N个时钟周期加到系统中。电路运算如c)所述,除掉不需要重新存储输入二进制字以外(这是因为输入字已从移位寄存器13移出,而且符号位也没有按d)节所述加以倒相)。从全加器3的输出端,可以得到串行输出。
下表示出这种系统的输入及相应的输出,并表明当系统完成运算d)之后,进位和延时位的数值。这表明输出是舍位的,而不是舍入的。
表1
输入到电路 从电路输出 存储状态
(被乘数) (乘积) 进位 延时
二进制(十进制) 二进制(十进制) (在最初N个周期之后)
10110(-10) 11100(-4) 0 1
10111(-9) 11101(-3) 1 0
11000(-8) 11101(-3) 0 0
11001(-7) 11101(-3) 0 1
11010(-6) 11110(-2) 1 0
11011(-5) 11110(-2) 0 0
11100(-4) 11110(-2) 0 1
11101(-3) 11111(-1) 1 0
11110(-2) 11111(-1) 0 0
11111(-1) 11111(-1) 0 1
00000(+0) 00000(+0) 1 0
00001(+1) 00000(+0) 1 1
00010(+2) 00000(+0) 0 1
00011(+3) 00001(+1) 1 0
00100(+4) 00001(+1) 1 1
00101(+5) 00001(+1) 0 1
表1(续)
输入到电路 从电路输出 存储状态
(被乘数) (乘积) 进位 延时
二进制(十进制) 二进制(十进值) (在最初N个周期之后)
00110(+6) 00010(+2) 1 0
00111(+7) 00010(+2) 1 1
01000(+8) 00010(+2) 0 1
01001(+9) 00011(+3) 1 0
01010(+10) 00011(+3) 1 1
当要求用舍入校正来代替舍位时,可以在寄存器13和异或门15之间插入附加的被乘数校正辅助电路。校正辅助电路19示于图4,包括异或门21,与门23和单位间隔延时单元25。在这种电路中,移位寄存器13输出的信号并联馈给异或门21和与门23。与门23的输出连接到延时单元25,25的输出端又并联连接到与门23和异或门21的另外输入端。异或门21的输出连接到乘法器电路的异或门15。延时单元25的起始状态也由控制逻辑单元17来控制,在每一通过的起始时,即N个时钟脉冲的每一周期的起始,置于逻辑“1”。
上述除三电路的一种应用(即二进制到三进制码的变换器)示于图5。在这种变换器中,利用两个加法器反馈电路1和1′。每一电路都包括带进位锁存器5的全加器3以及包括单位间隔一位延时单元9和倒相器11的反馈网络7。其中的一个电路(电路1)直接连接到移位寄存器13的输出,用于被乘数校正和乘法。另一电路(电路1′)经过双掷开关19和异或门15,连接到寄存器的输出。电路1′用于产生校正项(余数)。把进位锁存器5和存储单元9分别经过两个双掷开关21和23相互联接起来,以允许校正项电路1′中在锁存器5、单元9之间进行位传递;以及乘法器电路1中在锁存器5、单元9之间进行位传递。在校正项电路1′中,包括另外两个双掷开关25和27,它们分别处在锁存器5和单元9之前。它们用来对锁存器5和延时单元9清零,也作为连接到系统接地之用。由于利用两个专用电路1和1′,顺序的被乘数处理,即顺序的除法可以同时执行。寄存器13和开关19到27的运算由中央控制逻辑单元17′来控制。由此单元17′所产生的控制信号示于图6。在N个时钟周期的每一序列结束时,利用编码辅助电路29来检查电路1′中进位锁存器5和延时单元9的状态。这个辅助电路包括异或门31、与门33和倒相器35。锁存器5和延时单元9直接连接到异或门31的输入。锁存器5也连接到与门33。延时单元9经过倒相器35连接到与门33。由异或门31和与门33分别提供三进制“1”和三进制“2”的输出。
设计上述变换电路,把二进制数变换成三进制数,其中每一三进制位可以是0,1或2中的一个值。可以利用这一电路来产生三进制数,其中每一三进制位可以是-1,0,+1中的一个值。这可以利用对图4所示的输入作修改,和作少量别的次要更替来实现。