2020山东大学计算机组成原理课程设计报告
《计算机组成原理》
课程设计报告
微指令模型机实现
班级:
姓名:
学号:
小组成员:
完成日期: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.选择器
因为我们的算术运算器的数据来源有很多,所以需要设计数据选择器。
- 连接算术运算器的两个选择器,左边的是数据选择器A,选择RAM或R0的数据。右边的是数据选择器B,选择R1或PC的数据。
- 连接uPC的选择器,选择无条件跳转或按操作码散转。
- 连接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 |
六、微程序设计
- 微操作字段定义
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山东大学计算机组成原理课程设计报告相关推荐
- 计算机原理课程设计模拟cpy,山东大学-计算机组成原理课程设计报告样例
[实例简介] 山东大学计算机组成原理课程设计报告-包括实验格式+设计详细步骤(加法+乘法)+设计心得 5令果记 A A *影个碟「数 Mv2A开 R,:将2个操取至积 ADR.R,:兴R,R孙数彬栩劝 ...
- 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc
计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...
- 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc
计算机组成原理课程设计报告重庆大学 计算机组成原理课程设计报告 题目:微程序设计 专业:计算机科学与技术 班级: 指导老师: 目录 一.摘要 二.设计要求 三.微程序控制器原理 四.总体设计 五.测试 ...
- 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告
西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...
- 计算机组成原理调研报告,[调研报告]计算机组成原理课程设计报告模板2011.doc...
[调研报告]计算机组成原理课程设计报告模板2011 课程设计(论文)任务书 软件 学 院 软件+电子商务 专 业 2 班 一.课程设计(论文)题目 基本模型机设计与实现 二.课程设计(论文)工作自 2 ...
- 重庆大学 计算机组成原理,计算机组成原理课程设计报告重庆大学
计算机组成原理课程设计报告重庆大学 (27页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 CHONGQING UNIVERSITY计算机组 ...
- 江苏大学计算机组成原理课设6,计算机组成原理课程设计报告江苏大学适用于软件工程...
计算机组成原理课程设计报告江苏大学适用于软件工程 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 江苏大学<计算机组成原理&g ...
- 计算机组成原理cop乘法器,计算机组成原理课程设计报告COP2000实现乘法器和除法器.doc...
文档介绍: 计算机组成原理课程设计报告班级:班姓名:学号:完成时间:一.课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统 ...
- 计算机组成原理课程设计报告 给出指令执行流程 add(二进制加法),《计算机组成原理》课程设计报告材料...
<计算机组成原理>课程设计报告材料 (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档电子信息学院实验报告书课程 ...
- 计算机组成原理课程设计报告 给出指令执行流程 add(二进制加法),计算机组成原理课程设计...
课程设计任务书 专业:计算机科学与技术 学号: 学生姓名(签名): 设计题目:指令系统及指令总线设计 一.设计实验条件 综合楼808实验室 硬件:PC机 软件:Xilinx ISE ModelSim ...
最新文章
- “华为云杯”2020深圳开放数据应用创新大赛线上推介会成功举办,让深圳大数据在全球“跑”起来...
- 大白话详解Spring Security认证流程
- c++11 线程:让你的多线程任务更轻松
- retinaface tensorRT
- 【Qt5.8】Qt5.8中串口类QSerialPort
- Gradle接口:Gradle构建元数据
- Spring 经典面试题汇总.pdf(2020版)
- 【逆向知识】开发WinDBG扩展DLL
- undefined reference to `main`
- MOSS架构和共享服务(Shared Service)
- Salt: 2015.8.8.2 L@匹配BUG
- unity简单动画学习
- 【项目实战】Python基于决策树多分类模型实现水色图像的水质评价
- 关于数据分析岗位的工作思考
- matlab中加载数据方式,【转帖】Matlab数据导入方法
- 2021年中考计算机考试,2021年初中信息技术考试操作题
- 目前在读学生的Java学习之路
- 国家加强网络数据安全管控 中信国安鸿联九五助力企业保障数据安全
- win7计算机双击变管理,如何修复Win7系统鼠标单击以双击
- 使用 Let's Encrypt 的免费HTTPS服务
热门文章
- MySQL存数学符号,如何将数学符号保存到mysql或mssql数据库?
- 民生银行用户画像搭建与应用 / 民生银行客户画像搭建与应用
- SVN客户端安装教程
- [3D数学基础:图形与游戏开发]读书笔记 第12章(几何图元直线、AABB、球圆、平面、三角形、多边形)
- oracle 发布地图图层,从SHP数据存入Oracle到geoserver发布地图数据
- 教程——Wind Turbine Maintenance(Agents)
- CCF专区推荐重点SCI期刊征稿中~
- Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法
- 3dmax加载las数据
- 射频电路的原理及应用