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

news2024/10/6 20:30:41

我班算是几乎最后一个做实验的班级了,报告参考了一些朋友提供的数据加上一些自己的主观拙见,本人水平有限加之制作仓促难免有错误,望大家批评指正。 

4.1 微程序控制器实验

一、实验目的

(1) 掌握微程序控制器的组成原理。
(2) 掌握微程序的编制、写入,观察微程序的运行过程。
(3) 基于数据通路图,掌握微程序控制器的工作原理。
(4) 基于微程序流程图,掌握微程序控制器的工作原理。
(5) 基于信号时序图,掌握微程序控制器的工作原理

实验原理

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

手动输入方法

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

eg:向332211gif.latex?%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

    文件输入方法

    转储->在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

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

实验过程讲解和部分操作

 如上方流程图所示,首先 刷新电路 初始化 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 微指令格式

97cef9f9f92b47d09a96a2b2bc39f9c8.png

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯计算思维题】少儿编程 蓝桥杯青少组计算思维真题及详细解析第5套

少儿编程 蓝桥杯青少组计算思维真题及详细解析第5套 1、北京冬奥会经历 17( ),中国体育代表团收获的金牌数和奖牌数均创历史新高 A、年 B、月 C、天 D、小时 答案:C 考点分析:主要考查小朋友们对时事的了解,北京冬奥会总共经历了17天,所以答案C 2、下面图形的周长是…

Python系列模块之标准库json详解

感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01; 目录 一、Json介绍 二、JSON 函数 2.1 json.dumps 2.2 json.loads 2.3 实战案例&#xff1a;钉钉消息发送 一、Json介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它使得人们…

2023年21个最佳的Ruby测试框架

作者 | Veethee Dixit 测试人员总是在寻找最好的自动化测试框架&#xff0c;它能提供丰富的功能&#xff0c;并且语法简单、兼容性好、执行速度快。如果你选择将Ruby与Selenium结合起来进行web测试&#xff0c;那么可能需要搜索基于Ruby的测试框架进行web应用程序测试。 Ruby…

【Python】函数式编程第二弹

知识目录 一、写在前面✨二、最小公倍数三、移除数字四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文章是 Python函数式编程第二弹&#xff0c;再次以两个简单的例子带大家更好…

selenium UI自动化中文件上传的两种方式

前言 文件上传是自动化中很常见的一个功能&#xff0c;那么对于文件上传你又有多少了解呢&#xff1f;请往下看 1、被测产品中文件上传的功能非常普遍&#xff0c;一般情况下需要将准备好的文件放在预定的路径下&#xff0c;然后在自动化测试的脚本中&#xff0c;去预置的路径…

国内可以免费使用的GPT

一、wetab新标签页 教程&#xff1a;https://diwlwltzssn.feishu.cn/docx/MnHhdvxATomBnMxfas2cm8wWnVd 装GPT界面&#xff1a;https://microsoftedge.microsoft.com/addons/detail/wetab%E5%85%8D%E8%B4%B9chatgpt%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5/bpelnogcookhocnaokfp…

TeX Live和TeX studio安装

最近想要研究一下Letex怎么写论文&#xff0c;然后就查阅资料了解了一下&#xff0c;先安装上两个软件&#xff0c;怎么用在研究研究&#xff0c;这里记录一下软件安装过程&#xff0c;方便以后查阅。 TeX Live和TeX studio安装 Latex介绍TexLive安装下载TexLive的安装包安装Te…

C++知识第三篇之继承

C继承 继承是面向对象编程的重要特征&#xff0c;是对类设计层次的复用 文章目录 C继承一.介绍1.继承定义2.继承方式3.class与struct 二.作用域1.成员变量2.成员函数 三.赋值转换1.给基类对象赋值2.给基类对象指针赋值 四.派生类的默认函数五. 其他1.友元2.静态 六.继承1.单继承…

Android车载学习笔记1——车载整体系统简介

一、汽车操作系统 汽车操作系统包括安全车载操作系统、智能驾驶操作系统和智能座舱操作系统。 1. 安全车载操作系统 安全车载操作系统主要面向经典车辆控制领域&#xff0c;如动力系统、底盘系统和车身系统等&#xff0c;该类操作系统对实时性和安全性要求极高&#xff0c;生态…

