计算机系统原理实验——微程序控制器

  • 一、模拟机的操作
    • 1、程序表
    • 2、执行过程及分析
    • 3、流程图及分析
    • 4、运行结果及分析
  • 二、ROM模块设计
    • 1、VHDL语言设计模块:
  • 三、微程序控制器
    • 1、ROM以上部分
    • 2、ROM以下部分
    • 3、举例分析
  • 四、学习过程中的思考
    • 1、控制器的相关概念:
    • 2、微程序控制器的功能:
    • 3、常用的两种下址产生方法:
    • 4、指令码如何与入口微地址对应:
    • 5、解释并比较微程序控制器的几种设计方法?
    • 6、 如何简化微程序流程图?
    • 7、电路设计过程中如果出现多个状态机怎么办?

一、模拟机的操作

1、程序表

2、执行过程及分析

1)内存中的数据:

将测试程序实例程序表写入用户程序文件,得到以上内存中的十六进制代码。
2)执行情况:

第一条程序执行情况(上左图):
经过了5个微指令,实现了LDA双字节指令,将0D地址中的55H送到累加器R5。
第二条程序执行情况(上右图):
经过了7个微指令,实现了ADD双字节指令,将0E地址中的内容8A与R5内容相加,结果DF存入R5。

第三条程序执行情况(上左):
经过5个微指令实现了STA双字节指令,将累加器R5的内容DFH送入地址10H单元。
第四条程序执行情况(上右):
经过5条微指令实现了双字节OUT指令,将10H地址中的内容送到数据总线上,可以看到输出的—OUT— MEM[10]:DF 的结果。

第五条程序执行情况(上左):
经过7条微指令实现了AND双字节指令,将R5的内容DFH和OFH单元的F0H相与得到D0送入R5中。
第六条程序执行情况(上中):
经过4条微指令实现了COM单字节指令,指令码80H将R5的内容D0取反得到FF2F送R5。
最后一条程序(上右):
经过4条微指令实现JMP双字节指令,将程序PC无条件转移到地址0CH中的11H,程序结束。

3、流程图及分析



首先,模拟机先给出微地址为00000的微指令启动,读出微地址为00000的微指令时便给出下一条微地址为00001,这两条微指令是公用微指令。微地址为00001的微指令执行的内容是:PC地址计数器内容送地址寄存器,然后PC加1,同时给出下一条微指令地址00010。这一条微指令在T3时序信号到来时执行把RAM中存放的数据(指令)送到IR指令寄存器同时给出判别信号P以及下一条微指令地址01000,在T4有效时,根据P、IR7、IR6、IR5产生下一条微指令的地址。当执行完一条IR指令的全部微命令,即执行到每个微程序的最后一条微指令时给出下一条微指令的地址为00001,紧接着执行00001、00010的公共微指令。

A=55H→【0D】,B=8AH→【0E】,C=F0H→【FO】,实现复合运算 NOT((A加B)AND C)
1)流程图的第一张图中的第一列表示第一个程序的运行过程,首先产生主入口地址00000,经过SW传入PC,单步运行,PC的值00传入ar,pc+1,接着借助ar从ram【00】中读出20H传入IR,在LDA指令的控制下将pc传入ar,pc+1,从ram中取出01处的数据0D传入ar,再通过ar取出数据55送到r5;(取出A->r5)
2)第二列表示第二个程序ADD指令的运行过程,经过微指令的控制先将ram【02】中的C0传入IR,再进入ADD的执行分支,将ram【03】中的0E取出送入ar,借助ar将【0E】中的8A取入到dr2中,将r5中的55送入dr1,执行dr1+dr2,将结果DF送入r5;(实现A加B)
3)第三列表示第三个程序STA指令的运行过程,同样借助ar将40H传入IR,然后在指令的控制下进入STA分支,即将ram【05】中的10送入ar后借助ar将r5中的值DFH取出放入【10】中;(A加B->【10】)
4)第四列表示第四个程序OUT的运行过程,在将ram【06】中的60H送入IR中后进入OUT分支,先将pc(07)存入ar后pc+1,借助ar将ram【07】中的10H取出放入ar,再次借助ar将【10】中的DF取出到bus总线上;(观察【10】中的值)
5)第二章流程图的第一列是第五个程序AND指令的执行过程,同上将pc(08)存入ar,pc+1,借助ar将【08】中的E0存入Ir,进入AND分支,pc(09)存入ar,pc+1,借助ar将【09】中的0F存入ar,再借助ar将【0F】中的F0存入dr2,接着将r5中的DF存入dr1,进行dr1 and dr2的运算后将结果D0存入r5;(实现(A加B)AND C)
6)第二列是第六个程序COM指令的执行过程,在将【0A】中的80H取出存入Ir中后,进入COM分支,将r5中的D0存入dr1,执行not dr1后将结果2F存入r5;(实现NOT((A加B)AND C)
7)第三列是最后一个程序JMP的执行过程,将【0B】中的A0存入IR后进入JMP分支,从【0C】中取出11传送给pc
8)最后一列将11H传给ar,pc+1,接着借助ar将ram【11H】中的00传送给IR,运行结束。

