5.2.1_电路的基本原理、加法器设计

简介: 计算机组成原理之电路的基本原理、加法器设计

一、引用

经过之前的学习,我们已经知道了数据在计算机里如何表示,还有数据之间运算的基本数学原理。

这个小结,我们会简单地介绍算数逻辑单元,也就是 ALU,它的大致构成。

为了照顾到跨考的同学,在这一小节当中,会补充一些电路的基础知识,也就是数字电路那门课里边学过的东西。

另外,在之前的讲解中,大家应该能够体会到,加法其实是实现很多计算的基础,无论是乘法、除法,它们实现一定都需要基于加法来完成。
image.png

所以如何用硬件实现加法,这个是我们会重点探讨的一个问题。

二、算术逻辑单元ALU

(1)作用

首先我们来简要的回顾一下算术逻辑单元ALU它的作用。
image.png

运算器的内部除了包含一些必要的寄存器之外,用于实现运算的核心部件其实就是ALU算术逻辑单元

之前我们说过, ALU大致上有这样的一些功能,首先是实现一些算数运算,比如加减乘除,还有逻辑运算、与或非、异或等等。另外

还需要提供其他的一些辅助功能,比如移位,还有求补之类的运算。
image.png

(2)抽象图示

来看一下ALU大致的样子。
image.png

我们在很多书里会把ALU化成这样的一个形状,左边A,右边B,这两个指的是输入信号

比如我们想实现两个8比特二进制数的加法,其中一个数是从 A 这一端输入的,另一个数是从 B 这一端输入的。

我们输入的本质上就是一些电信号,也就是我们刚开始提到过的高低电平
image.png

这是两个需要进行运算的数。下边我们会看到一个F,指的是输出信号,也就是运算结果是从这一端输出。

两个8比特的数相加,得到一个新的8比特的数,会从这一端进行输出。

右侧这一端指的是控制信号,控制信号是由控制单元CU来发出的。

(3)具象图示

上图是一个比较抽象的ALU 的图示,我们再来看一个比较具象的。
image.png

74181 是这块芯片的型号,这块芯片就是一个很经典的四位ALU。

右边这些S1到S3,还有M这些是来自CU控制单元的控制信号

之前我们说过,控制单元会负责解析指令的含义。比如一条指令,它是一个加法还是减法还是乘法除法,或者是某种逻辑运算的指令。 那么CU解析完指令之后,会根据这个指令的含义发出一些控制信号,就是一些 0101 的电信号。

如果是和74181这块芯片配合工作的话, CU需要发出这样的五个信号S1到S3,还有M,每个信号就是一个高低电平。

这儿的电信号M是用来指明当前ALU要执行的是一个逻辑运算还是一个算数运算。 M于 1 的时候,表示这是一个逻辑运算; M 等于 0 的时候,表示这是一个算数运算。

另外, S0 到 S3 这几个信号可以用来指明此次要进行的是哪一种算数运算,哪一种逻辑运算。

可以看到,由于我们这儿总共有 4 个比特的信息,也可以对应 16 种状态,因此这块芯片它可以支持 16 种算术运算和 16 种逻辑运算。

总之,最右边的这些信号是控制信号

另外,这儿还有A、B、F这几个部分,和刚才抽象的图示能够对应上。

A 和 B 就是两个 4 比特的数据,输入两个 4 比特的数据然后ALU经过加减乘除之类的运算之后,会有一个 4 比特的输出。

我们在这门课刚开始的时候提到过机器字长的概念。机器字长指的是计算机能够同时处理多少个比特的整数运算。

其实机器字长的真面目就是 ALU 算数逻辑单元里面,它可以支持同时输入多少个比特的信息,这就是机器字长的本质。

一般来说 ALU它可以处理多少比特的数据,我们通常就会把这些寄存器(比如X)的位数和ALU保持一致。因为ALU输入了两个 4 比特的信息,又输出一个 4 比特的运算结果,这些 4 比特的运算结果肯定也得被放回到某一个寄存器里边(比如X)。
image.png

