哈工大 计算机组成原理实验四 微程序控制器实验报告

本文主要是介绍哈工大 计算机组成原理实验四 微程序控制器实验报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

4.1 微程序控制器实验

一、实验目的

(1) 掌握微程序控制器的组成原理。

(2) 掌握微程序的编制、写入,观察微程序的运行过程。

(3) 基于数据通路图,掌握微程序控制器的工作原理。

(4) 基于微程序流程图,掌握微程序控制器的工作原理。

(5) 基于信号时序图,掌握微程序控制器的工作原理

实验原理

  1. 微程序控制器根本的任务是完成指令的翻译和执行,执行方法就是将指命令进行编码 并储存在控制存储器里。
  2. 微程序控制器是时序逻辑严格的按照节拍来完成相应的操作,本实验用到的节拍是TS1-TS4.
  3. 实验设有一组编程控制开关 (位于时序与操作台)可实现对存储器的编程校验和运行具体的使用方法如下:

手动输入方法

这一步 只是为了模拟一下输入的步骤 也可以直接文件导入

eg:向332211eq?%5CrightarrowM(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会自动加一

    1. 然后将KK5 拨至‘加1’档,IN 单元开关给出该控存单元数据的中8 位(00100010),
    2. 连续两次按动开关 ST,完成对该控存单元中 8 位数据的修改,此时 MC 单元的指示灯 MA5——MA0 显示当前地址(000000),M15——M8 显示当前数据(00100010);
    3. 再由 IN 单元开关给出该控存单元数据的高 8 位(00110011),连续两次按动开关 ST,完成对该控存单元高 8 位数据的修改此时 MC 单元的指示灯 MA5——MA0 显示当前地址(000000),M23——M16 显示当前数据(00110011)。
    4. 此时被编辑的控存单元地址会自动加 1(01H),由 IN 单元开关依次给出该控存单元数据的低 8 位、中 8 位和高 8 位配合每次开关 ST 的两次按动,即可完成对后续单元的编辑。

    583ad0727bff46c0b7ac40273f8773c2.png

    校验输入:

    • 编辑完成后需进行校验,以确保编辑的正确。以校验 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 位数据。如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。

    8f14aa87c25e4379bb9344274391000d.png

    对字段进行平行操作

    位于实验平台 MC 单元左上角一列三个指示灯 MC2、MC1、MC0 用来指示当前操作的微

    程序字段,分别对应 M23——M16、M15——M8、M7——M0。实验平台提供了比较灵活的

    手动操作方式,比如在上述操作中在对地址置数后将开关 KK4 拨至‘减 1’档,则每次随着开

    关ST 的两次拨动操作,字节数依次从高 8 位到低 8 位递减,减至低 8 位后,再按动两次开关

    ST,微地址会自动减一,继续对下一个单元的操作。

    e63d017fa6f24f4287a0ea60543bb180.png

    文件输入方法

    b6e0c7a347894fd6b00493681abbcb96.png

    转储->在sample中选择文件 

二、实验预习

1、阅读实验指导书,然后回答问题。

(1) 微指令字长共 24 位,控制位顺序如表 4-1-1:

c02ee6aa770840fa97fa7472305df5a7.png

其中 MA5…MA0 为 6 位的( 后续微地址),A、B、C 为三个(为三个译码字段 ),分别由三个控制位译码出多位。C 字段中的 P<1>为(为测试字位 )。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的( 微地址入口),从而实现完成对指令的识别,并实现微程序的分支。本系统上的 指令译码原理如图 4-1-3 所示,图中 I7…I2 为指令寄存器的第 7…2 位输出,SE5…SE0 为微控器单元微地址锁存器的强置端输出,指令译码逻辑在控制器单元的INS_DEC 中实现。

个人感觉译码方式是直接译码,经过译码器的翻译编程控制信号

d35bacfa00f04fceb60cbe3366e5ddd8.png

(2)本实验安排了四条机器指令,分别为 ADD(0000 0000)、IN(0010 0000)、 OUT(0011 0000)和 HLT(0101 0000)。  括号中为各指令的二进制代码,指令格式如下,请补充说明部分。                                       

24d4abb536b242f28c0ec6d604a775b3.png

   实验中机器指令由 CON 单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,

  • 图中一个矩形方框表示一条微指令,方框中的内容为该指令执行的微操作,
  • 右上角的数字是该条指令的微地址,右下角的数字是该条指令的后续微地址,
  • 所有微地址均用 16 进制表示。
  • 向下的箭头指出了下一条要执行的指令。P<1>为测试字,根据条件使微程序产生分支。

31c6a3623f6441f98ea36b61e0e7c801.png

 实验步骤

连线

e25aabc6c3b94d7883496239ef41fe34.png

首先将指令输入,可以手动也可以导入文件,这里建议直接导入文件比较方便,按照指导书 的操作进行,可以选择单步或者单拍个人感觉单拍的效果比较好。

实验过程讲解和部分操作

919ac6844e40442180019e6cf5bfb9a7.jpeg

7643b021346d4699a04b863b7f74be47.png 如上方流程图所示,首先 刷新电路 初始化 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这个位置

33a8a5b97ff24435933bddafe6ea18c5.jpeg

                                                                      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 微指令格式

97cef9f9f92b47d09a96a2b2bc39f9c8.png

90d0894726c04942b58ecaee92a46ea1.png

2.简述微指令与4-1中微指令控制位有哪些不同?

A字段增加101 控制LOAD信号,用来控制主存  和110 控制LDAR信号 控制地址寄存器AR

B字段增加110 控制 PC_B信号 控制PC输出

C字段增加101 控制LDPC信号 控制PC输入

实验过程类似第一个实验但是这个的指令不需要用户手动输入 是写入到程序中自动完成 冯诺伊曼的存储程序

69f6204fee534c6596be1dfce147cbe2.png

实验先选择响应的模型机并且导入数据,可以在查看->指令查看指令的地址,不断点击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并输出显示 实验就成功了

cfa5198c69ea4fe1b8bf72ed2909475d.png

 此外 也可以点击右键观察数据流 按动ST 观察流动过程22890b1ccbcd4613ab6a0533834ed1d5.png

三.实验原始记录

按照实验指导书的步骤完成操作,并填写表格。

表4-1 程序运行过程 这个图应该是对的更新一下 

ff3a3055975d40a390067afdc276a679.jpeg

 不要看下面的图

机器指令

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)

这篇关于哈工大 计算机组成原理实验四 微程序控制器实验报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755648

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I