专利名称:一种集成电路中的数据运算方法及装置的制作方法
技术领域:
本发明涉及集成电路中的数据处理技术,具体涉及一种集成电路中的数据运算方法及装置。
背景技术:
在利用集成电路进行数据处理的过程中,通常需要对数据进行截断运算,即将位宽为n比特(bit)的二进制补码数据进行右移运算。例如,二进制补码数据为x,位宽为n比特,右移m位(n>m)后,得到(n-m)比特的二进制补码数据y。
目前,实现截断运算的方法,主要有以下三种第一种,直接舍弃右移后的低位数据,即舍弃x的低位m比特数据,只保留高位的(n-m)比特数据。表述公为y[n-m-1:0]=x[n-1:m]。
第二种,效仿原码进行四舍五入。根据截掉的低位数据的最高位是否为1,判断是否需要对截断运算后得到的高位数据加1,若截掉的低位数据的最高位为1,则截断后得到的高位数据加1,若为0,则直接截掉低位数据。表述公式为y[n-m-1:0]=x[n-1:m]+x[m-1]。
第三种,考虑到负数的特殊性,只对正数有进位时才加1。表述公式为y[n-m-1:0]=x[n-1:m]+~x[n-1]&x[m-1]。
其中,“~”表示非运算,“&”表示与运算。
然而,通过上述方法进行截断运算会产生单向的截断误差,在精度要求较高的情况下,如计量领域,会造成不必要的精度损失。而且,对通过模/数转换得到的二进制数据进行抽取滤波时,截断误差将直接降低该数据的信噪比。
而且,一些特殊情况下,会导致错误的四舍五入。对于负数,当截断部分是负向的最大值时,会得出错误的四舍五入结果,例如,二进制补码为11010(-6),截掉低2位,进位加1后得到错误的结果111(-1)。对于正数,当截断后的数据为正向最大值时,也会得出错误的四舍五入结果,例如,二进制补码为01111010(122),截掉低4位,进位加1后得到错误的结果1000(-8)。
可见,现有集成电路中的数据运算方法不能够保证运算的正确性,从而使得集成电路实现数据处理的可靠性不高。
发明内容
有鉴于此,本发明的一个主要目的在于提供一种集成电路中的数据运算方法,能够提高集成电路实现数据处理的可靠性。
本发明的另一个主要目的在于提供一种集成电路中的数据运算装置,该装置能够提高集成电路实现数据处理的可靠性。
为达到上述目的,本发明的技术方案是这样实现的一种集成电路中的数据运算方法,包括以下步骤在二进制补码数据为正数时,判断截断后得到的高位数据是否为正向最大值,如果是,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果;否则,接受截去的低位数据的进位,将截断后得到的高位数据与进位的和作为截断运算结果;在二进制补码数据为负数时,判断截去的低位数据的最高位为0还是为1,如果为0,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果;如果为1,则判断截去的低位数据除最高位以外的其他位是否全为0,若是,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果,否则接受截去的低位数据的进位,将截断后得到的高位数据与进位的和作为截断运算结果。
在二进制补码数据为正数时,所述判断截断后得到的高位数据是否为正向最大值为对该高位数据除最高位置外的其他位数据进行与运算,如果得到的结果为1且该高位数据的最高位为0,则确定截断后得到的高位数据为正向最大值。
在二进制补码数据为正数时,所述接受截去的低位数据的进位之前,进一步包括若截去的低位数据的最高位为1,则确定进位为1,若截去的低位数据的最高位为0,则确定进位为0。
在二进制补码数据为负数时,所述判断截去的低位数据的除最高位以外的其他位是否全为0为对该低位数据除最高位以外的其他位数据进行或运算,如果得到的结果为0,则确定截去的低位数据的除最高位以外的其他位全为0;如果得到的结果为1,则确定截去的低位数据的除最高位以外的其他位不全为0。
在二进制补码数据为负数时,所述截去的低位数据的进位为1。
一种集成电路中的数据运算装置,该装置包括截断运算单元、正负数判断单元、正数进位判决单元、负数进位判决单元和截断运算结果输出单元;截断运算单元,截取输入的二进制补码数据的高位数据;正负数判断单元,输入二进制补码数据的符号位,并根据所述符号位判断所述二进制补码数据是正数还是负数,且当为正数时,启动所述正数进位判决单元,否则启动所述负数进位判决单元;正数进位判决单元,输入所述高位数据,判断所述高位数据是否为正向最大值,并在所述高位数据不为正向最大值时,向所述截断运算结果输出单元输出进位信号;负数进位判决单元,输入所述二进制补码数据的被截取高位数据后剩下的低位数据,判断所述低位数据的最高位是否为1,并且所述低位数据的除最高位以外的其它位数据是否不全为0,是则向所述截断运算结果输出单元输出进位信号;截断运算结果输出单元,根据接收到的由截断运算单元输入的高位数据、以及来自所述正数进位判决单元或负数进位判决单元输出的进位信号,获得并输出截断运算的最后结果。
所述正数进位判决单元可以进一步输入所述二进制补码数据的被截取高位数据后剩下的低位数据的最高位,并在其向所述截断运算结果输出单元输出进位信号时,将所述最高位作为进位信号输出。
所述负数进位判决单元可以进一步输入所述二进制补码数据的被截取高位数据后剩下的低位数据的最高位,并在其向所述截断运算结果输出单元输出进位信号时,将所述最高位作为进位信号输出。
所述正负数判断单元在输入的二进制补码数据的符号位为0时,判断所述二进制补码数据是正数,则对所述符号位取反后,作为启动信号输出给所述正数进位判决单元;在所述符号位为1时,判断二进制补码数据为负数,则将该符号位直接作为启动信号,输出给所述负数进位判决单元。
所述正数进位判决单元可以包括第一与门、非门和第二与门;第一与门,对二进制补码数据截断后得到的高位数据除去符号位外的其余各个位进行与运算,并将运算结果输出给非门;非门,对来自与门的运算结果取反,并将取反结果输出给第二与门;第二与门,对来自正负数判断单元的取反结果、来自非门的取反结果和截去的低位数据的最高位进行与运算,并将运算结果作为进位信号,输出给截断运算结果输出单元。
所述负数进位判决单元可以包括或门和与门;或门,对截去的低位数据中除最高位外的其余各个位进行或运算,并将结果输出给与门;与门,对来自正负数判断单元的二进制补码数据的符号位、截去的低位数据的最高位以及或门输出的运算结果,进行与运算,并将运算结果作为进位信号输出给截断运算结果输出单元。
所述截断运算结果输出单元可以包括第一加法器和第二加法器;第一加法器,对来自截断运算单元的高位数据和来自第一与门的运算结果进行加法运算,并将加法运算的结果,输出给第二加法器;第二加法器,对来自第一加法器的运算结果和来自第三与门的运算结果进行加法运算,得到截断运算的最后结果。
由本发明的技术方案可见,本发明提供的集成电路中的数据运算方案,在二进制补码数据为正时,判断其截断后得到的高位数据是否为正向最大值,然后根据数据符号和判断结果进行截断运算。在二进制补码数据为负时,先判断截去的低位数据的最高位为0还是为1,如果为1则判断截去的低位数据除最高位以外的其他位是否全为0;然后根据判断结果进行截断运算。本发明集成电路中的数据运算方法及装置保证了运算过程中四舍五入的正确性,提高了集成电路中的数据运算的正确性,从而提高了集成电路实现数据处理的可靠性。
图1为本发明集成电路中的数据运算方法的流程图;图2为本发明集成电路中的数据运算装置一个较佳实施例的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
图1为本发明集成电路中的数据运算方法的流程图,如图1所示,包括以下步骤步骤101,判断二进制补码数据是正数还是负数,若是正数,则执行步骤102,若是负数,则执行步骤105。
本步骤中,如果二进制补码数据的符号位为0,则确定该数据为正数;如果二进制补码数据的符号位为1,则确定该数据为负数。
步骤102,判断截断后得到的高位数据是否为正向最大值,若是,则执行步骤103,否则执行步骤104。
本实施例中,对具有符号位的n比特的二进制数来说,其正向最大值是指2n-1。判断正向最大值的方法可以为对该高位数据除最高位置外的其他位数据进行与运算,如果得到的结果为1且该高位数据的最高位为0,则确定截断后得到的高位数据为正向最大值。
步骤103,直接舍弃低位的截断部分,不接受低位数据的进位,仅将截断后得到的高位数据作为截断运算结果,并结束本流程。
截断后得到的高位数据为正向最大值,如果此时再接受低位数据的进位,则会产生溢出,得到错误的运算结果。因此,本步骤中,直接舍弃截去的低位数据。
步骤104,接受低位数据的进位,求截断后得到的高位数据与进位的和,将得到的和作为截断运算结果,并结束本流程。
本步骤之前,若截去的低位数据的最高位为1,则确定进位为1,若截去的低位数据的最高位为0,则确定进位为0。
步骤105,判断截去的低位数据的最高位为0还是为1,如果是0,则执行步骤106,如果是1,则执行步骤107。
步骤106,直接舍弃低位的截断部分,不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果,并结束本流程。
本步骤中,截断后得到的高位数据不接受截去的低位数据的进位,该负数的绝对值增加,即进行了“五入”的运算。例如,一个负数的二进制补码为1100010(-30),截掉低3位010,此时,截掉数据的最高位为0,则直接舍弃低位的截断部分,最后的截断运算结果为1100(-4)。
步骤107,判断截去的低位数据除最高位以外的其他位是否全为0,若是,则执行108,否则,执行109。
判断截去的低位数据除最高位以外的其他位是否全为0的方法可以为对该低位数据除最高位以外的其他位数据进行或运算,如果得到的结果为0且该低位数据的最高位为1,则确定截去的低位数据的除最高位以外的其他位全为0;如果得到的结果为1,则确定截去的低位数据的除最高位以外的其他位不全为0。
步骤108,直接舍弃低位的截断部分,不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果,并结束本流程。
本步骤中,截断后得到的高位数据不接受截去的低位数据的进位,该负数的绝对值增加,即对其进行了“五入”的运算。例如,一个负数的二进制补码为1100100(-28),截掉低3位100,此时,截去的低位数据的最高位为1,且截去的低位数据除最高位以外的其他位全为0,则直接舍弃低位的截断部分,最后的截断运算结果为1100(-4)。
步骤109,接受截去的低位数据的进位,将截断后得到的高位数据与进位的和作为截断运算结果,并结束本流程。
本步骤中,截断后得到的高位数据接受截去的低位数据的进位,该负数的绝对值减小,即对其进行了“四舍”的运算。例如,一个负数的二进制补码为1100110(-26),截掉低3位110,此时,截去的低位数据的最高位为1,且截去的低位数据除最高位以外的其他位不全为0,则截断后得到的高位数据接受低位数据的进位,最后的截断运算结果为1101(-3)。
上述流程也可以表示为逻辑关系表达式。
设需截断运算的补码为x,位宽为n比特,将其右移m位(n>m)后,得到(n-m)比特的数据y,与如图1所示的方法对应的逻辑关系表达式可以为y[n-m-1:0]=x[n-1:m]+(~x[n-1]&x[m-1]&~(&x[n-2:m]))+(x[n-1]&x[m-1]&(|x[m-2:0]))其中,“~”表示非运算,“&”表示与运算,“|”则表示或运算。
基于上述逻辑关系表达式,本实施例中的集成电路中的数据运算方法可以通过各种逻辑电路来实现。
参见图2,为本发明集成电路中的数据运算装置一个较佳实施例的结构示意图。该装置包括截断运算单元201、正负数判断单元202、正数进位判决单元、负数进位判决单元和截断运算结果输出单元。
同样,此实施例中,设需进行截断运算的补码为x,位宽为n比特,将其右移m位(n>m)后,得到(n-m)比特的二进制补码数据y。
截断运算单元201,截取输入的二进制补码数据x的高位数据,即x[n-1:m],并将其输出给截断运算结果输出单元。
正负数判断单元202,输入二进制补码数据x的符号位,并根据符号位判断二进制补码数据是正数还是负数,且当为正数时,启动正数进位判决单元,否则启动负数进位判决单元。
当输入的符号位为0时,判断二进制补码数据x是正数,则对符号位取反后,作为启动信号输出给正数进位判决单元;在符号位为1时,判断二进制补码数据为负数,则将该符号位直接作为启动信号,输出给所述负数进位判决单元。
正数进位判决单元,输入二进制补码数据x的高位数据、截去的低位数据的最高位,判断高位数据是否为正向最大值,并在高位数据不为正向最大值时,向截断运算结果输出单元输出进位信号,所述进位信号为截去的低位数据的最高位。
负数进位判决单元,输入截去的低位数据,判断截去的低位数据的最高位是否为1,并且低位数据的除最高位以外的其它位数据是否不全为0,是则向截断运算结果输出单元输出进位信号,所述进位信号为截去的低位数据的最高位。
截断运算结果输出单元,根据接收到的由截断运算单元201输入的高位数据、以及来自所述正数进位判决单元或负数进位判决单元输出的进位信号,获得并输出截断运算的最后结果。
正负数判断单元202可以为非门,二进制补码数据x的符号位进入正负数判断单元202后,分为两路,一路输入与门207,一路输入所述非门,所述非门对符号位取反后输入第二与门205。符号位,即逻辑表达式中的x[n-1]。对符号位取反,即逻辑表达式中的~x[n-1]。
所述的正数进位判决单元可以包括第一与门203、非门204和第二与门205。所述的负数进位判决单元可以包括或门206和与门207。所述的截断运算结果输出单元包括可以第一加法器208和第二加法器209。
第一与门203,对二进制补码数据x截断后得到的高位数据除去符号位外的其余各个位进行与运算,并将运算结果,即&x[n-2:m]),输出给非门204。
非门204,对来自第一与门203的运算结果&x[n-2:m])取反,并将取反结果,即~(&x[n-2:m]),输出给第二与门205。
第二与门205,对来自正负数判断单元202的取反结果~x[n-1]、来自非门204的取反结果~(&x[n-2:m])和截去的低位数据的最高位x[m-1]进行与运算,并将运算结果,即~x[n-1]&x[m-1]&~(&x[n-2:m])作为进位信号,输出给截断运算结果输出单元。
或门206,对截去的低位数据中除最高位外的其余各个位进行或运算,并将结果,即&(|x[m-2:0]),输出给与门207。
与门207,对来自正负数判断单元202的二进制补码数据x的符号位x[n-1]、截去的低位数据的最高位x[m-1]以及或门206输出的运算结果&(|x[m-2:0]),进行与运算,并将运算结果,即x[n-1]&x[m-1]&(|x[m-2:0])作为进位信号,输出给截断运算结果输出单元。
第一加法器208,对截断运算单元201输出的高位数据x[n-1:m]和来自第二与门205的运算结果进行加法运算,并将运算结果,即x[n-1:m]+(~x[n-1]&x[m-1]&~(&x[n-2:m])),输出给第二加法器209。
第二加法器209,对来自第一加法器208的运算结果x[n-1:m]+(~x[n-1]&x[m-1]&~(&x[n-2:m]))和来自与门207的运算结果x[n-1]&x[m-1]&(|x[m-2:0])进行加法运算,得到截断运算的最后结果,即x[n-1:m]+(~x[n-1]&x[m-1]&~(&x[n-2:m]))+(x[n-1]&x[m-1]&(|x[m-2:0]))。
其中,第一与门203和非门204可用一个与非门代替,对截断后的高位数据除掉最高位的其余各个位进行与非运算后,将结果输出给第二与门205;第一加法器208和第二加法器209可用一个三位加法器代替。图2只是本发明实施例中的一个较佳实施例而已,基于本发明实施例中的运算方法和逻辑表达式,可有多种实现电路,这里不再一一列举。例如,直接将逻辑表达式输入到可编程逻辑器件中,即可实现多种电路结构,均能够实现本发明的运算方法。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种集成电路中的数据运算方法,其特征在于,包括以下步骤在二进制补码数据为正数时,判断截断后得到的高位数据是否为正向最大值,如果是,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果;否则,接受截去的低位数据的进位,将截断后得到的高位数据与进位的和作为截断运算结果;在二进制补码数据为负数时,判断截去的低位数据的最高位为0还是为1,如果为0,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果;如果为1,则判断截去的低位数据除最高位以外的其他位是否全为0,若是,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果,否则接受截去的低位数据的进位,将截断后得到的高位数据与进位的和作为截断运算结果。
2.如权利要求1所述的方法,其特征在于,在二进制补码数据为正数时,所述判断截断后得到的高位数据是否为正向最大值为对该高位数据除最高位置外的其他位数据进行与运算,如果得到的结果为1且该高位数据的最高位为0,则确定截断后得到的高位数据为正向最大值。
3.如权利要求1所述的方法,其特征在于,在二进制补码数据为正数时,所述接受截去的低位数据的进位之前,进一步包括若截去的低位数据的最高位为1,则确定进位为1,若截去的低位数据的最高位为0,则确定进位为0。
4.如权利要求1所述的方法,其特征在于,在二进制补码数据为负数时,所述判断截去的低位数据的除最高位以外的其他位是否全为0为对该低位数据除最高位以外的其他位数据进行或运算,如果得到的结果为0,则确定截去的低位数据的除最高位以外的其他位全为0;如果得到的结果为1,则确定截去的低位数据的除最高位以外的其他位不全为0。
5.如权利要求1所述的方法,其特征在于,在二进制补码数据为负数时,所述截去的低位数据的进位为1。
6.一种集成电路中的数据运算装置,其特征在于,包括截断运算单元、正负数判断单元、正数进位判决单元、负数进位判决单元和截断运算结果输出单元;截断运算单元,截取输入的二进制补码数据的高位数据;正负数判断单元,输入二进制补码数据的符号位,并根据所述符号位判断所述二进制补码数据是正数还是负数,且当为正数时,启动所述正数进位判决单元,否则启动所述负数进位判决单元;正数进位判决单元,输入所述高位数据,判断所述高位数据是否为正向最大值,并在所述高位数据不为正向最大值时,向所述截断运算结果输出单元输出进位信号;负数进位判决单元,输入所述二进制补码数据的被截取高位数据后剩下的低位数据,判断所述低位数据的最高位是否为1,并且所述低位数据的除最高位以外的其它位数据是否不全为0,是则向所述截断运算结果输出单元输出进位信号;截断运算结果输出单元,根据接收到的由截断运算单元输入的高位数据、以及来自所述正数进位判决单元或负数进位判决单元输出的进位信号,获得并输出截断运算的最后结果。
7.如权利要求6所述的装置,其特征在于,所述正数进位判决单元进一步输入所述二进制补码数据的被截取高位数据后剩下的低位数据的最高位,并在其向所述截断运算结果输出单元输出进位信号时,将所述最高位作为进位信号输出。
8.如权利要求6所述的装置,其特征在于所述负数进位判决单元进一步输入所述二进制补码数据的被截取高位数据后剩下的低位数据的最高位,并在其向所述截断运算结果输出单元输出进位信号时,将所述最高位作为进位信号输出。
9.如权利要求6、7或8所述的装置,其特征在于所述正负数判断单元在输入的二进制补码数据的符号位为0时,判断所述二进制补码数据是正数,则对所述符号位取反后,作为启动信号输出给所述正数进位判决单元;在所述符号位为1时,判断二进制补码数据为负数,则将该符号位直接作为启动信号,输出给所述负数进位判决单元。
10.如权利要求9所述的装置,其特征在于所述正数进位判决单元包括第一与门、非门和第二与门;第一与门,对二进制补码数据截断后得到的高位数据除去符号位外的其余各个位进行与运算,并将运算结果输出给非门;非门,对来自与门的运算结果取反,并将取反结果输出给第二与门;第二与门,对来自正负数判断单元的取反结果、来自非门的取反结果和截去的低位数据的最高位进行与运算,并将运算结果作为进位信号,输出给截断运算结果输出单元。
11.如权利要求9所述的装置,其特征在于,所述负数进位判决单元包括或门和与门;或门,对截去的低位数据中除最高位外的其余各个位进行或运算,并将结果输出给与门;与门,对来自正负数判断单元的二进制补码数据的符号位、截去的低位数据的最高位以及或门输出的运算结果,进行与运算,并将运算结果作为进位信号输出给截断运算结果输出单元。
12.如权利要求11所述的装置,其特征在于,所述截断运算结果输出单元包括第一加法器和第二加法器;第一加法器,对来自截断运算单元的高位数据和来自第一与门的运算结果进行加法运算,并将加法运算的结果,输出给第二加法器;第二加法器,对来自第一加法器的运算结果和来自第三与门的运算结果进行加法运算,得到截断运算的最后结果。
全文摘要
本发明公开了一种集成电路中的数据运算方法,在二进制补码数据为正数时,判断截断后得到的高位数据是否为正向最大值,根据数据符号和判断结果进行截断运算;在二进制补码数据为负数时,判断截去的低位数据的最高位为0还是为1,如果为0,则不接受截去的低位数据的进位,仅将截断后得到的高位数据作为截断运算结果;如果为1则判断截去的低位数据除最高位以外的其他位是否全为0;然后根据判断结果进行截断运算。本发明还公开了一种集成电路中的数据运算装置。本发明的数据运算方法和装置保证了运算过程中四舍五入的正确性,从而提高了集成电路实现数据处理的可靠性。
文档编号G06F7/499GK1975661SQ200610167900
公开日2007年6月6日 申请日期2006年12月20日 优先权日2006年12月20日
发明者范志军, 汪源 申请人:北京中星微电子有限公司