所以为了让寄存器和 ALU 能够完美的适配,所以 ALU它是多少位,寄存器也会对应着设计为多少位

这也是为什么我们在第一章的时候说过,一般来说寄存器的位数就是机器字长。

除了刚才这些部分之外,大家会看到左边这还有一些输出,下边还有一个什么 C(-1) 。
image.png

这些输入和输出信号其实是为了和其他的芯片进行串联而设计的。具体有什么作用,我们在这先不深究。

在这我们只需要体会到 ALU需要有输入信号,输出信号,还有一些控制信号,这是最基本的要求。

三、最基本的逻辑运算

(1)介绍

接下来我们要进入第二个话题,来探究ALU它到底是如何实现那些逻辑运算,还有算数运算的。

无论是再复杂的算数还是逻辑运算,本质上都是通过这些基本逻辑运算来实现的

我们这儿所谓的逻辑运算指的是一个位,就是一个比特的这种运算。之前给大家介绍过与或非这些基本逻辑运算的原理,大家可以和 c 语言里的且或否这几个运算符进行类比。

的逻辑只有两个比特都是 1 的时候,最终运算的结果才是1。的逻辑只有两个都是 0 的时候,最终运算的结果才是0。的逻辑就是给一个输入取反输出。

可以看到与和或它是一个双目运算符,会有两个进行运算的数。而非运算是一个单目运算符,只会有一个数参与运算。
image.png

我们可以用门电路来实现这些逻辑。
image.png

A 和 B 是两个输入的信号, Y 是输出的信号。

<1> 与门

对于与门来说,如果 A 输入的是一个1, B 输入的是一个0。也就是上边这条线我们给它输入了一个 5 伏的高电平信号,下边这条线我们给它输入了一个 1 伏的低电平信号。高电平对应1,低电平对应0。如下:
image.png

右边输出端它会输出一个 1V的信号,也就是表示二进制的 0。如下:
image.png

1 和 0 相与,得到0。

如果 B 这一端输入的是二进制的1,也就是输入一个 5 伏的高电平信号。

当A和B两个输入端都是高电平信号的时候,输出端输出的才会是一个高电平信号,两个 1 相与,才会得到1。


右边图和左边这个图是相对应的,左边的两个端表示的是输入端,右边的端表示的是输出端。如下:
image.png

利用与门这种物理元器件,我们就可以实现与运算对应的逻辑。

关于数据的输入和输出,我们都是用电信号来表示的,也就是高低电平。

<2>或门

或门也是一样的。
image.png

左边这个图示,大家会看到这有个大于等于1,其实意思就是,如果输入的两个数 A和B,它们加起来加和是大于等于 1 的,此时输出端也会输出1,也就是 A 和 B 当中只要有一个1,我们最终输出的结果也是1。

所以这也是为什么它这写大于等于的原因。或门也可以用右边这样的方式来画,与门更圆润一点、或门会更尖一点。

<3>非门

最后来看非门
image.png

非门很简单,如果我们输入的是高电平 5 伏,右边输出的就是 1 伏的低电平。

而如果我们输入的是一个低电平 1 伏,右边就会输出一个 5 伏的高电平。

需要注意非门的图示当中,右边会有一个小圈圈,这样的一个小圆,这个地方专门的用红色给它标注出来,比较醒目。
所以这就是所谓的门电路。

其实门电路就是用来实现最基本的这些移位的逻辑运算的。门电路的输入信号和输出信号,本质上就是一些高低电平。


(2)优先级与结合律

这个地方大家会发现与运算的运算符,写的样子和我们熟悉的乘法的记录方式有点类似,或运算又有点像我们的加法。
image.png

<1> 优先级

在一个比较复杂的逻辑表达式当中,如果同时出现与运算和或运算,我们应该怎么处理?

这个问题其实有点类似于算数表达式里边乘法运算的优先级高于加法运算。

在这个地方,与运算也比或运算的优先级更高
image.png

