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

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

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

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多