一、实验要求
1.编写程序和微程序实现反复r0+1,并求和的功能
|
指令助记符 |
指令功能 |
A: |
ADD R0,#01H |
相加 |
JMP A |
跳转到A标号处 |
2.系统支持的基本指令格式有三种,本题选用格式一来定义指令系统
格式1
OP(4位) |
Rs(2位) |
Rd(2位) |
Addr/DATA/Disp/X (8位) |
注:
① ADD和JMP操作码分别为0101和1000.
② JMP寻址方式自定义。
系统CLR, PC=0.
3.模型机内部结构图
4.模型机24位微指令的格式
M23~M21 |
M20~M18 |
M17 ~ M15 |
M14 |
M13 |
M12 |
M11 |
M10 |
M9 |
M8 |
M7 |
M6~M0 |
BTO(3) |
OTB(3) |
FUNC(3) |
FS |
S3 |
S2 |
S1 |
S0 |
M |
Ci |
空 |
MA6-MA0 |
5.微指令字段编码表
编码+译码 |
BTO |
OTB |
FS=1 |
FS=0 |
FUNC |
FUNC |
|||
000 |
|
PC+1(t4) |
|
|
001 |
B-DA1(t4) |
ALU-B |
J1 |
M-W(t3) |
010 |
B-DA2(t4) |
299-B |
J2 |
M-R(t2) |
011 |
B-IR(t3) |
SR-B |
J3 |
I/O-W(t3) |
100 |
B-DR(t4) |
DR-B |
J4 |
I/O-R (t2) |
101 |
B-SP(t4) |
SI-B |
J5 |
INT-R (t2) |
110 |
B-AR(t3) |
SP-B |
CyCn |
INT-E (t3) |
111 |
B-PC |
PC-B |
CyNCn |
|
6.下址字段设计
微地址转移选择J1,加入跳转微指令中的7位下址是MA6 ~MA0,指令操作码是 I7I6I5I4,硬件求下条微指令地址的方法是:= MA6 MA5 MA4 I7I6I5I4.系统CLR,微地址=0。
二、实验微程序流程图
三、微指令和操作码
四:心得体会
实验总体是不难的,按步骤来:先画微程序流程图,根据流程图,对照表格,写好一条条微指令,有了微指令,然后再设计操作码。操作码一般来说最后才能写,因为操作码是按照微指令一步一步走的,微指令改动了,操作码不一定能够跑通。
实验中还碰到了一些有趣的事情。刚开始,lym同学跑yy-z02模型机的时候,没有设置兼容模式,指令一运行就崩溃,我们三还以为微指令设计有问题,不断的对照改动,最后恍然大悟,内心一万个***奔腾而过。
解决崩溃问题后,设计过程中发现下址和JUMP指令的微程序入口地址冲突了,微程序入口地址是由操作码决定的,我脑洞大开,把JUMP的操作码从1000改成1001,快被队友笑死了。老师的要求JUMP就是用1000操作码,我这样相当于考试做不出答案,反过来把题目改了,捂脸。最加简单的办法就是改下址,终于回归正途,完美解决。