确定二进制数据域中前导零 或一的数量的方法和装置 本发明涉及一用于确定二进制数据域中前导零或一的数量高速装置和方法,更具体地例如浮点二进制数中尾数那样的定卡二进制数据域,本方法进一步用于提供零检测方法,以标明该二进制数据域中所有位是否都为零。
在现代计算机中,数据字节一般地以包含1和0的二进制数据域的形式存放在存储器内。具体说,十进制数以二进制数形式表示和存放。
下面表1描述十进制数0至10以二进制形式的表示。
表1 十进制 二进制 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010
例如,十进制数“5”等于:
1×22+0×21+1×20它以“101”表示。还有,十进制数“10”等于:
1×23+0×22+1×21+0×20它以“1010”表示。
通常将二进制数格式化为浮点数。例如,二进制数“101”(十进制数“5”)可用浮点二进制记法表示为
1.01×22 (A)或
101×23 (B)以上决定于所希望地约定,也即是将最高有效位“1”置于小数点之左或右。实际二进制位“101”被认为是浮点的尾数,而n值是指数。指数的值代表二进制数据小数点之右所占位数。
因此,为确定浮点二进制数“1.01×22”之值,只需简单地确定不带小数点的尾数之值(例如确定二进制数“101”,它等于十进制数“5”相类似,浮点二进制数“.101×23”以相同方式定值。换言之,可把小数点看作右移指数(即3)所代表的位数即可达到二进制“101”。
当尾数的最高有效为“1”,该浮点二进制数被认为是“规格”,而当其尾数的最高有效位为“0”时,它被认为是“非规格”。因此,上面所示浮点数(A)和(B)两者都是“规格的”。
为统一起见,希望将所有浮点二进制数不管大小如何都以它们的“规格”形式表示。在计算机中更是如此。在这方面,利用上面的格式(B),十进制数“1”、“5”和“10”可分别表示如规格浮点数。1×21、.101×23和.1010×24。
然而为了完成两个浮点二进制数之间某些算术运算,要求这两个数的指数相同。例如,如想从“.1010×24”(十进制数“10”)中减去“.101×23”(十进制数“5”),必须将数“.101×23”“非规格化”,以便将它表示如“.0101×24”。因此现在具有指数“4”的两个数可以相减而得到结果“.0101×24”(十进制数“5”)。相应地,为了能以与其它浮点数相一致的方式特此数存放或记录,希望将此数“规格化”为“.101×23”。
将此二进制数据串左移一定位数,直至前导“1”位于最高有效位内,即完成此规格化。与此同时,从指数中减去代表左移位数的数。此例中,尾数左移了一位,同时指数减1。
因此,为了将非规格数加以规格化,必须确定尾数中最高有效“1”位于何处,或即最高有效“1”之前的前导零的数量。因此,一个能完成二进制算术运算的计算机应包括能在二进制数据域内寻找前导“1”的电路。此外,还要求该电路能确定二进制数据域的所有数据位是否都是零,这意味着该二进制浮点数是“0”以及不需规格化。
用于将二进制数据域规格化的常用电路在授权给Berry的美国专利4,586,154中有所描述。在Berry电路中,一个8位定卡只读存储器U1接收16位二进制数据字的8个“高”数据位,而另一个8位定卡只读存储器U2接收16位二进制数据字的8个“低”数据位。
存储器U1和U2分别分析高8个和低8个数据位,以确定规格化所需的移位数。如存储器U1确定高8位全是“0”(如该数是一个以二进制补码格式表示的负数,则为全“1”),或需要移位数大于七位,则存储器U1在输出端O5向四路2∶1多路转换器U3输出一个信号(即“1”)。该信号标志着多路转换器U3将考虑由存储器U2输出的二进制数据代表所需移位数。
相反,如存储器U1确定所需移位数小于七,则存储器U1在输出端O5向回路2∶1多路转换器U3输出一个信号(即“0”)。该信号标志着多路转换器U3将考虑由存储器U1输出的二进制数据代表所需移位数。
根据存储器U1在O5的输出信号,多路转换器U3考虑由U1或U2提供的二进制数据代表所需移位数,并控制包括4位并行移位器U4-U11的并行位移网络以便相应地进行移位。此外,如从U2输出的二进制数据将被使用,并标志着所有低8位都是“0”,则整个16位数被认为是“0”,不需移位。
然而Berry电路的应用有限。例如,由于电路相似于一个可编程逻辑阵列(PLA),它不能立即适用于数据流电路。因此为了实用目的,该电路无法与要求高速数据流的装置一起有效地工作。
常规规格化电路的另一例在授权给Takahashi等人的美国专利4,785,421中有所描述。在Takahashi电路中,从16位数据寄存器的所有16位来的数据送至前导“1”检测电路。该前导“1”检测电路将数据的16位输出至编码器,后者则输出一个代表16位数据域于前导“1”位置的二进制数。
由于Takahashi电路的前导“1”检测器包括大量串接的选通门(即16个选通门),因此按现代计算机标准看该电路操作很慢。相应地,该Takahashi电路不太适用于高速计算机。
常规规格化电路的第三个例子在授权给Poon的美国专利5,241,490中有所描述。该Poon电路用于特浮点数的69位尾数加以规格化。为实现此功能,8个8输入或门并联起来,其中每个或门接收从69位域来的不同连续8位数据组,同时还有一个5输入或门与上述或门并联,以接收从69位域来的一组连续5位数据。在这种安排中,该5位组包含69位域中的5位最低有效位。
当每个或门的全部输入量为“0”,也即当它所接收的位组中所有位全为“0”时,它即提供输出量“0”,而当它的任何一个输入量为“1”时则提供输出量“1”。因此或门的输出量用于每个位组的零检测
该69位数据域也输入至一个包括9个字节选择器的多路转换单元109。除一个字节选择器接收单一的5位数据组外,其它所有字节选择器中的每一个都接收上面所述8个8位数据组的不同组。因此这些9个字节选择器对应于8个8输入或门和一个5输入或门。
上面所述或门的输出量送至一个9位输入判优电路105,其9位输入量的最高有效位是用于接收69位数据域的位69-62(最高有效的8位)这一8位组的或门的输出量,而用于接收位61-54这一8位组的或门的输出量则是第二最高有效位,并以此类推。因此用于接收69位数据域的位4-0的5输入或门的输出量就是9位输入量中的最小有效位。
判优电路识别哪些输入量为“1”并提供一个9位二进制输出信号,该信号中的“1”的位置对应于为“1”的最高有效输入量。换言之,如输入至判优电路9个输入端的二进制输入量为“001001010”,其中最左位为最高有效位,则判优电路提供的二进制输出信号为“001000000”。
自该判优电路输出的9位输出信号中每一位分别输入至多路转换单元109中每个字节选择器的相应的输入端A0-A8中的一个。因此接收到该9位输出信号中“1”的那个字节选择器将它所收到的位组加以输出,该位组是包含于少一个“1”的最高有效位组。反过来,接收到来自判优电路的9位输出中“0”的字节选择器将输出0。
所有字节选择器的输出量由或门155进行或操作,于是多路转换器输出一个二进制信号,后者等于69位域的具有至少一个“1”的最高有效位组。来自多路转换器的此输出信号输入至判优电路111,后者作用原理类似于上面描述的判优电路105。由两个判优电路所输出的信号用于相应地将69位数据域移位恰当位数。
然而Poon电路从未输出过一个能够代表69位数据中存在的前导零的数量的单一二进制数。也即,该电路只输出两个移位控制信号,用于使循环移位器将69位数据域左移指定的位数。具体说,一个控制信号使一个循环移位器将69位数据域每次左移8位直至到达指定的包含前导“1”的8位组。接着第二个控制信号用于将数据域按位移位,以使前导“1”成为最高有效位。
上面描述的常规规格化电路的例子说明,由于这些电路的复杂性,它们经常是慢的或占用很多芯片的有效空间。尤其是,由于用于在二进制数据域中确定前导零的数量电路尺寸过大或无法提供高速数据流,因此它们通常是不实用的,因此非常希望有一个简化的规格化电路,它具有用于确定数据域中前导1或0的数量的高速电路,同时还能指出域中数据是否为零。
因此,本发明的一个目的是提供一种用于确定定卡二进制数据域中前导零或1的数量及进一步用于指出该二进制数据域的所有位是否全为零或1的高速装置和方法。为达此目的,本发明的装置包括众多并联的检测电路,以输入二进制数据域的不同部分。每个检测电路包括预定数量的逻辑电路,如NAND和NOR门、反相器、选通门或类似电路
为完成前导零检测操作,每个检测电路配备为用于识别检测器所输入的二进制数据域部分中包含最高有效“1”位的位置,并输出一个二进制数信号,代表在该最高有效“1”之前”(例如在它之左)零的数量。每个检测电路还用于确定检测器所输入的部分中是否每1位的位置中都包含“0”,并提供代表此情况的零检测信号。
该二进制数信号和零检测信号送至解码电路和众多的多路转换电路,也即预定数量的2路和4路多路转换电路。每个多路转换器包括数量的逻辑电路,如选通门、反相器或类似电路。根据检测电路所提供二进制信号和零检测信号,这些解码电路和多路转换器一起用于输出一个代表整个定卡二进制域中前导零数量的二进制数信号和输出一个用于标明整个定卡二进制域中每位的位置中是否都包含“0”的零检测信号。
代表整个定卡二进制域中前导零数量的二进制数信号接着可送至诸如循环移位器或类似电路的移位电路中,将二进制域按需要进行移位,从而将二进制域规格化。
上面描述的本发明的装置可以容易地修改,用于确定一个定卡二进制数据域中前导“1”的数量,还用于提供“1检测”而不是零检测,即确定二进制数据域中所有位是否都为“1”。此外,该装置可以容易地修改,用于在二进制数据域中沿向着最高有效位的方向或向着最低有效位的方向检测前导1或零的数量。还有,本发明的装置可以容易地修改,用于确定任意长度二进制数据域中前导1或零的数量,并按需要提供检测或1检测信号。
下面结合附图对本发明实施例的更具体的描述将使本发明的上述和其它目的、特征和优点更明显。
图1是用于确定16位二进制域中前导零的数量和用于提供零检测信号的本发明装置的实施例的描述用框图,
图2A是用于显示16位二进制数据中前导“1”的所有可能位置的表;
图2B是对应于图2A的表,用于阐述对应于16位二进制数据域中前导“1”位置的由图1实施例所提供输出信号的状态;
图2C是由检测电路的零检测状态所标明的用于显示图1实施例的F&G发生电路的选择对应关系的表;
图3是图1所示本发明实施例的一个F&G发生电路实施例的电路图;
图4是图1所示本发明实施例的电路图;
图5是图1所示本发明实施例的一个4路多路转换器实施例的电路图;
图6是用于确定64位二进制域中前导零的数量和用于提供零检测信号的本发明装置的实施例的描述用框图,
图7A是用于显示64位二进制数据域中一个前导“1”位的所有可能位置的表;以及
图7B是对应于图7A的表,用于阐述相对于64位二进制数据域中前导“1”位的位置,由图6实施例所提供的输出信号状态。
图1显示的本发明实施例用于检测在例如代表浮点数尾数的16位二进制数据域中前导零或1的数量。该电路还提供一个零检测信号,用于标明该二进制数据域中是否所有位都为“0”。
图1的电路包括4个F-G发生器FG1-FG4。每个F-G发生器被指定用于检测定卡16位存储器M中所存16位二进制数据域的4位。
在本具体实施例中,FG1被指定用于接收位15至12,即数据域中四位最高有效位,FG2被指定于位11至8,即下一批最高有效位。FG3和FG4分别被指定用于检测位7至4和位3至0,其中位3至0是数据域的最低有效位。
每个F-G发生器FG1-FG4根据该F-G发生器被指定去检测的所在位的位状态输出一个二进制“F”信号和一个二进制“G“信号。决定于数据串中最高有效“1”的位置,“F”或“G”信号为“1”或“0”。这一关系示于图2A。X标明一种“无所谓”情况,也即“X”处的位在本实施例中可为“1”或“0”
也即,对F-G发生器FG4而言,如最高有效“1”存放于数据串中位0处,则“F”和“G”两个信号都将为零,此代表二进制数“00”,等于十进制数“0”,标明没有前导零。如最高有效“1”存放于位置1处,则信号“F”将为0和信号“G”将为1,以代表二进制数“01”,等于十进制数“1”,标明有一个前导零。相应地,如一个“1”存放于位2处,则信号”F”将为1和信号“G”将为0,以代表二进制数“10”,等于十进制数“2”,标明有2个前导零。最后,如一个“1”存放于位3处,则信号“F”和“G”两者都将为1,以代表二进制数“11”,等于十进制数“3”,标明有3个前导零。
图3显示以上述方式产生输出量“F”和“G”的F-G发生器的电路实施例。为方便起见,图3所示F-G发生器将作为FG4加以描述。然而所有FG发生器FG1-FG4都具有与图3所示电路完全相同的电路,并对它们被指定接收的16位数据串的位置中所存数值作出响应,以完全相同的方式操作。
如图1所示,FG4从所存数据串的每一个数据位的位置3-0接收单一输入量。因此如图3所示,从位置0、1、2和3来的数据分别输入至反相器INV1、INV2、INV3和INV4。反相器INV1-INV4将数据反相,使输入“1”作为“0”输出,反之亦然。所有反相器INV1-INV4的输出量输入至4输入NAND门NAND1,后者输出一个“零检测”信号的补码,这将在下面描述。
“零检测”信号标明在指定给该特定的F-G发生器的所有位上的数据均为“0”。就是说,在图3所示实施例内,当反相器INV1-INV4的全部输入量都是“0”时,每个反相器将提供输出信号“1”。这四个“1”输入至NAND门NAND1,后者将相应地输出一个信号“0”。因此,本实施例中补码零检测信号“0”标明在4个最低有效位0至3处存在“0”。当然,如希望零检测信号成为“1”成而这是标准表示法,则可将另一反相器INV100接至NAND1输出端,即可从反相器INV100输出端提取零检测信号。
每一级逻辑电路通常称为一个“延迟”。也即,反相器INV1-INV4这一级是一个延迟,而NAND1级是另一延迟。因此,真正的零检测值“1”(当检测到所有零值时,零检测信号习惯上为“1”)是由只多加一个延迟INV100所获得的。
相反地,如希望得到”1”检测,例如在二进制补码应用中,则可从电路中取消反相器INV1-INV4,因此输入量直接送至NAND1。于是,当16位中所有位都为“0”时,NAND1的输出量将为“1”,而当至少有1位为“1”时,即输出“0”。该电路也可容易地配备以检测数据域中前导1的数量。
送至图3的反相器INV1-INV3的数据还进一步提供给其它逻辑电路。具体讲,自16位数据串的位0来的数据除送至INV1外,也输入至一个双输入NOR门NOR1的一个端口(端口A),此外,自16位数据串的位0米的该数据还输入至一个三输入NAND门NAND2的一个端口(端口C),这将下面更详细地描述。
自16位数据串来的位1的数据,除输入至INV2外,还输入至NOR1的另一端口(端口B)。自16位数据串来的位2的数据,除输入至INV3外,还输入至一个双输入NAND门NAND3的一个端口(端口A),这也将在下面更详细地描述。
反相器INV2-INV4的输出量也输入至其它逻辑电路。具体说,反相器INV2的输出量也输入至NAND2的第二个端口(端口B)。反相器INV3的输出量也输入至另一个双输入NAND门NAND4的一个端口(端口B)。最后,反相器INV4的输出量输入至NAND4的第二个端口(端口A),NAND2的第三个端口(端口A),和NAND3的第二个端口(端口B)。
这些NOR和NAND门的输出量还提供给其它逻辑电路,后者共同工作以使最终地提供“F”和“G”信号。具体说,NOR1的输出量输入至一个双输入NOR门NOR2的一个端口(端口A)。NAND4的输出量输入至NOR2的另一端口(端口B)。在此配备中,NOR门NOR2以参照图2A的方式提供“F”信号。
另一方面,NAND2和NAND3的输出量输入至第五个NAND门NAND5的第一和第二端口(分别为端口B和A)。在此配备中,NAND5以参照图2A的方式提供“G”信号。
如上所讨论,F-G发生器FG1-FG4中每一个发生器都配备为可以和图3所描述的F-G电路一样工作。相应地,如图2A所示,及从下面将讨论的图4所示配备将可以看清,“F”和“G”输出模式每隔4位的位置重复一次。也即,当最高有效“1”处于位0、4、8或12的位置时,FG输出量为”00”,当最高有效“1”处于位1、5、9或13的位置时,输出“01”,当最高有效“1”处于位2、6、10或14的位置时,输出“10”,以及当最高有效“1”处于位3、7、11或15的位置时,输出“11”。
在一个16位数据域中,有16个最高有效“1”可能占用的位置。因此,如图2B所示,与图2A对照看,需要一个4位二进制以代表全部16个可能的位置。
相应地,其它逻辑电路,具体说是两个4路多路转换器MUX1和MUX2,解码电路DEC1和单个双路多路转换器MUX3,用于产生图2B所示全部四位D、E、F和G。图4描述本发明的该电路实施例,该电路产生的4位二进制数代表16位数据串中前导零的数量。
如图4所示,整个16位数据串输入至F-G发生器FG1-FG4,以使位15至12输入至FG1,位11至8输入至FG2,位7至4输入至FG3,及位3至0输入至FG4。如上所描述,每个F—G发生器产生一个“F”和“G”输出量。F-G发生器FG1-FG4的“F”输出量分别送至MUX1的输入端口IN1、IN2、IN3和IN4。另一方面,FG1-FG4的“G”输出量分别送至MUX2的输入端口IN1、IN2、IN3和IN4。然而FG1-FG4的零检测输出量ZD1—ZD4分别送至组成解码器DEC1的其它逻辑电路及MUX1和MUX2的一些输入端口,这将在下面解释。
FG1的零检测输出量ZD1送至反相器INV5、一个双输入NOR门NOR3的第一输入端口(端口A)和MUX1和MUX2的输入端口S1。FG2的零检测输出量ZD2送至NOR3的第2个输入端口(端口B)及一双输入NAND门NAND6的一个输入端口(端口B)。FG3的零检测输出量ZD3送至一个双输入NOR门NOR4的一个输入端口(端口A)、反相器INV6和一个双输入NAND门NAND7的一个输入端口(端口B)。最后,FG4的零检测输出量ZD4只送至NOR4的另一输入端口(端口B)。
又如图4所示,INV5的输出量送至NAND6的另一输入端口(端口A)、MUX1和MUX2的输入端口Slnot和双路多路转换器MUX3的选通门PG1的一个输入端口A。INV6的输出量送至一个双输入NAND门NAND8的一个输入端口(端口B),还送至MUX3的选通门PG2的输入端口A。
NOR3的输出量输入至反相器INV7,一个双输入NAND门NAND9的输入端口(端口A)、NAND7的第二输入端口(端口A)和NAND8的第二输入端口(端口A)。NOR3的输出量还送至选通门PG1的端口CB和选通门PG2的端口C。NOR4的输出量只送至NAND9的另一端口(端口B)。
NAND6的输出量送至反相器INV8还有MUX1和MUX2的输入端口S2not。NAND7的输出量送至反相器INV9,还有MUX1的输入端口S3not和MUX2的输入端口S3not。此外,NAND8的输出量输入至反相器INV10,还有MUX1的输入端S4not和MUX2的输入端S4not。
NAND9的输出量提供整个电路的补码零检测信号ZD5。也即,上面描述的电路一起运行,当整个16位数据域的全部位置都包含“0”时,输出的补码零检测ZD5即为“0”。因此,如希望有“1”的零检测,如图3所示F-G发生器的做法一样,可加一个反相器INV101因此只多一个逻辑延迟即可输出真正零检测信号。
反相器INV7的输出量分别送至MUX3的选通门PG1和PG2的输入端口C和CB。PG1和PG2的输出量都送至反相器INV11。
INV8的输出量送至MUX1和MUX2的端口S2,而INV9的输出量则送至MUX1和MUX2的端口S3。最后,INV10的输出量输入至MUX1和MUX2的端口S4。
现将描述MUX1、MUX2和MUX3的操作。
图5描述了本发明的4路多路转换器,例如MUX1和MUX2的实施例。由于MUX1和MUX2都具有这个电路配备,所以图5只参照MUX1进行描述。
该4路多路转换器包括4个选通门PG3-PG6。由于图5参照MUX1,所以图5所示输入端IN1-IN4、S1-S4和S1not-S4not对应于图4中MUX1的那些输入端。
当一个信号“1”输入至端口“C”和一个信号“0”输入至端口“CB”时,诸如PG3-PG6的选通门将在它的端口“A”输入的信号加以输出。相反,当一个信号“0”输入至端口“C”和一个信号“1”输入至端口“CB”时,该选通门禁止输出在它端口“A”输入的信号。
为了输出所需能代表16位数据域中前导“1”位置的二进制“F”和“G”信号,图4所示解码电路DEC1和FG1-FG4一起工作,使得在任何给定时间内在MUX1和MUX2两者中都只有PG3-PG6中的一个选通门激活,从而将它们的“A”输入信号传过去。也即,如确定前导“1”位于输入至FG1的位15至12的位组中,则解码电路DEC1和FG1-FG4一起工作,将MUX1和MUX2两者内选通门PG3激活,将它们的“A”输入信号传过去。因此由FG1输出的“F”和“G”信号通过MUX1和MUX2的选通门PG3“传”至这些多路转换器的反相器INV12。
INV12主要用于将由选通门PG3-PG6中任何一个输出的信号加以放大。在图6所示64位实施例中以及下面将描述的,自MUX1和MUX2中INV12的输出端取出信号,输出至其它电路。然而,在16位应用例子中,为得到如图2A和2B所示前导“1”位置的相应位的“F”和“G”位模式,可在INV12输入端提取输出信号“F”和“G”,因而不必由INV12进行反相。另一方案是,如果必须或希望放大,则可加另一个反相器INV102。
与上述操作类似,当确定前导“1”位于输入至FG2的位11至8的位组中时,解码电路DEC1与FG1-FG4一起工作,将MUX1和MUX2两者内的选通门PG4激活,将它们的“A”输入信号传过去。因此FG2所输出的“F”和“G”信号经MUX1和MUX2的选通门PG4“传”至这些多路转换器的反相器INV12,并可如以上描述那样加以提取。
此外,当确定前导“1”位于输入至FG3的位7至4的位组中时,解码电路DEC1与FG1-FG4一起工作,将MUX1和MUX2两者内的选通门PG5激活,将它们的“A”输入信号传过去。因此FG3所输出的“F”和“G”信号经MUX1和MUX2的选通门PG5“传”至这些多路转换器的反相器12,并可如以上描述那样加以提取。最后,当确定前导“1”位于输入至FG4的位3至0的位组中时,解码电路DEC1与FG1-FG4一起工作,将MUX1和MUX2两者内的选通门PG6激活,将它们的“A”输入信号传过去。因此FG4所输出的“F”和“G”信号经MUX1和MUX2的选通门PG6“传”至这些多路转换器的反相器INV12,并可如以上描述那样加以提取。
MUX3的选通门PG1和PG2以类似方式工作。也即,对于图4所示16位实施例说,结合图2A和2B看,当确定前导“1”位于位11-8或3-0的位组内时,解码器DEC1、FG1-FG4和MUX3一起工作,使“E”信号为“1”。相反,当确定前导“1”位于位15-12或7-4的位组内时,解码器DEC1、FG1-FG4和MUX3一起工作,使“E”信号为“0”。
与MUX1和MUX2中的INV1 一样,INV11主要用于将自选通门PG1或PG2输出的信号加以放大。因此为得到如图2A和2B所示前导“1”的相应位置的“E”位模式,可在INV11输入端提取输出量“E”,因而不必由INV11进行反相。另一方案是,如必须或希望放大,可加另一个反相器器INV103。
最后,对于16位实施例,如图2A和2B所示,当确定前导“1”处于位15-8的位组内时,解码器DEC1和FG1-FG4一起工作,使“D”信号为“0”。相反,当确定前导“1”处于位7-0的位组内时,解码器DEC1和FG1-FG4一起工作,使“D”信号为“1”。INV7主要用于提供信号以所需方式对选通门进行控制。因此为得到如图2A和2B所示前导“1”的相应位置的“D”位模式,可在INV7输入端提取输出量“D”而不必由INV7进行反相。另一方案是,如必须或希望放大,可加另一个反相器INV104。
相应地,上述实施例提供一个高速电路,它既能在16位数据域全部位为“0”时输出一个零检测信号,又能确定16位数据域中前导“1”位置并提供一个用以标明前导0数量的二进制输出量。该二进制输出量和零检测信号可送至移位电路(未示出),例如循环移位器或类似电路,以便在需要时将该二进制数据域规格化。
图6中框图显示了用于64位数据域的本发明实施例。此实施例需要附加位“B”和“C”,以便对应于图7所示64位域中前导零的数量提供图7B所示二进制信号。如图2A中一样,X标志“无所谓”情况,也即,本实施例中“X”处的位可为“1”,也可为“0”。
每个D-E-F-G发生器DEFG1-DEFG4完全相同于图4所示D-E-F-G发生器电路,每个发生器为一个16位数据组输出一个“D”“E”、“F”和“G”信号和一个零检测信号。也即根据64位域的位63-48的状态,DEFG1输出“D”、“E”、“F”和“G”信号,或一个零检测信号ZD161。类似地,根据64位域的位47-32的状态,DEFG2输出“D”、“E”“F”和“G”信号或一个零检测信号ZD162;根据64位域的位31-16的状态,DEFG3输出“D”、“E”、“F”和“G”信号或一个零检测信号ZD163;以及根据64位域的位15-0的状态,DEFG4输出“D”“E”、“F”和“G”信号或一个零检测信号ZD164。
输出量ZD161输入至一个双输入NOR门NOR5的一个端口和与图4所示相同的解码电路DEC2。输出量ZD162输入至NOR5的另一端口和解码电路DEC2。输出量ZD163输入至一个双输入NOR门NOR6的一个端口和解码电路DEC2。最后,输出量ZD164输入至NOR6另一端口和解码电路DEC2。
NOR5和NOR6的输出量送至一个双输入NAND门NAND10的两个端口,NAND10输出整个64位域的补码零检测信号ZD64。也即,当整个64位域的每一位都包含“0”时,信号ZD64为“0”。与图4所示16位电路一样,如希望有“1”的零检测,则可加另一个反相器INV105而在该反相器输出端提取零检测信号。因此只多一个附加的逻辑延迟即可得到真正零检测“1”。
图6的64位实施例包括4个四路多路转换器MUX4-7和一个双路多路转换器MUX8。多路转换器MUX4-7接至解码电路DEC2的方式类似于MUX1和MUX2接至DEC1的方式。
就是说,MUX4的输入端IN1-4(未示)分别接收DEFG1—DEFG4的“D”输出信号。相应地,输入端S1-S4和S1not-S4not接收来自DEFG1-DEFG4和解码器DEC2的信号,以控制输出哪个“D”信号。具体说,当输入量“S1”为“1”和“s1not”为“0”时,MUX4输出来自DEFG1的“D”信号;当“S2”为“1”和“S2not”为“0”时,MUX4输出来自DEFG2的“D”信号;当输入量“S3”为“1”和“S3not”为“0”时,MUX4输出来自DDEFG3的“D”信号;以及当“S4”为“1”和“S4not”为“0”时,MUX4输出来自DEFG4的“D”信号。如16位实施例中一样,DEC2和DEFG1-DEFG4如此配备,使得在任何一个时间内都只激活多路转换器MUX4-7的四个选通门(未示出)中的一个以传送信息。
MUX5的输入端IN1-4(未示出)以类似的方式分别接收由DEFG1-DEFG4输出的“E”信号;MUX6的输入端IN1-4(未示出)类似地分别接收由DEFG1-DEFG4输出的“F”信号;以及MUX7的输入端IN1-4(未示出)接收由DEFG1-DEFG4输出的“G”信号。相应地,MUX5的输入端S1-S4和S1ont-S4ont接收来自DEFG1-DEFG4和解码器DEC2的信号,以控制输出哪个“E”信号,MUX6的输入端S1-S4和S1not-S4not接收来自DEFG1~DEFG4和解码器DEC2的信号,以控制输出哪个“F”信号,以及MUX7的输入端S1-S4和S1not-S4not接收来自DEFG1-DEFG4和解码器DEF2的信号,以控制输出哪个“G”信号。
与16位实施例的多路转换器MUX1和MUX2一样,每个多路转换器MUX4-7中都有一个反相器,用于放大来自其中任一选通门(未示出)的信号。因此这些反相器将每个电路DEFG1-DEFG4所提供的“D”、“E”、“F”和“G”信号加以反相,将图4所描述的由MUX2和MUX2中反相器所反相的信号和INV7和INV11所反相的信号加以反相。相应地,由MUX4-7所分别提供的输出量“D”、“E”、“F”和“G”是图7B所示输出量,而不需再反相。
双路多路转换器MUX8以类似于16位实施例中双路多路转换器MUX3的方式,根据DEFG1-DEFG4的ZD161-ZD164零检测信号,提供一个附加位“C”。也即,MUX8中的选通门(未示出)接收来自DEFG1-DEFG4和DEC2的信号,以图7B所示方式将“C”位作为“1”或“0”加以输出。具体说,当最高有效“1”位于位63至48或31至16的位组内时,“C”信号为“1”,以及当最高有效“1”位于位47-32或15-0的位组内时,“C”信号为“0”。
最后,具有图7B所示模式的“B”信号自NOR5输出端提取。具体说,当最高有效“1”位于位63至32的位组内时,“B”信号为“1”。此外,当最高有效“1”位于位31至0的位组内时,“B”信号为“0”。
相应地,如上所述,该64位实施例提供一个高速电路,既用于在64位数据域的全部位为“0”时输出一个零检测信号,又用于确定该数据域内前导“1”的位置,以便输出一个代表该数据内前导零的数量的二进制信号。如果需要,输出量“B”至“G”都可送至例如循环移位器或类似电路那样的移位器(未示出),以便将该64位数据串移位,从而将由该数据串代表的二进制数规格化。
虽然本发明是参照最佳实施例具体地加以显示和描述的,但熟悉技术的人知道,在不背离本发明的实质和范围的情况下,可作不同形式和细节的修改。