2020山东大学计算机组成原理课程设计报告

article/2025/9/27 12:15:45

《计算机组成原理》

课程设计报告

微指令模型机实现

 

班级:

姓名:

学号:

小组成员:

完成日期:2020.10.16

一、计算机的功能和用途

通过该课程设计的学习,我们设计一台模型机,该模型机运行在FPGA平台上,可以模拟真正的计算机设备的一部分功能,通过微指令进行实现,使其可以完成一些基本操作,包括:加法、自增、减法、判断全0和判断进位,还有包括存储器读取写入等操作。具体实现了(1)(A1)+(A2)->A3。将A1、A2地址的数分别存到R0、R1寄存器,再通过ALU将加法结果存到寄存器R0,同时将结果状态cvnz存入寄存器STATE,将状态存入内存,再将寄存器R0的值存入内存。(2)数组累加。取出数组首地址放入地址累加器D,取出数组的数进行累加,使内存中的累加次数X+1,使D中地址+1,接着判断累加次数X是否等于N,若X与N不相等,则跳转到累加指令,否则结束循环,将累加结果存入内存。调试过程中通过平台指示灯观察内部的数据流动情况,了解计算机的运行、计算过程和内部的时序问题并辅助修改。

二、指令系统

1.指令格式

1.1基本字长:8位

1.2单字长指令:指令由高4位操作码、低4位全0构成。

7                        4      3      2     1     0

操作码OP

0

0

0

0

 

1.3双字长指令:指令由第一字节高4位操作码、低4位全0;第二字节操作数或操作数地址构成。

7                        4      3      2     1     0

操作码OP

0

0

0

0

 

 

操作数/操作数地址

 

 

两种指令格式的高四位为操作码,支持16种不同的指令。使用10、20...90作为九条指令以及F0停机指令。

2.寻址方式:

2.1:立即数寻址:操作数在指令的第二个字节

2.2:直接寻址:操作数的地址在指令的第二个字节。

3.指令功能  

指令

指令功能

LDR0 A

读内存将A地址的数存入寄存器R0

LDR1 A

读内存将A地址的数存入寄存器R1

LDD A

读内存将A地址的数存入地址累加器D

ADD1 S

将寄存器R0、R1中的数相加,结果存入R0,加法结果状态从寄存器STATE写入内存地址S

ADD2

读内存将地址累加器D中地址的数与寄存器R0中的数相加,结果存入R0

STA A

将寄存器R0中的数写入内存地址A

INX #X

将内存中的累加次数X取出、+1再写回内存

CPX #N

累加次数X与N比较,若相等则跳出循环,否则继续循环累加

BNE #M

跳转回加法指令

HALT

停机

三、总体结构与数据通路

3.1总体结构

总体结构的设计参考课件中的设计方案。下面简要介绍一下各个部分:

1.寄存器

根据功能的需要,共设计了8个8位寄存器,其中R0、R1为通用寄存器。PC为程序计数器,存储下一条将要执行的指令的地址。IR为指令寄存器,用来存储从RAM中取出的指令。MAR为地址寄存器,该寄存器提供对RAM进行读写的地址。MBR为三态门寄存器,隔离RAM读写冲突,数据通过MBR写入RAM。状态寄存器为三态门寄存器,保存ALU的计算结果状态,并可以直接写入RAM。地址累加器寄存器,提供自增的RAM数组地址。

2.ALU

ALU为组合74181和74182的算术运算器,接收从A和B两个端口传来的数据进行相应的运算并输出,可以提供的加法、直传、减法、判断全0、判断进位的操作。

3.选择器

因为我们的算术运算器的数据来源有很多,所以需要设计数据选择器。

  1. 连接算术运算器的两个选择器,左边的是数据选择器A,选择RAM或R0的数据。右边的是数据选择器B,选择R1或PC的数据。
  2. 连接uPC的选择器,选择无条件跳转或按操作码散转。
  3. 连接MAR的选择器,选择总线或地址累加器的数据。

3.2数据通路

模型机的数据通路是以总线为基础

下面就几个基本的操作分析其数据通路:

1)取指令

   RAM → 选择器A →ALU → Bus  → IR

2)送指令地址

PC → 选择器B →ALU → Bus → 选择器C → MAR

3)程序计数器加一

(PC)+1 → PC

4)(R0)->RAM

R0 → 选择器A →ALU → Bus  → MBR → RAM

5)(R0)+(R1)->RAM

R0 → 选择器A →ALU ,R1 → 选择器B →ALU,

ALU→ Bus  → MBR → RAM

四、指令执行流程 

五、微程序执行流程

1.取指周期

00

M(MAR)->IR

01

(PC)+1->PC

02

QJP

 

2.LDR0 A1

10

(PC)->MAR

11

(PC)+1->PC

12

M(MAR)->MAR

13

M(MAR)->R0

14

(PC)->MAR

15

JP

3.LDR1  A2

20

(PC)->MAR

21

(PC)+1->PC

22

M(MAR)->MAR

23

M(MAR)->R1

24

(PC)->MAR

25

JP

4.ADD1  S

30

(R0)+(R1)->R0

31

(PC)->MAR

32

M(MAR)->MAR

33

状态->M(MAR)

34

(PC)+1->PC

35

(PC)->MAR

36

JP

5.STA

40

(PC)->MAR

41

(PC)+1->PC

42

M(MAR)->MAR

43

****R0->M(MAR)

44

(PC)->MAR

45

JP

6.LDD D

50

(PC)->MAR

51

M(MAR)->D

52

(PC)+1->PC

53

(PC)->MAR

54

JP

7.INX #X

60

(PC)->MAR

61

M(MAR)->R1

62

(R1)+1->R1

63

R1->M(MAR)

64

(PC)+1->PC

65

(PC)->MAR

66

JP

8.CPX #N

70

PC ->MAR

71

N==X? M(MAR)-(R1)

72

特殊(PC)+1->PC

73

特殊(PC)+1->PC

74

(PC)+1->PC

75

(PC)->MAR

76

JP

9.BNE #M

80

(PC)->MAR

81

(PC) + M(MAR)->PC

82

(PC)->MAR

83

JP

 10.ADD2

90

(D)->MAR

91

(D)+1->D

92

M(MAR)->R1

93

(R0)+(R1)->R0

94

(PC)->MAR

95

JP

六、微程序设计

  1. 微操作字段定义

23-20:

20控制AB累加

0:不选中累加

1:选中累加

21:是否特殊PC+1

22:en_MBR:1为写

19-16:S3210

15:PC_LD

计数1

置数0

14-12:

ALU_AB选择

R0:001

R1:010

PC:011

RAM:100

R0R1:101

RAPC:110

RAR1:111

11-9:寄存器

R0:001

R1:010

PC:011

IR:100

MAR:101

MBR:110

地址累加器D:111

8:停机

7:ALU_CN

6:en

状态寄存器:1为写

5:RAM读

4:RAM写

3:地址累加器D_LD

2-0:跳转

upc+1:001

JP:010

QJP:011

 

2.特殊规定

1.ALU直传状态寄存器不计状态

2.s3210、cn:00001表示直传

3.只能通过R0存回RAM

4.直传B(PC)用加法

S1001 CN1

状态寄存器控制:1.脉冲2.A的AY、BY有选中即A中有传数3.s3210非全零,即非A直传。实现了A+B和A-B时存状态

七、系统的调试、测试方法:

7.1单元测试部分

ALU测试:

a输入、b输入、s0-s3、cn接开关

输出、进位接指示灯

通过控制开关查看指示灯的方式验证ALU加法、减法、直传、进位功能

 

累加器测试(PC、地址累加器、uPC):

输入、LD、CLR接开关,CP接单脉冲

输出接指示灯

通过控制开关和单脉冲查看指示灯的方式验证累加器置数、计数功能

 

 

7.2整机测试部分:

①微程序经过检查无误后通过软件以十六进制写入ROM的相应单元。

②指令经过检查无误后通过软件以十六进制写入RAM的相应单元。

③拨清零开关使所有寄存器、累加器清零,按复位键。

④按一次脉冲键发单脉冲使启动器发送连续脉冲,开始运行程序。

⑤根据指示灯观察R0、R1、总线、MAR、PC、uPC的值。

⑥等到程序运行结束后通过软件读取RAM的值。

八、课程设计总结

8.1遇到的问题

三态门:起初由于不理解RAM的单数据通路而发生读写冲突报错,后来通过使用带有三态门的寄存器MBR调控总线与RAM的数据线连接解决问题。

时序问题:由于把握不好读取ROM微操作和寄存器打入脉冲的顺序,导致数据未在正确时机打入寄存器和RAM读写混乱,经过加灯观测调试和询问老师,最终解决时序问题。uRD和CPuIR是下降沿有效,而各个寄存器CP是上升沿有效,而单脉冲为负脉冲,因此在各个寄存器CP脉冲之前都要加上一个非门。

