《计算机组成原理》

课程设计报告

微指令模型机实现

班级:

姓名:

学号:

小组成员:

完成日期: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:指令编码

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

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

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

  2. 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc

    计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...

  3. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc

    计算机组成原理课程设计报告重庆大学 计算机组成原理课程设计报告 题目:微程序设计 专业:计算机科学与技术 班级: 指导老师: 目录 一.摘要 二.设计要求 三.微程序控制器原理 四.总体设计 五.测试 ...

  4. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告

    西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...

  5. 计算机组成原理调研报告,[调研报告]计算机组成原理课程设计报告模板2011.doc...

    [调研报告]计算机组成原理课程设计报告模板2011 课程设计(论文)任务书 软件 学 院 软件+电子商务 专 业 2 班 一.课程设计(论文)题目 基本模型机设计与实现 二.课程设计(论文)工作自 2 ...

  6. 重庆大学 计算机组成原理,计算机组成原理课程设计报告重庆大学

    计算机组成原理课程设计报告重庆大学 (27页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 CHONGQING UNIVERSITY计算机组 ...

  7. 江苏大学计算机组成原理课设6,计算机组成原理课程设计报告江苏大学适用于软件工程...

    计算机组成原理课程设计报告江苏大学适用于软件工程 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 江苏大学<计算机组成原理&g ...

  8. 计算机组成原理cop乘法器,计算机组成原理课程设计报告COP2000实现乘法器和除法器.doc...

    文档介绍: 计算机组成原理课程设计报告班级:班姓名:学号:完成时间:一.课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统 ...

  9. 计算机组成原理课程设计报告 给出指令执行流程 add(二进制加法),《计算机组成原理》课程设计报告材料...

    <计算机组成原理>课程设计报告材料 (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档电子信息学院实验报告书课程 ...

  10. 计算机组成原理课程设计报告 给出指令执行流程 add(二进制加法),计算机组成原理课程设计...

    课程设计任务书 专业:计算机科学与技术 学号: 学生姓名(签名): 设计题目:指令系统及指令总线设计 一.设计实验条件 综合楼808实验室 硬件:PC机 软件:Xilinx ISE ModelSim ...

最新文章

  1. “华为云杯”2020深圳开放数据应用创新大赛线上推介会成功举办,让深圳大数据在全球“跑”起来...
  2. 大白话详解Spring Security认证流程
  3. c++11 线程:让你的多线程任务更轻松
  4. retinaface tensorRT
  5. 【Qt5.8】Qt5.8中串口类QSerialPort
  6. Gradle接口:Gradle构建元数据
  7. Spring 经典面试题汇总.pdf(2020版)
  8. 【逆向知识】开发WinDBG扩展DLL
  9. undefined reference to `main`
  10. MOSS架构和共享服务(Shared Service)
  11. Salt: 2015.8.8.2 L@匹配BUG
  12. unity简单动画学习
  13. 【项目实战】Python基于决策树多分类模型实现水色图像的水质评价
  14. 关于数据分析岗位的工作思考
  15. matlab中加载数据方式,【转帖】Matlab数据导入方法
  16. 2021年中考计算机考试,2021年初中信息技术考试操作题
  17. 目前在读学生的Java学习之路
  18. 国家加强网络数据安全管控 中信国安鸿联九五助力企业保障数据安全
  19. win7计算机双击变管理,如何修复Win7系统鼠标单击以双击
  20. 使用 Let's Encrypt 的免费HTTPS服务

热门文章

  1. MySQL存数学符号,如何将数学符号保存到mysql或mssql数据库?
  2. 民生银行用户画像搭建与应用 / 民生银行客户画像搭建与应用
  3. SVN客户端安装教程
  4. [3D数学基础:图形与游戏开发]读书笔记 第12章(几何图元直线、AABB、球圆、平面、三角形、多边形)
  5. oracle 发布地图图层,从SHP数据存入Oracle到geoserver发布地图数据
  6. 教程——Wind Turbine Maintenance(Agents)
  7. CCF专区推荐重点SCI期刊征稿中~
  8. Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法
  9. 3dmax加载las数据
  10. 射频电路的原理及应用