文章目录

  • 一、实验时间
  • 二、实验要求
  • 三、整机实验基本思路
    • 3.1 前序知识
    • 3.2 关于机器指令和微指令的存放,读取和跳转
  • 四、电路图
    • 4.1 启动电路
    • 4.2 模8计数器
    • 4.3 24和38译码器
    • 4.4 总图
  • 五、实验中遇到的问题和注意事项
    • 5.1 脉冲问题
    • 5.2 微指令问题
    • 5.3 取指周期不断循环的问题
    • 5.4 状态位不正确的问题
  • 六、机器指令和微指令

一、实验时间

2021年4月29日星期四,第9周
2021年5月6日星期四,第10周

整机实验总共四次,由于第一次实验出现问题,没做出来,第二次实验成功了,因此这次的博客包含了第一次和第二次整机实验的内容

二、实验要求

前两次整机实验的主要目的是完成老师要求的整机实验的基本功能

基本功能如下

1.设计基本指令系统,包含以下几个机器指令

  • LOAD Ri AD:取数指令,指令长度为两字节,(AD)–> Ri,AD为操作数在内存中的地址,根据AD取得操作数,打入Ri
  • STORE Ri AD:存数指令,指令长度为两字节,将Ri的值存入内存中(地址为AD)
  • ADD Ri,Rj:加法指令,指令长度为一字节,Ri+Rj->Rj,将Ri和Rj中保存的数求和,存入Rj中
  • HALT:停机指令,指令长度为一字节,实现停机功能

2.模型机的基本结构为单总线,根据模型机框架图画出具体的电路图

具体的结构框架图参考老师ppt里的这个图

注意,千万不要参考例子里的图

3.在保存两数相加的结果时,也要保存相应的状态位

  • C:反映无符号数的运算是否产生进位。运算结果的最高有效位向更高位进位或者借位,C置1,否则置0
  • V:反映有符号数的运算是否溢出。运算结果超过了规定字长有符号数的表示范围,V置1,否则置0
  • N:反映运算结果的符号。运算结果为负,N置1,否则置0。
  • Z:判断结果是否为0。运算结果0,Z置1,否则置0。

其实有符号数和无符号数不用区分得太清楚,可以全部当成有符号数来算

4.基本要求

注意以下几点

  1. 要求必须使用连续脉冲,程序执行结束后自动停机
  2. 总共4条机器指令,其中LOAD和STORE指令为双字长,ADD和HALT指令为单字长
  3. LOAD指令取操作数采用的是直接寻址的方式,而不是老师示例里给的立即寻址

三、整机实验基本思路

3.1 前序知识

在进行整机实验之前,由于涉及机器指令和微指令,比较复杂,因此一开始的时候我没弄清楚思路。

这里强烈建议整机实验思路很不清晰的同学去看一下大二上计组书第10章10.2节的内容

10.2 节主要描述的是微程序设计的基本思路,在书本 P403-P410

相信看完之后对整机实验微指令的理解会更充分一些

3.2 关于机器指令和微指令的存放,读取和跳转

首先明确以下几点

  1. 机器指令和数据存在RAM中
  2. 每条机器指令对应的一段微指令存放在ROM的相应内存中

实验思路

整机实验分为两个部分,一个是机器指令和微指令的部分,另一个是电路图的部分

(1)机器指令和微指令

机器指令按顺序存放在RAM里,微指令存放在ROM里

整机实验跟之前的第四次部件级实验很像(有uPC和PC),都涉及RAM和ROM的同时操作,上次的实验是从ROM中取微指令,而下一条微指令的地址只能是uPC+1,而这整机实验下一条微指令的地址则复杂多变,可能有三种情况(uPC+1,JP,QJP)。

在上次实验里,取出的微指令负责操控取RAM的PC,MAR,MBR等寄存器,还负责对RAM进行读写,这次实验也是一样,只不过上次实验中从RAM中取来的只是地址或数据,而这次从RAM中取来的既有机器指令,又有数据。

所以,整机实验在本质上和上次的实验有很多相似的地方,只不过功能变得更多了控制打入寄存器的方式也变多了,之前是某一位控制一个寄存器的打入脉冲,现在是三位2进制数控制好几个寄存器,使用38译码器对微指令进行译码

由于本次实验在RAM中一共有4条机器指令
注意要通过机器指令选择打入哪个寄存器

比如:
LOAD Ri Ai
ADD Ri,Rj
STORE Rj,AD3
HLAT

而我们按下脉冲的时侯,连续脉冲自动工作,如果不预设初值的话,uPC自动从ROM的0地址开始取出微指令,前几条微指令的功能就是从RAM中取出第一条机器指令(注意是双字长)

