CN1178588A - 使用移位装置的求幂电路及其使用方法 - Google Patents
使用移位装置的求幂电路及其使用方法 Download PDFInfo
- Publication number
- CN1178588A CN1178588A CN 96192478 CN96192478A CN1178588A CN 1178588 A CN1178588 A CN 1178588A CN 96192478 CN96192478 CN 96192478 CN 96192478 A CN96192478 A CN 96192478A CN 1178588 A CN1178588 A CN 1178588A
- Authority
- CN
- China
- Prior art keywords
- value
- circuit
- output
- exponential
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供了一种计算指数信号xg的电路和方法。这种电路包括将输入信号x变换成表示输入信号x的对数的二进制字的对数变换器(4)。第一移位寄存器(8)将二进制字按位移位以产生第一中间值;而第二移位寄存器(28)将二进制字按位移位以产生第二中间值。这些移位寄存器可用多路复用器实现。移位操作相当于将中间值乘以一个等于2的幂的因子。将第2中间值或者加上第一中间值或者减去第一中间值以产生一个合并值。反对数变换器(34)对合并值进行反对数变换,从而得出所要求的指数信号。
Description
本发明与下列转让给本发明的同一受让人的发明有关:
(1)“利用对数函数的神经网络及其使用方法”,系列号08/176,601,1994年1月3日提出申请。
(2)“利用二阶项的对数/反对数变换器及其使用方法”,系列号08/382,467,1995年1月31日提出申请。
(3)“利用对数变换的计算机处理器及其使用方法”,系列号08/403,158,1995年3月13日提出申请。
上列标明的相关发明的内容此处列为本发明的参考。
本发明一般涉及电子电路技术领域,具体地说,涉及根据输入信号产生指数信号的电路。
在数字计算机中计算指数值xg很快就成为一个共同性的问题。许多计算机应用程序,例如非线性控制、数字信号处理、仿真、加密等,都要使用指数值。然而,一些计算指数值的常规技术存在着某些缺点。
计算指数值通常所采用的方法是配置一个二进制乘法器电路,作为计算机的部件。实际上,目前许多微处理器在其核心逻辑电路中都有一个或几个乘法器。通常,乘法器每次能将两个操作数相乘。为了计算指数值xg,输入值x要加到乘法器的两个输入端。从而乘法器产生一个其值为x2的输出。如果希望得到高阶的指数值,例如xg,就需将乘法器的输出反馈到乘法器的一个或两个输入端,这种相乘-反馈循环反复执行直到计算出所要求的指数值为止。
这种方法有几个缺点。首先,常规的二进制乘法器电路在集成电路中要占用比较大的空间。而且,这些电路的速度通常不快,在有些情况下完成单次乘法需要很多个时钟周期,与其他算术运算电路(如加法器)相比,通常功耗也大得多。这种方法的另一个局限是,为了计算其幂数大于2的指数值,需要多个乘法周期。例如,计算指数值x16,用单个乘法电路就至少需要4个乘法周期。因此,象这样的计算会大大降低计算机的吞吐量。
另一种计算指数值的已知技术是利用一个根据模拟输入值确定指数值的模拟电路。通常得出的指数值也是模拟信号,因此必需用一个模数变换器变换成二进制字后再供计算机使用。虽然模拟求幂电路计算一个指数值所需的时间通常要少于上述二进制字循环相乘技术所需的时间,但是模拟求幂电路一般较贵,也不容易与数字计算机集成在一起。
因此,问题是需要开发一种用来计算指数值的器件,这种器件与上述这些常规技术相比计算指数值的时间大大减少,占用集成电路较小的空间和功率,而且可以更为经济地与数字计算机集成在一起。
本发明的实质和范围在所附权利要求书中具体列出。然而,通过以下结合附图所作的详细说明,可更加清楚地看到本发明的其他一些特点,对本发明也可有更深入的理解。在这些附图中:
图1示出了作为本发明一个实施例的求幂电路的方框图;
图2示出了作为本发明另一个实施例的求幂电路的方框图;
图3为一个示出能用于图2所示求幂电路的一些指数码实例的表;
图4为另一个示出能用于图2所示求幂电路的一些指数码实例的第2个表;
图5示出了作为本发明又一个实施例的求幂电路的方框图;
图6示出了作为本发明一个优选实施例的求幂电路的方框图;
图7为一个示出能用于图6所示求幂电路的一些指数码实例的表;
图8示出了具有多个运算组件的求幂电路的方框图;
图9示出了具有一个遵从本发明实施例的求幂电路的计算机***的方框图;
图10示出了根据输入信号产生指数信号的方法的流程图;以及
图11示出了产生一个包括根据一系列输入产生的多个指数信号的项的方法的流程图。
本发明的一个优点是提供一种具有高数据吞吐率的求幂电路。本发明的另一个优点是提供一种占用集成电路的小得多的空间和功率的求幂电路。本发明的又一个优点是提供一种成本低廉且容易与微处理器内核或其他数字逻辑电路集成在同一个芯片上的求幂电路。
概括地说,本发明提供了根据输入信号计算出指数信号的电路。这是通过首先用一个对数变换器根据输入信号产生相应的二进制对数值来进行的。然后,移位寄存器将这二进制对数值移位以产生一个中间值。移位操作相当于将二进制对数值乘以一个为2的幂的因子。再将这中间值与一个所存储的值合并在一起后加以反对数变换,从而产生所要求的指数信号。
图1示出了作为本发明一个实施例的求幂电路40的方框图。求幂电路40包括对数电路4、运算组件9和反对数电路34。运算组件9包括移位寄存器8、p/I单元12、加法电路24、寄存器28和控制单元16。对数电路4接收加在它的输入端2上的输入信号,将每个输入信号变换成一个多位的二进制对数值6。接收到一个二进制对数值6后,移位寄存器8就对这个输入进行算术移位以产生一个中间值10。移位的位数由控制单元16所产生的移位信号18确定。接收到中间值10后,P/I单元12或者直接将中间值10送至总线14,或者将中间值10倒相后的倒相值送至总线14,P/I单元12的功能由控制单元16所提供的控制信号20确定。加法电路24将通过反馈通路30接收的一个存储值、总线14上提供的值、进位位22相加以产生一个合并值,加到输出端26。合并值存入寄存器28。寄存器28将合并值加到总线32上,送至反对数电路34,以及作为存储值加到反馈通路30上。反对数电路34通过对合并值求反对数得出指数信号,加到输出端36。
对数电路4可以是任何一种能将输入信号变换为一个表示输入信号的对数的二进制值的装置。例如,对数电路4可以由一个具有一个其传递函数呈对数的放大器的模拟电路和一个将这个放大器的输出变换为一个二进制字的模数变换器组成。在这个例子中,输入信号可以是能在放大器的动态范围内连续改变的电流或电压。然而,在一个实施例中,对数电路4包括一个如在前面标明的相关发明(2)中所公开的对数变换器。这种对数变换器接收以IEEE标准的32位浮点值表示的输入信号,通过执行二阶多项式运算产生具有一个8位的整数部和一个23位的分数部的二进制对数值。每个输入信号的符号位直接通过(未示出),送至反对数电路34,重新与相应的,也表示成一个IEEE标准的32位浮点值的指数信号合在一起。
反对数电路34也可以是任何一种能将作为输入量的一个二进制字变换成这个二进制字的反对数作为输出的装置。然而,在一个优选实施例中,反对数电路34包括一个如在前面标明的相关发明(2)中所公开的反对数变换器。这种反对数变换器接收合并值的分数部和整数部,从而产生以IEEE标准的32位浮点值表示的指数信号。这种反对数变换器包括一个将一个浮点指数信号与它的符号位重新合在一起的装置(未示出)。
在一个优选实施例中,对数电路4、运算组件9和反对数电路34都是在单个集成电路上实现的。然而,一般熟悉本技术领域的人员可以理解,无论是对数电路4还是反对数电路34都可以用其他许多方式来实现,而并不偏离本发明的实质。例如,任何电路都可以由在诸如微处理器之类的通用处理器上运行的软件来实现,也可以由标准的模拟电路来实现。此外,熟悉本技术领域的人员可以理解,可以采用任何一种数制来执行对数和反对数变换。
移位寄存器8用来对所接收的值进行逐位移位。移位操作相当于将二进制对数值6乘以或除以一个等于2的幂的因子。移位结果是中间值10。虽然本发明的一个实施例并没有对一个值可以移位的位数加任何限制,但后一个优选实施例规定移位寄存器8可以将一个二进制对数值移0至3位。每个二进制对数值6移位的位数由控制单元16所提供的移位信号18确定。通过将二进制对数值6的各位朝值的最高有效位(MSB)方向移位(通常是左移),移位寄存器8产生乘以一个等于2的幂的中间值10。另一方面,通过将二进制对数值6的各位朝值的最低有效位(LSB)方向移位(通常是右移),移位寄存器8产生除以一个等于2的幂的中间值10。因此,在移位寄存器8将一个值左移时,求幂电路40产生一个具有整数指数的指数信号,如x2、x4等,其中x表示输入信号;而在右移时,产生一个具有分数指数的指数信号,如x1/2、x1/4等,其中x表示输入信号。
P/I单元12根据控制单元16提供的控制信号20对中间值10求反。通过使P/I单元12对中间值10求反再为这个求反的值提供一个相应的进位位22,控制单元16就将中间值10变换成它的2的补码形式,从而使得加法电路24可以将存储值减去在总线14上得到的经变换的中间值。
加法电路24和寄存器28配合,使几个相继的中间值可以累加在一起。此外,寄存器28可以预装一个值,诸如系数值。加法电路24将通过总线14和反馈通路30接收到的值相加,产生合并值,存入寄存器28。合并值就是加在加法电路24的两个输入端上的两个值的和。通过反馈通路30提供的存储值为寄存器28的内容。
控制单元16通常存有多个指数码(未示出),其中每个指数码与一个输入信号相应。求幂电路40接收到每个输入信号时,控制单元16就对一个相应的指数码进行解码,产生与输入信号相应的移位信号18、控制信号20和进位位22。然而,在本发明的另一种方案中,指数码由一个产生指数码的装置提供,这个装置与控制单元16连接,但还是与求幂电路40不在一起的,诸如存储指数码用的独立存储器或主处理器(如与该电路连接的微处理器)之类。
在操作中,求幂电路40能为单个输入信号计算出相应的指数信号,或者从一列输入信号中计算出一个包括多个相应指数信号的项。无论是哪一种情况,从单个输入信号计算相应指数信号可能需要一个或几个加法周期。这是通过配置一个附加存储装置(未示出)来实现的。这个存储装置存储着这些加法周期执行期间所需的二进制对数值6,并在每个加法周期向P/I单元12提供所存储的二进制对数值。这样的存储装置可以加在对数电路4内,也可以加在移位寄存器8内。
求幂电路40的工作情况可以以计算x7这样的指数信号(x为输入信号)为例进行说明。计算x7需要两个加法周期。在每个周期期间,移位寄存器8提供一个不同的中间值10。
在第一个加法周期期间,输入信号x由对数电路4变换成二进制对数值6后加到附加存储装置和移位寄存器8上。控制单元16产生一个移位信号18,使移位寄存器8将二进制对数值6左移三位,从而产生了一个为二进制对数值6的8倍的中间值10。控制单元16还产生一个控制信号20,使这个中间值10不加任何处理通过P/I单元12经总线14加到加法电路24上。于是加法电路24将中间值10与通过反馈通路30提供的存储在寄存器28内的值相加。最初,这个存储值可以设置为零或某一系数值。然后,寄存器28的内容就更新为在加法电路24的输出端26上提供的合并值。
在第二个加法周期期间,控制单元16产生进位位22和移位信号18,使移位寄存器8让存储的二进制对数值直接通过而不加移位。控制单元16还产生控制信号20以使P/I单元12对中间值10求反。由于这求反操作,加法电路24实际上是从通过反馈通路30提供的存储值中减去这个中间值10以得到一个最终的合并值,它等于二进制对数值6的7倍。这个最终合并值存入寄存器28,通过总线32加到反对数电路34上。反对数电路34通过对存储值进行反对数变换,得出指数信号x7。
图2示出了本发明另一个实施例的求幂电路100的方框图。求幂电路100的功能与图1所示求幂电路40的相同,用来计算一个包括一个或多个指数信号的项。然而,求幂电路100增加了一个移位寄存器,因此所需的加法周期要比图1所示这种求幂电路40的少。求幂电路100包括对数电路4、运算组件99和反对数电路34。运算组件99包括P/I单元72、P/Z单元60、第一移位寄存器56、第二移位寄存器68、第一多路复用器64、第二多路复用器76、加法电路80、多路分路器84、第一寄存器94、第二寄存器90和控制单元104。
对数电路4接收加到它的输入端2上的一个或多个输入信号,将每个输入信号分别变换成一个相应的多位二进制对数值。这个二进制对数值由总线54分送至第一移位寄存器56和第二移位寄存器68。接收到一个二进制对数值后,第一移位寄存器56就对这个值进行算术移位,产生一个第一中间值,加到总线58上。移位的位数由控制单元104产生的第一移位信号106确定。第二移位寄存器68也对二进制对数值进行算术移位以产生一个第二中间值,加到总线70上。移位的位数由控制单元104产生的第二移位信号108确定。第一移位寄存器56和第二移位寄存器68都可以将二进制对数值右移或左移。
接收到总线70上的输入后,P/I单元72或者将第二中间值加到总线74上,或者先将中间值求反,再将求反的值加到总线74上。P/I单元72的这种功能由控制单元104所提供的第二控制信号120确定。P/I单元60根据控制单元104所提供的第一控制信号110的值或者将第一中间值或者将零加到总线62上。
第一多路复用器64将它的输出端66与总线62、反馈总线66或第二寄存器90的输出端92相连。第一多路复用器64的输出66由控制单元104所提供的第一多路复用信号112确定。第二多路复用器76将它的输出端78与总线74或第二寄存器90的输出端92相连。第二多路复用器76的输出78由控制单元104所提供的第二多路复用信号116确定。
加法电路80将第一和第二多路复用器64、76的输出66和78相加。多路分路器84根据多路分路信号118的值将加法电路80的输出82加到第二寄存器90或第一寄存器94上。第一寄存器94将它的内容(是一个和值)加到反馈总线96和输出端98上,而第二寄存器90将它的内容作为合并值加到它的输出端92上。反对数电路34通过对和值取反对数而产生一个表示一个或多个指数信号的项,加到输出端36上。
控制单元104通常存有多个指数码(未示出),每个指数码与一个输入信号对应。求幂电路100接收到每个输入信号时,控制单元104就对一个相应的指数码进行解码,产生第一和第二控制信号110、120;第一和第二移位信号106、108;第一和第二多路复用信号112和116,多路分路信号118,以及进位位114。然而,在本发明的另一种方案中,指数码由一个产生指数码的装置提供,这个装置与控制单元104连接,但还是与求幂电路不在一起,诸如存储指数码的独立存储器或主处理器(如与该电路连接的微处理器)之类。
在操作中,求幂电路100能为单个输入信号计算出相应的指数值,或者从一列输入信号中计算出一个包括多个指数信号的项。无论是哪一种情况,从单个输入信号计算指数信号在一个优选实施例中只需要一个加法周期。然而,计算一个包括多个指数值的项对于每个输入信号需要两个加法周期。这情况说明如下。在接收到一个输入信号时,第一个加法周期的结果作为合并值存储在第二寄存器90内。这是由控制单元104通过第一和第二多路复用信号112、116使P/I单元72和P/Z单元60的输出加到加法电路80来实现的。此外,控制单元104还通过多路分路信号118来选取第二寄存器90。
在第二个周期期间,一个存储值和合并值分别通过反馈总线96和输出端92加到加法电路80的输入端。然后用第二个加法周期所得到的和将第一寄存器94内的存储值进行更新。第二周期是由控制单元104通过第一和第二多路复用信号112、116使输出端92和反馈总线96接到加法电路80的输入端来实现的。控制单元104还命令多路分路信号118选取第一寄存器94以使这个周期得到的结果存入第一寄存器94。
在操作中,第一寄存器94内的存储值通常为从一个序列中前面一些输入信号产生的各中间值的和。然而,最初存储值可以是一个等于某常数的对数的系数值。也可以将第一和第二寄存器94、90都预置为零。
图3为一个例示可用于图2的求幂电路100的一些指数码的表。表中列出了在本发明的一个优选实施例中所使用的指数码和相应的控制信号和移位信号。表中也示出了根据每个指数码得出的加法电路80所执行的操作和进位位114的值。表中的每一行给出了与这些指数码中的一个指数码相应的各信号和进位位的值。
例如,在第一行中,指数码“000”表示求幂电路100要产生的是x-1。如果对于一个输入信号指数码是“000”,那么第二中间值就等于二进制对数值,第一中间值设置为零,而合并值是通过从第一中间值中减去第二中间值得出的。
在第二行中,指数码“001”表示要产生的是x1。如果对于一个输入信号指数码是“001”,那么第二中间值就等于二进制对数值,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第三行中,指数码“ 010”表示要产生的是x2。如果对于一个输入信号指数码是“010”,那么第二中间值就等于二进制对数值左移一位,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第四行中,指数码“011”表示要产生的是x3。如果对于一个输入信号指数码是“011”,那么第二中间值就等于二进制对数值左移一位,第一中间值等于二进制对数值,而合并值是通过将第一中间值加上第二中间值得出的。
在第五行中,指数码“100”表示要产生的是x4。如果对于一个输入信号指数码是“100”,那么第二中间值就等于二进制对数值左移两位,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第六行中,指数码“101”表示要产生的是x5。如果对于一个输入信号指数码是“101”,那么第二中间值就等于二进制对数值左移两位,第一中间值等于二进制对数值,而合并值是通过将第一中间值加上第二中间值得出的。
在第七行中,指数码“110”表示要产生的是x6。如果对于一个输入信号指数码是“110”,那么第二中间值就等于二进制对数值左移两位,第一中间值等于二进制对数值左移一位,而合并值是通过将第一中间值加上第二中间值得出的。
在第八行中,指数码“111”表示要产生的是x7。如果对于一个输入信号指数码是“111”,那么第二中间值就等于二进制对数值,第一中间值等于二进制对数值左移三位,而合并值是通过从第一中间值中减去第二中间值得出的。
图4为另一个例示可用于图2的求幂电路100的一些指数码的第一表。表中列出了各指数码和相应的控制信号和移位信号。表中也示出了根据每个指数码得出的加法电路80所执行的操作和进位位114的值。表中的每一行给出了与这些指数码中的一个指数码相对应的各信号的值和进位位的值。
例如,在第一行中,指数码“000”表示求幂电路100要产生的是x-1。如果对于一个输入信号指数码是“000”,那么第二中间值就等于二进制对数值,第一中间值设置为零,而合并值是通过从第一中间值中减去第二中间值得出的。
在第二行中,指数码“001”表示要产生的是x-1/2。如果对于一个输入信号指数码是“001”,那么第二中间值就等于二进制对数值右移一位,第一中间值设置为二进制对数值,而合并值是通过从第二中间值中减去第一中间值得出的。
在第三行中,指数码“010”表示要产生的是x1/2。如果对于一个输入信号指数码是“010”,那么第二中间值就等于二进制对数值右移一位,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第四行中,指数码“011”表示要产生的是x1。如果对于一个输入信号指数码是“011”,那么第二中间值就等于二进制对数值,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第五行中,指数码“100”表示要产生的是x2。如果对于一个输入信号指数码是“100”,那么第二中间值就等于二进制对数值左移一位,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第六行中,指数码“101”表示要产生的是x3。如果对于一个输入信号指数码是“101”,那么第二中间值就等于二进制对数值左移一位,第一中间值等于二进制对数值,而合并值是通过将第一中间值加上第二中间值得出的。
在第七行中,指数码“110”表示要产生的是x4。如果对于一个输入信号指数码是“110”,那么第二中间值就等于二进制对数值左移两位,第一中间值设置为零,而合并值是通过将第一中间值加上第二中间值得出的。
在第八行中,指数码“111”表示要产生的是x5。如果对于一个输入信号指数码是“111”,那么第二中间值就等于二进制对数值左移两位,第一中间值等于二进制对数值,而合并值是通过将第一中间值加上第二中间值得出的。
图5示出了本发明又一个实施例的求幂电路192的方框图。求幂电路192执行与图2所示的求幂电路100相同的功能,即计算包括一个或多个指数信号的项。然而,求幂电路192还有一个第二加法电路166,因此对于每个输入信号只需要一个加法周期。虽然图5的求幂电路192速度可以比图2的求幂电路100的高,但如果作为一个集成电路来实现的话,要占用较大的空间。
求幂电路192包括对数电路4、运算组件191和反对数电路34。运算组件191包括P/I单元160、P/Z单元150、第一移位寄存器146、第二移位寄存器156、第一加法电路154、第二加法电路166、寄存器170和控制单元180。
对数电路4接收加到它的输入端2上的一个或多个输入信号,将每个输入信号变换成一个多位的二进制对数值。这个2进制对数值通过总线144加到第一移位寄存器146和第二移位寄存器156上。接收到一个二进制对数值后,第一移位寄存器146就对输入进行算术移位以产生一个第一中间值,加到总线148上。移位的位数由控制单元180所产生的第一移位信号182确定。第二移位寄存器156对它在总线144上接收的输入进行算术移位,从而产生一个第二中间值,加到总线158上。移位的位数由控制单元180所产生的第二移位信号189确定。
接收到总线158上的输入后,P/I单元160或者将输入的二进制对数值加到总线162上,或者将这二进制对数值求反后再加到总线162上。P/I单元160的这种功能由控制单元180所提供的第二控制信号188确定。P/Z单元150或者将二进制对数值或者将零加到总线152上,这取决于控制单元180所提供的第一控制信号184的值。
第一加法电路154将P/Z单元150和P/I单元160分别加到总线152、162上的输出相加。第一加法电路154的输出164送至第二加法电路166。第二加法电路166还接收寄存器170加在反馈总线172上的输出,从而产生一个合成和,在输出端168上送至寄存器170。反对数电路34对寄存器170加在输出端174上的和进行反对数变换,从而产生表示一个或多个指数信号的项,加到输出端36上。
控制单元180通常存有多个指数码(未示出),每个指数码与一个输入信号相对应。求幂电路192接收到每个输入信号时,控制单元180就对一个相应的指数码进行解码以产生第一和第二控制信号184、188,第一和第二移位信号182、189,以及进位位186。
在操作中,求幂电路192能为单个输入信号计算出相应的指数信号,或者从一列输入信号计算出一个包括多个相应指数信号的项。无论是哪一种情况,从单个输入信号计算相应指数信号只需要一个加法周期。
图6示出了本发明一个优选实施例的求幂电路的方框图。优选求幂电路218执行与图2和5所示的求幂电路100、192相同的功能,计算包括一个或多个指数信号的项。此外,与图5所示的求幂电路192相同的是,这个最佳实施例的求幂电路218对于每个输入信号也只需要一个加法周期。然而,与图5所示的求幂电路192不同的是,最佳求幂电路218用多路复用器代替了移位寄存器,因此所需的功率和占用的硅片空间都要比图5的求幂电路192小。
求幂电路218包括对数电路4、运算组件217和反对数电路34。运算组件217包括第一多路复用器199、第二多路复用器203、第三多路复用器210、第一加法电路208、第二加法电路212、寄存器214和控制单元201。
对数电路4接收加到它的输入端2上的一个或多个输入信号,将每个输入信号变换成一个多位的二进制对数值。这个二进制对数值通过总线190加到第一多路复用器199和第二多路复用器203上。每个多路复用器都从四个输入中选择一个输入。第一和第二多路复用器两者都加有一个直通输入193a-b和一个零输入194a-b。此外,第一多路复用器199还接收一个左移一位输入195和一个右移一位输入196,而第二多路复用器203还接收一个反相输入197和一个左移两位输入198。这些加到第一和第二多路复用器199、203的输入分别按第一多路复用信号200和第二多路复用信号202加以选择。
加到第一和第二多路复用器199、203的各种输入由二进制对数值的不同位片组成。例如,直通输入193a-b直接就是二进制对数值,而零输入194a-b是一个其各位都设置为零的二进制字。另一方面,左移一位输入195有效地提供了左移了一位的二进制对数值。这是通过将总线192的最右面n-1位接到多路复用器输入端的最左面n-1位(n为二进制对数值的位数)来实现的。而多路复用器输入端的最低有效位(最右位)则补零。左移两位输入198有效地提供了左移了两位的二进制对数值。这是通过将总线192的最右面n-2位接到多路复用器输入端的最左面n-2位实现的。而在多路复用器输入端的两个最低有效位则补零。右移一位输入196有效地提供了右移了一位的二进制对数值。这是通过将总线的最左面n-1位接到多路复用器输入端的最右面n-1位实现的。而在多路复用器输入端的最高有效位(最左位)则补零。反相输入197是通过将二进制对数值的各位取反得出的。这提供了二进制对数值的1的补码形式。
第一加法电路208将第一和第二多路复用器199、203的输出相加。第一加法电路154还接受进位位206和加法器启用信号205的控制。第一加法电路208的输出送至第三多路复用器210。第三多路复用器210根据控制单元201所产生的第三多路复用信号204从第一多路复用器199、第二多路复用器203和第一加法电路208的各输出中选择一个作为输出。
第二加法电路212将第三多路复用器210的输出和通过反馈通路216提供的存储值相加。第二加法电路212的输出存入寄存器214。最初,寄存器214可以预置为某个值,例如一个系数值或零。寄存器214的输出加到反馈通路216和反对数变换器34上。反对数电路34对寄存器214提供的和进行反对数变换以在输出端36上产生一个表示一个或多个指数信号的项。
控制单元201通常存有多个指数码(未示出),每个指数码与一个输入信号相对应。求幂电路218接收到每个输入信号时,控制单元201就对一个相应的指数码进行解码以产生第一、第二和第三多路复用信号200、202、204,加法器启用信号205,以及进位位206。然而,在本发明的另一种方案中,指数码由一个产生指数码的装置提供,这个装置与控制单元201连接,但还是与求幂电路218不在一起的,诸如存储指数码的独立存储器或主处理器(如与该电路连接的微处理器)之类。
在操作中,求幂电路218能为单个输入信号计算出一个指数信号,或者从一列输入信号中计算出一个包括多个指数信号的项。无论是哪一种情况,从单个输入信号计算指数信号只需要一个加法周期。
在本发明的一个实施例中,求幂电路40、100、192或218可用来求得一个可用如下方程1表示一般形式的项:
y=w*x1 g1*x2g2 *……xn gn 方程(1)
其中:xi表示在输入端2上接收到的输入信号,它可以是xi=fi(zj)这样的函数,而zj为任何任意变量,i和j可以是任何整数;y表示求幂电路的输出量36;w表示系数值;g1,…,gn表示项的指数;以及n表示输入数。
图7为一个例示可用于图6的求幂电路的一些指数码的表。表中列出了在本发明的优选实施例中所使用的指数码和相应的多路复用信号。表中也示出了根据各指数码相应产生的进位位206和加法器启用信号205的值。表中的每一行给出了与这些指数码中的一个指数码相对应的各信号和进位位的值。
例如,在第一行中,指数码“000”表示求幂电路218要产生的是x-1。如果对于一个输入信号指数码是“000”,那么第一多路复用信号200就不必考虑,第二多路复用信号202设置成选择反输入197,加法器启用信号205设置为零,因此第一加法电路208禁用,第三多路复用信号204设置成选择第二多路复用器203的输出,而进位位206设置为1。这样,第二加法电路212就产生了二进制对数值的2的补码形式。
在第二行中,指数码“001”表示要产生的是x-1/2。如果对于一个输入信号指数码是“001”,那么第一多路复用信号200就设置成选择右移一位输入196,第二多路复用信号202设置成选择反输入197,加法器启用信号205设置为1,因此第一加法电路208启用,第三多路复用信号204设置成选择第一加法电路208的输出,而进位位206设置成对于第一加法电路208为1而对于第二加法电路212为零。
在第三行中,指数码“010”表示要产生的是x1/2。如果对于一个输入信号指数码是“ 010”,那么第一多路复用信号200就设置成选择右移一位输入196,第二多路复用信号202不必考虑,加法器启用信号205设置为零,第三多路复用信号204设置成选择第一多路复用器199的输出,而进位位206设置为零。
在第四行中,指数码“011”表示要产生的是x1。如果对于一个输入信号指数码是“011”,那么第一多路复用信号200就设置成选择直通输入193a,第二多路复用信号202不必考虑,加法器启用信号205设置为零,第三多路复用信号204设置成选择第一多路复用器199的输出,而进位位206设置为零。
在第五行中,指数码“100”表示要产生的是x2。如果对于一个输入信号指数码是“100”,那么第一多路复用信号200就设置成选择左移一位输入195,第二多路复用信号202不必考虑,加法器启用信号205设置为零,第三多路复用信号204设置成选择第一多路复用器199的输出,而进位位206设置为零。
在第六行中,指数码“101”表示要产生的是x3。如果对于一个输入信号指数码是“101”,那么第一多路复用信号200就设置成选择左移一位输入195,第二多路复用信号202设置成选择直通输入193b,加法器启用信号205设置为1,因此启用第一加法电路208,第三多路复用信号204设置成选择第一加法电路208的输出,而进位位206设置为零。
在第七行中,指数码“110”表示要产生的是x4。如果对于一个输入信号指数码是“110”,那么第一多路复用信号200就不必考虑,第二多路复用信号202设置成选择左移两位输入198,加法器启用信号205设置为零,第三多路复用信号204设置成选择第二多路复用器203的输出,而进位位206设置为零。
在第八行中,指数码“111”表示要产生的是x1。如果对于一个输入信号指数码是“111”,那么第一多路复用信号200就设置成选择直通输入193a,第二多路复用信号202设置成选择左移两位输入198,加法器启用信号205设置为1,第三多路复用信号204设置成选择第一加法电路208的输出,而进位位206设置为零。
也可以提供一个指示要产生的是x0的指数码。虽然这样的一个指数码在图7中没有示出,但很容易通过提供一个诸如“1000”那样的附加指数码来实现,这个码解码后使第一多路复用信号200选择零输入194b,使加法器启用信号205设置为零,使第三多路复用信号204选择第一多路复用器199的输出,而使进位位206设置为零。第二多路复用信号202不必考虑。
图8示出了含有多个运算组件的求幂电路的方框图。象本发明的其他实施例那样,图8所示的求幂电路用来计算一个包括一个或多个指数信号的项。这个求幂电路的实施例包括一个对数变换器220、多个运算组件203和一个反对数变换器226。对数变换器220接收加在它的输入端上的一个或多个输入信号,将每个输入信号变换成一个多位的二进制对数值。这个二进制对数值通过总线222加到多个运算组件的每个上。这些运算组件的输出通过总线224送至反对数变换器226。反对数变换器通过对多个运算组件223产生的这些输出进行反对数变换产生一个表示一个或多个指数信号的项,加到输出端36上。
这些运算组件可以包括任何在图1、2、5和6中所示的运算组件9、99、191和217中任何一个。
示于图1、2、5、6和8的本发明的求幂电路及其各个实施例最好用集成电路来实现。然而,通常熟悉本技术领域的人员可以理解,也可以采用可编程逻辑阵列或其他数字逻辑装置,诸如微处理器执行的软件等,来实现由本发明的求幂电路各个实施例所执行的功能。
图9示出了一个具有一个符合本发明实施例的求幂电路的计算机***的方框图。计算机***230包括存储器232、处理器236和求幂电路239。存储器232存储处理器236所要使用的程序和数据。在操作中,处理器236利用总线234从存储器232中提取程序指令。通过执行程序指令,处理器236向求幂电路239发送输入信号,然后从求幂电路239的输出中提取至少一个指数值。处理器236和求幂电路239之间的所有通信均通过总线238进行。求幂电路239可以包括分别在图1、2、5和6中所示的求幂电路40、100、192和218中的任何一个求幂电路。
图10示出了从一个输入信号产生一个指数信号的方法的流程图。这种方法可用于具有一个输入信号x而产生一个指数信号xg的求幂电路。
在程序框240,对输入信号进行对数变换而产生一个多位的二进制对数值。
在程序框242,将二进制对数值的各位移位以产生一个中间值。移位操作等效于将二进制对数值乘以一个等于2的幂的因子。
然后,在程序框244,将中间值与一个存储值进行算术合并,产生一个合并值。可以或者将存储值加上中间值,或者从存储值中减去中间值而将二个值合并。
在程序框246,将存储值设置为合并值。在判决框248进行检查以确定是否已将输入信号提升到一个预定指数的幂。这个预定指数是一个取决于一个存储在求幂电路的控制单元内的指数码的指数g。如果已将输入信号提升到预定指数,则流程进至程序框250;否则,流程返回到程序框242。
在程序框250对合并值进行反对数变换,从而产生指数信号xg。
图11示出了产生一个包括从一列输入信号产生的多个指数信号的项的方法的流程图。这种方法可用于具有一列输入xi的求幂电路,以产生一个具有多个指数信号xi gi的项,其中i是一个整数。
在程序框260,接收这列输入中的第一输入。从而,在程序框262,对第一输入进行对数变换以产生一个多位的二进制对数值。
在程序框264,对一个指数码进行解码以产生第一移位信号和第二移位信号。在程序框266,将第一移位信号作用于二进制对数值以产生一个第一中间值。这个第一中间值可以通过或者将二进制对数值的各位移位,或者使第一中间值等于二进制对数值而产生。
接着,在程序框268,将第二移位信号作用于二进制对数值以产生一个第二中间值。这个第二中间值可以通过或者将二进制对数值的各位移位,或者使第二中间值为零而产生。
然后,在程序框270,将第一中间值与第二中间值进行算术合并以产生一个合并值。这个合并值可以通过或者将第二中间值加上第一中间值,或者从第二中间值中减去第一中间值而产生。然后,将合并值加到一个存储值上以产生一个和。
在判决框272,进行检查以确定是否已接收到这列输入中的所有输入。如果是,则流程进至程序框276。否则,流程进至程序框274。
在程序框274,接收这列输入信号中的下一输入。然后,使第一输入等于下一输入,使存储值等于和。接着流程就返回到程序框262。
最后,在程序框276,对和进行反对数变换,以产生所要求的项。
概括地说,这里所公开的本发明提供了一种使用至少一个移位寄存器的求幂电路,可以得到一个二进制对数值的2的倍数的幂。这显著地增大了这种电路的吞吐率。
此外,本发明提供了一种使用一个加法电路的求幂电路,从而减小了求幂电路所需的功率和空间。
本发明的另一个优点是提供了一种全部使用数字电路的求幂电路,因此实现起来非常经济,并且容易与微处理器内核或其他数字逻辑电路集成在单片芯片上。
虽然以上示出了本发明的一些具体实施例,并且加以说明,然而对于熟悉本技术领域的人员来说显然可见,所公开的本发明可以作种种修改,除了上述特为提出和说明的优选方式外,可以设想出许多其他实施方式。
因此,所附权利要求书旨在总括属于本发明精神实质和专利保护范围内的所有本发明的修改。
Claims (10)
1.一种具有一个输入端和一个输出端的求幂电路,所述求幂电路根据在输入端上接收到的一个输入信号在输出端上产生一个指数信号,所述求幂电路包括:
一个对数变换器,用来对输入信号进行对数变换以产生一个多位的二进制对数值;
一个移位装置,用来接收二进制对数值及将二进制对数值各位移位n位,从而产生一个作为它的输出的中间值,其中n为一个整数;
一个合并装置,用来对中间值和一个存储值进行算术合并以产生一个合并值;以及
一个反对数变换器,用来对合并值进行反对数变换以产生指数信号,所述反对数变换器在所述求幂电路的输出端上产生指数信号。
2.如权利要求1所提出的求幂电路,所述求幂电路还包括:
一个存储装置,用来存储二进制对数值;
一个控制单元,可操作地连至移位装置,将一个指数码加到移位装置上;
其中所述移位装置根据一个所存储的二进制对数值产生一列中间值,按照指数码将这列中间值中每个中间值的各位移位一定位数;以及
其中所述合并装置包括:
一个加法电路,用来将这列中间值和存储值相加以产生合并值。
3.如权利要求2所提出的求幂电路,其中在加法电路接收到这列中间值中的至少一个中间值之前所述控制单元将这列中间值中的该至少一个中间值变换成带符号的2的补码形式,控制单元是通过将这列中间值中的该至少一个中间值取反后再向加法电路提供一个相应的进位位来完成这个变换的。
4.如权利要求1所提出的求幂电路,其中所述移位装置包括一个移位寄存器。
5.如权利要求1所提出的求幂电路,其中所述移位装置包括一个多路复用器。
6.一种接收一列输入信号并产生一个作为输出的包括多个一一分别与输入信号对应的指数信号的项的求幂电路,所述求幂电路包括:
一个对数变换器,用来对这列输入信号进行对数变换以产生一列分别与各输入信号一一对应的多位的二进制对数值;
一个第一移位寄存器,用来根据这列二进制对数值产生作为它的输出的一列第一中间值,所述第一移位寄存器接收到每个二进制对数值后,就将这个二进制对数值的各位移位n位以产生一个第一中间值,其中n为一个整数;
一个第二移位寄存器,用来根据这列二进制对数值产生作为它的输出的一列第二中间值,所述第二移位寄存器接收到每个二进制对数值后,就将这个二进制对数值的各位移位n位以产生一个第二中间值,其中n为一个整数;
一个控制单元,可操作地连至第一移位寄存器和第二移位寄存器,所述控制单元存有多个指数码,其中多个指数码中的每个指数码与这列输入信号中的一个输入信号相对应,控制单元将多个指数码加到第一移位寄存器和第二移位寄存器上;
其中第一移位寄存器和第二移位寄存器按照相应的指数码对这列二进制对数值中每个值的各位进行移位;
一个合并装置,用来对这列第一中间值和这列第二中间值进行算术合并以产生一个和;以及
一个反对数变换器,用来对得出的和进行反对数变换以产生所要求的项,所述反对数变换器在所述求幂电路的输出端上提供所述项。
7.如权利要求6所提出的求幂电路,其中所述合并装置包括:
一个第一寄存器,用来提供作为它的输出的所得出的和;
一个第二寄存器,用来提供作为它的输出的一个合并值;
一个第一多路复用器,用来提供作为它的输出的第一寄存器的输出或第一移位寄存器的输出;
一个第二多路复用器,用来提供作为它的输出的第二寄存器的输出或第二移位寄存器的输出;
一个加法电路,所述加法电路具有一个负责接收第一多路复用器输出的第一输入端和一个负责接收第二多路复用器输出的第二输入端,所述加法电路产生一个输出;以及
一个多路分路装置,用来向第一寄存器或第二寄存器提供加法电路的输出,
其中所述第一多路复用器和第二多路复用器接受来自控制单元的一个多路复用信号的控制,而所述多路分路装置接受来自控制单元的一个多路分路信号的控制;
所述控制单元在第一加法周期期间将多路复用信号设定成使第一移位寄存器输出和第二移位寄存器输出加到加法电路上;
所述控制单元在第一加法周期期间将多路分路信号设定成使加法电路输出加到第二寄存器上;
所述控制单元在第二加法周期期间将多路复用信号设定成使第一寄存器输出和第二寄存器输出加到加法电路上;以及
所述控制单元在第二加法周期期间将多路分路信号设定成使加法电路输出加到第一寄存器上。
8。如权利要求6所提出的求幂电路,其中所述合并装置包括:
一个第一寄存器,用来提供作为它的输出的所得出的和;
一个第一加法电路,所述第一加法电路具有一个负责接收第一移位寄存器输出的第一输入端和一个负责接收第二移位寄存器输出的第二输入端,第一加法电路产生一个输出;以及
一个第二加法电路,所述第二加法电路具有一个负责接收第一加法电路输出的第一输入端和一个负责接收第一寄存器输出的第二输入端,第二加法电路产生作为输出量的所得出的和并将该和加到第一寄存器上;
其中所述第一加法电路根据可接收的与该列输入信号中同一个输入信号相对应的一列第一中间值中的一个值和一列第二中间值中的一个值产生一个合并值;以及
所述第二加法电路根据从第一加法电路接收到的合并值产生所得出的和。
9.一种计算机***,所述计算机***包括:
一个存储器,用来存储一个程序;
一个具有一个输入端和一个输出端的求幂电路,用来根据在输入端接收到的输入信号在输出端上产生一个指数信号,所述求幂电路包括
一个对数变换器,用来对输入信号进行对数变换以产生一个多位的二进制对数值,
一个移位寄存器,用来接收二进制对数值,并将二进制对数值的各位移位n位以产生一个中间值作为它的输出,其中n为一个整数,
一个合并装置,用来对中间值和一个存储值进行算术合并以产生一个合并值,以及
一个反对数变换器,用来对合并值进行反对数变换以产生所要求的指数信号,所述反对数变换器在所述求幂电路的输出端上提供指数信号;以及
一个处理器,可操作地与存储器和求幂电路的输入端和输出端相连,所述处理器从存储器读取程序,通过执行程序将输入信号送到求幂电路的输入端,然后从求幂电路的输出端提取所要求的指数信号。
10.一种在一个具有一个输入信号x的求幂电路中产生一个指数信号xg的方法,所述方法包括下列步骤:
(a)对输入信号进行对数变换以产生一个多位的二进制对数值;
(b)将二进制对数值的各位移位以产生一个中间值;
(c)对中间值和一个存储值进行算术合并以产生一个合并值,这一合并步骤用下列方法中的一种实现:(i)将存储值加上中间值以产生合并值;(ii)从存储值中减去中间值以产生合并值;以及
(d)对合并值进行反对数变换以产生所要求的指数信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 96192478 CN1178588A (zh) | 1995-03-10 | 1996-01-29 | 使用移位装置的求幂电路及其使用方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/401,515 | 1995-03-10 | ||
CN 96192478 CN1178588A (zh) | 1995-03-10 | 1996-01-29 | 使用移位装置的求幂电路及其使用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1178588A true CN1178588A (zh) | 1998-04-08 |
Family
ID=5128297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 96192478 Pending CN1178588A (zh) | 1995-03-10 | 1996-01-29 | 使用移位装置的求幂电路及其使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1178588A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063201A (zh) * | 2014-06-05 | 2014-09-24 | 杭州电子科技大学 | 一种指数ax运算电路及其实现方法 |
WO2019057093A1 (zh) * | 2017-09-19 | 2019-03-28 | 华为技术有限公司 | 乘法电路、片上***及电子设备 |
CN110119265A (zh) * | 2018-02-06 | 2019-08-13 | 成都鼎桥通信技术有限公司 | 乘法运算实现方法、装置、计算机存储介质及电子设备 |
CN111913686A (zh) * | 2020-05-29 | 2020-11-10 | 无锡市优利康电气有限公司 | 一种定点cpu的快速开平方计算的方法 |
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
CN113692561A (zh) * | 2019-02-20 | 2021-11-23 | 优创半导体科技有限公司 | 用于使用逐次累积旋转电路计算初等函数的装置和方法 |
-
1996
- 1996-01-29 CN CN 96192478 patent/CN1178588A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063201A (zh) * | 2014-06-05 | 2014-09-24 | 杭州电子科技大学 | 一种指数ax运算电路及其实现方法 |
CN104063201B (zh) * | 2014-06-05 | 2017-01-25 | 杭州电子科技大学 | 一种指数ax运算电路及其实现方法 |
WO2019057093A1 (zh) * | 2017-09-19 | 2019-03-28 | 华为技术有限公司 | 乘法电路、片上***及电子设备 |
US11249721B2 (en) | 2017-09-19 | 2022-02-15 | Huawei Technologies Co., Ltd. | Multiplication circuit, system on chip, and electronic device |
CN110119265A (zh) * | 2018-02-06 | 2019-08-13 | 成都鼎桥通信技术有限公司 | 乘法运算实现方法、装置、计算机存储介质及电子设备 |
CN113692561A (zh) * | 2019-02-20 | 2021-11-23 | 优创半导体科技有限公司 | 用于使用逐次累积旋转电路计算初等函数的装置和方法 |
CN111913686A (zh) * | 2020-05-29 | 2020-11-10 | 无锡市优利康电气有限公司 | 一种定点cpu的快速开平方计算的方法 |
CN111913686B (zh) * | 2020-05-29 | 2021-12-07 | 无锡市优利康电气有限公司 | 一种定点cpu的快速开平方计算的方法 |
CN113420788A (zh) * | 2020-10-12 | 2021-09-21 | 黑芝麻智能科技(上海)有限公司 | 卷积神经网络中基于整数的融合卷积层以及融合卷积方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897046B (zh) | 一种定点乘累加器 | |
TWI783295B (zh) | 乘法器及乘法運算方法 | |
US10860050B2 (en) | Apparatus and methods for non-linear function operations | |
Zhang et al. | New flexible multiple-precision multiply-accumulate unit for deep neural network training and inference | |
WO1996028774A1 (en) | Exponentiation circuit utilizing shift means and method of using same | |
CN101042583A (zh) | 用于可编程逻辑器件的专门处理块 | |
CN1928809A (zh) | 用于执行浮点运算的***、设备和方法 | |
JP7292297B2 (ja) | 確率的丸めロジック | |
Barrois et al. | The hidden cost of functional approximation against careful data sizing—A case study | |
CN1570848A (zh) | 使用进位存储加法的蒙哥马利模乘器及其方法 | |
Prost-Boucle et al. | High-efficiency convolutional ternary neural networks with custom adder trees and weight compression | |
CN1821951A (zh) | 算术单元 | |
CN108008932B (zh) | 除法合成 | |
CN1288545A (zh) | 运算装置及运算方法 | |
TWI776213B (zh) | 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 | |
JPH0520030A (ja) | 跳躍配列と修正形ワラストリーとを使用する並列乗算器 | |
CN101295237A (zh) | 求商和余数的高速除法器 | |
CN1178588A (zh) | 使用移位装置的求幂电路及其使用方法 | |
CN1108557C (zh) | 减少高速算术单元中超前进位加法器级数的结构和方法 | |
EP3767454A1 (en) | Apparatus and method for processing floating-point numbers | |
EP3767455A1 (en) | Apparatus and method for processing floating-point numbers | |
CN1717653A (zh) | 带有查询表的乘法器 | |
CN1924798A (zh) | 一种64比特浮点乘加器及其流水节拍划分方法 | |
CN114691086A (zh) | 一种基于操作数裁剪的高性能近似乘法器及其计算方法 | |
El Atre et al. | Design and implementation of new delay-efficient/configurable multiplier using FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication |