计算机组成原理实验四 微程序控制器实验报告
我班算是几乎最后一个做实验的班级了,报告参考了一些朋友提供的数据加上一些自己的主观拙见,本人水平有限加之制作仓促难免有错误,望大家批评指正。
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,微地址会自动减一,继续对下一个单元的操作。文件输入方法
转储->在sample中选择文件
二、实验预习
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>为测试字,根据条件使微程序产生分支。
实验步骤
连线
首先将指令输入,可以手动也可以导入文件,这里建议直接导入文件比较方便,按照指导书 的操作进行,可以选择单步或者单拍个人感觉单拍的效果比较好。
实验过程讲解和部分操作
如上方流程图所示,首先 刷新电路 初始化 IR初始化为00 经过译码之后为30,单步运行是通过按ST按钮来形成的。
这里译码的原理大家可以简单查阅资料和查看电路来了解:这里就是进行了一个强转,将转换成MAR的01 进行一个分支判断,类似于一个for循环 ,此时需要等待用户输入指令,这里的指令在上方已经显示比如30是一个存数指令,每一条微指令执行完之后都会把下地址传送给CMAR,除了停机指令,下地址都是01回到循环判断的地方,在IN单元输入加数(如23H)要转换为二进制
- 首先输入32然后,在IN单元输入数据,多次按动ST直到观察到IN单元的数据传入R0单元并且节拍为T4的时候输入下一条指令, 此时下地址在CMAR显示01
- 输入30,看到R0分别把数据送到A B寄存器,并且经过ALU的运算最后的结果送给R0,并且T4的时刻等待用户输入下一条指令。 此时下地址在CMAR显示01
- 此时输入IR的值是33,将R0的值送到OUT显示,不断按动ST当发现OUT的值显示46,并且T4时候输入下条指令 此时下地址在CMAR显示01
- 输入35 直到下地址也是35 表示循环结束 不能进行跳转了 如果重新运行需要按动CLTR刷新电路。
- 最后jmp到00这个位置
IN输入位置
译码的过程是一个电路屏蔽强转的过程。
查看sample文件可以找到微程序存储和主存储的对应关系
//***** Start Of Main Memory Data *****// 这里是主存中的地址和对应的指令$P 00 20 ; START: IN R0 从IN单元读入数据送R0$P 01 00 ; ADD R0,R0 R0和自身相加,结果送R0$P 02 30 ; OUT R0 R0的值送OUT单元显示$P 03 E0 ; JMP START 跳转至00H地址$P 04 00 ; $P 05 50 ; HLT 停机; //***** End Of Main Memory Data *****//; //** Start Of MicroController Data **//控存的地址和对应的指令$M 00 000001 ; NOP$M 01 006D43 ; PC->AR,PC加1$M 03 107070 ; MEM->IR, P<1>$M 04 002405 ; R0->B$M 05 04B201 ; A加B->R0$M 1D 105141 ; MEM->PC$M 30 001404 ; R0->A $M 32 183001 ; IN->R0 $M 33 280401 ; R0->OUT$M 35 000035 ; NOP$M 3C 006D5D ; PC->AR,PC加1; //** End Of MicroController Data **//
实验记录
(一)本机运行
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 微指令格式
2.简述微指令与4-1中微指令控制位有哪些不同?
A字段增加101 控制LOAD信号,用来控制主存 和110 控制LDAR信号 控制地址寄存器AR
B字段增加110 控制 PC_B信号 控制PC输出
C字段增加101 控制LDPC信号 控制PC输入
实验过程类似第一个实验但是这个的指令不需要用户手动输入 是写入到程序中自动完成 冯诺伊曼的存储程序
实验先选择响应的模型机并且导入数据,可以在查看->指令查看指令的地址,不断点击ST观察程序运行中的数据流情况,首先PC的值默认是00 然后+1,配合上方的流程图分析指令和数据以及机器是怎么配合的。
- PC->MAR 1->R 传地址
- PC+1=1 M(MAR)->IR(观察IR的变化) 取指令
- OP(IR)->ID 译码 并传导信号
- AD(IR)->MAR
- M(MAR)->MDR->R0
- 加法操作 此处的微操作省略
- 将结果给R0并输出显示 实验就成功了
此外 也可以点击右键观察数据流 按动ST 观察流动过程
三.实验原始记录
按照实验指导书的步骤完成操作,并填写表格。
表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)
计算机组成原理实验四 微程序控制器实验报告相关推荐
- 实验四 微程序控制器实验
1.相关控制信号说明 ALU的选通信号ALU_BUS:PC的选通信号PC_B:RAM8的选通信号RAM_BUS:地址寄存器AR的锁存信号LDAR:存储器RAM8的写使能WR=1允许写,WR=0禁止写, ...
- 微控制器实验计算机组成原理,组成原理实验四 微控制器实验
实验四 微控制器实验 实验四微控制器实验 实验四 一.实验目的 1.掌握时序产生器的组成原理. 微控制器实验 2.掌握微程序控制器的组成原理. 3.掌握微程序的编制.写入,观察微程序的运行.二.实验设 ...
- 《计算机组成原理》实验报告——TEC-2实验系统——微程序控制器实验
实验名称: TEC-2机微程序控制器实验 实验地点:10-413 一.实验目的 比较深入透彻地学懂计算机各种指令的执行过程,以及控制器的组成.设计的具体知识.理解动态微程序设计的概念. 二.实验原理 ...
- 实验3 微程序控制器实验
一.实验类型 本实验为原理型+分析型 二.实验目的 (1)掌握微程序控制器的原理 (2)掌握TEC-8模型计算机中微程序控制器的实现方法,尤其是微地址转移逻辑的实现方法 (3)理解条件转移对计算机的重 ...
- 计算机微程序控制器实验报告,计算机组成原理实验报告三:微程序控制器实验.doc...
计算机组成原理实验报告三:微程序控制器实验.doc 微程序控制器实验报告一. 实验目的1 掌握微程序控制器的功能.组成知识.(2)掌握为程序的编制.写入.观察微程序的运行二.实验设备PC机一台,TD- ...
- 计算机组成实验微程序控制器实验,计算机组成原理实验报告3++微程序控制器实验.doc...
文档介绍: 计算机组成原理实验报告3微程序控制器实验计算机组成原理实验报告实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的 ...
- 计算机组成原理微控制设计实验总结,计算机组成原理微程序控制器实验报告.doc...
计算机组成原理微程序控制器实验报告.doc 计算机组成原理实验报告三:微程序控制器实验?? 2011-05-06 01:00:09|??分类: 实验报告 |??标签:实验??微程序??字段??微指令? ...
- 计算机微程序控制器实验报告,计算机组成原理微程序控制器实验报告
计算机组成原理实验报告三:微程序控制器实验 2011-05-06 01:00:09| 分类: 实验报告 | 标签:实验 微程序 字段 微指令 信号 |字号大中小 订阅 实验三:微程序控制器实验 一. ...
- 计算机组成原理 微程序控制器实验
微程序控制器实验 实验环境 计算机组成原理实验环境 实验目的 掌握微程序控制器的组成原理和工作过程. 理解微指令和微程序的概念,理解微指令与指令的区别与联系. 掌握指令操作码与控制存储器中微程序的对应 ...
最新文章
- 【CV】吴恩达机器学习课程笔记第11章
- sklearn基本回归方法
- 【学习笔记】CO-PA 简介
- 【Hibernate】could not instantiate class.. from tuple] with root cause
- 从源码深处体验Spring核心技术--面试中IOC那些鲜为人知的细节
- 音视频技术开发周刊 | 175
- 使用 SAP UI5 系统测试工具 UIVeri5 的一个具体例子
- [经典推荐]事半功倍系列之javascript
- matlab常用函数——文件操作函数
- 自己定义html中a标签的title提示tooltip
- MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)
- QT程序拷贝 转移 改变运行环境
- 在给函数传递实参时,不能对用到引用的传NULL
- 白话基础之虚拟存储器
- 2010年度十大杰出IT博客大赛奖品展示
- 大众点评App的短视频耗电量优化实战
- Ubuntu 使用 xdg-open 命令
- 企业常用的客户关怀方法,你了解几个?
- 三星root后进入android system recovery后,三星手机在用刷机大师刷机之后,Android system recoverylt;3egt;,找......
- crontab 简明教程