基本模拟机设计与实现计算机组成原理课程设计.docx
《基本模拟机设计与实现计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《基本模拟机设计与实现计算机组成原理课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
基本模拟机设计与实现计算机组成原理课程设计
目录
1.绪论-1-
1.1课设目的及意义-1-
1.2课设内容及要求-1-
2.功能描述-2-
2.1微程序控制电路-2-
2.2微指令格式-2-
2.3.控制台微操作-3-
2.4数据通路框图-4-
3.设计思路-5-
3.1设计思路-5-
3.2设计代码表-6-
4.机器指令程序-7-
5.线路连接图-8-
6.微程序流程及说明-9-
7.运行调试及结果分析-11-
方法一:
手动写入-11-
方法二:
联机读/写程序-12-
8.设计体会及总结-16-
9.参考文献-17-
1.绪论
1.1课设目的及意义
(1)在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本模型计算机。
(2)为其定义五条机器指令,并编写相应的微程序,具体上级调试掌握整机的概念。
(3)掌握微程序计算机中指令和微指令的编码方法,深入理解机器指令在计算机中的运行过程。
1.2课设内容及要求
(1)设计实现一个简单的模型机,该模型机由运算器、寄存器、译码电路、存储器、和存储微指令用的控制存储器组成。
(2)实现5条机器指令:
IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
(3)可通过手动写入或联机的方式将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,观察该段程序的运行,验证编写的指令和微指令的执行情况是否符合设计要求,并对程序运行结果的正、误分析其原因。
(4)要求学生动手操作实验设备,掌握微程序设计思想和设计方法。
2.功能描述
2.1微程序控制电路
若采用手动写入方式实现基本模型机功能,则应先微代码手动写入控存2816中。
控存采用3片ROM,微指令寄存器18位,用两片8D触发器和一片4D触发器组成。
微地址寄存器6位,用三片正沿触发的双D触发器组成。
在不判别的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。
当T4时刻进行判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”完成地址修改。
实验电路有一个编程开关,具有三种状态:
PROM(编程)、READ(校验)、RUN(运行)。
当处于“编程状态”时,可根据微地址和微指令格式将微指令二进制代码写入控存2816中;当处于“校验状态”时,可以对写入控存的二进制代码进行验证;当处于“运行状态”时,只要给出微程序的入口地址,则可根据微程序流程图自动执行微程序。
2.2微指令格式
微指令长24位,其控制位顺序如下:
24
23
22
21
20
19
18
17
16
151413
121110
987
6
5
4
3
2
1
S3
S2
S1
S0
M
Cn
WE
A9
A8
A
B
C
uA5
uA4
uA3
uA2
uA1
uA0
图2.1微代码定义示意图
前面9位为直接控制字段,直接与相应的控制门连接。
后面UA5-UA0为6位的后续微地址,即跳转地址。
而中间的A、B、C三个译码字段,分别由三个控制位译码出多位。
其含义如下:
A字段
B字段
C字段
15
14
13
选择
12
11
10
选择
9
8
7
选择
0
0
0
0
0
0
0
0
0
0
0
1
LDRi
0
0
1
RS-B
0
0
1
P
(1)
0
1
0
LDDR1
0
1
0
RS-D
0
1
0
P
(2)
0
1
1
LDDR2
0
1
1
RI-B
0
1
1
P(3)
1
0
0
LDIR
1
0
0
299-B
1
0
0
P(4)
1
0
1
LOAD
1
0
1
ALU-B
1
0
1
AR
1
1
0
LDAR
1
1
0
PC-B
1
1
0
LDPC
图2.2控制位含义示意图
C字段中的P
(1)-P(4)是四个测试字位。
其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实验微程序的顺序、分支、循环运行。
B字段中的RD-B、R0-B、RI-B分别为原寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来警醒三个工作寄存器R0、R1及R2的选通译码。
指令寄存器用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器,然后再传送到指令寄存器。
指令划分为操作码和地址码字段,由二进制构成,为了执行任何一条给定的指令,必须对操作码进行测试P
(1),通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”根据指令的操作码进行译码,强置微控制单元的微地址,使下一条微指令指向相应的微程序。
2.3.控制台微操作
本实验采用五条机器指令:
IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
其中IN为单字长,其余为双字长指令。
为了向RAM写入、读出机器指令,并能启动程序执行,还须设计三个控制台操作微程序。
存储器读(KRD):
拨动总清开关CLR后,控制台开关SWB、SWA为“00”时,按START微动开关,可对RAM连续手动读操作。
存储器写(KWE):
拨动总清开关CLR后,控制台开关SWB、SWA为“01”时,按START微动开关,可对RAM连续手动写操作。
启动程序(RP):
拨动总清开关CLR后,控制台开关SWB、SWA为“11”时,按START微动开关,即可转入到第01号“取址”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SWA的状态来设置,其定义如下:
SWB
SWA
控制台指令
0
0
读内存(KRD)
0
1
写内存(KWE)
1
1
启动程序(RP)
图2.3控制台指令定义示意图
2.4数据通路框图
3.设计思路
3.1设计思路
计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出提条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成。
即一条机器指令对应一个微程序。
本系统有两种外部I/O设备,一种是二进制数码开关,作为输入设备(INPUT);另一种是两位十六进制数LED数码管,作为输出设备(OUTPUTUNIT)。
在输入时,二进制开关数据直接经过三态门送到总线上。
只要开关状态不变,输入的信息也不变。
输出时,将输出数据送到数据总线上,当写信号(WE)有效时,将数据打入输出锁存器,驱动数码块显示。
3.2设计代码表
微地址
S3
S2
S1
S0
M
CN
WE
A9
A8
A
B
C
UA5…UA0
00
0
0
0
0
0
0
0
1
1
000
000
100
010000
01
0
0
0
0
0
0
0
1
1
110
110
110
000010
02
0
0
0
0
0
0
0
0
1
100
000
001
001000
03
0
0
0
0
0
0
0
0
1
000
000
001
000100
04
0
0
0
0
0
0
0
0
1
011
000
000
000101
05
0
0
0
0
0
0
0
1
1
010
101
000
000110
06
1
0
0
1
0
1
0
1
1
001
101
000
000001
07
0
0
0
0
0
0
0
0
1
110
000
000
001101
10
0
0
0
0
0
0
0
0
0
001
000
000
000001
11
0
0
0
0
0
0
0
1
1
110
110
110
000011
12
0
0
0
0
0
0
0
1
1
110
110
110
000111
13
0
0
0
0
0
0
0
1
1
110
110
110
001110
14
0
0
0
0
0
0
0
1
1
110
110
110
010110
15
0
0
0
0
0
0
1
0
1
000
001
000
000001
16
0
0
0
0
0
0
0
0
1
110
000
000
001111
17
0
0
0
0
0
0
0
0
1
010
000
000
010101
20
0
0
0
0
0
0
0
1
1
110
110
110
010010
21
0
0
0
0
0
0
0
1
1
110
110
110
010100
22
0
0
0
0
0
0
0
0
1
010
000
000
010111
23
0
0
0
0
0
0
0
1
1
000
000
000
00000
24
0
0
0
0
0
0
0
0
0
010
000
000
011000
25
0
0
0
0
0
1
1
1
0
000
101
000
000001
26
0
0
0
0
0
0
0
0
1
101
000
110
000001
27
0
0
0
0
0
1
1
1
0
000
101
000
010000
30
0
0
0
0
0
1
1
0
1
000
101
000
010001
表3.1二进制微代码表
4.机器指令程序
本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED数码管)进行显示。
本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。
本实验设计机器指令程序如下:
地址(二进制)内容(二进制)助记符说明
0000000000000000IN“INPUTDEVICE”0000000100010000ADD[0AH]R0+[02H]→R0
0000001000001010
0000001100100000STA[0BH]R0→[03H]
0000010000001011
0000010100110000OUT[0BH][03H]→BUS
0000011000001011
0000011101000000JMP[00H]00H→PC
0000100000000000
00001001
0000101000000001自定加数01H
0111结果保存在0B单元
5.线路连接图
图5.1实验连接图
6.微程序流程及说明
当拟定“取址”微指令时,该微指令的判别测试字段为P
(1)测试。
由于“取址”微指令是所有微程序都使用的公用微指令,因此P
(1)测试结果出现多路分支。
本次课程设计使用指令寄存器的前4位(IR7-IR4)作为测试条件,出现5路分支,占用5个固定微地址单元。
6.1微程序流程图
控制台操作为P(4)测试,它以控制台开关SWB,SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。
当分支微地址单元固定后,剩下的其他地方就可以一条微指令占用一个微地址单元随意填写。
当输入00000000(00)微地址的时候,就从控制台入口开始了流程,对应二进制代码表,微地址00的下一条微指令地址即为010000,对应的是20,也就走到了控制台的第二步P(4),当前正在执行的微指令从控制
当做完判断后,就沿着那条分支继续走,存储器取出后放在微指令寄存器中,该寄存器的各个控制位的输出直接连到各个控制门上。
进入到跳转地址图示如下:
图6.2控制台流程图
7.运行调试及结果分析
方法一:
手动写入
1)手动写入程序
1.先将机器指令对应的微代码正确的写入2816中。
2.使用控制台KWE和KRD微程序进行机器指令程序的装入和检查。
A.使编程开关处于“RUN”,STEP为“STEP”状态,STOP为“RUN”状态。
B.拨动总清开关CLR(0→1),微地址寄存器清零,程序计数器清零。
然后使控制台SWB、SWA开关置为“01”,按动一次启动开关START,微地址显示指示灯显示“010001”,再按动一次START,微地址灯显示“010100”,此时数据开关的内容置为要写入的机器指令,按动两次START键后,完成该条指令的写入。
C.写完程序后须进行检验。
拨动总清开关CLR(0→1)后,微地址清零。
PC程序计数器清零,然后使控制台开关SWB、SWA为“00”,按动启动START,微地址灯将显示“010000”,再按START,微地址灯显示为“010010”,第三次按START,微地址灯显示为“010111”,再按START后,此时输出单元的数码管显示为该首地址中的内容。
不断按动START,以后每个循环PC会自动加1,可检查后续单元内容。
2)手动运行程序
1.单步运行程序:
A.使编程开关处于“RUN”状态,STEP为“STEP”状态,STOP为“RUN”状态。
SWITCH单元的开关SWB、SWA为“11”。
B.拨动总清开关CLR(0->1),微地址清零,程序计数器清零。
程序首址为00H。
C.单步运行一条微指令,每按动一次START键,即单步运行一条微指令。
对照微指令流程图,观察微地址显示灯是否和流程一致。
D.单步运行结束后,检查存数单元(0BH)中的结果是否和理论值一致。
2.连续运行程序:
使“STATEUNIT”中的STEP开关置为“ECEX”状态。
STOP开关置为“RUN”状态,SWITCH单元的开关SWB、SWA为“11”。
拨动CLR开关,清微地址及程序计数器,然后拨动START,系统连续运行程序,稍后将STOP拨至“STOP”时,系统停机。
停机后,检查存数单元(0BH)结果是否正确。
3)结果分析
本实验求的结果为03H,根据实验原理从INPUTDEVICE中输入数据02H给R0,取出01H,然后把这两个数进行相加,得到的结果为03H.与理论上02H+01H=03H与实验结果一致
方法二:
联机读/写程序
1)联机写入程序
按照规定格式,将机器指令及表2-2微指令二进制表成十六进制的如下格式文件。
程序机器指令格式说明:
$P0000$XXXX
$P0110机器指令代码
$P0202十六进制地址
$P0320
$P040B微指令格式说明:
$P0530$MXXXXXXXX
$P060B微指令代码
$P0740十六进制地址
$P0800注意:
因系统文件格式要求,微指令格文件和
$P0201控制存储器的微指令代码的第一字节(前8位)
$M00108101与第三字节(后8位)对换一下。
$M0182ED01
$M0248C000
$M0304E000
$M0505B000
$M0506A201
$M06019A95
$M070DE000
$M08011000
$M0983ED01
$M0A87ED01
$M0B8EED01
$M0C96ED01
$M0D018202
$M0E0FE000
$M0F15A000
$M1092ED01
$M1194ED01
$M1217A000
$M13018001
$M14182000
$M15010A07
$M1681D100
$M17100A07
$M18118A06
2)运行程序
(1)将02送到R0寄存器中
(2)将[0AH]所指向的数据01传到数据寄存器DR2中
(3)将DR1与DR2中的数据相加,将结果03传到R0寄存器
(4)将R0中数据03传送到[0BH]这个地址所指向的单元中
(5)将地址[0BH]所指向的数据03输出
8.设计体会及总结
8.1实验中出现的问题
(1)原理不清
当按照实验接线图接完全部的实验线路的时候才发现原来如果采用手动方式写入指令程序,则必须先将微代码写入到控存中。
于是小组成员又重新接线,将微代码写入2816中。
(2)基础知识不牢固
在写入控存微代码时,由于意外突然断电,于是重新将微代码写入控存。
在写到一半代码的时候,才想起控存使用的是ROM芯片,断电后可以保存数据,但已经浪费大量的时间。
在进行写内存的时候,小组成员针对是否应该先将数据写入到DDR1或者是RAM芯片中再进行本实验产生了分歧。
最终,仔细分析实验原理,一致认为不需要先写入到RAM或寄存器中,在本实验的写内存过程中即可实现。
(3)实施方法不科学
在实验开始后发现没有写控存,决定采用联机读/写程序的方式完成实验,可是发现原来本小组的实验箱连计算机的插头是坏掉的。
换了一个实验箱后又发现无法连接计算机。
在写控存时,将24个二进制微代码全部写入到控存后验证居然发现原来并没有按地址存入进去,于是又重写将这么多微代码到控存中。
8.2体会及总结
通过本次实验,不但了解了基本模型机的原理而且很好的巩固了课本上的知识,同时还通过本次实验积累了计算机硬件实验的经验和方法,主要有:
在实验开始的第一步必须要检查实验设备是否完好,避免出现连好了线路才发现设备问题无法完成实验的情况;
在实验开始前一定要做好预习工作,了解大概的实验原理同时进行思考提出问题,在实验的过程中边验证原理边解决问题;
边做实验边验证数据的正确性,避免重复返工;
小组成员一定要分工明确,提高效率,避免所有人都做一件事情而浪费时间。
总之,本次实验既巩固了知识,又积累了经验,加深对计算机科学的兴趣。
也为今后的学习打下了良好的基础。
9.参考文献
[1]王爱英.计算机组成与结构(第四版).北京;清华大学出版社,2007
[2]白中英.计算机组成原理.北京;清华大学出版社,2002
文档来源网络,版权归原作者。
如有侵权,请告知,我看到会立刻处理。
忽略此处..