淮海工学院计算机工程学院
实验报告书
课程名 《计算机组成原理》
题 目: 基本模型机的设计与实现
班 级: 软件122
学 号: 2012122734
姓 名: 韩莹
实验七 基本模型机的设计与实现
一、实验目的
1、在掌握部件单元电路实验的基础上,进一步将其组成系统以构造一台基本模型实验计算机。
2、设计五条机器指令,并编写相应的微程序,具体上机调试,掌握整机软硬件组成概念。
二、实验原理
部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,实验计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
⑴有关微控制器部分在前一实验中已详细介绍
⑵ 主存储器的读、写和运行
为了向主存储器RAM中装入程序或数据,并且检查写入是否正确以及能运行主存储器中的程序,必须设计三个控制操作微程序。
·存储器读操作:拨动总清开关后,置控制开关SWC、SWA为“0 0”时,按要求连线后,连续按“启动运行”开关,可对主存储器RAM连续手动读操作。
·存储器写操作:拨动总清开关后,置控制开关SWC、SWA为“0 1”时,按要求连线后,再按“启动运行”开关,可对主存储器RAM进行连续手动写入。
·运行程序:拨动总清开关后,置控制开关SWC、SWA为“1 1”时,按要求连线后,再按“启动运行”开关,即可转入到第01号“取址”微指令,启动程序运行。
上述三条控制指令用两个开关SWC、SWA的状态来设置,其定义如下:
SWC
SWA
控制台指令
0
0
1
0
1
1
读内存
写内存
启动程序
⑶ 指令寄存器介绍
指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送到指令寄存器。指令划分为操作码和地址码字段,由二进制构成,为了执行任何一条给定的指令,必须对操作码进行测试P(1),通过节拍脉冲T4的控制以便识别所要求的操作。“指令译码器”根据指令中的操作码进行译码,强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
⑷ 输入/输出设备
本系统有两种外部I/O设备,一种是二进制代码开关KD0~KD7,它作为输入设备INPUT;另一种是数码显示块,它作为输出设备OUTPUT。例如:输入时,二进制开关数据直接经过三态门送到外部数据总线上,只要开关状态不变,输入的信息也不变。输出时,将输出数据送到外部数据总线上,当写信号(W/R)有效时,将数据打入输出锁存器,驱动数码块显示。
⑸ 设计指令
根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。指令格式如下:
助记符 机器指令码 说 明
IN 0000 0000 ; “外部开关量输入”KD0~KD7的开关状态→R0
ADD addr 0001 0000 ×××× ××××; R0+[addr]→R0
STA addr 0010 0000 ×××× ××××; R0→[addr]
OUT addr 0011 0000 ×××× ××××; [addr]→BUS
JMP addr 0100 0000 ×××× ××××; [addr]→PC
说明:
指令IN为单字节指令,其余均为双字节指令, ××××××××为addr对应的主存储器二进制地址码。
⑹ 基本模型机监控软件的设计
本模型机监控软件主要完成从输入设备读入数据,进行简单算术运算后,将结果存入内存的某个单元,最后通过输出设备输出结果。
监控软件详细如下:
地 址 内容 助记符 说 明
0000 0000 0000 0000 IN ;“INPUT DEVICE”→R0
0000 0001 0001 0000 ADD[0AH]; R0+[0AH]→R0
0000 0010 0000 1010
0000 0011 0010 0000 STA[0BH]; R0→[0BH]
0000 0100 0000 1011
0000 0101 0011 0000 OUT[0BH]; [0BH]→BUS
0000 0110 0000 1011
0000 0111 0100 0000 JMP[00H] ; 00H→PC
0000 1000 0000 0000
0000 1001
0000 1010 0000 0001 ;自定义参加运算的数
0000 1011 ;求和结果存放单元
三、实验电路
1、实验连线图
a、跳线器J1~J12全部拨在右边(自动工作方式);
b、跳线器J16、J18、J23、J24全部拨在左边;
c、跳线器J13~J15、J19、J25拨在右边;
d、跳线器J20~J22、J26、J27连上短路片;
e、UJ1连UJ2,JSE1连JSE2,SJ1连SJ2;
f、MBUS连BUS2;
g、REGBUS连BUS5;
h、PCBUS连EXJ2;
i、ALUBUS连EXJ3;
j、ALUO1连BUS1;
k、EXJ1连BUS3;
EMBED PBrush \* MERGEFORMAT
2、实验原理图
参见图3.7.1。
SHAPE \* MERGEFORMAT
四、实验步骤
⑴根据机器指令画出对应的微程序流程图
本实验的微程序流程见图3.7.2,当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P(1)的测试结果出现多路分支。本机用指令寄存器的前4位I7~I4作为测试条件,出现5路分支,占用5个固定微地址单元。
实验机控制操作为P(4)测试,它以控制开关SWC、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。
注意:微程序流程图上的单元地址为16进制。
根据微程序流程图设计微指令并转换成16进制代码文件。
当全部微程序设计完毕后,应将每条微指令代码化,即按微指令格式将图3.7.2微程序流程图转化成二进制微代码表,如表3.7.1所示,再转换成16进制代码文件。
SHAPE \* MERGEFORMAT
监控程序的16进制文件格式(文件名C8JHE1):
程序:
$P00 00
$P01 10
$P02 0A
$P03 20
$P04 0B
$P05 30
$P06 0B
$P07 40
$P08 00
$P0A 01
微程序:
$M00 1081061
$M01 82ED61
$M02 48C060
$M03 04E060
$M04 05B060
$M05 06A261
$M06 019A61
$M07 0DE060
$M08 011060
$M09 83ED61
$M0A 87ED61
$M0B 8EED61
$M0C 96ED61
$M0D 018262
$M0E 0FE060
$M0F 15A060
$M10 92ED61
$M11 94ED61
$M12 17A060
$M13 018061
$M14 182060
$M15 010A63
$M16 81D160
$M17 100A63
$M18 118A62
表3.7.1 二进制微代码表
微地址
S3 S2 S1 S0 M CN WE B1 B0
A
B
C
UA5…UA0
0 0
0 0 0 0 0 1 0 1 1
0 0 0
0 0 0
1 0 0
0 1 0 0 0 0
0 1
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 0 0 0 1 0
0 2
0 0 0 0 0 1 0 0 1
1 0 0
0 0 0
0 0 1
0 0 1 0 0 0
0 3
0 0 0 0 0 1 0 0 1
1 1 0
0 0 0
0 0 0
0 0 0 1 0 0
0 4
0 0 0 0 0 1 0 0 1
0 1 1
0 0 0
0 0 0
0 0 0 1 0 1
0 5
0 0 0 0 0 1 0 1 1
0 1 0
0 0 1
0 0 0
0 0 0 1 1 0
0 6
1 0 0 1 0 1 0 1 1
0 0 1
1 0 1
0 0 0
0 0 0 0 0 1
0 7
0 0 0 0 0 1 0 0 1
1 1 0
0 0 0
0 0 0
0 0 1 1 0 1
0 8
0 0 0 0 0 1 0 0 0
0 0 1
0 0 0
0 0 0
0 0 0 0 0 1
0 9
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 0 0 0 1 1
0 A
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 0 0 1 1 1
0 B
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 0 1 1 1 0
0 C
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 1 0 1 1 0
0 D
0 0 0 0 0 1 1 0 1
0 0 0
0 0 1
0 0 0
0 0 0 0 0 1
0 E
0 0 0 0 0 1 0 0 1
1 1 0
0 0 0
0 0 0
0 0 1 1 1 1
0 F
0 0 0 0 0 1 0 0 1
0 1 0
0 0 0
0 0 0
0 1 0 1 0 1
1 0
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 1 0 0 1 0
1 1
0 0 0 0 0 1 0 1 1
1 1 0
1 1 0
1 1 0
0 1 0 1 0 0
1 2
0 0 0 0 0 1 0 0 1
0 1 0
0 0 0
0 0 0
0 1 0 1 1 1
1 3
0 0 0 0 0 1 0 1 1
0 0