一种由补码求原码绝对值的方法

文档序号:6598650阅读:897来源:国知局

专利名称::一种由补码求原码绝对值的方法
技术领域
:本发明属于电子
技术领域
,具体涉及一种补码求绝对值方法。
背景技术
:在集成电路设计过程中,人们经常会遇到求补码的绝对值运算。而补码转换成原码通常会采用附图1所示的取反加一的方法,先将补码的各位取反,再加一,得到最终的结果。因为取反加一的过程需要大量的半加器和反相器,所以消耗的器件比较多。而且取反加一的关键路径很长,特别是位数比较多的情况下,面积和成本相应比较高,计算速度也比较慢。
发明内容本发明针对现有技术的不足,提供了一种补码求绝对值方法。应用该方法可以节省一定的基本单元,缩短关键路径上的延时。在芯片的设计中,特别是位数多的情况下,可节约器件和降低计算时间。本发明解决技术问题所采用的方案是一种补码求绝对值方法,其特征在于,参加运算的数必须为负数的补码,步骤如下(3)将补码A送入编码器C,得到编码后的数B。(4)将编码后得到的数B与原来的补码A逐位异或,最后得到补码的绝对值D。编码器C的特征在于编码规律为从补码A的最低位开始逐位检查,直到找出第一个1出现的位置A[X],然后输出Β[Χ:0]为0,B[N-1:X+1]为1。具体步骤如下第一步检查补码A的A位是否为1。如果A为1,则输出B为0,B[N-1:1]位输出为1。如果A为0,继续第二步。第二步检查补码A的A[l]位是否为1。如果A[l]为1,则输出B[1:0]都为0,B[N-1:2]位输出为1。如果A[l]为0,继续第三步。第三步检查补码A的A[2]位是否为1。如果A[2]为1,则输出B[2:0]都为0,B[N-1:3]输出为。.如果A[2]为0,继续第四步。.......这样从最低位A到A[N_1]位逐位检查第一个1出现的位置,对应输出见表1,表中Y表示取值为0或者1。在输入数据中,Y...表示Α[Ν-3:3]中取任意值。0...表示Α[Ν-3:3]数据全部为0。在输出数据中,1...表示Β[Ν-3:3]全部为1,0...表示Β[Ν_3:3]全部为0。特别地,从最低位开始检查,当Α[Ν-2:0]都为0的时候,不管Α[Ν_1]输入是0还是1,输出从Β[Ν-1:0]都为0.表1:<table>tableseeoriginaldocumentpage4</column></row><table>从表1可以总结出B的每一位的输出表达式为B=0B[l]=AB[2]=A+A[1]B[N-2]=A+A[l]+A[2]+......+A[N_3]B[N-1]=A+A[l]+A[2]+......+A[N-2]整个电路的原理图参见图2。本发明原理的特点是,用编码的方法取代了传统的用半加器加一的方法,来达到优化的目的。本发明的有益效果是,在芯片设计中为实现补码转原码的运算,使用本发明提供的方法,可节省一定的基本单元,缩短关键路径上的延时,从而使设计的产品面积变小,功耗降低,成本降低,且计算速度得到提高。图1是现有常用的补码转原码方法示意图;图2是本发明的求补码的绝对值的示意图;图3是4位编码器C的电路图。具体实施例方式下面结合附图和实例对本发明作进一步说明,本发明的目的和效果将更加明显,但本发明的实施不限于此。如图2,为本发明的求补码的绝对值的示意图。补码A送入编码器C,得到编码后的数B,所述补码A为负数的补码;将编码后得到的数B与原来的补码A逐位异或,最后得到补码的绝对值D。下面以4位的负数的补码求绝对值作为例子,4位的编码器C的编码原理如表2所示,表2<table>tableseeoriginaldocumentpage5</column></row><table>根据上表,我们可以写出对应的B[(N-1):1]的各位的表达式B=OB[1]=AB[2]=A+A[1]B[3]=A+A[l]+A[2]具体实现的电路如图3所示,图中的in[3…0]为补码A的输入,out[3…0]为输出数B。本实施方式求绝对值处理方法具体步骤如下(1)将补码A送入编码器C,得到编码后的数B。(2)将编码后得到的数B与原来的补码A逐位异或,得到补码的绝对值D。例如,补码A为1010(-6),其中最高位为符号位。步骤(1),通过编码后对应输出B为1100步骤(2),A与B逐位异或11001010=0110,最终得到结果D=0110.结果正确。8位,16位,32位等的电路可以用4位的电路进行级联。下面列举采用以上方法与使用传统取反加一的方法所占用资源情况。采用不同方法占用资源对比如表3所示,表3中“所有逻辑单元”中的not表示非门,xor表示或非门,and表示与门。“在关键路径延时”上,and表示一个与门的延时,xor表示一个异或门的延时,or表示一个或门的延时。表3<table>tableseeoriginaldocumentpage6</column></row><table>由上表可以看出,位数越高,面积优势比较明显,延时优势下降。针对不同的面积和延时的需要,采用不同的位数优化。权利要求一种由补码求原码绝对值的方法,其特征在于包括如下步骤(1)将补码A送入编码器C,得到编码后的数B,所述补码A为负数的补码;(2)将编码后得到的数B与原来的补码A逐位异或,最后得到补码的绝对值D。2.根据权利要求1所述的方法,特征在于编码器C的编码过程为从补码A的最低位开始逐位检查,直到找出第一个1出现的位置A[X],然后输出Β[Χ:0]都为0,Β[Ν-1:Χ+1]都为1,其中,N为编码器的位数,X为0N-I中的某个整数,X越大,表示A[X]、B[X]所在的位越高,Β[Χ:0]表示数B中B[X]至B的所有位,Β[Ν-1:Χ+1]表示数B中B[N-1]至B[X+1]的所有位。3.根据权利要求2所述的方法,特征在于编码器C的编码步骤具体如下第一步检查补码A的A位是否为1,如果々为1,则输出BW]为0,B[N-1]1]位输出为1,如果A为0,继续第二步;第二步检查补码A的A[l]位是否为1,如果A[l]为1,则输出B[10]都为0,B[N_12]位输出为1,如果A[l]为0,继续第三步;第三步检查补码A的A[2]位是否为1,如果々[2]为1,则输出B[20]都为0,B[N_13]输出为1,如果A[2]为0,继续第四步;这样从最低位A依次到最高位A[N-1]位逐位检查第一个1出现的位置,然后输出数B各位的值。4.根据权利要求3所述的方法,其特征在于编码器C的编码过程中,从最低位开始检查,当A[N-20]都为0的时候,不管A[N-1]输入是0还是1,输出从B[N_10]都为0。5.根据权利要求4所述的方法,其特征在于B的每一位的输出表达式为B=0B[l]=AB[2]=A+A[1]B[N-2]=A+A[l]+A[2]+......+A[N_3]B[N-1]=A+A[l]+A[2]+......+A[N-2],全文摘要本发明提供一种由补码求原码绝对值的方法,可用于完成补码原码转换。该方法将要转换的补码A通过编码器C得到编码后的结果B,再把B与原来的补码A异或,最终得到补码的绝对值D。使用本发明提供的方法,与常规的技术相比可节省一定的基本单元,面积变小,功耗降低,且关键路径上的延时变短,计算速度提高。文档编号G06F7/00GK101819513SQ20101011599公开日2010年9月1日申请日期2010年2月11日优先权日2010年2月11日发明者姜小波,范永杰申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1