在取出第一条机器指令的第一个字长的时候,根据第一个字长中的OP,自动在OP后加上0000,形成这条机器指令要执行的微指令的地址,之后uPC的初值设为这个地址,跳转到这条机器指令对应的微指令执行

要特别注意的是这条机器指令是双字长指令,因此在这条机器指令对应的微指令里,还要再设计一个取指周期,取出第二个字长的机器指令

微指令在执行的过程中,需要指定下一条微指令的地址,共有三种方式,一种是uPC+1,另一种是JP(无条件转移,微地址由uIR23-16提供),还有一种是QJP(按照高4位操作码,第4位为0转移)。

刚刚上面说的这种转移方式就是使用QJP方式转移的

这就是取出第一条机器指令并执行的全部过程

在执行完第一条机器指令之后(即执行到第一条机器指令对应的最后一条微指令的时候),会使用JP进行无条件转移,转移到下一条机器指令的取值周期部分,取出机器指令之后,再根据这条机器指令的OP判断对应要执行的微程序的地址,然后执行,以此类推

最后一个指令是停机指令,用于终止连续脉冲

以上就是对微程序执行过程的分析,我们要做的就是明确流程,写好对应的微程序和机器指令

具体的微指令编码可以参考老师课件上的这个图,但要注意的是,老师的这个只是示例,我们最后写的跟老师的这个不一样,还是要根据具体的图来写相应的微指令

(2)电路图部分

电路图部分的结构框图参考上面的结构框架图,其中ALU有多种运算功能,R0,R1使用寄存器组封装,IR采用普通寄存器,PC采用带有三台门,可置位的PC,MDR采用带有三态门的寄存器,锁存器Z采用带三态门的寄存器,暂存器Y采用普通寄存器

特别注意的是CU部分,由于这一部分的输出和uPC相连(相当于CU部分要确定微指令的地址),所以CU部分需要连选择器,两路选择的数据分别为OP(IR)+0000和微指令的高8位,目的是给uPC设置初值(即下一条微指令的地址)

另外要注意的地方就是24位微指令的输出,在必要的地方需要使用24或38译码器,然后连接对应的寄存器的CP

特别注意MDR的部分,MDR有两路输入,两路输出,一路输入从总线中获得,另一路输入从RAM里来,需要加2路选择器进行选择。一路输出总线,另一路输出RAM,都需要加三态门

四、电路图

4.1 启动电路

注意,这里最后的输出没加非门,跟上次实验不一样,在总图中,启动电路输出连uPCPC的部分加了非门,这样是为了适应时序问题

4.2 模8计数器

4.3 24和38译码器


4.4 总图

总图里使用了寄存器组,寄存器组我只封装了两个,有的老师要求必须封装4个
总图由于太大(大于5MB),这里没法上传,我之后会上传到我的资源里

这里把MDR的连线结构展示一下,输出连了两个三态门

启动电路部分注意加非门的部分,如果不这样画,可能会出现脉冲问题

五、实验中遇到的问题和注意事项

5.1 脉冲问题

让我觉得非常疑惑的是,在整机实验中,使用上次实验(实验四)的启动电路时会出现问题,虽然不论是更改前还是更改后,原理都是一样的,但是就是会出现问题。因此要对启动电路部分进行以下修改,修改后指令执行正确

  1. 去掉启动电路输出那里的非门
  2. 在CPuPC的输入加非门(启动电路输出加非门),uRD和CPuIR直接连启动电路的输出

具体的连线方法在上面的启动电路图和总图中有

5.2 微指令问题

在一开始设计微指令的时候,出现了一些问题,导致运行结果不正确

首先是ADD指令对应的微指令中不需要PC+1,因为ADD指令是单字长指令,之前设计了PC+1的微指令,导致PC多加了一次

另外就是ADD指令中要将R0和R1的数同时送给ALU相加,否则会出问题
一开始的时候先把R0送ALU,再把R1送ALU,相加之后结果有误

5.3 取指周期不断循环的问题

在第一次整机实验时,出现了取值周期循环的问题,无法实现正常跳转
后来发现有两个问题,第一个问题是我自己的电路图连错了,第二个问题是我的微指令写错了,导致出现无限循环无法跳转
在解决了这两个问题之后,指令正常执行跳转
此外,取值周期的循环问题还可能是由上面5.1的脉冲问题导致的,我没有遇到,但是有的同学遇到过这样的情况

5.4 状态位不正确的问题

之前调试的时候,将CPPSW和CPRi两个信号放在同一条微指令里执行,理论上应该即保存状态位,又保存运算的结果,但是却出现了状态位不对,结果正确的情况
因此在之后的微指令中,我先打入状态位,再打入结果,这样状态位就正确了