比如这地方给你一个复合的逻辑表达式。由于与运算的优先级更高,所以我们需要先把 A 和 B 这两个逻辑值相与 C 和D进行一个相与,这两边相与得到的结果再来一个相或。就有点类似于先乘除后加减那个意思。

<2> 分配律结合律

除了优先级和乘法加法类似之外,与和或的运算也具备类似于乘法和加法的分配律,还有结合律这些东西。
image.png

大家类比乘法和加法就可以了,只不过这地方我们表示的是与和或而不是乘和加

(3)案例

给大家介绍这些有什么意义?来看这样的一个例子。
image.png

如果我们要实现这样一个复合的逻辑运算,按照之前的分析可以知道,我们需要先完成与运算,然后再把两个与的结果进行一个相或

所以我们可以来设计一个电路。

①思路一

这地方我们使用了两个与门,这两个与门实现的就是 A 和 C 的相与、 A 和 D 的相与。相与得到的电信号又会通过两个输出端进行输出。

输出之后,这儿用一个或门,再把它们给相或。最后我们输出的结果就是 A 与C, A 与D,最后再相或的一个电信号。如下:
image.png

②思路二

另一种思路。

如果现在我们已经知道与和或它们之间具备分配律,那我们就可以把它转变成与之等价的这种表述形式。
image.png

先让 C 和 D 相或再和 A 相与,这样我们就只需要用两个门电路来实现。
image.png

C 和 D 先输入一个或门,它们相或的结果,再和 A 进行一个相与,最终输出。


与门、或门这些逻辑元器件其实是需要成本的,是需要钱的。
image.png

所以,如果能够知道逻辑表达式的一些数学规律,把逻辑表达式简化,本质上就是把这种电路给简化了。电路简化了,逻辑元器件的使用会减少,这样我们在省钱。
image.png

所以当我们在优化逻辑表达式的时候,其实在优化我们的电路设计。

四、复合逻辑

(1)介绍

与或非是最基本的逻辑运算,接下来我们再来看几个复合的逻辑。

与非、或非,还有异或。

<1> 与非

与非就是先与后非,与非门和与门相比,前面这儿多了一个小圆点。我们之前说过,这样的小圆点表示的是一个的逻辑,也就是取一个类似的操作。
image.png

<2> 或非

或非就是先进行或运算,再来一个非运算。所以或非门比起或门来说也是输出端这儿多了一个小圆点,这小圆点表示的是在或运算之后需要进行一个取反。
image.png

如果学过数字电路,大家应该听说过反演率,或非运算可以把它等价于两个逻辑值,各自先非再相与。而与非运算可以把它拆分为两个逻辑值,各自先非再相或。如下:
image.png

<3> 异或

异或,当我们输入的两个信号相异,也就是不一样的时候,我们输出的是1;如果输入的两个信号相同,我们输出的就是0。
image.png

<4> 同或

最后再补充一个复合逻辑叫同或,其实就是 异或的一个取反
image.png

在 异或门的基础上,这儿又画了一个小圆,表示这儿会取反。
image.png

大家可以对比一下,同或和 异或刚好运算结果是相反的。在数字电路里面,同或运算,我们通常会用一个圆,中间一个小点这样的方式来表示。

(2)案例

来看一下如何使用之前提到的与或非这三种最基本的逻辑运算来实现异或这种逻辑运算。

当 A 和 B 不同的时候,AB异或可以输出1,所以如果A等于 0 且B等于 1 或者A等于 1 且 B等于 0 ,满足这两个条件当中的任意一种条件,我们就可以让输出的电信号为1。

所以我们可以把逻辑表达式写成这样,如果 A 等于0, B 等于1,那么先给 A 取一个非, A的值0 会变成 1,这个1 和 B的值1相与,可以得到1。

左边这个式子的 1 和右边无论是多少进行相或,最终得到的结果一定是1。image.png

另一种可能性就是, A 等于1, B 等于 0 的时候,先给 B 取一个非也就是1,所以 A(1) 和 B 非(1)进行相与得到的结果应该是1。这个1再和左边,无论是什么进行一个相或,最终得到结果也肯定是1。
image.png

