CPU与简单模型机设计实验实验报告文档格式.docx
- 文档编号:18574626
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:15
- 大小:1.72MB
CPU与简单模型机设计实验实验报告文档格式.docx
《CPU与简单模型机设计实验实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《CPU与简单模型机设计实验实验报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
图1—4—2程序计数器(PC)原理图
本模型机和前面微程序控制器实验相比,新增加一条跳转指令JMP,共有五条指令:
IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移),HLT(停机),其指令格式如下(高4位为操作码):
助记符机器指令码说明
IN00100000IN→R0
ADD00000000R0+R0→R0
OUT00110000R0→OUT
JMPaddr11000000********addr→PC
HLT01010000停机
其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。
微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。
根据以上要求,设计数据通路图,如图1—4—3所示.
本实验在前一个实验的基础上增加了三个部件,一是PC(程序计数器),另一个是AR(地址寄存器),还有就是MEM(主存)。
因而在微指令中应增加相应的控制位,其微指令格式如表1—4—1所示。
图1-4—3数据通路图
系统涉及到的微程序流程见图1-4-4所示,当拟定“取指”微指令时,该微指令的判别测试字段为P〈1>
测试。
指令译码原理见图1—3—3所示,由于“取指"
微指令是所有微程序都使用的公用微指令,因此P〈1〉的测试结果出现多路分支。
本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定微地址单元,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写,微程序流程图上的单元地址为16进制.
当全部微程序设计完毕后,应将每条微指令代码化,表1—4—2即为将图1-4-2的微程序流程图按微指令格式转化而成的“二进制微代码表”。
图1-4-4简单模型机微程序流程图
表1-4—2二进制微代码表
地址
十六进制
高五位
S3-S0
A字段
B字段
C字段
MA5-MA0
00
000001
00000
0000
000
000001
01
006D43
110
101
000011
03
107070
00010
111
001
110000
04
002405
010
000101
05
04B201
1001
011
1D
105141
30
001404
000100
32
183001
00011
33
280401
00101
35
000035
110101
3C
006D5D
011101
设计一段机器程序,要求从IN单元读入一个数据,存于R0,将R0和自身相加,结果存于R0,再将R0的值送OUT单元显示。
根据要求可以得到如下程序,地址和内容均为二进制数。
地址内容助记符说明
0000000000100000;
START:
INR0从IN单元读入数据送R0
0000000100000000;
ADDR0,R0R0和自身相加,结果送R0
0000001000110000;
OUTR0R0的值送OUT单元显示
0000001111100000;
JMPSTART跳转至00H地址
0000010000000000
0000010101010000;
HLT停机
三.实验步骤:
联机写入和校验
联机软件提供了微程序和机器程序下载功能,以代替手动读写微程序和机器程序,但是微
程序和机器程序得以指定的格式写入到以TXT为后缀的文件中,微程序和机器程序的格式如下:
本次实验程序如下,程序中分号‘;
’为注释符,分号后面的内容在下载时将被忽略掉:
;
//*************************************//
////
//CPU与简单模型机实验指令文件//
//*************************************//
;
//*****StartOfMainMemoryData*****//
$P0020;
INR0从IN单元读入数据送R0
$P0100;
ADDR0,R0R0和自身相加,结果送R0
$P0230;
OUTR0R0的值送OUT单元显示
$P03E0;
JMPSTART跳转至00H地址
$P0400;
$P0550;
HLT停机
//*****EndOfMainMemoryData*****//
//**StartOfMicroControllerData**//
$M00000001;
NOP
$M01006D43;
PC—>
AR,PC加1
$M03107070;
MEM—>
IR,P<
1>
$M04002405;
R0—>
B
$M0504B201;
A加B—>
R0
$M1D105141;
MEM—〉PC
$M30001404;
R0—〉A
$M32183001;
IN->
R0
$M33280401;
R0—〉OUT
$M35000035;
$M3C006D5D;
PC—〉AR,PC加1
//**EndOfMicroControllerData**/
选择联机软件的“【转储】-【装载】”功能,在打开文件对话框中选择上面所保存的文件,软件自动将机器程序和微程序写入指定单元。
选择联机软件的“【转储】—【刷新指令区】”可以读出下位机所有的机器指令和微指令,并在指令区显示,对照文件检查微程序和机器程序是否正确,如果不正确,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的指令,以修改微指令为例,先用鼠标左键单击指令区的‘微存'
TAB按钮,然后再单击需修改单元的数据,此时该单元变为编辑框,输入6位数据并回车,编辑框消失,并以红色显示写入的数据。
运行程序
联机运行
将MC单元的编程开关置为‘运行’档,MEM单元的编程开关也置为‘运行’档,进入软件界面,选择菜单命令“【实验】—【简单模型机】"
,打开简单模型机数据通路图.
按动CON单元的总清按钮CLR,然后通过软件运行程序,选择相应的功能命令,即可联机运行、监控、调试程序,当模型机执行完JMP指令后,检查OUT单元显示的数是否为IN单元值的2倍。
在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致.
四、具体实现:
(1)打开IN单元,输入操作数(以03为例),
启动程序计数器(PC),然后自动启动加1操作,将指令地址放到地址寄存器(AR)
(2)从存储器当中读取指令,并将它存到指令寄存器(IR)当中,然后对指令进行编译处理,形成控制信号,来控制各个部件的工作;
(3)启动读操作,将IN单元当中的操作数(03)读到R0寄存器中
(4)接着从PC中取出第二条指令的地址,并自动加1,并将它存放到AR当中;
(5)从存储器中取出第一条指令,并将它存放到IR中,并进行编译
(6)将存储器R0的03值送到A和B中;
(7)启动ALU运算器,执行加操作,并将运算结果送往R0当中;
(8)同样从PC当中第三条(将运算结果OUT单元显示),取指令流程与上述指令上述类似;
五、项目要求及分析:
1、试修改现有的指令系统,将加法指令的功能修改为R0的内容和某个存储单元的内容相加;
增加存数、取数和减法三条机器指令,指令助记符分别为STA、LAD和SUB,指令操作码分别为十六进制的60、70和80。
设计流程图如下:
(红笔为修改的重点部分)
S3—S0
MA5—MA0
006D45
102406
000110
06
07
006D48
001000
08
102409
001001
09
05B201
1011
0A
203001
00100
0B
100401
36
006D4A
001010
37
006D4B
001011
六、所遇问题及解决方法:
这次实验含有部分的验证性实验,此部分与以往无较大差别,较为好做,易于完成.但同时此实验还含有难度较高的设计性部分,因而做起来较为头痛辛苦。
在设计程序流程图时遇到很多困难,在编程时亦遇到汇编语言和高级语言之间的转换、汇编语言和微指令之间的转换,均因无经验产生了许多问题,通过问老师、问学姐、问同学,经由他们的指导与帮助,初步完成了设计性实验,并且进行了初步的验证,基本解决了问题.
从此次实验中不难看出,设计性实验对于目前的我还是存在较多的挑战,虽有了相应的理论知识,但是理论与实际的差距还是较为明显的,将理论知识应用于实际的问题还存在较大的障碍。
在今后的学习中,应该更加重视理论向实际的转换,并且自己多思考多动手,不能总是纸上谈兵,从而提升自己的实践动手能力,具备相应的实际应用能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU 简单 模型 设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)