六、机器指令和微指令

机器指令

微指令和具体的微操作

具体的二进制位在这里就不给了,因为不同人设计的微指令不同,具体的二进制也不同

取指微指令

LOAD

ADD

STORE

HALT

山东大学软件学院计算机组成原理课程设计整机实验(1)相关推荐

  1. 山东大学软件学院计算机组成原理课程设计整机实验(2)

    文章目录 一.实验时间 二.实验任务 三.对JO指令要求的理解 四.JO指令的实现方法 五.实验中遇到的其它问题 5.1 机器吞微指令的问题 一.实验时间 2021年5月6日星期四,第10周 2021 ...

  2. 计算机组成原理课程设计总结,计算机组成原理课程设计的实验报告

    计算机组成原理课程设计的实验报告 长治学院课程设计报告课程名称: 计算机组成原理课程设计 设计题目: 设计一台性能简单的计算机 系 别: 计算机系 专 业: 计科1101班 组 别: 第三组 学生姓名 ...

  3. 计算机原理课程设计模拟cpy,山东大学-计算机组成原理课程设计报告样例

    [实例简介] 山东大学计算机组成原理课程设计报告-包括实验格式+设计详细步骤(加法+乘法)+设计心得 5令果记 A A *影个碟「数 Mv2A开 R,:将2个操取至积 ADR.R,:兴R,R孙数彬栩劝 ...

  4. 计算机组成原理模型机设计实验总结,计算机组成原理课程设计实验报告-基本模型机设计与实现.docx...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 计 算 机 组 成 原 理 实 验 报 告 评 语: 成绩 教 师: 年 月 日 班 级: 1403011 学 号: 140301124 姓 名: ...

  5. 计算机模型机设计实验报告,计算机组成原理课程设计实验报告-基本模型机设计与实现...

    计算机组成原理课程设计实验报告-基本模型机设计与实现 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 计 算 机 组 成 原 理实 ...

  6. 计算机组成原理硬布线实验心得,计算机组成原理课程设计—硬布线控制器的设计与实现...

    计算机组成原理课程设计-硬布线控制器的设计与实现 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 硬布硬布线线控制器的控制器的设计 ...

  7. 计算机组成原理课程实验报告,计算机组成原理课程设计实验报告

    <计算机组成原理课程设计实验报告>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计实验报告(18页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理课程设计实验报告( ...

  8. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  9. 计算机组成原理课设总线,计算机组成原理课程设计(全).doc

    文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...

  10. 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...

    计算机与通信工程学院 计算机组成原理课程设计 专业名称班级学号学生姓名指导教师设计时间207.12.23~2018.1.3 课程设计任务书 专业:: 学生姓名(签名): 设计题目: 设计实验条件 20 ...

最新文章

  1. 带无线驱动的linux版本,怎么在Linux里查询无线网卡的驱动程序版本
  2. Android 动画之TranslateAnimation应用详解
  3. oracle protocol=beq 不可用,Oracle BEQ方式连接配置
  4. C#中的委托,匿名方法和Lambda表达式
  5. PHP-四种解析XML文件的方法
  6. 仿windows关机对话框的提示框效果
  7. 启明智显分享| 2.4寸旋钮串口屏在健身器材上的应用
  8. Redis学习笔记~关于空间换时间的查询案例
  9. Unity写lua代码的vs插件:BabeLua
  10. java-导入 导出 下载模板 等功能
  11. oracle.exe占用cpu太高,360tray.exe占用CPU过高,怎么办
  12. 三次样条插值(附完整代码)
  13. C++ - pow函数
  14. 一个实现粒子爆炸效果的控件
  15. Unity3D: 做自己的卡牌游戏 (一)
  16. Scrapy爬虫设置代理ip
  17. python答案大全_大学慕课2020用Python玩转数据答案大全
  18. 币圈一级市场丨coinlist上新系列——TRIBL
  19. 人脸识别 android p,虹软人脸识别 - faceId及IR活体检测的更新介绍
  20. 31道飞桨命题入围|第八届中国国际“互联网+”大学生创新创业大赛产业赛道命题公布

热门文章

  1. Bayer Pattern
  2. 行为识别TSM训练ucf101数据集
  3. windows10系统精简:NTlite工具
  4. 万能DLL1.3发布 ——您的编程好帮手
  5. [RK3399][Android7.1] 调试笔记 --- 播放音乐没有声音
  6. 土地利用转移矩阵步骤
  7. 存储器容量大小和芯片选择
  8. Origin 使用笔记
  9. 新浪微博与腾讯微博的开放平台比较 -- 从程序员的角度
  10. mapguide 2011