所以当我们得到了这样的逻辑表达式之后,我们就可以画出与之相对应的一个电路图。 如下:
image.png

<1>情况一

来随便分析一种情况。

当A 等于0, B 等于 1 的时候,大家注意看这个线是怎么连的。
image.png

上边 1 经过非之后输出的是一个0,而下边 0 经过非之后输出的是一个1。

所以下边与门两个输入信号就是 1 和1输出一个1。而上面与门两个输入信号是 0 和0,所以上边会输出一个0。如图:
image.png

0 和 1 再进行一个相或,最终就可以输出1。
image.png

这就是 异或门的逻辑,当 A等于0, B 等于 1 的时候,我们最终输出的是一个1。

异或门可以用我们之前提到的与或非这三种最基本的逻辑进行一个复合得到。

<2> 情况二

再看一种情况, A 和 B 都等于0, 注意观察线。
image.png

0进行非之后输出的是1。如下:
image.png

所以上边与门和下边与门两个输入信号都是01。输出的肯定都是 0 。
image.png

0 和 0 最后再经过或门的处理,输出的就是 0 这个信号。
image.png

所以当 A 和 B 同时都为 0 的时候,它们异或的结果是0。

希望通过这个例子,大家能够体会到为什么这些运算叫做复合逻辑。因为我们可以通过之前提到的与或非进行一个复合运算来得到。

只要我们得到了逻辑表达式,我们就可以得到与之相对应的电路。

五、奇偶校验码

到目前为止,我们介绍了各种各样的门电路,这些门电路就是用于实现某一种逻辑运算的。通过这些门电路的组合,就可以实现更复杂的逻辑。比如我们可以实现加法运算。还有奇偶校验

来看一下怎么实现奇偶校验码的。

先来回忆一下之前奇偶校验码相关的内容,大家可以自己看一下。
image.png

偶校验我们要保证,当我们在加入了校验位之后,整体来看, 1 的数量总共有偶数个。

之前我们说过,偶校验的这种逻辑和异或的逻辑有一个天然的对应

因为我们对偶数个 1 进行异或最终得到结果是0,刚好可以对应偶校验想求得的校验位。
image.png

而如果我们对奇数个 1 进行异或,最终异或的结果是1,同样也可以对应到偶校验它所需要的校验位。
image.png

之前我们是站在这种数学的角度来探讨,接下来看一下如何用电路来实现。

①方案一

比如这儿有 7 个信息位,我们要求出这 7 个信息位相对应的偶校验位,也就是要对这些信息位进行一个异或的运算。
image.png

我们可以这么来算,让前面的两个1和0先进行一个异或,之后的两个0和1也进行一个异或;他们异或的结果,再来统一的进行一次异或。右边也一样,先把这两个 1 和0异或,再和剩下的 1 进行异或,最终我们再来一次统一的异或。如下:
image.png

与之相对应的电路应该是这个样子。
image.png

输入 7 个比特的信息,前面这 1 和 0 (红色)先用一个异或门把它们进行一次异或得到1,右边 0 和 1 (紫色)同样得用一个异或门异或一次得到1,然后再把这两个异或的结果输入到一个异或门里边,再进行一次异或得到0,如下:
image.png

右边也是一样。

我们上边标出了每一个异或门运算之后输出的信号,最终会输出一个0,也就是所有的这些信息位相异或的结果是0。这个 0 就是我们想要求得的偶校验位,我们再把偶校验位拼到信息位的首部就可以了。

所以这就是用异或门来求偶校验位的电路实现。

②方案二

再来看另一种实现方式。

可以把这些异或运算生效的次序改一下。先让最开始的两个信号进行异或,它们异或之后和第三个信号进行异或,以此类推。
image.png

如果使用这种方式,我们的电路设计出来就是这个样子,其实和我们的逻辑表达式都是完全对应的。
image.png

通过这一例子,大家再体会我们之前说的那句话,逻辑表达式只是对电路的一种数学化描述而已。只要我们写出了逻辑表达式,本质上已经设计好了电路,因为所有的这些逻辑运算符和门电路都是一一对应的。
image.png

