二进制数是否为三的倍数的检验方法和装置及检验芯片的制作方法

文档序号:6472197阅读:953来源:国知局
专利名称:二进制数是否为三的倍数的检验方法和装置及检验芯片的制作方法
技术领域
本发明涉及集成电路设计领域,特别地,涉及二进制数是否为三的倍数的 检验方法和装置及检验芯片。
背景技术
在集成电路设计中,在诸如ECC ( Error Checking and Correcting,错误检
查和纠正)算法的很多应用中,都需要判断一个数是否是三的倍数,然而现有
的数字电路基本都是开关电路,对于判断一个数是否是二的倍数比较容易,若
判断一个数是否是三的倍数,则显的比较吃力。
目前,判断一个数是否为三的倍数主要有以下两种方法
方法一将二进制输入的数据转换成十进制数,再将各个"权"位上的数
据相加,若相加之和取得的结果是三的倍数则此数是三的倍数。例如, (1111—1111)2 =(255)1。,而2 + 5 + 5 = 12,由于12是三的倍数,则(iiu—ini)2是
三的倍数。但该方法的主要缺陷是从二进制转化成十进制的过程比较复杂, 转换效率低,并且,当目标数字较大时,如20位的一个数字时,其需要使用 位宽^f艮长的减法器,而减法器的位宽过宽,将导致芯片面积的增大。
方法二将二进制输入数据迭代减三,最后的结果若是0,则证明输入数 据可以被三整除。这种方法可以扩展为迭代减去不大于这个数的最大的三的倍 数。该方法的主要缺陷是该方法要求减法器的位宽会很宽,因此也会导致占 用较大的芯片面积;而且,在实际判断中,需要迭代次数较多,有可能导致硬 件实现时,无法满足时序要求。
有鉴于此,需要本领域技术人员迫切解决的一个技术问题就是提供一种 三的倍数检验装置,从而克服现有技术中,数值转换复杂、所需减法器位宽较 长所导致的芯片面积相对较大,工作效率低等缺陷,从而,能够用较少的资源, 较快的运算效率,判断一个二进制数,特别是一个较大的数是否是3的倍数。