ALU直传:ALU器件设计功能只能直传A输入端的数据,无法直传B输入端的数据,通过使用加法0+B输入端数据实现B输入端数据的直传。

ALU输入组合问题:我们设计的电路中RAM和R1接入ALU的A输入端,pc和R0接入ALU的B输入端。因而无法做到RAM与R1相加,解决方案是将R1的值写入R0中,接着从RAM中取出相应的值放入R1寄存器实现R1寄存器中的值与RAM相加。

如何判断累加次数x和数组大小n是否相等:起初尝试各种简单电路发现难以完成该功能,接着按照真值表转换逻辑电路的方法成功实现该功能。

连续脉冲下不能正常工作:单步执行时程序没有出现问题,当处于连续脉冲自动执行时会发生跳过某条指令、循环指令等问题,最终发现与实验台有关,更换实验台解决问题。

 

8.2收获和体会

回顾这次实验,自己收获还是挺多的,加深了对课本知识的认知,也增强了动手能力。

1. 经过这次实验加深了对CPU工作原理的认识,对于CPU的数据传输以及工作方式有了更进一步的了解。学会了简单指令系统的设计以及微程序工作原理。

2.通过课程设计掌握了模型机的设计流程。并从模型及设计流程中学会了解决实际问题,体会到了设计与实际实现之间的不同。

3. 通过实验过程更加熟悉了实验平台的使用,以及模型及设计流程。同时也锻炼了在实验中锻炼自己的动手能力和解决问题的能力。

4.总线结构有利也有弊,好处在于电路结构清晰、数据通路简单、组合多样,弊端在于容易发生读写冲突、总线上只能传输一组数据。

 

九、小组成员各自的任务和完成情况

1.小组分工

各部件设计、整机实验中,两人共同设计电路框架、画电路图、测试部件、指令和微程序的编写。曾尝试过分工,在检查时发现单独完成部分效果不佳,出现器件连线出错、设计理念不一致、编码不完善的问题,因而选择两人一起边讨论边思考完成实验。

2.完成情况

基础实验和拓展数组累加实验最终均实现,各个指令的实验结果均正确,完成了预期的功能。

 

附录1:逻辑图

一、总图

二、各部件图

2.1ALU

 

 2.2 8位2选1选择器

2.3 8位寄存器

2.4 8位进制计数器

2.5 连续脉冲启动器

附录2.1:微程序编码

附录2.2:指令编码

 


http://chatgpt.dhexx.cn/article/yE6omPu4.shtml

相关文章

创建react应用程序_创建多版本React应用程序的6个步骤

创建react应用程序 The React team said that there are no new features in React 17, but react17.0.0-rc.0 comes with the power to lazy load and deep integrate multiple versions of React. This no-feature is larger than any feature, which is a stepping stone fo…

你真的懂package.json吗

点击蓝字 「前端小苑」关注我 作者 | MasonEast 编辑 | 桔子酱 前言 在Node.js中,模块是一个库或框架,也是一个Node.js项目。Node.js项目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块…

《Linux编程》上机作业 ·004【文件I/O操作】

注:前言、目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 友情提醒:仅供参考理解,请勿直接复制粘贴 友情提醒:仅供参考理解,请勿直接复制粘贴 友情提醒:仅供参考理解,…

CPU比GPU训练神经网络快十几倍,英特尔:别用矩阵运算了

来源丨机器之心 神经网络训练通常是 GPU 大显身手的领域,然而莱斯大学和英特尔等机构对 GPU 的地位发起了挑战。 在深度学习与神经网络领域,研究人员通常离不开 GPU。得益于 GPU 极高内存带宽和较多核心数,研究人员可以更快地获得模型训练的结…

用于基于 CNT 的射频辐射热计开发研究的 CPX-VF 探针台

我们会不时强调我们的低温探针台如何用于有趣的研究。我们最新的应用重点是阿克伦大学领导的工作,并发表在上个月的IEEE 微波理论与技术汇刊上。与来自美国陆军和 Nano-C Inc.(马萨诸塞州 Westwood 的纳米结构碳材料及其应用开发商)的研究人员…

ProJet 3510 CPX蜡模3D打印机在珠宝行业成功应用

传统的首饰设计是一个细致和增量的过程。传统设计从设计师的构图开始,一旦草图被批准后,就会雕刻成模型,如果蜡模没有足够接近原始草图或未能满足客户的期望,必须重做,这样会浪费大量的时间。使用ProJet 3510 CPX专业蜡成型3 d打印机&#xf…

基于 CNT 的射频辐射热计开发研究的 CPX-VF 低温探针台