这是用门电路来求偶校验位的一个例子。

这儿再次强调异或运算的特性。如果我们输入的有偶数个1,所有的这些信息位进行异或之后输出的肯定是0。而如果我们输入的只有奇数个1,那最终异或之后输出的肯定是一个1。

这是用 异或门实现奇偶校验的原理。

六、加法运算

(1)介绍

接下我们再来看异或门如何实现加法运算

首先,从我们熟悉的这种手算加法出发,这下边给了一排小字,这些小字指的是每一位对高位的进位。
image.png

刚开始 1 + 0 = 0,再加上可能从其他地方来的一个进位 0 得1,向高位进0。

接下来 1 + 1再加刚才进上来的0等于0,需要往高位进1。

现在三个 1 相加,应该是等于3,本位应该保留一个1,再向高位进一个1。

以此类推。

再到最后这一步的时候, 1 + 1 = 0,向高位会进一个1。

为了方便描述,我们给这些相对应的比特位取一个名字。如下:
image.png

A 和 B 是两个相加的二进制数,Ai和Bi指的是这两个数当中的第i位。

这是第1位,这是第 2 位,这是第 3 位,第四位。以此类推(从右边开始)。
image.png

当前我们正在运算的这一位,会称为本位

这儿的 C(i-1)指的是来自低位的进位,比如这地方的 1 就是来自于更低位运算的进位。
image.png

最下面这一行Si,我们把它称为本位的和。就是两个本位的数,还有来自低位的进位进行相加之后,会得到一个本位的和,并且还会对高位有一个进位。

通过这个例子,大家会感受到我们在进行加法的时候,是一位一位地加的,先进行低位的加法,两个本位和一个来自低位的进位,可以确定我们这一位的和,也就是本位的和是多少,并且也可以确定应该向高位进一个什么数值。

所以当我们在设计加法电路的时候,需要输入本位的两个比特信息,还有来自低位的进位的数值,通过这些信息得到输出。

第一个输出是要确定本位和Si,也就是下边这一位到底是多少。输入的信号会有 3 个,如果这三个数当中有奇数个1,那么本位的和应该是1。如果这三个数当中有偶数个1,那么本位和应该是 0 。

之前我们说过,判断有奇数个 1 还是偶数个1,可以用异或门来实现,所以本位的和我们只需要让这三个输入信息进行一个异或就可以了

当这三个信息当中有奇数个 1 的时候,相异或的结果应该是1。
image.png

这是第一个我们需要确定的输出信号


另外一个需要确定的就是,我们应该向高位进什么位?进 0 还是进1?

有两种情况可能产生进位。

①第一种就是 A 和B,它们所对应的这一位都是1,在这种情况下,无论来自低位的进位,它到底是 0 是1,我们一定是需要向高位进个 1 的。

就像这个例子一样,无论来自低位的进位是多少,肯定会向高位进1,因为 1 + 1 肯定已经大于 2 了。
image.png

②另一种可能发生进位的情况就是 A 和 B 当中本来就有一个1,并且来自低位的进位也是一个1,在这种情况下,我们也需要向高位进一位。

就像这个例子一样, A 和 B 当中只有一个1,但是由于来自低位的进位也是一个1,所以我们也需要向高位进一个1。
image.png

(2)电路

我们根据这两个逻辑表达式,
image.png

就可以得到与之相对应的电路
image.png

来简单分析一下。

<1> 先来看 Si, Si等于 3 个输入信号的异或。

先来看Ai通过一条线输入到异或门,Bi通过一条线输入到异或门,他们异或之后得到的结果作为另一个异或门的输入。
image.png

C(i-1)信号也通过一条线也会输入到异或门当中,所以这样就完成了 Ai 和 Bi 线异或再和C(i-1)异或得到Si。

<2> 再来看另一个输出Ci

先来看Ai通过一条线,Bi也通过一条线进行相与,结果输出之后会作为或门的输入。如下:
image.png

