教材评价:

https://book.douban.com/subject/2308122/

下载地址:

http://m.wdfxw.net/Fulltext44364042.htm

这次回顾第5章:数的表示和算术电路。

无符号数的加法

全加器的分解

只对两个位(比特)进行加运算的电路叫做“半加器”,半加器的输出为和以及进位:

当多位(比特)数相加时,就需考虑前一位的进位,考虑如下例子:

所以完整的加法器,称为全加器,有三个输入$c_i,x_i,y_i$,其真值表,卡诺图以及电路图如下:

其中$\oplus$表示异或运算,即:

完整的公式如下:

全加器的分解

全加器可以分解为两个半加器:

行波进位加法器

有符号数

负数
符号——数值的表示法

正数与负数的数值用相同的方法来表示,用专门的正负号来区分数的正负,这种方式叫做数的“符号——数值”表示法。

例子:

$1$的补码表示法

对于$n$位负数$K$,$P=|K|$,使用$(2^n-1)-P$表示该负数,实际操作时只要将$P$的每一位取反即可。

$2$的补码表示法

对于$n$位负数$K$,$P=|K|$,使用$2^n-P$表示该负数,即$1$的补码表示法加$1$。

可以得出,若$n$位数$B=b_{n-1} b_{n-2} \cdots b_{1} b_{0}$是$2$的补码表示法表示的,那么

对比

实际中一般使用$2$的补码表示法,因为此时$0$的表示唯一,并且可以使用其二进制表示做加减运算(如果没有溢出)。

加法器和减法器单元

我们希望设计一个单元,使其包含加法和减法的功能。假设有一个控制信号来选择究竟进行加法还是减法运算,把它叫做$\overline{\text{Add}}/\text{Sub}$,并且规定它等于$0$时做加法,等于$1$时做减法。

考虑如下电路:

当$\overline{\text{Add}}/\text{Sub}=1$时,注意

所以全加器的输入为$\overline Y$,此时$c_0=\overline{\text{Add}}/\text{Sub}=1$,而$\overline Y+1=-Y$,此时就实现了减法的功能。

当$\overline{\text{Add}}/\text{Sub}=1$时,此时实现的就是普通加法的功能。

算数溢出

如果用$n$位表示一个有符号数,那么其表示范围为$-2^{n-1}\sim 2^{n-1}-1$,如果算数运算的结果超过此范围,则称发生了算数溢出的现象,注意只有两个符号相同的数相加才会发生算数溢出,来看一个具体例子:

从上面例子可以,有如下关系:

更一般的,对于$n$位数,我们有

下面说明这点。

情形1,同号:

$x_{n-1}=y_{n-1}=0$,此时总有

如果$c_{n-1}=1$,那么$s_n=1$,此时就产生了溢出(正+正=负);如果$c_{n-1}=0$,那么$s_n=0$,此时没有溢出,所以此时结论成立。

$x_{n-1}=y_{n-1}=1$,此时总有

如果$c_{n-1}=0$,那么$s_n=0$,此时就产生了溢出(负+负=正);如果$c_{n-1}=1$,那么$s_n=1$,此时没有溢出,所以此时结论成立。

情形2,异号:

只考虑$x_{n-1}=0,y_{n-1}=1$,另一种情形同理可得。如果$c_{n-1}=1$,那么$c_n=1$;如果$c_{n-1}=0$,那么$c_n=0$,注意此时一定不会产生算数溢出,所以结论成立。

快速加法器

由之前的讨论可得第$i$位的进位函数为:

将上式改写为

其中

$g$称为生成函数,$p$称为传播函数。

将上式递推可得:

上式可以用两级与-或门电路实现,该电路能够很快地计算出进位输出$c_{i+1}$的值。基于此表达式的加法器称为超前进位加法器。

乘法

无符号数的阵列加法器

首先考虑无符号数的乘法问题。

考虑$4$位乘法的例子,假设乘数与被乘数分别为$M=m_3m_2m_1m_0,Q=q_3q_2q_1q_0$。部分积$0$记作$PP0$,公式如下

$PP1$的计算过程如下:

电路图见课本181(pdf第199页)

有符号数的乘法

将数转换为$2$的补码,做乘法的过程中使用带符号拓展即可,一个具体的例子如下: