我班算是几乎最后一个做实验的班级了,报告参考了一些朋友提供的数据加上一些自己的主观拙见,本人水平有限加之制作仓促难免有错误,望大家批评指正。
4.1 微程序控制器实验
一、实验目的
实验原理
- 微程序控制器根本的任务是完成指令的翻译和执行,执行方法就是将指命令进行编码 并储存在控制存储器里。
- 微程序控制器是时序逻辑严格的按照节拍来完成相应的操作,本实验用到的节拍是TS1-TS4.
- 实验设有一组编程控制开关 (位于时序与操作台)可实现对存储器的编程校验和运行具体的使用方法如下:
eg:向332211M(00H) 数据的写入操作 操作思路:分为中低高三路进行编程
-
首先将 KK1 拨至‘停止’档、 KK3 拨至‘编程’档、 KK4 拨至‘控存’档、 KK5 拨至‘置数’档
-
由 CON 单元的 SD15——SD10 开关给出需要编辑的 控存 单元首地址(000000)IN 单元开关给出该控存单元数据的低 8 位(00010001)也就是11
连续 两次按动时序与操作台单元的开关ST(一定要是两次)explain: 按动ST之后 (第一次按动后 MC 单元低 8 位显示该单元以前存储的数据,第二次按动后显示 当前改动的数据),此时 MC 单元的指示灯 MA5——MA0 显示当前地址(000000), M7——M0 显示当前数据(00010001)。输入:以下演示同上方低八位相同 但是一些小细节需要注意:被编辑的单元在三路都被修改之后控存单元CU会自动加一
- 然后将KK5 拨至‘加1’档,IN 单元开关给出该控存单元数据的中8 位(00100010),
- 连续两次按动开关 ST,完成对该控存单元中 8 位数据的修改,此时 MC 单元的指示灯 MA5——MA0 显示当前地址(000000),M15——M8 显示当前数据(00100010);
- 再由 IN 单元开关给出该控存单元数据的高 8 位(00110011),连续两次按动开关 ST,完成对该控存单元高 8 位数据的修改此时 MC 单元的指示灯 MA5——MA0 显示当前地址(000000),M23——M16 显示当前数据(00110011)。
- 此时被编辑的控存单元地址会自动加 1(01H),由 IN 单元开关依次给出该控存单元数据的低 8 位、中 8 位和高 8 位配合每次开关 ST 的两次按动,即可完成对后续单元的编辑。
校验输入:
- 编辑完成后需进行校验,以确保编辑的正确。以校验 00H 单元为例,对于控制存储器进行校验的具体操作步骤如下:
- 首先将 KK1 拨至‘停止’档、KK3 拨至‘校验’档、KK4 拨至‘控存’档、KK5 拨至‘置数’档。
- 由 CON 单元的 SD15——SD10 开关给出需要校验的控存单元地址(000000),
- 连续两次按动开关 ST,MC 单元指示灯 M7——M0 显示该单元低 8 位数据(00010001);
- KK5 拨至‘加 1’档,再连续两次按动开关 ST,MC 单元指示灯 M15——M8 显示该单元中 8 位数据(00100010);
- 再连续两次按动开关 ST,MC 单元指示灯 M23——M16 显示该单元高 8 位数据(00110011)。
- 再连续两次按动开关 ST,地址加 1,MC 单元指示灯 M7——M0 显示 01H 单元低 8 位数据。如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。
对字段进行平行操作
位于实验平台 MC 单元左上角一列三个指示灯 MC2、MC1、MC0 用来指示当前操作的微程序字段,分别对应 M23——M16、M15——M8、M7——M0。实验平台提供了比较灵活的手动操作方式,比如在上述操作中在对地址置数后将开关 KK4 拨至‘减 1’档,则每次随着开关ST 的两次拨动操作,字节数依次从高 8 位到低 8 位递减,减至低 8 位后,再按动两次开关ST, 微地址会自动减一,继续对下一个单元的操作。
对于跳转指令 微程序的方式是AD(CMDR)->CMAR OP(CMAR)->微地址形成部件->CMAR
二、实验预习
1、阅读实验指导书,然后回答问题。
(1) 微指令字长共 24 位,控制位顺序如表 4-1-1:
其中 MA5…MA0 为 6 位的( 后续微地址),A、B、C 为三个(为三个译码字段 ),分别由三个控制位译码出多位。C 字段中的 P<1>为(为测试字位 )。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的( 微地址入口),从而实现完成对指令的识别,并实现微程序的分支。本系统上的 指令译码原理如图 4-1-3 所示,图中 I7…I2 为指令寄存器的第 7…2 位输出,SE5…SE0 为微控器单元微地址锁存器的强置端输出,指令译码逻辑在控制器单元的INS_DEC 中实现。
个人感觉译码方式是直接译码。
(2)本实验安排了四条机器指令,分别为 ADD(0000 0000)、IN(0010 0000)、 OUT(0011 0000)和 HLT(0101 0000)。 括号中为各指令的二进制代码,指令格式如下,请补充说明部分。
实验中机器指令由 CON 单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,
- 图中一个矩形方框表示一条微指令,方框中的内容为该指令执行的微操作,
- 右上角的数字是该条指令的微地址,右下角的数字是该条指令的后续微地址,
- 所有微地址均用 16 进制表示。
- 向下的箭头指出了下一条要执行的指令。P<1>为测试字,根据条件使微程序产生分支。
实验步骤
连线
- 实验原始记录
(一)本机运行
1、按照实验指导书的步骤完成操作,并填写表格。
表4-1 程序运行过程
机器指令 | 机器 指令码 | 微指令 | ||||||||
地址 | 下地址 | 高五位 | S3-S0 | A 字段 | B 字段 | C 字 段 | MA5-MA0 | |||
IN | 0010 0000 | 00 | 000001 | 00000 | 0000 | 000 | 000 | 000 | 000001 | |
01 | 110100 | 00000 | 0000 | 111 | 000 | 001 | 110000 | |||
32 | 000001 | 00011 | 0000 | 011 | 000 | 000 | 000001 | |||
ADD | 0000 0000 | 01 | 110000 | 00000 | 0000 | 111 | 000 | 001 | 110000 | |
30 | 000100 | 00000 | 0000 | 001 | 010 | 000 | 000100 | |||
04 | 000101 | 00000 | 0000 | 010 | 010 | 000 | 000101 | |||
05 | 000001 | 00000 | 1001 | 011 | 001 | 000 | 000001 | |||
OUT | 0011 0000 | 01 | 110011 | 00000 | 0000 | 111 | 000 | 001 | 110000 | |
33 | 0000001 | 00101 | 0000 | 000 | 010 | 000 | 000001 | |||
HLT | 0101 0000 | 01 | 110101 | 00000 | 0000 | 111 | 000 | 001 | 110000 | |
35 | 110101 | 00000 | 0000 | 000 | 000 | 000 | 110101 |
通过IN单元输入的值为(00100011 ),运行结束后,通过OUT单元输出的值为( 01000110)
写出连续执行四条机器指令(IN-ADD-OUT-HLT)程序的每条微指令的下地址执行顺序
000000→000001→(000000)→(000001)→(110000)→000001→(110010)→000001→(000001)→000001→(110000)
思考题:机器指令30H(即OUT指令)执行时,观察寄存器R0中的数据何时送入OUT单元?受哪些信号影响?
直接看时序图和数据流图:T3时刻上升沿送入OUT单位 受时钟信号、WR信号、IOM信号、R0_B信号影响
操作
4.2 CPU 与简单模型机设计实验
一、实验目的
(1) 掌握一个简单 CPU 的组成原理。
(2) 在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。
(3) 为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。
二.实验预习
(1)实验4-2在4-1微程序控制器实验的基础上增加了三个部件,一是(PC ),另一个是( AR ),还有就是 (MEM),因而在微指令中应增加相应的控制位,其微指令格式
如表4-2-1所示:
表 4-2-1 微指令格式
(3)对照实验指导书二进制微代码表,结合上述机器程序(IN →ADD →OUT→ JMP→HLT),写出执行机器程序时微指令下地址的变化情况(自行填写)( )
2.简述微指令与4-1中微指令控制位有哪些不同?
A字段增加101 控制LOAD信号,用来控制主存 和110 控制LDAR信号 控制地址寄存器AR
B字段增加110 控制 PC_B信号 控制PC输出
C字段增加101 控制LDPC信号 控制PC输入
-
实验原始记录
按照实验指导书的步骤完成操作,并填写表格。
表4-1 程序运行过程
机器指令 | MEM地址 | 机器 指令码 | 微指令 | |||||||
地址 | 下地址 | 高五位 | S3-S0 | A字段 | B 字段 | C 字 段 | MA5-MA0 | |||
IN | 00 | 20 | 00 | 000001 | 00000 | 0000 | 000 | 000 | 000 | 000001 |
01 | 000011 | 00000 | 0000 | 110 | 000 | 101 | 000011 | |||
03 | 110010 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |||
32 | 000001 | 00011 | 0000 | 011 | 000 | 000 | 000001 | |||
ADD | 01 | 00 | 01 | 000011 | 00000 | 0000 | 110 | 000 | 101 | 000011 |
03 | 110000 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |||
30 | 000100 | 00000 | 0000 | 001 | 010 | 000 | 000100 | |||
04 | 000101 | 00000 | 0000 | 010 | 010 | 000 | 000101 | |||
05 | 000001 | 00000 | 1001 | 011 | 001 | 000 | 000001 | |||
OUT | 02 | 30 | 01 | 000011 | 00000 | 0000 | 110 | 000 | 101 | 000011 |
03 | 110011 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |||
33 | 000001 | 00101 | 0000 | 000 | 010 | 000 | 000001 | |||
JMP addr | 03 04 | E0 00 | 01 | 000011 | 00000 | 0000 | 110 | 000 | 101 | 000011 |
03 | 111100 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |||
3C | 011101 | 00000 | 0000 | 110 | 110 | 101 | 011101 | |||
1D | 000001 | 00000 | 0000 | 101 | 000 | 101 | 000001 | |||
HLT | 05 | 50 | 01 | 000011 | 00000 | 0000 | 110 | 000 | 101 | 000011 |
03 | 110101 | 00010 | 0000 | 111 | 000 | 001 | 110000 | |||
35 | 110101 | 00000 | 0000 | 000 | 000 | 000 | 110101 |
通过IN单元输入的值为(00100011 ),运行结束后,通过OUT单元输出的值为(01000110 )
思考题
指导书给出的程序中,跳转到了START,即地址00,程序将循环执行前四条指令,那么能否实现停机操作?试通过改写程序代码完成停机(将机器指令列出即可,不需要实现)。
.00000000 00100000 ; START: IN R0 从 IN 单元读入数据送 R0
00000001 00000000 ; ADD R0,R0 R0 和自身相加,结果送 R0
00000010 00110000 ; OUT R0 R0 的值送 OUT 单元显示
00000011 11100000 ; JMP START 跳转至 00H 地址
00000100 00000000 ;
00000101 01010000 ; HLT
参考资料
计算机组成原理实验之微程序控制器实验_weixin_34279579的博客-CSDN博客
(1条消息) 计算机组成原理实验:微程序控制实验_微程序控制器实验_海轰Pro的博客-CSDN博客
计算机组成原理 微程序控制器实验_Long_UP-DevPress官方社区 (csdn.net)