再看另一个部分,A i 和 B i 需要先进行异或,也就是刚才我们提到的这个异或门的输出,这个输出既会作为另一个异或门的输入,也会通过这条线作为上边与门的输入。如下:
image.png

A和B异或之后需要和Ci进行相与,所以Ci通过这条线也是接到了与门。如下:
image.png

这让与门与了之后的结果会作为最后或门的输入。

右边相与的结果和左边相与的结果进行一个或可以得到Ci。
image.png

这个东西就是所谓的一味全加器。

根据两个本位还有来自低位的进位作为输入,可以确定本位的和Si是多少,同时确定我们应该向高位进一个什么样的数值Ci是多少。

我们可以把这个图简化一下,屏蔽它内部的这些电路细节,把它画成这样的形式。如下:
image.png

一味全加器英文缩写叫 FA,我们在这注明这是一个 FA就可以了,并且注明需要输入和输出的信号分别是什么。

通过硬件电路我们就可以实现一位的加法。

其实硬件相关的知识大家也可以类比到熟悉的软件。
image.png

比如左边的图,我们可以把它理解为是一个函数的具体实现,里边这些电路类似于我们实现函数具体功能的代码。而右边这种图示就有点类似于我们在使用其他人的函数,它只是向我们暴露出来了某一些输入和输出的接口,并且我们能够知道其他人的函数它完成的是一个什么样的工作,有一个什么样的功能,我们直接调用就好了,不需要关注它的内部细节,把它封装起来。

所以右边图示和左边这种图示,大家也可以和我们程序里边的一些思想进行一个类比,这些东西都是相通的。

七、多位加法

接下来我们来看一下如何使用我们刚才设计的一位全加器来实现多位的加法

(1)串行加法器

第一种实现方式叫做串行加法器

顾名思义,所谓串行就是一位一位地加。

所以怎么实现?我们会增加一个所谓的进位触发器,用来保存进位位到底是 0 还是1。

用这样的方式一位一位地加。
image.png

如果结合左边的手算,可以这么来理解。

我们刚开始要进行的是最低位的加,所以输入的Ai、Bi、C(i-1)就是 1、0、0 这样的几个值。

这几个值经过一位全加器相加之后,就可以确定本位和 Si它是1,输出的是1,另外我们还可以确定应该向高位进一个0,这个 0 会保存在进位触发器当中。
image.png

这样我们就完成了最低位的运算。

接下来我们就可以再输入更高一位的信息。Ai、Bi就是 1 和1, C(i-1)是来自低位的进位,从进位触发器这儿来。作为一个输入信号,我们就可以用这些信息确定本位的和还有往高位的进位是多少。
image.png

这就是为什么叫串行加法器,因为我们是一位一位这样往前加的串行加法器,它只有一个全加器,数据会逐位地串行送入加法器当中进行运算。

进位触发器用来保存进位信号,以便参与下一次运算。

显然,如果我们操作数总共有 n 位,加法就需要进行 n 次,每次只能产生 1 位和。所以这种串行加法器的效率是比较低的。

(2)并行加法器

与串行相对应的应该是并行概念。一个最简单的并行加法器是这样的,可以把多个全加器给串联起来,这样就可以同时输入两个 n 位的数。
image.png

A和B这两个操作数都有 n 位,每一组对应的位都会用==全加器==进行相加,并且低位的加和产生的进位会作为下一个全加器的输入信号

显然,虽然刚开始我们就可以同时输入 A 和 B 这两个数各个数值位的信息,但是虽然电路实际的运算速度很快,然而这些电信号的传递依然是需要时间的。

也就是只有更低位的运算执行结束之后,才可以确定应该往高位进一个什么样的信号。

而如果往高位进的信号发生了改变,高位的和还有这一位往更高位的进位信号也会发生改变

所以这种并行加法器,我们把它称为串行进位的并行加法器,就是这个原因。

这些进位信息我们都是串行着一位一位往前进的。就有点类似于多米诺骨牌一样,第一块倒了,第二块才能倒,用这样的方式逐层往前传递。

