基本模型机的设计与实现文档格式.docx
《基本模型机的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《基本模型机的设计与实现文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1
读内存
写内存
启动程序
⑶指令寄存器介绍
指令寄存器用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送到指令寄存器。
指令划分为操作码和地址码字段,由二进制构成,为了执行任何一条给定的指令,必须对操作码进行测试P
(1),通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”根据指令中的操作码进行译码,强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
⑷输入/输出设备
本系统有两种外部I/O设备,一种是二进制代码开关KD0~KD7,它作为输入设备INPUT;
另一种是数码显示块,它作为输出设备OUTPUT。
例如:
输入时,二进制开关数据直接经过三态门送到外部数据总线上,只要开关状态不变,输入的信息也不变。
输出时,将输出数据送到外部数据总线上,当写信号(W/R)有效时,将数据打入输出锁存器,驱动数码块显示。
⑸设计指令
根据基本模型机的硬件设计五条机器指令:
外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。
指令格式如下:
助记符 机器指令码 说 明
IN 0000 0000;
“外部开关量输入”KD0~KD7的开关状态→R0
ADDaddr 0001 0000×
×
×
;
R0+[addr]→R0
STAaddr0010 0000×
R0→[addr]
OUTaddr0011 0000×
[addr]→BUS
JMPaddr 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)根据机器指令画出对应的微程序流程图
本实验的微程序流程见图3.7.2,当拟定“取指”微指令时,该微指令的判别测试字段为P
(1)测试。
由于“取指”微指令是所有微程序都使用的公用微指令,因此P
(1)的测试结果出现多路分支。
本机用指令寄存器的前4位I7~I4作为测试条件,出现5路分支,占用5个固定微地址单元。
实验机控制操作为P(4)测试,它以控制开关SWC、SWA作为测试条件,出现了3路分支,占用3个固定微地址单元。
当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。
注意:
微程序流程图上的单元地址为16进制。
(2)根据微程序流程图设计微指令并转换成16进制代码文件。
当全部微程序设计完毕后,应将每条微指令代码化,即按微指令格式将图3.7.2微程序流程图转化成二进制微代码表,如表3.7.1所示,再转换成16进制代码文件。
运行微程序
图3.7.2微程序流程图
OUT
↓
PC→AR
0B
PC+1
RAM→BUS
0E
BUS→AR
0F
BUS→DR1
DR1→LED
15
01
JMP
0C
16
BUS→PC
ADD
09
03
04
BUS→DR2
05
RO→DR1
06
(DR1)+(DR2)
→RO
SW→R0
08
IN
02
BUS→IR
P
(1)
STA
0A
07
RO→BUS
0D
BUS→RAM
控制器
00
十六进制微地址
P(4)
10
(SWCSWA)
KRD(00)
RP(11)
13
←
12
17
KWE(01)
DR1→RAM
18
11
(SW)→BUS
14
监控程序的16进制文件格式(文件名C8JHE1):
程序:
$P0000
$P0110
$P020A
$P0320
$P040B
$P0530
$P060B
$P0740
$P0800
$P0A01
微程序:
$M00108105
$M0182ED05
$M0248C004
$M0304E004
$M0405B004
$M0506A205
$M06019A95
$M070DE004
$M08011004
$M0983ED05
$M0A87ED05
$M0B8EED05
$M0C96ED05
$M0D018206
$M0E0FE004
$M0F15A004
$M1092ED05
$M1194ED05
$M1217A004
$M13018005
$M14182004
$M15010A07
$M1681D104
$M17100A07
$M18118A06
表3.7.1二进制微代码表
微地址
S3S2S1S0MCNWEB1B0
A
B
C
UA5…UA0
0 0
000001011
000
100
010000
0 1
110
000010
0 2
000001001
001
001000
0 3
000001001
000100
0 4
011
000101
0 5
010
000110
0 6
100101011
101
000001
0 7
001101
0 8
000001000
0 9
000011
0A
000001011
000111
0 B
001110
0 C
010110
0 D
000001101
0 E
001111
0 F
010101
1 0
010010
1 1
000001011
010100
1 2
000001001
010111
1 3
000001011
1 4
000001000
011000
1 5
000001110
1 6
000001001
17
000001110
1 8
000001101
010001
(3)读写程序
①手动方法写微程序参看实验六。
手动方法写代码程序(机器指令)步骤如下:
通过上一步将机器指令对应的微代码正确地写入E2ROM2816芯片后,再进行机器指令程序的装入和检查。
A.将“编程开关”置“运行”位置,“运行控制”开关置“运行”位置,“运行方式”开关置“单步”位置。
B.拨动总清开关(0→1),微地址寄存器清零,程序计数器清零。
然后使控制开关SWC、SWA开关置为“01”,按动一次“启动运行”开关,微地址显示灯LUA0~LUA5显示“010001”,再按动一次“启动运行”开关,微地址显示灯LUA0~LUA5显示“010100”,此时数据开关的内容置为要写入的机器指令,再按动一次“启动运行”开关,即完成该条指令的写入。
若仔细阅读微程序流程,就不难发现,机器指令的首地址只要第一次给出即可,PC会自动加1,所以,每次按动“启动运行”开关,只有在微地址灯显示“010100”时,才设置内容,直到所有机器指令写完。
C.写完程序后须进行检验。
拨动总清开关(0→1)后,微地址清零,PC程序计数器清零,然后使控制开关SWC、SWA为“00”,按动“启动运行”开关,微地址灯将显示“010000”,再按“启动运行”开关,微地址灯显示为“010010”,第三次按“启动运行”开关,微地址灯显示为“010111”,此时总线数据显示灯LZD0~LZD7显示为该首地址的内容,再按动一次“启动运行”开关,微地址灯显示为“010000”,2位数码管即显示RAM中的程序。
不断按动“启动运行”开关,可检查后续单元内容。
每次仅在微地址灯显示为“010000”时,2位数码管显示的内容才是相应地址中的机器指令内容。
②联机读/写微程序和机器指令
用联机软件的装载功能将16进制格式文件(文件名为C8JHE1)装入实验系统即可(详细操作见随机软件的README)。
(4)运行程序
①单步运行程序
A.“编程开关”置“运行”状态,“运行方式”开关置为“单步”状态,“运行控制”开关置为“运行”状态。
B.拨动总清开关(0→1),微地址清零,PC计数器清零,程序首地址为00H。
C.按动“启动运行”开关,即单步运行一条微指令。
对照微程序流程图,观察微地址显示灯是否和流程一致。
② 连续运行程序
A.“编程开关”置“运行”状态,“运行方式”开关置为“连续”状态,“运行控制”开关置为“运行”状态。
B.拨动总清开关,清微地址及PC计数器,按动“启动运行”开关,系统连续运行程序。
如果要停止程序的运行,只需将“运行控制”开关置为“停止”状态,系统就停机。
C.停机后,可检查存数单元0BH中的结果是否正确。
五、实验现象、结果:
实验结果记录表:
2
3
4
5
6
7
输入指令IN
80H
加法指令ADD
传送指令STA
输出指令OUT
无条件跳转指令JMP
六、实验体会
这学期的学习后,让我对计算机的组成有了一个初步的认识,它的内部有很多的奥妙,理论性很强的。
在这次课程设计中,我在实验设计中结合理论学了不少东西。
因为课程设计是要求将以前在课堂上学的理论知识运用到实际的设计当中去,所以在设计过程中,我碰到各种各样的问题。
为了解决这些问题,我仔细认真的去翻阅自己以前学过但是以为已经了解熟悉的东西。
这在无形中帮助我加深对所学知识的了解及运用能力,并且让我明白什么地方是我们真正需要去关注的。
尤其对运算器、存储器和微程序控制器,有了非常透彻的认识。
并且对线路的连接与模型机的各个硬件的结构,以及微程序微指令的一些编制与设计有了一定的了解。