有时,我们喜欢强调我们的低温探针台如何用于有趣的研究。我们最新的应用重点是由阿克伦大学领导并发表在上个月的IEEE Transactions on Microwave Theory and Techniques 上的工作。UA 的 ZEN-Lab 的Michael Gasper 和 Ryan Toonen 博士与美国陆军和 Nano-C Inc.&am…

Parker驱动器维修COMPAX控制器维修CPX0200H

COMPAX控制器:由不同的模拟功率控制信号,由MOSFET IC级驱动器GND/PGND(功率接地))的信号控制,则应分别接地。使用IC的小信号部分的控制IC,SGND信号与功率地之间的连接点。合理的方法是地信号地返…

用于 CPX、CPX-VF 和 CRX-VF 探针台的新手提箱选项

如果您正在寻找一种简单的方法来将样品从手套箱、干燥箱或其他惰性气氛容器转移到高真空、低温探测环境,您可能会感兴趣:一个新的专用手提箱 (PS-SC- CPX) 与可安装在我们的CPX、CPX-VF或CRX-VF探针台上的负载锁定组件 (PS-LL-CPX) 一起使用。 该手提箱具…

GE IC697CPX935 CPU模块PDF帅

IC697CPX935 是 GE 自动化和控制公司制造的具有三个内置串行端口的单槽 PLC CPU。它能够对系统进行实时控制。使用 VMEC.1 格式,IC697CPX935 可以通过安装在机架上的背板与不同的“智能选项”模块进行通信。该设备通过三位运行/停止控制开关或连接到运行适当软件的计…

micropython仿真器_microbit/cpx 的 python模拟器:Device Simulator Express

Device Simulator Express是一个 VSCode 的编程扩展,使用它无需硬件就能对 Circuit Playground Express(CPX)或 BBC micro:bit 仿真和调试python程序,此外还可以通过串口观察设备的输出。Device Simulator Express 和 makecode 中的设备模拟器功能类似,但它是一个 python 程…

Win10强制更新关闭方法

Win10自动更新怎么永久关闭?有效的Win10强制更新关闭方法 之前小编为大家分享过一些Win10彻底关闭Windows Update自动更新的方法,主要是通过一些如设置流量计费或借助一些专门的小工具来实现,但往往会发现,Win10自动更新就像打不死…

Win10强制更新禁不掉的解决方法

现况 2018年8月之后安装或者更新的win10,现在会出现无法禁用windows update的情况,表现为: 在服务里禁用了windows update服务,后续服务仍能正常启动强制更新。设置“登录”和“恢复”选项卡依然无效。在设置里关闭更新选项无效…

iOS 强制更新

废话不多说,直接上代码 (void)getNewVersion {NSURLRequest *request [NSURLRequest requestWithURL:[NSURL URLWithString:"http://itunes.apple.com/cn/lookup?id1036152564"]];NSURLSessionDataTask *task [[NSURLSession sharedSession] dataTaskW…

uniapp APP端在线升级功能实现讲解——强制或可选升级,下载进度显示

文章目录 概要 需求分析 技术实现梳理 1.是否更新判断: 2.升级弹窗的展示 3.根据升级类型限制操作 4.下载APP监听下载进度 5.下载完自动安装 核心API讲解 1.plus.downloader.createDownload(url,options,completedCallback)(下载) 2.plus.r…

Windows如何一键永远禁止系统更新?

大家好,我是小寻,欢迎关注公众号:工具优选,免费领取优质项目源码和常用工具,还可以加入我的交流群! 一、工具介绍 想必大家也会与小编存在同样的困惑,为啥我电脑上的windows会频繁的强制系统升级?windows…

win10总强制更新?教你永久关闭

win10系统个人觉得还挺好用的,但是有一点非常烦人,就是隔三岔五强制自动更新! 相信也是大部分用户最不喜欢的一点。 更新后,系统可能还会出现一些bug,而且每次更新都要等上一段时间。对于每天工作繁忙的用户来说&…

解决Xshell/Xftp强制升级无法进入问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、首先创建一个Xshell.txt文件,用notepad打开 二、将以下代码复制入.txt文件 1.实例代码 2.保存文件,重命名 3.以管理员身份运行…

杰理强制升级工具4.0使用和原理解析

用那个有8个挡位的烧录工具(4.0工具)的话,默认是走USB的,不是走串口,工具的DP接芯片的DP,工具的DM接芯片的DM,工具的5V接芯片的VBAT(要保证能控制芯片供电通断才能从mask启动&#x…