串行进位还有一种比较形象的表述方式,叫做行波进位,就有点像是一个声波或者水波不断地往前传一样,所以叫行波进位。

从我们之前写出的逻辑表达式也可以看到,每一位的本位和还有向高位的进位都会依赖于低位的进位信息。
image.png

所以这种加法器,它的进位信号是逐级形成的。只有来自低位的进位信号确定了,我们才可以确定本位的和还有往更高位的进位信号。

因此这种加法器,它的运算速度很大程度上取决于每一位进位的产生速度。

这个问题如何优化,我们会用下一小节来探讨。

八、总结回顾

这个小结当中我们介绍了算术逻辑单元 ALU它需要实现的一些具体功能。
image.png

ALU一定需要有输入信号,输出信号还有控制信号,其中控制信号来自于CU也就是控制单元。

为了照顾到跨考的同学,我们这儿也介绍了一些基本的电路知识。

有这样的一些常见的逻辑运算,与或非是最基础的。其他这些逻辑运算,我们可以把它理解为是与或非的一个复合逻辑。

数学上的这些逻辑运算,我们都可以使用门电路来实现。每种逻辑运算都会对应一种门电路,这些门电路就是最基础的逻辑元件。

另外,我们通过一些例子让大家感受到了,所谓的逻辑表达式,其实就是电路的数学化表示。

因此,当我们在谈电路如何设计的时候,本质上其实就是在研究数学。我们用一些数学手段对逻辑表达式进行优化,其实本质上也在优化电路,在省钱。

这一小节的后半部分,我们介绍了加法器如何实现。要实现多位的加法,我们首先需要搞清楚一位的加法如何实现,一位的加法可以用一位全加器来实现。

大家需要知道本位和还有本位向高位的进位如何确定。这些不需要记。

如果我们用移位全加器组合上一个进位触发器,我们就可以实现一个串行加法器。 这种加法器只能一位一位地加,所以速度很慢。

如果我们把多个一位全加器进行简单的串联,就可以形成一个串行进位的并行加法器,可以多位同时加。只不过这种加法器的计算速度取决于进位产生和传递的速度。这一点结合上面两个逻辑表达式,并不难理解。

最后大家也需要回忆一下各种门电路应该是怎么画的,各自长什么样子。还有一位全加器应该怎么表示,输入输出信号分别是哪些?这些大家也需要有一个印象。

以上就是小节的全部内容。

相关文章
|
算法 异构计算
m基于FPGA的OFDM调制解调系统verilog实现,包括IFFT,FFT以及成型滤波器,包含testbench
m基于FPGA的OFDM调制解调系统verilog实现,包括IFFT,FFT以及成型滤波器,包含testbench
371 3
电路电子技术2电容电感伏安关系 & 计算电路中某两端电压
电路电子技术2电容电感伏安关系 & 计算电路中某两端电压
145 0
|
存储
58【数字电路】数字电路的学习核心
【数字电路】数字电路的学习核心
147 0
|
编解码 算法 异构计算
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
255 0
由浅入深——晶体管放大电路基础(二)
由浅入深——晶体管放大电路基础
237 1
由浅入深——晶体管放大电路基础(二)
|
Web App开发
由浅入深——晶体管放大电路基础(一)
由浅入深——晶体管放大电路基础
343 0
由浅入深——晶体管放大电路基础(一)
数字逻辑电路设计实验:加法器
数字逻辑电路设计实验:加法器
115 0
|
芯片 异构计算
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)
657 0
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)
HDLBits练习汇总-08-组合逻辑设计测试--加法器电路
HDLBits练习汇总-08-组合逻辑设计测试--加法器电路
186 0
HDLBits练习汇总-08-组合逻辑设计测试--加法器电路
|
存储 IDE 开发工具
数字信号处理-02- FPGA常用运算模块-加减法器和乘法器
数字信号处理-02- FPGA常用运算模块-加减法器和乘法器
1080 0
数字信号处理-02- FPGA常用运算模块-加减法器和乘法器

热门文章

最新文章