实验目的
4bit加法器是一种数字电路,用于将两个 4 bit的二进制数相加,生成一个 4 bit的和。实验目的如下:
(1)学习数字电路的基本概念和实现方法
(2)熟悉 4 bit加法器的设计和实现原理
(3)学会使用数字电路仿真工具模拟和验证电路的功能
(4)使用晶体管搭建一个4bit加法器电路
实验要求
下面是 4 bit加法器设计、仿真和实现的实验要求:
(1)利用三极管搭建逻辑门并进行仿真测试
(2)利用逻辑门搭建一位半加器并进行仿真测试
(3)在一位半加器的基础上搭建一位全加器并进行仿真测试
(4)利用一位全加器进行适当地级联,搭建 4 bit加法器,并进行仿真测试
(5)进行实物搭建并测试,用 LED 灯的亮灭表示结果。亮表示 1,灭表示 0
(6)提交实物和实验报告
实验器材
三极管 100 只,1 kΩ 电阻 50 只,10 kΩ 电阻 100 只,发光管 5 只,电源 1 个,面包板 1 块,
USB 连接线 1 根,万用表 1 只,跳线若干,如图所示。
评分标准
实验原理
三极管
利用三极管导通特性,我们可以用它来搭建简单的逻辑门电路。
这里推荐这篇文章的讲解三极管等搭建逻辑门电路。
其实到目前不需要太了解三极管的输入输出特性,到了模电会学到的,现在只要知道怎么用就行了~
非门
与门
或门
这个算是我自己创造的?hhhh~
可以看到这节点3的电压是由1-3路和2-3路决定的,只要有一路及以上是高电平,3节点也就是高电平。所以3的输出就是1-3路和2-3路取或的结果。
基础门电路
数字电路中常见门电路有以下几种,其中最常用的是前三个“与门”“或门”“非门”
在搭整个4bit加法器电路之前,我们先要分析需要利用什么样的逻辑电路。首先要搭4bit,我们先考虑搭1bit的加法器;我们知道加法会产生进位,所以要考虑该位计算好后的进位;另外,除了第0位外,还要考虑低一位的进位。因此,4bit加法器应该是由一个半加器和三个全加器组成的。我们分析半加器和全加器的逻辑真值表
得到它们的逻辑表达式:
半加器:
S
=
A
⊕
B
S = A ⊕ B
S=A⊕B
C = A B C = AB C=AB
全加器:
S
=
A
⊕
B
⊕
C
i
n
S = A ⊕ B ⊕ C_{in}
S=A⊕B⊕Cin
C o u t = ( A ⊕ B ) C i n + A B C_{out} = (A ⊕ B)C_{in} + AB Cout=(A⊕B)Cin+AB
我们看到,异或运算是最常用的,所以在下面的电路搭建前,要尽可能化简异或门的电路,这样能尽可能少地使用晶体管。
1bit半加器
1bit半加器是一种数字电路,可以将两个二进制位相加并生成一个二进制位的和和一个进位位。
根据上面的分析,我们需要实现异或门。观察常见门电路的逻辑真值表,最自然的想法是与门取非后同或门取与。它的逻辑表达式为
S
=
A
⊕
B
=
(
A
B
)
‾
(
A
+
B
)
S = A ⊕ B= \overline{(AB)}(A+B)
S=A⊕B=(AB)(A+B)
接下来考虑进位的实现,类似的,我们发现可以直接用与门得到进位的结果。
逻辑表达式:
C
=
A
B
C = AB
C=AB
逻辑电路符号
综合两者,则我们能得到这样的一个,拥有两bit输入,计算出1bit本位和1bit进位的半加器。
逻辑表达式:
S
=
A
⊕
B
=
(AB)
‾
(
A
+
B
)
S = A ⊕ B= \overline{\text{(AB)}}(A+B)
S=A⊕B=(AB)(A+B)
C = A B C = AB C=AB
逻辑电路:
但是我们看到,使用的晶体管数量较大,一个半加器就用了2+1+2+2=9个,若考虑全加器,那总数至少60+,这样首先损耗会很大,其次搭建麻烦,debug会很难,再者给的面包板显然搭不下。所以我们考虑简化电路,减少晶体管的数量。
进位的计算已经很简便了,只用了两个晶体管,我们考虑本位的化简。
可以看到计算sum和carry都用了与门,所以可以考虑与门①和与门②共用。但是与门③不能再省掉了,这样一共要用5个三极管。
搭出来第一个较为简化的半加器后,我也有了信心去继续化简。这时我在想,电路中尽可能少用与门,尽可能用或门应该可以让电路更加简化,因为与门需要2个晶体管,非门要1一个,而或门不需要晶体管。于是继续观察门电路的真值表,我发现,可以用或非门或上与门再取非,同样与门可以共用,这样就是0+1+2+0+1=4个晶体管,减少掉一个也是进步了!
于是逻辑表达式为:
S
=
A
⊕
B
=
A
+
B
‾
+
A
B
‾
S = A ⊕ B=\overline{\overline{A+B}+AB}
S=A⊕B=A+B+AB
最终的逻辑电路是这样的:
1bit全加器
全加器就是在半加器的基础上,多一个低位的进位,所以就要在本位和进位的计算上考虑低一位的进位。因此,全加器是一种数字电路,可以将三个二进制位相加并生成一个二进制位的和和一个进位位。它的逻辑电路符号如下:
在“基础门电路”一节分析的基础上,我们得到全加器的逻辑表达式
S
=
A
⊕
B
⊕
C
i
n
S = A ⊕ B ⊕ C_{in}
S=A⊕B⊕Cin
C o u t = ( A ⊕ B ) C i n + A B C_{out} = (A ⊕ B)C_{in} + AB Cout=(A⊕B)Cin+AB
再结合半加器的实现,我们可以将得到这样的仿真电路
4bit加法器
将半加器和三个全加器结合起来,本位的计算作为输出,低位进位作为下一位高位的进位输入即可。
仿真搭建
这里注意**不要一口气把整个加法器搭完!**要搭一小部分就测试一下,不然调bug有你苦头吃的!
与门
00
01
10
11
结果完全正确!
或门
00
01
10
11
结果完全正确!
非门
略
异或门
00
01
10
11
结果完全正确!
1bit半加器
仿真电路如图
00
01
10
11
在这里我们看到,进位的电平从5V->3.77V,有了明显的下降,这样容易使得后面几个全加器的运算不准,所以要考虑升一下电平。这里我采取的是通过两个非门拉高电平。(其实在半加器这里我最终没有这样做,因为半加器只有一个,电平降低的影响不大,还要多用俩晶体管,所以我只拉高了全加器进位的电平)
结果完全正确!
1bit全加器
根据全加器的逻辑表达式,我们可以直接得到下面的仿真电路:
但是这里求 C o u t C_{out} Cout的与门实在太丑了,所以我转了一下:
仿真的时候发现进位电平降得很厉害
并且这个进位还要作为下一位的输入,所以必须考虑拉高电平。按照之前的分析,我们用两个非门拉高电平:
这样进位电平足够了~
测试结果如下:
有低位进位:
00
01
10
11
无低位进位:
00
01
10
11
结果完全正确!
2bit加法器
搭一个2bit的测试一下。整体电路如下
随机测试三组数据,万用表示数从上到下是输出结果从低位到高位
10+11
转化成数字,计算结果为101,正确
00+01
转化成数字,计算结果为001,正确
11+11
转化成数字,计算结果为110,正确
结果完全正确!
4bit加法器
整体电路如下
随机测试三组数据,万用表示数从上到下是输出结果从低位到高位
1111+1111
即输出结果为11110,结果正确!
0101+1101
即输出结果为10010,结果正确!
0010+0011
即输出结果为00101,结果正确!
综上,结果完全正确!
接下来就可以按照仿真电路图来搭建实物电路。
实物搭建
面包板的使用
说实话我一开始都不知道面包板咋用呜呜呜,后来查了一下发现是这样的,下图画线部分是连通的,五格为一组。
同样,老师给的面包板上最上方两行也是各自连通的。
所以连通部分就不需要导线连接了。另外,也**不能把元件插在同一组的五格!**不然就被短路掉力!
电源的使用
输入:USB接口,DC6.5V~12V
输出:两组电源输出,高电平可选3.3V或5V,低电平为0V,即接地
其他:开关打开则有电压输出,并且指示灯亮
如图插在面包板上即可为其供电。
搭建的注意事项
实物搭建的思路仍然是**不要一口气把整个加法器搭完!**要搭一小部分就测试一下,不然调bug有你苦头吃的!(尤其是实体电路,深夜debug得想亖一亖 TAT)
另外,尽可能按照电路图的布局去搭,这样可以边跑仿真,根据某个节点的仿真输出,用万用表测该处的电压值,相对比较容易找错误就比较方便。不过缺点就是排线会很多,眼睛容易看花搭错。
老师给的面包板经历了三年的摧残,板孔特别松,而且电阻的引脚还特别细,经常容易接触不良,可以考虑多个电阻引脚直接插在一个孔里。(虽然有可能越插越大,但最方便的办法就这个了TAT,下一届也这样沿用或许就能催学校换板子了bushi)
总结下来有这些注意点:
- 搭完一个小模块就测试一下
- 尽可能按电路图布局去搭建
- 搭的时候注意模块化搭建
- 多个引脚插一个孔
- 考虑用元件代替引线来节约排线
- 同样功能的引线用一个颜色
- 注意节省空间,尽可能紧凑
错误快速排查
- 保证电路接线没问题时,若输出错误,可以拍一拍或按一按元件和接线(嗯,就跟对待老式电视那样)
- 沿着错误输出一路测电平,测到错误后检查周围接线或按一按元件和接线
部分搭建过程
(因为是一个人搭,拍照很麻烦,所以只有几张照片TAT)
半加器进位
电源连线
3bit加法器
4bit输出
5bit输出
文章来源:https://www.toymoban.com/news/detail-776332.html
心得体会
这个加法器本来是三人一组的课程大作业,后来只有我一个人完成了全部。并且验收结果还挺好,所以按贡献比可能拿到250/100多分力hhhh。不过上限只有100,所以还是分类了一些贡献比给“组员”。我一共投入了20+个小时完成。过程虽然很麻烦,但是学到了很多~文章来源地址https://www.toymoban.com/news/detail-776332.html
- 将一个实际的问题抽象成逻辑电路,再通过逻辑电路搭建一个实体电路,实现目标功能,这样的过程很锻炼动手操作的能力。也算是一段项目经历了。
- 大作业也是很锻炼毅力和耐心的。过程中遇到了无数问题,一开始面包板和电源都不会用(可能也是因为我没上过课TAT)后面搭仿真电路也遇到输出和想象中相反,电阻选取不合适等问题,最后加法器的搭建更是问题百出,因为不知道是接线错了,还是解除不良,或是电阻看错了,电压的测试结果也百思不得其解。最后还是一个个克服了这些问题,“坚韧不拔”地完成了大作业hhhh(因为一开始就相信自己肯定能搭完的hhhh)。完成的时候是凌晨一两点,距离验收只有六七个小时了,但是也真的很佩服自己能不受ddl的压迫,沉住气把加法器搭完,还是增长了很多自信的。
- 大作业完成的过程也提醒我下次要合理安排长期任务了。作业发布没几天我就把仿真搭完了,觉得电路搭一下很方便的,加上其他事情也很多,一直拖到验收前两天才开始搭实体电路。第二天早上8点要验收,我前一天2点睡,5点起来搭,一直搭到第二天2点,7:30起床飞奔到实验室,各种输出又全乱了,于是继续调了一个小时bug,最后终于成功验收了。虽然完成了,但完成的过程很紧迫狼狈TAT,以后确实要考虑一下更合理分配时间了。
- 最后验收,同学们知道我一个人搭电路都说“tql!”“我给你互评满分!”老师也对我表示了赞许,也满足了我一些虚荣心吧hhh
总之,真正学到东西的感觉好棒!
到了这里,关于用面包板搭建4bit加法器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!