4、运行结果及分析


JMP指令执行结束后PC变为11,PC+1后最终变为12;IR中存入了【11】中的00H,接着微地址变为01000,R5中保存着最后的运算结果2F;
可见,上述七条程序实现了取出A->r5、A加B->R5、A加B->【10】、观察【10】、(A加B)AND C->R5、NOT((A加B)AND C->R5这一系列的动作,实现了复合运算NOT((A加B)AND C,运行结果正确。

二、ROM模块设计

1、VHDL语言设计模块:



篇幅原因,表格不再赘述。

根据不同的九种种微程序(加上WE强迫RAM写、RD强迫RAM读)依次为每一条当前的微地址进行28条微指令的译码,因为图4-7-1模型机总的实验中并没有用到控制器中的信号161CLR,因此不再将161CLR译码出来,简化控制器模型。
而流程图中有多少种不同微地址就要进行多少次的微指令译码,如在OUT分支中,微地址01011、11001、11010都需要进行依次译码,操作不同控制信号不同,当前微地址不同,下一微地址也不同。
以当前地址00001为例,其所要进行的操作是PC->AR,PC+1,因此,CLR信号、LOAD信号、LDPC信号应该为111,PC_BUS为0,LDAR为1,p1应为0(顺序执行),下一地址应该为00010。
其余微地址也都是根据进行的操作来更新控制信号的状态和下一微地址。

三、微程序控制器

1、ROM以上部分


指令周期时序分析:
T1:给出当前微地址的微命令;
T2:给出下址;
T3:取指令;
T4:译码产生下址;
最上面的3个74273:微命令寄存器:保存一条微指令的操作控制字段和判别字段信息。

2、ROM以下部分


中间的三个7474:微地址寄存器,决定将要访问的下一条微指令的地址。
最下面的74273:指令寄存器,用来存放由控制存储器读出了一条微指令信息。
三个三输入与非门:地址转移逻辑,假如微程序不出现分支,则下一条微指令的地址就直接有微地址寄存器给出,当微程序出现分支时,意味微程序出现条件转移。
右边的逻辑元件:时序部件,由状态图输入法实现;
为了观察当前的微地址,特意添加da4~da0五个output信号。

3、举例分析

以LDA指令为例,分析其执行过程:

(1)T1/T2,微指令寄存器(742733)送出微命令,p1=1,绝对地址01000

(2)T2,微地址寄存器7474
3读取绝对地址01000
(3)T3,由数据通路的RAM读取IR[7…5]到IR74273

(4)T4,译码产生新的下址01000 -> 01001

(5)T1/T2,微指令寄存器发出微命令,p1=0,下址为10101;

(6)T1/T2,微指令寄存器发出微命令,p1=0,下址为10110;

四、学习过程中的思考

1、控制器的相关概念:

微程序:实现一条机器指令功能的许多条微指令的组成;
如微程序流程中包括很多微指令控制,进行一些加减运算,存储数据,地址自加一等等。
微指令:在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合;
如微程序流程中包括很多微指令控制,进行一些加减运算,存储数据,地址自加一等等。
微命令:控制器通过控制线向执行部件发出的各种控制命令;
如:ALU_BUS、PC_BUS信号等。
微操作:执行部件接受微命令后所做的操作;
如:CLR、LOAD、LDPC为111,PC_BUS为0,LDAR为1时执行的PC->AR,PC+1。

2、微程序控制器的功能:

① 控制程序依照正确的顺序执行指令。
② 发出控制信号控制数据通路完成相应的指令。
通过RAM存储器获取指令与数据,通过自身存储所有微指令的ROM查找并获得一条微指令。微指令包含当前操作和下条微指令的地址。
如何取指令、分析指令、执行指令?
通过下址取得指令,根据控制信号进行不同信号的开启或关闭也就是分析指令,然后再在控制信号的作用下执行指令

3、常用的两种下址产生方法:

控制器可以通过取下地址绝对跳转得到下一条微指令,也可以通过RAM中取得指令码送IR进行映射跳转。因此,代码编辑的RAM中的数据要符合控制器取指令的规范和顺序,以便与控制器能准确的翻译和执行代码。实验中这两种方法都是用到了的。

4、指令码如何与入口微地址对应:

指令码的二进制高3位为微指令地址二进制的低三位;

5、解释并比较微程序控制器的几种设计方法?

微序列控制器通过吧控制信号存储在一个查找Rom,(1)用水平编码生成微操作(2)用垂直编码生成微操作(3)从微代码直接产生控制信号。

6、 如何简化微程序流程图?

使其ADD、AND指令在部分微指令中合并(如AR→RAM、RAM→DR2、R5→DR1),只对ALU部分的下址进行区分,其他部分用同样的下址即可,这样可以省去一个IR的编码状态。

7、电路设计过程中如果出现多个状态机怎么办?

将不同状态机的控制信号进行区分,在不同控制信号作用下进行多个状态机的控制

计算机系统原理实验——微程序控制器相关推荐

  1. 计算机组成实验微程序控制器实验,计算机组成原理实验报告3++微程序控制器实验.doc...

    文档介绍: 计算机组成原理实验报告3微程序控制器实验计算机组成原理实验报告实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的 ...

  2. 计算机系统原理实验:模型机(一)设计与架构

    写在前面:这个实验很难,即便我当初做完了CPU实验,而且自认为做的很不错,但仍旧感觉很难. 所以,这个实验和CPU实验一样,我会做很多期,希望能够比较详细的讲完怎么做.当然,如果有错误或者有不理解的地 ...

  3. 湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf...

    课程实验报告 课 程 名 称: 计算机组成与结构 实验项目名称: bomblab 专 业 班 级: 姓 名: 学 号: 指 导 教 师: 完 成 时 间: 2016 年 4 月 20 日 信息科学与工 ...

  4. 计算机系统原理实验之BombLab二进制炸弹1、2关

    实验目的: 通过二进制炸弹实验,熟悉汇编语言,反汇编工具objdump以及gdb调试工具. 实验过程: 实验包里有三个文件,分别是二进制可执行文件bomb,C语言源程序文件bomb.c以及一个READ ...

  5. ZUCC_计算机系统原理实验_大作业 bomb 破解

    浙江大学城市学院实验报告 一.实验目的: 综合掌握程序的机器级表示以及汇编逆向调试过程. 二.实验内容: 二进制炸弹是作为一个目标代码文件提供给学生们的程序,运行时,它提示用户输入6个不同的字符串.如 ...

  6. ZUCC_计算机系统原理实验_实验五 位运算

    浙江大学城市学院实验报告 一.实验目的: 了解高级语言中数据类型的转换和移位操作结果,从而能更好地理解指令系统设计和计算机硬件设计所需满足的要求和需要考虑的问题: 二.实验内容: 编写程序,完成实验讲 ...

  7. ZUCC_计算机系统原理实验_实验四 数据的存储

    浙江大学城市学院实验报告 一.实验目的: 掌握计算机内部数据存储相关的概念:地址和内容: 掌握常见数据类型的存储宽度: 掌握计算机内部数据存储的顺序: 掌握计算机内部数据存储的对齐方式. 二.实验内容 ...

  8. ZUCC_计算机系统原理实验_实验八 Linux汇编语言初步

    浙江大学城市学院实验报告 一.实验目的: 了解Linux汇编语言的基本语法.汇编语言的编写.调试技巧 二.实验内容: 用给定的hello.s和test.s练习linux汇编语言的汇编.链接.执行.调试 ...

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

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

最新文章

  1. 【Springboot】日志
  2. 单目相机的内外参标定
  3. 教你如何rEFIt-让你开机免按option!
  4. 一步一步识别验证码(切分和识别)
  5. HTML与CSS基础之伪元素(五)
  6. 指令寻址方式与数据寻址方式
  7. 使用python对数据集进行批处理
  8. 选择适合自己的 OLAP 引擎,干货
  9. linux work有关的命令,VM workstation 中linux 命令
  10. UE4 打包C++项目到win32平台报错 could not find mspdbcore.dll
  11. mybatis多对一,一对一,多对多resultMap映射,pojo映射,传参集合,封装的对象传参
  12. 如何将 MacBook 的外置屏幕设置为主屏幕
  13. c语言共有34种运算符,C语言运算符与表达式
  14. 《大数据》2022年第3期目次摘要
  15. 制作透明背景图片,按钮
  16. 以数据为中心的路由协议_腰部零售企业如何以数据中台为中心,加速数字化落地...
  17. OV7725之AL422B-FIFO及摄像头的驱动原理
  18. ad19原理图标注_PCB设计:AD19原理图的模板如何进行调动
  19. 分布式环境下对部分热数据(如redis热key,热请求)进行探测,并对探测结果及时同步到各个client实例的JVM内存的方案简述
  20. 1.C语言变量类型、全局变量、局部变量

热门文章

  1. Xilinx AXI GPIO学习笔记以及问题点
  2. 文字太多时给文本框添加滑动条——text + ContentSizeFitter + Scroll View
  3. 和尚挖井故事给程序员的启示
  4. 生产系统功能目标和组织结构
  5. 我以为自己MySQL够牛逼了,直到被腾讯面试官狠狠抽了两巴掌
  6. 请不要在该奋斗的年纪选择了安逸
  7. Allegro PCB Design GXL (legacy) - 导出 PCB 中元件的坐标文件
  8. PyCharm许可证过期解决方案
  9. RuntimeTransformGizmo:位移、旋转、缩放插件
  10. Java 8新特性探究(四)深入解析日期和时间-JSR310