4位串行进位加法器
本文最后更新于 1001 天前,其中的信息可能已经有所发展或是发生改变。

看完上期分享的系列视频之后,自己也来动手做一个加法器。

分享-计算机科学速成系列视频 – LovelyCat的小站

这里使用的软件是logisim,一款比较老的模拟软件。

下面涉及到一些公式。⊕异或 · 与 +或 ⊙同或 ¬非

实现思路

单位加法(半加法器)

首先来看一下单位的加法,我们很容易就能得出下面的结论:

0+0=0

0+1=1

1+0=1

1+1=10

观察一下上面的四个二进制加法,找一找规律。

我们会发现每一个式子的结果的最后一位(称为本位 S)组合是0110,对照异或门的真值表我们会发现,单位加法的真值表与异或门的真值表完全一致。因此我们可以得出

本位S 的公式是 A⊕B = S

进位C 的公式是 A·B = C

到这里我们就已经完成了一个半加法器,但是只能计算单位二进制。

这里我们将它们封装成一个一位的半加器,输入A、B并输出S、C。

三位数加法(全加器)

我们先来看一个三位数的加法:110(6)+010(2)=1000(8)

我们来试着用竖式计算一下:

先看最后一列(从右往左开始,下面的等号后面全部都是本位的结果,进位另外表示):

0+0=0 本位S0 = 0 进位C0 = 0

1+1 + 0 = 0 本位S1 = 0 进位 C1 = 1 (这里1+1后面继续加上了0,这个0来自上一行中的进位C0,也就是说,我们在进行多位加法的过程中,也要像十进制一样,计算完本列还要再加上上一位的进位才行)

1+0 +1 = 0 本位S = 0 进位C2 = 1 (这里又加上了上一位的进位C1 = 1,继续得到新的结果10)

计算到这里就已经结束了,我们发现,在进行每一列的运算时都要加上上一位输出的进位,因此我们就可以根据这样的运算规则,列出输入Ai、Bi、Ci输出S(out)、C(out)的真值表:

A(input)B(input)C(input)S(output)C(output)
00000
00110
01010
01101
10010
10101
11001
11111

由上表可以得出:

本位S的计算公式是 S=Ai⊕Bi⊕C

进位C的计算公式是 C=(Ai·Bi)+(Ai⊕Bi)

到这里你可能还不是很明白,还记得上面我们封装好的半加器吗?计算原理上面已经讲了,我们只需要将两个半加器串联在一起,把上一个半加器输出的本位输入到下一个半加器的输入A或B上,再将新的进位(与这两个半加器的输出进位不同)输入到下一个半加器,这样下一个半加器输出的S就是结果的本位。

那么我们要怎么得到结果进位呢?

很简单,只需要判断两个半加器的进位是否有任意一个是1,若是则结果进位为1,这也刚好符合或门的真值表。

这样我们就得到了一个全加器,图中的HALF ADDER就是我上面封装的半加器。

制作4位全加器

现在我们得到了全加器,现在又变得更简单了,只需要套用竖式的计算规则就能完成任意位数的加法器了。

首先根据上面全加器的原理制作一个全加器,逻辑电路如下:

现在根据计算规则将两个全加器串联在一起:

可以看到,原本上一位的进位现在已经输入到了下一位的输入进位上,这样我们就得到了一个2位的加法器。因此我们只需要再继续这样串联下去,就得到了N位加法器。

如上图所示,这就是一个四位的加法器,我们可以来验证一下上面的三位加法。

0110(6)+0010(2)=1000(8)

注意一下这里要倒序输入,意思就是:

A0输入0 A1输入1 A2输入1 A3输入0

B0输入0 B1输入1 B2输入0 B3输入0

我们倒着看结果,得到01000(8)。

到这里就已经完成一个4位的加法器,但我们得到了五位数,这个五位数的第一位称为溢出位。

例如当我们计算1111+0001时,结果是10000,很显然得到的结果无法用4位表示,因此就超过4位溢出了,但我们可以得到溢出位从而完整的表示4位数加法的结果。

未经允许禁止转载本站内容,经允许转载后请严格遵守CC-BY-NC-ND知识共享协议4.0,代码部分则采用GPL v3.0协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