计算机组成原理-附加实验二-设计微程序

一、实验要求

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操作码,我这样相当于考试做不出答案,反过来把题目改了,捂脸。最加简单的办法就是改下址,终于回归正途,完美解决。





猜你喜欢

转载自blog.csdn.net/qq_41357569/article/details/80660624