VCSA 和ESXi 6.7.0版本升级

1. VCSA升级步骤 1&#xff09;指定升级包的位置 software-packages stage --iso (如果是从vmware下载补丁&#xff0c;使用CD/DVD来映射ISO映像) 或 software-packages stage --url https://vapp-updates.vmware.com/vai-catalog/valm/vmw/8d167796-34d5-4899-be0a-6daade400…

Yolov8涨点神器:注意力机制---多头上下文集成(Context Aggregation)的广义构建模块,助力小目标检测,暴力涨点

🏆🏆🏆🏆🏆🏆Yolov8魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀小目标、遮挡物、难样本性能提升 🍉🍉🍉定期更新不同数据集涨点情况 2.Context Aggregation介绍 论文:https://arxiv.org/abs/2106.01401 仅…

落地页设计的营销心理学(二)

作为一个营销落地页的设计者&#xff0c;最关注的问题&#xff1a;怎么样设计才能让我的落地页有转化&#xff1f; 当然这可能有很多影响因素。但是&#xff0c;你有没有想过在用户打开落地页时&#xff0c;运用心理学概念留住他们&#xff0c;促使他们完成留资、下载、购买等动…

听我一句劝,不要去外包,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Python实战基础12-闭包

1、函数的嵌套调用 def testB():print(-------testB start------)print(这里是testB函数执行的代码……)print(-------testB end ------)def testA():print(-----testA start-----)testB()print(-----testA end------) testA() 运行结果&#xff1a; 总结&#xff1a; 一个函…

PoseiSwap 参赛,参与斯坦福、Nautilus等联合主办的 Hackathon 活动

近日&#xff0c;由 Stanford Blockchain Accelerator、Zebec Protocol、 Nautilus Chain、Rootz Lab 共同主办的“ Boundless Hackathon Stanford ” 主题的黑客松活动&#xff0c;目前已接受报名。该活动旨在帮助更多的优质开发者参与到 Web3 世界的发展中&#xff0c;推动链…

顶满,阿里P8架构师独家分享的微服务实战笔记

微服务简介 简而言之&#xff0c;微服务架构风格是一种将单个应用程序开发为“一套小型服务”的方法&#xff0c;每个服务“运行在自己的进程中”&#xff0c;并通过轻量级机制(通常是HTTP资源API)进行通信。这些服务“围绕业务功能构建”&#xff0c;并通过全自动部署机制“独…

Cortex-M0的内核架构

目录 Cortex-M 系列产品线 Cortex-M0结构框图 Cortex-M0特性 Cortex-M0工作模式 Cortex-M0工作状态 Cortex-M0的寄存器 Cortex-M0的中断和异常 Cortex-M0的指令集 Cortex-M 系列产品线 Cortex-M系列是由ARM&#xff08;Advanced RISC Machines&#xff09;开发的一系列…

宁德时代,冷暖自知口难言

作者 | 魏启扬 来源 | 洞见新研社 发布可以“上天”的凝聚态电池、落地能量密度160Wh/kg的钠离子电池、量产系统集成度全球最高的麒麟电池…… 宁德时代在上海车展前后密集发声&#xff0c;坚决捍卫着“宁王”的冠冕。 如果再结合不久前的2022年年报&#xff0c;全年307亿的…

六级备考23天|CET-6|写作技巧1|开头段模版

目录 1 考前注意事项 2 真题参考 3 六级作文三段式 第一段 第二段 第三段 4 名言解释型作文 5 开头段的模版 why 型 6 选择型开头模版 7 国内学校/出国读书 8 团队精神和交流 9 作业 10 抽象意志品质类开头 ​ 11 信任的重要性​ 1 考前注意事项 定位错误 常识干扰 拼凑…

【必读】解密Redis主从同步问题,避免数据不一致!

大家好&#xff0c;我是小米&#xff0c;一个热爱技术的程序员。今天&#xff0c;我要和大家聊一聊Redis中常见的一个问题——主从不一致。作为一款高性能的键值存储系统&#xff0c;Redis主从架构在分布式场景中被广泛应用。然而&#xff0c;由于Redis的特性以及配置不当等原因…