如果你对其他计算机组成原理知识感兴趣,请考虑阅读我的专栏:
须知
本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报。作者:小王在努力。
实验四 模型机实验
实验要求
基本要求
- 事先在主存中存储操作数和指令
- 根据PC来取指令和操作数
- 根据操作数进行运算,将结果放入到主存中
思考问题
-
思考计算机CPU内总线与系统总线的关系
-
思考中断系统的必要性
实验步骤
一、理论分析
1.主要功能部件介绍
由于本次实验需要的主要功能部分为:主存、CPU运算器部分、PC及自加、IR部分。所以分开来实现:
主存:主存用两片74LS373分别代表MAR来存储地址信息和MDR用来存储数据信息,用6116来充当主存,来存储数据。
CPU运算器部分:用3个74LS373来分别保存:操作数1、操作数2和运算器的功能选择数据(S3~S0、M和CN)的信息,由于要实现8位二进制的运算,我们使用的是74LS181来充当运算器,他只能实现两个四位二进制的运算,所以我们采用两个74LS181一起来运算,同时将两个8位操作数,分为高四位和第四位进行运算,然后将运算的结构输出到另一个74LS373锁存器中即可。
PC及自加:PC寄存器,我们仅用一个74LS373来实现即可,为了实现其自加的功能,我们选取两个74LS181来实现其自加的功能。
IR指令寄存器:我们使用74LS373来充当即可,将其连接在总线上。
其中,6116中事先存储以及要存储的数据如下:
6116 | 地址 | 存放数据 |
---|---|---|
0000 0001 | 1000 0001(指令) | |
0000 0010 | 0001 0110(CN、M、S) | |
0000 0011 | 0000 0000(操作数1 C1) | |
0000 0100 | 0000 0110(操作数2 C2) | |
0000 0101 | 写入结构(C1异或C2的结果) |
2.实验主要流程
(1).将PC初值设置为0
(2).PC自加+1,产生第一条指令的地址
(3).PC->MAR (3.1)将指令放置指令寄存器中(关于指令的译码等部分,在此处先不涉及)
(4). PC+=1
(5). PC->MAR
(6).用MAR去读6116中的存储的运算器控制参数(CN,M,S3~S0),并将其放入到ALU的寄存器3中
(7).设置ALU功能参数
(8).PC+=1
(9).用PC的地址取操作数1,放入到ALU的寄存器1中
(10).PC+=1
(11).用PC 的地址取操作数2,放入到ALU的寄存器2中
(12).使用ALU计算结果,并将数据保存在锁存器中
(13).PC+=1
(14).使用PC的地址,将数据保存在6116中。
二、实现方法
1.主要功能部件展示
主存:
CPU运算器部分:
PC及自加:
IR:
2.实验流程
(1).将事先需要存储的数据存入到6116中,通过给地址、给数据的同时让6116写数据来实现,根据6116的存储数据表来进行存储,下图仅为其中一例。
(2).将操作数等信息存储到6116中之后,将PC置为0,然后实现自加功能,选中0000 0001地址中的指令1000 0001,将其放入到IR中。
(3).依次根据PC自加,选出操作数1,操作数2,运算器功能控制信息(CN、M、S3~S0),并将他们分别放入到相应的寄存器中,进行运算。
(4).根据PC+1的地址,将运算结果存放至改地址下。
三、实验结果分析
由于本次实验我实现的功能是两个数进行异或运算,我存放的操作数1为:0000 0000,存放的操作数2为:0000
0110,S3~S0:0110,M:1,Cn:X。进行异或运算:
功能 | 模式选择M | 功能选择S3~S0 | 进位CN | 八位输入C1 | 八位输入C2 | 八位输出 | 进位输出 |
---|---|---|---|---|---|---|---|
逻辑异或 | 1 | 0110 | X | 0000 0000 | 0000 0110 | 0000 0110 | X |
四、思考问题
-
系统总线是直接与CPU连接的,有内存或显卡等高速核心设备,而内部总线是通过桥芯片连接系统总路线的,并相对系统总路线速度慢,连接的设备较多。
-
中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。它是计算机可以更好更快利用有限的系统资源解决系统响应速度和运行效率的一种控制技术。实时响应,系统调度。
五、问题及解决办法
1.问题:在连接LED灯之后果不其然出现问题了,LED输入端电平不确定。
解决办法:在其后面接上一个阻止为200欧姆的上拉电阻。
问题2:在使用两个ALU进行高位和地位的分别运算时,输出结果错误。
解决办法:千万、千万、千万要注意区分ALU的地位和高位 以及 接线顺序问题,一失足成千古恨。
六、结论
通过本次实验,我将前几次做的实验结合起来,真正了解到了比较系统的计算机存储程序的工作流程,知道了指令和数据之间的关系,以及指令和数据是如何取出和存放的,以及操作数是如何运算的,还有PC在整个过程中起到的作用,同时也使得我对proteus软件的使用更加的流畅。
后话
- 首先给大家说一下,博主经常在线,如果有什么问题或者想法,可以在下方评论,我会积极反馈的。
- 其次还是要请大家能够多多指出问题,我也会在评论区等候大家!
.