实验-组合电路设计1-全加器和加法器(数字逻辑)
目录
一、实验内容
二、实验步骤
2.1 全加器的设计
2.2 加法器的设计
三、调试过程
3.1 全加器调试过程
2.加法器的调试过程
四、实验使用环境
五、实验小结和思考
一、实验内容
a) 介绍
在这次实验中,你将熟悉 Logisim 的操作流程,并且学习如何通过画图的方法 设计出计算机当中的核心运算器件——ALU。 然后,我们将使用七段数码管进一 步地人性化地显示出 ALU 的计算结果。
b) 全加器设计
一个全加器具有三个输入(A, B, Cin)和两个输出(S, Cout)。如下图所示,输入 A 和 B 各代表一个 1 比特二进制数,输出 S 表示 A 和 B 之和:
Cin (进位输入) and Cout (进位输出)信号用于输入和输出多于一个比特的情况
c)设计一个 2 比特加法器
一个全加器只能够实现 1 比特的运算。要实现 N 比特的加法,可以采用多个全加器以行波进位的形式实现
二、实验步骤
2.1 全加器的设计
(1)真值表:
Inputs | Outputs | |||
Cin | B | A | Cout | S |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
(2)电路原理图
图1 全加器的电路原理图
图2 全加器的封装电路图
(3)步骤
①使用逻辑门等电子器件实现全加器的逻辑方程,推断出全加器的实验表达式:
Cout=B*A+Cin*A+Cin*B
S=(not)Cin*(not)B*A+(not)Cin*B*(not)A+Cin*(not)A*(not)B+Cin*B*A
②设置全加器电路输入位为A、B、Cin,输出位为S和Cout,S为和位,Cout为进位位
③将A、B、Cin分别连接到或门和与门的输入端,输出端为S、Cout
④经过结果运算,得到S,Cout
2.2 加法器的设计
(1)真值表
A1 | A0 | B1 | B0 | S1 | S0 | 溢出情况 |
0 | 0 | 0 | 0 | 0 | 0 | 无 |
0 | 0 | 0 | 1 | 0 | 1 | 无 |
0 | 0 | 1 | 0 | 1 | 0 | 无 |
0 | 0 | 1 | 1 | 1 | 1 | 无 |
0 | 1 | 0 | 0 | 0 | 1 | 无 |
0 | 1 | 0 | 1 | 1 | 0 | 无 |
0 | 1 | 1 | 0 | 1 | 1 | 无 |
0 | 1 | 1 | 1 | 0 | 0 | 有 |
1 | 0 | 0 | 0 | 1 | 0 | 无 |
1 | 0 | 0 | 1 | 1 | 1 | 无 |
1 | 0 | 1 | 0 | 0 | 0 | 有 |
1 | 0 | 1 | 1 | 0 | 1 | 有 |
1 | 1 | 0 | 0 | 1 | 1 | 无 |
1 | 1 | 0 | 1 | 0 | 0 | 有 |
1 | 1 | 1 | 0 | 0 | 1 | 有 |
1 | 1 | 1 | 1 | 1 | 0 | 有 |
(2)电路原理图
图3 加法器封装电路图
(3)步骤
①用上面方法创建一比特全加器。
②将两个一比特全加器级联起来,第一个全加器的输出进位连接到第二个全加器的输入进位,从而实现两个二进制数的相加。
③逻辑表达式:
S0 = ~Cin⋅~B0⋅A0+~Cin⋅B0⋅~A0+Cin⋅~B0⋅~A0+Cin⋅B0⋅A0
Cout = B1⋅A1+B0⋅A0⋅A1+B0⋅A0⋅B1+Cin⋅A0⋅A1+Cin⋅A0⋅B1+Cin⋅B0⋅A1+Cin⋅B0⋅B1
S1 = ~Cin⋅~B0⋅~B1⋅A1+~Cin⋅~B0⋅B1⋅~A1+~Cin⋅~A0⋅~B1⋅A1+~Cin⋅~A0⋅B1⋅~A1+B0⋅A0⋅~B1⋅~A1+B0⋅A0⋅B1⋅A1+~B0⋅~A0⋅~B1⋅A1+~B0⋅~A0⋅B1⋅~A1+Cin⋅A0⋅~B1⋅~A1+Cin⋅A0⋅B1⋅A1+Cin⋅B0⋅~B1⋅~A1+Cin⋅B0⋅B1⋅A1
④判断溢出:插入LED灯判断是否溢出(若LED亮灯则溢出,否则无溢出)
图4 判断是否溢出
三、调试过程
3.1 全加器调试过程
eg.1
图5 Cin=1 B=1 C=1得Cout=1,S=1
使用表达式进行检验:Cout=B·A+Cin·A+Cin·B=1*1+1*1+1*1=3
S=~Cin·~B*A+~Cin·B·~A+Cin·~A·~B+Cin·B·A=0+0+0+1=1
经检验结果,设计成立
eg 2:
图6 Cin=0 B=1 A=1 得Cout=1,S=0
使用表达式进行检验:Cout=B*A+Cin*A+Cin*B=1+0+0=1
S=(not)Cin*(not)B*A+(not)Cin*B*(not)A+Cin*(not)A*(not)B+Cin*B*A=0+0+0+0=0
2.加法器的调试过程
图7 A0=1、B0=0、B1=1、A1=0得S0=1、Cout=0、S1=1
进行检验:LED灯不亮 A1A0+B1B0=01+10=11 S1=1 S0=1 无溢出
图9 A0=1、B0=1、B1=1、A1=1得S0=0、Cout=1、S1=1
进行检验:LED灯发亮 A1A0+B1B0=11+11=6 S1S0=10=2 有溢出
有溢出的真值表:
A1 | A0 | B1 | B0 | S1 | S0 | 溢出情况 |
0 | 1 | 1 | 1 | 0 | 0 | 有 |
1 | 0 | 1 | 0 | 0 | 0 | 有 |
1 | 0 | 1 | 1 | 0 | 1 | 有 |
1 | 1 | 0 | 1 | 0 | 0 | 有 |
1 | 1 | 1 | 0 | 0 | 1 | 有 |
1 | 1 | 1 | 1 | 1 | 0 | 有 |
四、实验使用环境
本实验采用 Logisim 电路仿真平台。在使用 Logisim 设计本实验要求的数字电路的时候,
必须使用基本的逻辑门完成设计,而不允许使用 Logisim 提供的运算器(如封装好的加法
器、复用器或带译码器的七段数码管)
五、实验小结和思考
1. 遇到的问题
-
二进制表示混淆:起初不清楚如何区分高低位,导致2bit补码范围理解错误(实际范围:-2到1)。
-
减法器设计困惑:不确定1bit减法是否可行(实际可通过补码实现:A - B = A + (~B + 1))。
2. 解决过程
-
确定高低位定义和补码范围,明确2bit补码最小值为
10
(-2),最大值为01
(1)。
3. 实验收获
-
从真值表推导逻辑表达式(如
S = A⊕B⊕Cin
)。 -
独立设计加法器、减法器(基于补码)和复用器电路。
- 二进制数的位权概念(低位为
2^0
,高位为2^1
)。 - 减法器本质是“加补码”,统一了加减法硬件设计。