目 录
1 实验目的........................................................................................... 3
2 实验环境........................................................................................... 3
3 实验内容........................................................................................... 3
3.1 Logism实验..................................................................................... 3
3.2 74LS181实验.................................................................................. 3
4 方案设计........................................................................................... 4
4.1 运算器扩展.................................................................................. 4
4.2 溢出检测...................................................................................... 5
5 过程与调试....................................................................................... 5
5.1 实验步骤...................................................................................... 5
5.2 测试用例...................................................................................... 6
5.3 结果与分析.................................................................................. 6
5.4 故障与调试.................................................................................. 6
6 总结与心得....................................................................................... 7
6.1 实验总结...................................................................................... 7
6.2 实验心得...................................................................................... 7
7 参考文献........................................................................................... 8
1 实验目的
l 熟悉Logisim软件平台。
l 掌握运算器基本工作原理
l 掌握运算溢出检测的原理和实现方法;
l 理解有符号数和无符号数运算的区别;
l 理解基于补码的加/减运算实现原理;
l 熟悉运算器的数据传输通路。
2 实验环境
Logisim是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。 它是一款基于Java的应用程序,可运行在任何支持JAVA环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim中的主要组成部分之一就在于设计并以图示来显示CPU。当然Logisim中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分。
3 实验内容
3.1 Logism实验
l 学习使用Logism工具栏上的功能
l 学会使用子电路,并能将子电路放到main电路中使用
l 学习使用时钟,并能使用时钟单步或自动运行
l 学会使用分线器,理解线宽的概念
l 学会使用隧道,学习使用探测器,了解logisim数据监测方法。
l 熟悉按键、LED,数码管等基本输出设备
3.2 74LS181实验
l 构建8位运算器。在logisim平台中利用现有的74LS181子电路,构建一个8位运算器,可支持有符号数无符号数加减运算的溢出检测(请仔细思考其对应逻辑),相应逻辑电路的生成可以手工绘制,也可以用logisim中分析电路功能,采用表达式或者真值表自动生成电路,请注意学习相应功能。
l 8位运算器封装实验。将第一步实现的8位运算器电路,封装成子电路,该子电路封装基本抽象如图 1所示:
图 1 运算器封装
l X,Y,Z,S均应封装成单一引脚,需要细分时请用数据分线器,封装时各引脚以及电路必须用文字标注,运算符功能如表1所示。
表1 运算符功能
4 方案设计
4.1 运算器扩展
将两个74LS181芯片串联,共用一个S输入端和M 输入端,将两个8位的A、B输入端用分离器分为高四位和低四位,A、B的低四位连入74LS181芯片(1)的A 端和B端,A、B的高四位连入74LS181芯片(2)的A 端和B端。
芯片(2)的四位输出作为8位运算输出的高四位,芯片(1)的四位输出作为8位运算输出的低四位,用分离器合并为8位输出。
为使输入输出观测方便,将所有关键点的值用探测和隧道方式结合引出,用10进制方式显示置于电路上方,运算器结果直接用16进制数码管显示。
当S=1001,M=0时执行加法运算;
当S=0110,M=0时执行减法运算;
因为74LS818芯片在S=0110时执行的运算为A减B减一,所以低位进位不能从外部输入,在加法时取高位,减法时取低位,所以将取S输入端的第一位的非、第四位的非和第二三位相与后取非作为芯片(1)的进位输入。
芯片(2)的进位信息:取芯片(1)的P输出的非与芯片(1)的进位输入相与后与芯片(1)的输出G的非相或得到。
4.11 8位运算器电路图:
4.2 溢出检测
4.21 有符号溢出检测
根据操作数和运算结果的符号位是否一致进行检测,公式:
用分离器引出A、B输入端的最高位与F输出端的最高位,因为加减操作时,溢出情况不同。
加法时两同号才可能溢出,减法时两异号才可能溢出。
所以利用S输入端来区分(1001为加法操作,0110为减法操作),取S输入端的第一位的非、第四位的非和第二三位相与后与结果的进位位(即芯片(2)所产生的进位)进行异或,因为74LS181芯片所产生的进位位与真实值相反,所以需要对芯片(2)所产生的进位取非后再进行操作。B的最高位与该异或值再异或后参与运算,当结果为1时则有溢出。
4.22 无符号溢出检测
直接根据运算结果的进位信号即芯片(2)的进位输出来判断,因为加减操作时,无符号溢出情况不同,所所以利用S输入端来区分(1001为加法操作,0110为减法操作),取S输入端的第一位的非、第四位的非和第二三位相与后结果的进位位(即芯片(2)所产生的进位)进行异或,因为74LS181芯片所产生的进位位与真实值相反,所以需要对芯片(2)所产生的进位取非后再进行操作。
5 过程与调试
5.1 实验步骤
不断改变A、B输入端的值,观测F输出端和溢出检测端的值。
5.2 测试用例
溢出测试用例见表2。
表2 溢出信号测试用例
5.3 结果与分析
在加法运算中,运算结果和溢出检测都是正确的,减法中得到的运算结果为正确,溢出检测值正确,。
5.4 故障与调试
5.4.1 故障1
加法时有符号溢出不符合。
问题解决方法:芯片(1)的进位输入取了外端输入,在加减法转换中其值忘记改变。
5.4.2 故障2
输出端F 的值与输入端A 的值完全一致。
问题解决方法:当移动两74LS181芯片确定电路连接完好后检查输入端的高地位连接是否有误,以及S端、M端的输入是否正确,可能情况为B输入端断路,多次排查后已解决。
5.4.3 故障3
减法时输出端结果比真实值小1,有符号溢出检测不符合。
问题及解决方法:芯片(1)的进位输入取外端输入,芯片(2)的进位输入直接取芯片(1)的进位信息。将芯片(1)和芯片(2)的进位输入信息都依赖于电路,根据S值的不同而改变即可。
5.4.4 故障4
输出端F的值不正确。
解决方法:检查两芯片间的进位输入以及S端、M端、Cn端的输入是否正确,以及电路的连通性,多次排查后问题消除。
6 总结与心得
6.1 实验总结
本次实验主要作了如下几点工作:
1) 熟悉使用了logism的分离器、隧道、探测器、16进制数字显示器及各逻辑门部件。
2) 利用2片74181芯片构造了8位运算器,可支持有符号数无符号数加减运算的溢出检测。
3) 设计实现了无符号加减法运算溢出,根据运算结果的进位信号来判断,并分加、减两种情形。
4) 设计实现了有符号加减法运算溢出,根据操作数和运算结果的符号位是否一致进行检测,同样分为加减两种情况。
5) 不能简单根据理论设计电路,要根据实际情况对电路作修改,特别是在有选择端(多种运算)时尤其要注意同一变量的不同取值。
6.2 实验心得
1) 在实验前应做好充分准备,比如将《计算机组成原理》101页74LS181芯片的内部结构图弄清楚,理解102页逻辑功能表的由来并实现其功能。对于溢出检测不能直接对书本理论生搬硬套,需要根据实际情况分析问题并给出合理明了的解决方法。
2) 在本次实验中仍存在较多不足,例如在独立完成时不能很好的理解封装的意义和过程所以请教了其他同学的实验结果再加以理解方才完成。在经过多次查找资料和询问同学后,才找出消除减法时的误差方法。
3) 对于选做题实在无能为力,因为对电路实现的理解还不够,本身知识的掌握也还不到位。在本次实验中基本是用手工绘制的逻辑电路,并没有很好的利用logisim分析电路功能,采用表达式或者真值表自动生成电路,因为对这些功能还不能很好的理解并掌握。
7 参考文献
[1] 秦磊华,王小兰. 计算机组成原理实验指导及课程设计指导书(基于EDA平台). 武汉:华中科技大学出版社,20##年.
[2] 秦磊华,吴非,莫正坤.计算机组成原理. 北京:清华大学出版社,20##年.
[3] DAVID A.PATTERSON(美).计算机组成与设计硬件/软件接口(原书第3版).北京:机械工业出版社. 20##年.
[4] 袁春风编著. 计算机组成与系统结构. 北京:清华大学出版社,20##年.
第二篇:计算机组成原理实验报告
实验名称:一位十进制BCD码加法器
学 号 : 2010310200823
班 级: 计科1004班
姓 名: 陈 宏
一. 实验目的
设计一个BCD码加法器,使用MAX+ plus II 10.0 BASELINE软件设计,并输入几组数据观察其波形。得出结果。二.实验原理
BCD码(Binary-Coded Decimal?)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码表示,则考虑用四个全加器(FA)级联成一个行波进位加法器来解决。
三.实验内容
步骤:
1.设计其逻辑结构,画图找出规律,设计逻辑连线。
用门电路设计出FA全加器并进行封装,结果如下:
(1)利用封装好的FA设计电路,如图所示
2.在软件中输入其连线。
3仿真,做出其波形
四.实验小结
实验中连线没有注意,多出了一点结果,多次编译没有通过,编辑波形文件上一度陷入困境,但幸好都解决掉了
五.心得体会
开始时没有建立project,导致无法保存,同时,保存的acf格式的文件打开时变成了代码,导致又重做一次。。。。。
在建立波形文件的时候忘记了波形文件与gdf格式文件同名,导致导出波形图失败了一次。