1、目的与要求
1)在掌握部件单元电路实验的基础上,进一步将其组成系统以构造一台基本模型实验计算机。
2)设计五条机器指令,并编写相应的微程序,具体上机调试,掌握整机软硬件组成概念。
2、实验设备
1) ZYE1601B计算机组成原理教学实验箱一台,排线若干。
2) PC机一台。
3、实验步骤与源程序
l) 实验接线方法如下:
(1)跳线器J1~J12全部拨在右边(自动工作方式);
(2)跳线器J16、J18、J23、J24全部拨在左边;
(3)跳线器J13~J15、J19、J25拨在右边;
(4)跳线器J20~J22、J26、J27连上短路片;
(5)UJ1连UJ2,JSE1连JSE2,SJ1连SJ2;
(6)MBUS连BUS2;
(7)REGBUS连BUS5;
(8)PCBUS连EXJ2;
(9)ALUBUS连EXJ3;
(10)ALUO1连BUS1;
(11)EXJ1连BUS3;
2) 根据机器指令画出对应的微程序流程图, 当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P(1)的测试结果出现多路分支。本机用指令寄存器的前4位I7~I4作为测试条件,出现5路分支,占用5个固定微地址单元。
实验机控制操作为P(4)测试,它以控制开关SWC、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。
注意:微程序流程图上的单元地址为16进制。
运 行 微 程 序 |
微程序流程图 |
OUT |
↓ |
PC→AR |
0B |
PC+1 |
↓ |
RAM→BUS |
0E |
BUS→AR |
↓ |
RAM→BUS |
0F |
BUS→DR1 |
↓ |
DR1→LED |
15 |
01 |
JMP |
↓ |
PC→AR |
0C |
PC+1 |
↓ |
RAM→BUS |
16 |
BUS→PC |
01 |
ADD |
↓ |
PC→AR |
09 |
PC+1 |
↓ |
RAM→BUS |
03 |
BUS→AR |
↓ |
04 |
RAM→BUS |
BUS→DR2 |
↓ |
05 |
RO→DR1 |
↓ |
06 |
(DR1)+(DR2) |
01 |
→RO |
SW→R0 |
↓ |
08 |
IN |
01 |
↓ |
01 |
PC→AR |
PC+1 |
↓ |
02 |
RAM→BUS |
BUS→IR |
P(1) |
08 |
STA |
↓ |
PC→AR |
0A |
PC+1 |
↓ |
RAM→BUS |
07 |
BUS→AR |
↓ |
RO→BUS |
0D |
BUS→RAM |
01 |
控 制器 |
↓ |
00 |
十六进制微地址 |
P(4) |
10 |
(SWC SWA) |
KRD(00) |
RP(11) |
↓ |
13 |
01 |
↓ |
PC→AR |
PC+1 |
10 |
← |
↓ |
RAM→BUS |
BUS→DR1 |
12 |
↓ |
DR1→LED |
17 |
KWE(01) |
↓ |
DR1→RAM |
18 |
PC→AR |
PC+1 |
11 |
← |
↓ |
↓ |
(SW)→BUS |
BUS→DR1 |
14 |
3)根据微程序流程图设计微指令并转换成16进制代码文件。
当全部微程序设计完毕后,应将每条微指令代码化,即按微指令格式将微程序流程图转化成二进制微代码表,如下表所示,再转换成16进制代码文件。
二进制微代码表:
微地址 | 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 0 | 0 0 0 | 0 0 0 | 0 0 0 0 0 1 |
1 4 | 0 0 0 0 0 1 0 0 0 | 0 1 0 | 0 0 0 | 0 0 0 | 0 1 1 0 0 0 |
1 5 | 0 0 0 0 0 1 1 1 0 | 0 0 0 | 1 0 1 | 0 0 0 | 0 0 0 0 0 1 |
1 6 | 0 0 0 0 0 1 0 0 1 | 1 0 1 | 0 0 0 | 1 1 0 | 0 0 0 0 0 1 |
1 7 | 0 0 0 0 0 1 1 1 0 | 0 0 0 | 1 0 1 | 0 0 0 | 0 1 0 0 0 0 |
1 8 | 0 0 0 0 0 1 1 0 1 | 0 0 0 | 1 0 1 | 0 0 0 | 0 1 0 0 0 1 |
设备(LED数码管)进行显示。然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。)。
设计机器指令程序如下(机器码为十六进制数据)。
监控程序的16进制文件格式(文件名C8JHE1):
程序:
$P00 00
$P01 10
$P02 0A
$P03 20
$P04 0B
$P05 30
$P06 0B
$P07 40
$P08 00
$P0A 01
微程序:
$M00 108105
$M01 82ED05
$M02 48C004
$M03 04E004
$M04 05B004
$M05 06A205
$M06 019A95
$M07 0DE004
$M08 011004
$M09 83ED05
$M0A 87ED05
$M0B 8EED05
$M0C 96ED05
$M0D 018206
$M0E 0FE004
$M0F 15A004
$M10 92ED05
$M11 94ED05
$M12 17A004
$M13 018005
$M14 182004
$M15 010A07
$M16 81D104
$M17 100A07
$M18 118A06
程序的机器指令代码:
IN
ADD [0AH]
STA [0BH]
OUT [0BH]
JMP [00H]
4)读写程序
①手动方法写代码程序(机器指令)步骤如下:
通过上一步将 机器指令对应的微代码正确地写入E2ROM 2816芯片后,再进行机器指令程序的装入和检查。
A. 将“编程开关”置“运行”位置,“运行控制”开关置“运行”位置,“运行方式”开关置“单步”位置。
B. 拨动总清开关(0→1),微地址寄存器清零,程序计数器清零。然后使控制开关SWC、SWA开关置为“0 1”,按动一次“启动运行”开关,微地址显示灯LUA0~LUA5显示“010001”,再按动一次“启动运行”开关,微地址显示灯LUA0~LUA5显示“010100”,此时数据开关的内容置为要写入的机器指令,再按动一次“启动运行”开关,即完成该条指令的写入。若仔细阅读微程序流程,就不难发现,机器指令的首地址只要第一次给出即可,PC会自动加1,所以,每次按动“启动运行”开关,只有在微地址灯显示“010100”时,才设置内容,直到所有机器指令写完。
C. 写完程序后须进行检验。拨动总清开关(0→1)后,微地址清零,PC程序计数器清零,然后使控制开关SWC、SWA为“0 0”,按动“启动运行”开关,微地址灯将显示“010000”,再按“启动运行”开关,微地址灯显示为“010010”,第三次按“启动运行”开关,微地址灯显示为“010111”,此时总线数据显示灯LZD0~LZD7显示为该首地址的内容,再按动一次“启动运行”开关,微地址灯显示为“010000”,2位数码管即显示RAM中的程序。不断按动“启动运行”开关,可检查后续单元内容。
注意:每次仅在微地址灯显示为“010000”时,2位数码管显示的内容才是相应地址中的机器指令内容。
② 联机读/写微程序和机器指令
用联机软件的装载功能将16进制格式文件(文件名为C8JHE1)装入实验系统即可。
5)运行程序
① 单步运行程序
A. “编程开关”置“运行”状态,“运行方式”开关置为“单步”状态,“运行控制”开关置为“运行”状态。
B. 拨动总清开关(0→1),微地址清零,PC计数器清零,程序首地址为00H。
C. 按动“启动运行”开关,即单步运行一条微指令。对照微程序流程图,观察微地址显示灯是否和流程一致。
② 连续运行程序
A. “编程开关”置“运行”状态,“运行方式”开关置为“连续”状态,“运行控制”开关置为“运行”状态。
B. 拨动总清开关,清微地址及PC计数器,按动“启动运行”开关,系统连续运行程序。如果要停止程序的运行,只需将“运行控制”开关置为“停止”状态,系统就停机。
C. 停机后,可检查存数单元0BH中的结果是否正确。
4、结果分析与实验体会
1)当外部开关量输入KD0~KD7为00000111,运行程序后检查存数单元0BH中的结果是否正确。
开关量输入为00000111时,运行程序后,OB单元的值为08H,与程序功能一致。
答:开关量输入为00000111时,运行程序后,OB单元的值为08H,与程序功能一致。
2)当外部开关量输入同上,若运行程序后希望存数单元0BH中的结果是0FH,则应该如何修改模型机监控程序的16进制格式文件(文件名C8JHE1)?
答:将16进制格式文件的最后一行修改为:$P0A08