发明内容
本发明所要解决的技术问题是提供一种二进制数是否为三的倍数检验方 法、检验装置、芯片,基于该方法,能够用较少的资源,较快的运算效率,判 断一个二进制数,特别是一个较大的数是否是3的倍数。
为了解决上述问题,本发明公开了一种二进制数是否为三的倍数的4企验方 法,该方法预置包括至少一个被三整除的数的查找表,该4企验方法包括
确定所述二进制数大于4位,将所述二进制数拆分成低位组和高位组两部 分;确定所述高位组部分中的奇数位与偶数位,分别计算所述奇tt位、所述偶 数位的各位数字之和;判断所述奇数位的各位数字之和减去偶数位的各位数字 之和的差值是否大于O,若是,则将所述低位组表示的数减去所述差值,获取 执行结果;若否,将所述低位组表示的数减去所述差值的绝对值左移一位后, 获取二进制执行结果;在所述查找表中查找所述二进制执行结果,如查找到, 确定所述二进制数为三的倍数。
优选地,若所述二进制执行结果大于所述查找表中的最大数,则返回执行 将所述二进制执行结果拆分成低位组和高位组两部分的步骤。
优选地,在所述拆分步骤中,通过如下方式确定所述低位组的位数 令Y的值为大于或等于4的整数,对于不等式
3(iV-y) + l^ 2 一
依次带入各个Y值,判断所述不等式是否成立,将使所述不等式成立的 最小的Y的值确定为所述低位组的位数。
优选地,所述查找表中的元素为0、 3、 6、 9、 12、 15。
依据本发明另 一实施例,还公开了 一种用于判断二进制数是否为三的倍数 的才企验装置,所述才企验装置包括拆分单元、第一累加器、第二累加器、第一 减法器、第一选择器、第二减法器、查找表单元、第二选择器。
其中,拆分单元用于将所述二进制数被拆分成低位组和高位组两部分;第 一累加器用于计算所述二进制数的高位组部分奇数位^f立数字之和;第二累加 器用于计算所述二进制数的高位组部分偶数位各位数字之和;第一减法器,该减法器的正输入端与所述第一累加器的输出端相连接,该减法器的负输入端与 所述第二加法器的输出端相连接,用于计算述奇数位的各位数字之和减去偶数 位的各位数字之和的差值;第一选择器,该选择器的第一输入端的输入信号为 所述差值的符号位,该选择器的第二输入端的输入信号为所述差值,该选择器
的第三输入端的输入信号为所述差值通过一个反相器, 一个左移位器后的值; 第二减法器,该减法器的正输入端的信号为所述二进制数的低位组,该减法器
的负输入端与所述选择器的输出端相连接;查找表单元,该查找表单元与所述 第二减法器的输出端相连接,用于检查所述二进制数是否为三的倍数;第二选
择器,该选择器的第 一输入端与所述查找表的输出端相连接。
优选地,通过如下方式确定所述低位组的位数 令Y的值为大于或等于4的整数,对于不等式
3(iV-1Q + y 2 _
依次带入各个Y值,判断所述不等式是否成立,将使所述不等式成立的 最小的Y的值确定为所述低位组的位数。
优选地,所述查找表中的元素为0、 3、 6、 9、 12、 15。
依据本发明另一实施例,还公开了一种芯片,所述芯片包括检验装置,所 述检测装置包括所述检验装置包括拆分单元、第一累加器、第二累加器、 第一减法器、第一选择器、第二减法器、查找表单元、第二选择器。
其中,拆分单元用于将所述二进制数^:拆分成低位组和高位组两部分;第 一累加器用于计算所述二进制数的高位组部分奇数位^f立数字之和;第二累加 器用于计算所述二进制数的高位组部分偶数位各位数字之和;第一减法器,该
减法器的正输入端与所述第一累加器的输出端相连接,该减法器的负输入端与 所述第二加法器的输出端相连接,用于计算述奇数位的各位数字之和减去偶数 位的各位数字之和的差值;第一选择器,该选择器的第一输入端的输入信号为 所述差值的符号位,该选择器的第二输入端的输入信号为所述差值,该选择器 的第三输入端的输入信号为所述差值通过一个反相器, 一个左移位器后的值; 第二减法器,该减法器的正输入端的信号为所述二进制数的低位组,该减法器的负输入端与所述选择器的输出端相连接;查找表单元,该查找表单元与所述 第二减法器的输出端相连接,用于检查所述二进制数是否为三的倍数;第二选 择器,该选择器的第一输入端与所述查找表的输出端相连接。
与现有技术相比,本发明具有以下优点
本发明通过将二进制数拆分成低位组和高位组两部分,计算高位组中奇数 位各位数字之和与偶数位各位数字之和的差、并根据差的正、负情况采取相应
的手段获取执行结果,最后依据执行结果与查找表判断该数是否为3的倍数的 技术手段,避免了现有技术中,在判断一个二进制数是否为三的倍数时,需要 将该二进制数转化为十进制数的复杂过程,进而避免了将该二进制数各位数字 相加所得到的和过大而导致的判断过程中减法器的位宽过宽的缺陷;同时也避 免了现有技术中,二进制数迭代减三的方法所导致的迭代次数较多,无法满足 时序要求的缺陷。
举例来说,判断一个二进制数1110—0111—1011—0010是否为三的倍数,一 种方法是先将该二进制数转换为IO进制数,这是一个相对复杂的转换过程
(1110—0111—1011—0010) 2= ( 2"+2"+2i3+2^+29+28+27+25+24+2、20 ) 10 在这一步中,计算量比较大,而计算出来的十进制数,也是一个位数比较大的 数字,在接下来的判断中,所需选择的减法器的位宽相对较大;另一种判断的 方法是,直接采用迭代减三,虽然避开了复杂的数制转换,但所需的减法器的 位宽将要达到16位,并且由于迭代的次数较多,导致无法满足时序的要求。 而应用本发明的方法,判断该二进制数,仅仅需要一个位宽为5的减法器,并 且不需要迭代即可判断。相比而言,处理速度明显变快,且占用芯片面积小。


图1是根据本发明二进制数是否为三的倍数检验方法实施例的步骤流程
图2是根据本发明二进制数是否为三的倍数检验方法实施例中,低位组的 位数确定方法的步骤流程图3是^^皮判断数低位组部分和高位组部分的拆分示意图4是根据本发明二进制数是否为三的倍数检验方法实施例的步骤流程
8图5是根据本发明检验装置的实施例的结构示意图; 图6是根据本发明检验装置的实施例的结构示意图。
具体实施例方式
首先,对本发明的算法推导过程进行说明
二进制数的特点是其每一位上的数字所代表的权重的数与3的倍数只差1 或2,并且这种差值是有规律的,这种规律是若其权为奇数,则与3的倍数差 1,若其权为偶数,则与三的倍数差2。
举例i兑明
(1111—1111)2 二2 +26 +25 + 24 + 23 +22 +2、20 27 =128 = 129-1, 129可以被3整除 26 =64 = 66-2, 66可以被3整除 25 = 32 = 33-1, 33可以被3整除
2°=1 = 3-2, 3可以被3整除
由此可见,可以将一个二进制数字拆成若干个3的倍数之和,再从低位中 减去填充的1和2。
本发明的核心思想是将一个二进制数拆成高位组与低位组两部分,其中, 低位组的位数为减法器位宽,高位组的位数即该二进制数的总位数减去减法器 位宽位数。进一步分析,每个奇数位所代表的数与偶数位所代表的数之和为三 的倍数。因此,在作减法之前可以先计算有多少个奇数位的数,用该数减去偶 数位的个数数。设被判断数的高位组(高位即总位数减去减法器位宽位数后高 位的位数)中奇数位有p个l,偶数位有q个l, w=p-q。 w若为正,则该数能 否被3整除的判断,等价于判断低位组所表示的数减去w之差能否被3整 除;w若为负,则该数能否被3整除的判断,等价于判断低位组所表示的数 减去w个2能否被3整除。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。参照图1,图l是根据本发明二进制数是否为三的倍数检验方法实施例的
步骤流程图,包括如下步骤
步骤101:判断所述二进制数是否大于指定位数N(NM),若是,将所述 二进制数拆分成低位组和高位组两部分;例如,将N设置为4,将二进制数 拆分成Y位低位组和N-Y位高位组两部分。举例来说,对于二进制数, 1110—0111—101 I 0—1000可以拆分为5位低位组部分和11位高位组部分。
步骤102:预置一查找表,所述查找表包括从0至2N中所有能够被3整 除的数;在本例中,查找表应包括0到16之间所有能够被3整除的数,包括 0、 3、 6、 9、 12、 15 。
步骤103:确定所述高位组部分中的奇数位与偶数位,分别计算所述奇数 位、所述偶数位的各位数字之和;按照上面的例子,给该16位二进制数的各 位编序号从最左侧低位开始依次为第0位、第l位、第2位、...第15位, 其中,高位组包括第5位至第16位,其奇数位各位数字之和为1+1+1+0+1+1=5、 所述偶数位的各位数字之和0+1+1+0+1=3。
步骤104:判断所述奇数位的各位数字之和减去偶数位的各位数字之和的 差值是否大于O,若是,则将所述低位组表示的数减去所述差值,获取执行结 果;若否,将所述低位组表示的数作为被减数,减去将所述差值的绝对值左移 一位后,获取二进制执行结果;根据上面的例子,奇数位的各位数字之和-偶 数位的各位数字之和=5-3=2>0,属于前者,又所述低位组所表示的数01000 为8:即所述的执行结果为8-2=6。
步骤105:在所述查找表中查找所述二进制执行结果,如查找到,确定所 述二进制数为三的倍数。否则,不是三的倍数。在本例中,能够在查找表中查 到该执行结果,因此该二进制数1110—0111—1010—1000为3的倍数。
优选地,在所述拆分步骤中,通过如下方式确定所述低位组的位数,参照 图2,包括如下步骤
步骤201:令二进制数的总位数为N,令低位组的位数Y,则高位组中的位 数为N-Y,令Y的初始值为4;
步骤202:判断不等式3(iV-y) + y 2 —
是否成立,若成立,则执行步骤204;若不成立,执行步骤203; 步骤203:令Y的值自加l, X=N-Y;并且,返回执行步骤202; 步骤204:确定Y的值。
该低位组的位数确定方法主要是基于如下原理
设被判断数为N位,低位组的位数为Y位,X为需要拆成3的倍数的和 的权的位数,则设X二N-Y,数的拆分如图3所示。
当I为偶数时,则高位中每两位所代表的权重的数之和恰要补充一个3。
极端情况为高位中X位都有数,此时需要的被减数至少为3x主
2
当I为奇数时,则高位中每两位所代表的权重的数之和恰要补充一个3, 剩下的一个需要补充2或1。极端情况为高位中Z位都有数,当需要补充的数 是2时,此时需要的被减数至少为
当需要补无的数是l时,此时需要的被减数至少为。
X-丄
3x^i + l = 3x^2_ 2 2
综合上述两种情况,需要补充的数在极端情况下为:
x +丄
3x-+ 2 = 3x-^ =-
2 2 2
而F位二进制数能提供的最大的数为。 由上述分析可知,若W》4,则需要满足
1 — 1 ,
ix-+ 2 =
+
2
1131 + 1 ^
-《2y
2
优选地,所述查找表中的数值定为0、 3、 6、 9、 12、 15。因为如果一个 二进制数若是3的倍数,按照上述方法得到的所述执行结果都应该都应该是三 的倍数,为避免查找表中的数值过多,比较的次数过多,所以,该方法的一个 优选实施方式可以选定0、 3、 6、 9、 12、 15。应该说明的是本方法在此并 不做任何限定,查找表中也可以采用更多的数值,比如0、 3、 6、 9、 12、 15、 18、 21,或者更多的能被3整除的数。
下面结合一个具体实例来详细说明本发明是如何实现一个多为二进制数 是否为三的倍数的4企验过程
若判断二进制数1101—0110—1110是否为三的倍数,具体判断过程如下 首先预置一查找表,所述查找表包括0、 3、 6、 9、 12、 15;然后通过如下步 骤进行判断
步骤401:判断被判断二进制数1101—0110—1110是否大于4位?如果否, 则执行步骤402;如果是,执行步骤403。
因为该二进制数为16位,所以直接执行步骤403:
步骤403:计算高位组部分中奇数位各位数字之和与高位组部分中偶数位 各位数字之和的差。
根据该被判断的数,首先将所述二进制数拆分成Y位低位组和N-Y位高 位组两部分。其中,从Y二4开始,验证不等式
2
是否成立。对于这个数,将乂=8, Y-4代入不等式,不等式成立,因此, Y=4, X=8,不需要继续尝试新的Y值。并且,高位组部分中的奇数位各位数 字之和为2,偶数位各位数字之和为3,奇数位的各位数字之和减去偶数位的 各位数字之和的差值为W=2-3=-l。
步骤404:判断上述差值W是否大于O 若是,执行步骤405,若否,执 行步骤406。因为步骤403中得到的差值W=-l,所以小于O,执行步骤406 步骤406:计算低位组表示的二进制数与W的绝对值左移一位的结果之 差D。
因为低位组表示的数(1110) 2为14,将所述低位组表示的数减去所述差 值的绝对值左移一位后得到的结果,获取的执行结果14-1 x 2=12= ( 1100 ) 2。
步骤407:将D作为新的被判断数,返回执行步骤401,判断被判断二进 制数(1100) 2是否大于4位?
因为(1100)2为4位,执行步骤402,判断该数是否为O, 3, 6, 9, 12, 15之中的一个,因为(1100)2表示12,所述查找表中能够查到,该二进制数 (11010110—1110) 2为3的倍数。
这里需要说明的是若将所述低位组表示的数减去所述差值的绝对值左移 一位后得到的结果,获取的执行结果大于4位,也就是说在查找表中的最大值 15小于该执行结果,则需要进行迭代,具体方法是,将执行结果作为新的被 判断数进行判断,直到减法器在4位以内。对于一个26位的二进制数,低位 组应划定为5位,在具体的判断过程中,则需要进行两次迭代判断。
参照图5,图5是根据本发明检验装置的实施例的结构示意图,包括如下 结构
拆分单元508,用于将所述二进制数#皮拆分成低位组和高位组两部分; 第一累加器501,用于计算所述二进制数的高位组部分奇数位各位数字之
和;
第二累加器502,用于计算所述二进制数的高位组部分偶数位各位数字之
和;
第一减法器503,该减法器的正输入端与所述第一累加器的输出端相连接, 该减法器的负输入端与所述第二加法器的输出端相连接,用于计算述奇数位的 各位数字之和减去偶数位的各位数字之和的差值;
第 一选择器504,该选择器的第 一输入端的输入信号为所述差值的符号位, 该选择器的第二输入端的输入信号为所述差值,该选择器的第三输入端的输入 信号为所述差值通过一个反相器, 一个左移位器后的值;第二减法器505,该减法器的正输入端的信号为所述二进制数的低位组,
该减法器的负输入端与所述选择器的输出端相连接;
查找表单元506,该查找表单元与所述第二减法器的输出端相连接,用于 检查所述二进制数是否为三的倍数;
第二选择器507,该选择器的第一输入端与所述查找表的输出端相连接。
参照图6,图6是根据本发明检验装置的实施例的结构示意图,该装置可 以用于4企验低位组部分为4的二进制数。
根据本发明的另一方面,本发明还提供了一种芯片,该芯片包括所诉的检 验装置。该^企验装置的结构与上面的描述相同,在此不再赘述。
综上,在本发明中
通过将二进制数拆分成低位组和高位组两部分,计算高位组中奇数位各位 数字之和与偶数位各位数字之和的差、并根据差的正、负情况采取相应的手段 获取执行结果,最后依据执行结果与查找表判断该数是否为3的倍数的技术手 段,克服了现有技术中,数值转换复杂、所需减法器位宽较长所导致的芯片面 积相对较大,工作效率低等缺陷,从而,能够用最少的资源,最快的运算效率, 判断一个数,特别是一个较大的数是否是3的倍数。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的 都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即 可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简 单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种二进制数是否为三的倍数检验方法、检验装
了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同 时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用 范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种二进制数是否为三的倍数的检验方法,其特征在于,该检验方法包括判断所述二进制数是否大于指定位数N,若是,将所述二进制数拆分成低位组和高位组两部分,其中,所述指定位数N为大于1的整数;预置一查找表,所述查找表包括从0至2N中所有能够被3整除的数;确定所述高位组部分中的奇数位与偶数位,分别计算所述奇数位、所述偶数位的各位数字之和;判断所述奇数位的各位数字之和减去偶数位的各位数字之和的差值是否大于0,若是,则将所述低位组表示的数减去所述差值,获取执行结果;若否,将所述低位组表示的数减去所述差值的绝对值左移一位后,获取二进制执行结果;在所述查找表中查找所述二进制执行结果,如查找到,确定所述二进制数为三的倍数。
2、 根据权利要求1所述的方法,其特征在于,若所述二进制执行结果大 于所述查找表中的最大数,则返回执行将所述二进制执行结果拆分成低位组和 高位组两部分。
3、 才艮据权利要求2所述的方法,其特征在于,所述指定位数N为4。
4、 根据权利要求3所述的方法,其特征在于,在所述拆分步骤中,通过 如下方式确定所述低位组的位数令Y的值为大于或等于4的整数,对于不等式翠—2 _依次带入各个Y值,判断所述不等式是否成立,将使所述不等式成立的 最小的Y的值确定为所述低位组的位数。
5、 才艮据权利要求4所述的方法,其特征在于,所述查找表中的元素为0、 3、 6、 9、 12、 15。
6、 一种用于判断二进制数是否为三的倍数的检验装置,其特征在于,所述检验装置包括拆分单元,用于将所述二进制数被拆分成低位组和高位组两部分; 第一累加器,用于计算所述二进制数的高位组部分奇数位各位数字之和; 第二累加器,用于计算所述二进制数的高位组部分偶数位各位数字之和; 第一减法器,该减法器的正输入端与所述第一累加器的输出端相连接,该减法器的负输入端与所述第二加法器的输出端相连接,用于计算述奇数位的各位数字之和减去偶数位的各位数字之和的差值;第一选择器,该选择器的第一输入端的输入信号为所述差值的符号位,该选择器的第二输入端的输入信号为所述差值,该选择器的第三输入端的输入信号为所述差值通过一个反相器, 一个左移位器后的值;第二减法器,该减法器的正输入端的信号为所述二进制数的低位组,该减法器的负输入端与所述选择器的输出端相连接;查找表单元,该查找表单元与所述第二减法器的输出端相连接,用于检查所述二进制数是否为三的倍数;第二选择器,该选择器的第一输入端与所述查找表的输出端相连接。
7、 根据权利要求6所述的检测装置,其特征在于,通过如下方式确定所 述低位组的位数令Y的值为大于或等于4的整数,对于不等式2 一依次带入各个Y值,判断所述不等式是否成立,将使所述不等式成立的 最小的Y的值确定为所述低位组的位数。
8、 根据权利要求7所述的检测装置,其特征在于,所述查找表中的元素 为0、 3、 6、 9、 12、 15。
9、 一种用于实现权利要求8所述方法的芯片,所述芯片包括检验装置, 其特征在于,所述检测装置包括拆分单元,用于将所述二进制数被拆分成低位组和高位组两部分; 第一累加器,用于计算所述二进制数的高位组部分奇数位各位数字之和;第二累加器,用于计算所述二进制数的高位组部分偶数位各位数字之和;第一减法器,该减法器的正输入端与所述第一累加器的输出端相连接,该 减法器的负输入端与所述第二加法器的输出端相连接,用于计算述奇数位的各位数字之和减去偶数位的各位数字之和的差值;第一选择器,该选择器的第一输入端的输入信号为所述差值的符号位,该 选择器的第二输入端的输入信号为所述差值,该选择器的第三输入端的输入信 号为所述差值通过一个反相器, 一个左移位器后的值;第二減法器,该减法器的正输入端的信号为所述二进制数的低位组,该减 法器的负输入端与所述选择器的输出端相连接;查找表单元,该查找表单元与所述第二减法器的输出端相连接,用于检查 所述二进制数是否为三的倍数;第二选择器,该选择器的第 一输入端与所述查找表的输出端相连接。
全文摘要
本发明提供了一种二进制数是否为三的倍数的检验方法,包括判断二进制数是否大于指定位数N(N>1),若是,将二进制数拆分成低位组和高位组两部分;预置一查找表,查找表包括从0至2<sup>N</sup>中所有能够被3整除的数;若奇数位的各位数字之和减去偶数位的各位数字之和的差值大于0,则将低位组表示的数减去差值,获取执行结果;若小于0,将低位组表示的数作为被减数,减去将差值的绝对值左移一位后,获取二进制执行结果;在查找表中查找二进制执行结果,如查找到,确定二进制数为三的倍数。通过本发明,避免了现有技术中,检验二进制数是否为三的倍数时,数制转换复杂、减法器位宽较长,迭代次数多的缺陷,进而用最少的资源,最快的效率实现判断。
文档编号G06F7/38GK101464788SQ20081024740
公开日2009年6月24日 申请日期2008年12月31日 优先权日2008年12月31日
发明者杨 邹 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1