3.4 减法器
减法器用图3-9所示[2]的一种方法生成两个4位输入X和Y的差值D。在方法a中,每次xi < yi时,如果xi + 1 > 0,需要向xi + 1(下一高位)借1,然后在xi上加2。如果xi + 1 = 0,那么当xi + 2 > 0时,就向xi + 2借1,并把2加到xi + 1上。如果xi + 2 = 0,那么就向xi + 3借1,把2加到xi + 2上,等等。这个过程递归一直到xi≥yi,且di = xi - yi为0或1。在图中,x0 = 0小于y0 = 1;这样,需要从x1上借1。然而,因为x1 = 0,需要从x2借1。剩下的比特位也将进行相同的处理。此例不会产生借位输出,因为X = 12 = (1100)2大于Y = 3 = (0011)2,这样D = 12 - 3 = 9 = (1001)2。
在方法b中,每一次xi < yi时,都会把抵扣1加到yi + 1(下一高位)上,然后在xi上加2生成di = xi - yi为0或者1。在例子中,x0 = 0小于y0 = 1;这样,需要在y1上加上1,让y1 = 2且2加到x0上,使得x0 = 2。这样d0 = x0 - y0为1(2 - 1 = 1)。下一步,x1 = 0,小于y1 = 2;这样,再次需要把1加到y2上,使其为1,且2加到x1上,使其为2。结果为d1 =
2 - 2 = 0。剩下的比特位也按照相同的方法最终得到D = 9 = (1001)2。
n位的借位传播减法器(BPS)类似于n位的CPA,用n个1位减法器片组合而成。每一片都从X输入一位数,从Y输入一位数,然后一个借位/抵扣位(0或1)和输出一位差值和下一借位/抵扣位,如下第i位所示。n位BSP如图3-10所示。
对于第i位的借位和抵扣位加法器算法将在后续讨论。除了圆括号用于强制优先,所以展示了方法a的借位法和方法b的抵扣法概念,差值为d[i]的算式在两种算法中都是一样的。
减法算法
方法a:借位算法(圆括号展示如何进行借位)
表3-1和公式(3-13)展示了1位减法器片的真值表和逻辑表达式。真值表简单地决定了之前讨论两种减法算法中的一种。考虑到差值和借位(抵扣位)表达式与FA的和值和进位表达式相似。或者,先行借位减法器(BLA)可以用CLA的方法设计。