您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页基本模型机的设计与实现和带移位运算的模型机的设计及实现

基本模型机的设计与实现和带移位运算的模型机的设计及实现

来源:尚车旅游网
一、基本模型机的设计与实现

(一)实验目的:

1、清晰地建立计算机的整机概念,在掌握部件单元电路实验的基础上, 进一步将其组

成系统构造一台基本模型计算机。

2、 为其定义五条机器指令: IN、ADD、STA、OUT、JMP,并编写相 应的微程

序,具体上机调试掌握整机概念。

3、 学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具 和集成电路的基

本技能。

(二)、实验设备

TDN-CM+计算机组成原理教学实验系统一台。

(三)、实验原理

本实验定义五条机器指令:

IN (输入)、ADD(二进制加法)、STA(存

数)、OUT(输出)、JMP(无条件转移),其指令格式如下:

助记符 机器指令码 说明 “1 NPUT DEVICE R0 IN ADD addr STA addr OUT addr

0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx R0+[addr] R0 [addr] [addr] addr PC R0 BUS JMP addr 其中IN为单字长(8位),其余为双字长指令为 addr对应的二进制地址码。 为了向RAM写入、读出机器指令,并能启动程序执行,还须设计三个 控制台操作微程序。

存储器读(KRD :拨动总清开关 CLR后,控制台开关SWBSWA为“ 0 0” 时,按

START微动开关,可对 RAM连续手动读操作。

存储器写(KWE:拨动总清开关 CLR后,控制台开关SWBSWA为“ 0 1” 时,按START微动开关,可对 RAM连续手动写操作。

启动程序(RP):拨动总清开关 CLR后,控制台开关SWBSWA为“1 1” 时,按

START微动开关,即可转入到第 01号“取址”微指令,启动程序运

行。

上述三条控制台指令用两个开关 SWB SWA的状态来设置,其定义如下: 控制台指令 读内存(KRD 写内存(KWE 启动程序(RP 微代码

SWB 0 0

SWA 0 1 1 1 定义如下表: 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 S3 S2 S1 S0 M Cn WE A9 A8 A B C uA5 uA4 uA3 uA2 uA1 uA0

A字段

B字段 C字段 12 11 10 选择 12 11 10 选择 9 8 7 选择 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 RS-B 0 0 1 1 0 0 1 0 1 0 0 0 RS-B 0 0 1 P(1) 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 P(4) ALU-B PC-B 0 1 ALU-B 0 1 0 1 1 0 1 1 1 0 LDPC 1

系统涉及到的微程序流程见下图,当拟订“取指”微指令时,该微指 令的判别字段为

P(1)测试。由于“取指”微指令是所有微程序都使用的公 用微指令,因此 P(1)的测试结果出

现多路分支。本机用指令寄存器的前

位(IR7-IR4 )作为测试条件,出现 5路分支,占用5个固定的微地址单元。

控制台操作为 P(4)测试,它以控制台开关 SWB,SWA作为测试条件, 出现了三路分支,占用 3个固定的微地址单元。当分支微地址单元固定后, 剩下的其它地方就可以一条微指令占用控存微地址单元随意填写。

4

微程序流程图:

01

运行微程序

当全部微程序设计完毕后,应将每条微指令代码化,下图即为微程序 流程图按微指令格式转化

而来的“二进制微代码表” 微地址 。 S3 S2 S1 S0 M Cn WE A9 A8 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 A B C uA5 ----- uA0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 000 000 100 0 1 0 0 0 0 110 110 110 0 0 0 0 1 0 100 000 001 0 0 1 0 0 0 110 000 000 0 0 0 1 0 0 011 000 000 0 0 0 1 0 1 010 001 000 0 0 0 1 1 0 001 101 000 0 0 0 0 0 1 110 110 110 0 0 1 1 0 1 110 110 110 0 0 0 0 0 1 110 110 110 0 0 0 0 1 1 110 110 110 0 0 0 1 1 1 110 110 110 0 0 1 1 1 0 110 110 110 0 1 0 1 1 0 000 001 000 0 0 0 0 0 1 110 000 000 0 0 1 1 1 1 010 000 000 0 1 0 1 0 1 110 110 110 0 1 0 0 1 0 110 110 110 0 1 0 1 0 0 010 000 000 0 1 0 1 1 1 000 000 000 0 0 0 0 0 1 010 000 000 0 1 1 0 0 0 000 101 000 0 0 0 0 0 1 101 000 110 0 0 0 0 0 1 000 101 000 0 1 0 0 0 0 000 101 000 0 1 0 0 0 1 当

指令寄存器(IR):指令寄存器用来保存当前正在执行的一条指令。

行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存 器。指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给 定的指令,必须对操作码进行测试

[P( 1)],通过节拍脉冲T4的控制以便

识别所要求的操作。“指令译码器”根据指令中的操作码译码强置微控器单 元的微地址,使下一条微指令指向相应的微程序首地址。

本系统有两种外部I/O设备,一种二进制代码开关,它作为输入设备; 另一种是数码块,它作为输出设备。例如:输入时,二进制开关数据直接 经过三态门送到总线上,只要开关状态不变,输入的信息也不变。输出时, 将输出数据送到数据总线上,当写信号有效时,将数据打入输出锁存器, 驱动数码块显示。 (四)、实验前准备

1机器指令程序

本实验中,我修改设计后的机器指令程序如下:

地址

内容

助记符

说明

0000 0000 0000 0000 IN

“INPUT DEVICE”

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 0101 自定

0000 1011

求和结果

2、程序文件

A、机器指令格式说明:

$ XX XX P

►机器指令代码

------------------------ ►十六进制地址

B、微指令格式说明

$XX

XXXXXX

I

---------- ►微指令代码

卜六进制地址

R0

C、按照规定格式,将机器指令及微指令二进制表编辑成十六进制的如下 格式文件。

“INPUT DEVICE、R0 程序:

说明: T R0

$ P0000 $ P0110 $ P020A $ P0320 $ P040B $ P0530 $ P060B $ P0740 $ P0800 $ PO920 $ P0A01 $ M00108101 $ M0182ED01 $ M0248C000 $ M0304E000 $ M0505B000 $ M0506A201 $ M06019A95 $ M07ODEOOO $ M08011000 $ M0983ED01 $ M0A87ED01 $ M0B8EED01 $ M0C96ED01

//IN

//ADD R0+ [OAH] //STA [0BH] R0

T [0BH]

T BUS

//OUT [0BH] [OBH] T PC //JMP [O0H] 00H

$ M0DO18202 $ M0E0FE000 $ M0F15A000 $ M1092ED01 $ M1194ED01 $ M1217A000 $ M13018001 $ M14182000 $ M15010A07 $ M1681D100 $ M17100A07 $ M18118A06

3、理论值的计算 A、置数

我将INPUT DEVICE中的数置为了 00000011,将[0AH]中的数置为了

00000101。分别在IUPUT DEVICE输入端改变开关和程序中置入。注意在 给INPUT DEVICE置数时,灯亮为 0,灯灭为1。 B计算

第一步,将00000011值赋给 R0, 即卩R0为00000011,转化为十六进制 为03; 第二步,将RO+[0AHp R0,即卩RO为00001000,转化为十六进制为 08;

第三步,将 R0^ [0BH],即将R0的值给[OBH], R0无变化; 第四步,将[0BH] T总线,R0无变化。 因为程序完成的是加法,即

ADD旨令,所以结果为:[0AH]+R0的值,

00000101+0000001仁00001000

(五)

、实验步骤

1、按下页所示接线图连接实验线路 2、写程序

我们应用的是联机读写程序,方法比手动写入要简单很多。具体方法如 下:

A、 按照规定格式,将机器指令及微指令二进制表编辑成十六进制的文 件如上所写。 B、 将文件放在实验系统文件夹的根目录下,更改文件后缀名为 DEVICE ”的重新置数即设备的清零。 3、运行程序 1 )单步运行程序

A、 将 STEP 置为 STEP, STOP 置为 RUN。

B、 拨动总清开关CLR( 0 T 1),微地址清零,微程序计数器清零。程序 首地址00H。 C、 在实验程序软件载入数据后,

选择DEBUG ,进入界面后按照提示按 F2键,即

.BAK , 然后

打开系统EXE文件,选择LOAD,将程序文件载入即可。在载入时, 注意“ INPUT

单步运行一条微指令。可以观察机器的运行过程,以加深对计算 机执行指令过程的了解。

D、 运行结束后,可检查存数单元中的结果是否和理论值一致。 2)按指令运行

A、 将 STEP 置为 STEP, STOP 置为 RUN。

B、 拨动总清开关 CLR( 0T 1),微地址清零,微程序计数器清零。程序 首地址00H。 C、 在实验系统载入数据后,选择

DEBUG。

D、 在运行界面下按动 F1,即系统自动按照指令阶段运行,对照微程序

流程图,观察微地址显示灯是否和流程一致,观察屏幕上显示的每一步的 运行结果是否与计算的出的理论值相符。

3)连续运行

A、将 STEP 置为 STEP,STOP 置为 RUN。 B、 拨动CLR开关,清微地址及程序记数器 C、 然后在实验系统载入数据后.按下

(OAH结果是否正确。

F3键,即可停机后,可检查存数 单元

8 susuNn T4

13 T2 Tl

TS2 TS1

W/RUNfT %

电TATE UNIT

SWA

SIGNAL UNFT

'.5VVB ■USlrtlA

Ml 9

SWITCH UN'T

(7

-OGUNlTii

INS UN T

}03Pi

JD:JP2

IR HDRI

REG UNIT

D7

[>S-B

n

INPUT DEVICE

niD

、一一 7 r ALD/iRj 一召二i 召 PCBLF

.LDjys ]LMD □?c-e □LDP

C

rue M17

YTD !—

Jf

(

咄L

4

W EX UNIT

D7

rm?

册卜

DD

CEQ.

实验接线图

(六)> 实验结果

1结论

按指令运行一条微指令,每按动一次 F1,待运行结束后可观察到理论 值与实际观察到的值相符。

2、程序流程图

3、部分实验截图

这是程序运行的初始状态,执行的是 IN指令。运行结果是将INPUT

中的数值赋给 R0,由图可以看到,RO的值变为了 03。

这次执行的是 ADD指令,由图可以看出,R0的值变为了 08,即为

R0+[0AH]后的结果。

Address bus K.U-BU5 OB LD朋 13 CE CPU DH1= 03 LOAD LDDR2-QJ R1-BUS R2= FF 1微控器 L0 口圧 3HPUT 03 ■曙4 刖 23 22 23 20 39 泪 17 Addr 3$ 19 W 13 £ 11 ID 9 P 8? « 5 HI 3 2 ] S3: $2 Si SO tl Cn Mg FI0 AB :i ft i □ 1 1 0 UftB W* UA3 UH2 UAI URD 0 0 Q 0 1 0 OOOOOL oooooooi i 1 1 0

上图是执行R0 [OBH]后的结果,可以看到 R0的值被传输到了 RAM

这部执行的指令是 OUT作用是[OBH] TBUS即将结果放到总线上输出, 由图可知,输出的最后结果为 08。

Addr sss bus JTJ Return

OO PC-BU8 CE OUTPUT CJB 5曙刃 32 buc PQ^JS RO- DB G1-BUS H丄二 FF 微控器 L罟B I-T3 CE LED-BUS gOOUL

在其他指令结束之后,将 PC的值变为初始值。指向地址的首位。如 图中的PC

值变为了 00。

二、带移位运算的模型机的设计及实现

(一) 、实验目的

1熟悉用微程序控制器控制模型机的数据通路。 2、学习设计与调度计算机的基本步骤及方法。

(二) 、实验设备

CCJIV计算机组成原理教学实验系统一台,排线若干。

(三) 、设计要求

1理解CPU模型结构。

2、 分析给出的机器指令的功能。

3、 在CPU的模型图上画出每条指令的执行流程

制信号序列,理解各条微指令的编码意义。

,并分析相应的微程序 控

4、 编写一个程序使其能够完成

(四) 、实验原理

RRC、RLR、RR和RL等四种移位操 作。

本实验在上述实验中的基本模型机的基础上搭建移位控制电路,实现 移位控制运算。

实验中增加了 4条移位指令:RL (左循环)、RLC(代进位左循环)、RR (右循环)、RRC(带进位右循环),其指令格式如下:

操作码 RR RRC RL RLC 以上4条指令都为单字长

01010000 01100000 01110000 10000000 RR为将R0寄存器的内容循环右移一位。 RRC为将R0寄存器的内容带进位右移一位,

边第一位移入进位,同时将进位寄存器的数移至

它将R0寄存器中的数据右

R0寄存器的最左边。

RL为将R0寄存器的数据循环左移一位。

RLC为将R0寄存器中的数据带进位循环左移一位。

为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执 行,还必须设计三个控制台操作微程序。

存储器读操作(KRD:拨动总清开关 CLR后,控制台开关 SWB SWA为 “ 00”时,按START微动开关,可对 RAM连续手动读操作。

存储器写操作(KWE:拨动总清开关 CLR后,控制台开关 SWB SWA为 “01”时,按START微动开关,可对 RAM进行连续手动写入。

启动程序:拨动总清开关 CLR后,控制台开关SWB SWAi为“11 ”时, 按

START微动开关,即可转入到第 01号“取址”微指令,启动程序运行。

上述三条控制台指令用两个开关

SWB SWA的状态来设置,其定义如下:

控制台指令 读内存(KRD 写内存(KWE 启动程序(RF) SWB 0 0

SWA 0 1 1 1 上述机器指令能够实现输入、加法运算、带进位循环左移、带进位循 环友谊、左移、右移、存储器读写、输出和挑砖等功能。首先是由数据输 入开关输入一个数据为 19,把此数据存到寄存器 R0中,其次是与另外一个 加数进行加法运算,此运算是在 ALU中进行的,并把运算结果存到 器中,根据这时候的状态标志为的

R0寄存

CF来判断是否有进位,我的这个实验进

RAM中,并且把存在

行的时候是在CF=1的情况下运行的,然后就开始进行4条移位指令的操作, 一位结束以后和上个实验的步骤基本相同,即存数到

寄存器中的数输出显示,最后一步就是挑砖指令,跳回到程序的首地址的 位置,且PC清零。这就是上述这个机器指令要执行的全部过程,用简练的 语言来表达了。 (2)微程序的流程图:

......... ADD…•

• ■…

........... PC*AR-

22

-PC+W PHAM- BUS- BUSBAR*

■ ■a ■ ■ ■

■• ■ J\"1

RO-BUSBUS*RA

, M-

.丄

运行微程序

-■ PC*!*1

RA&£*BUS.

■ ■ ■ ■

P

2D*-

MJT ....

:d -.fMP--i

........ PC-^ARi........... 23……1期…

PC-*ARi

……2卜

RD^29Tl-

R0*255t

^

.乳…就,曾卄,諒

BUSBABUAPO

視 R*

•< ■ I B ■ ■ B ■ a

3^・

[敢:

■ ■ *-RAM-EU 知

0k

FUS-*LRP DRILLED.'3* (五)、实验前准备 1机器指令程序 地址(二进制)

内容(二进制) 助记符

0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 2、程序文件

0000 0000 0001 0000 0000 1101 1000 0000 0101 0000 0110 0000 0101 0000 0010 0000 0000 1110 0011 0000 0000 1110 0100 0000 0000 0000 0100 0000

IN ADD[0EH] RLC RR RRC RL STA[OEH] OUT[0EH] JMP 00H

R0 [0EH] 00H R0+[0EH]

INPUT DEVICE' T RO

T R0

* R0

T [0EH]

T BUS T PC

按照规定格式,将机器指令及微指令二进制表编辑成十六进制的如下格

式文件。

程序

$P0000 $P0110 $P020D $P0380

$P0A0E $P0B40 $P0C00 $P0E01 $M00088101 $M0182ED01

$M0250C000 $M0304E000 $M0405B000

$P0400 $P0560 $P0670 $P0720 $P080E $P0930

$M0506A201

$M070FE000 $M088AED01

$M098CED01

$MOAOEAO OO

$M0B018001

$M0C0D2000 $M0D098A06

$M0F018202 $M10011000

$M151D8231 $M161F8231 $M17218231 $M18238231 $M191AE000 $M1A1BA000 $M1B010A07 $M1C81D100 $M1D1E8821 $M1E019801 $M1F208829 $M20019801 $M21228811 $M22019801 $M23248819 $M24019801

$M06019A95

$M0E080A07

$M1183ED01

$M1287ED01 $M1399ED01

$M149CED01 3、理论值的计算

A、置数

将INPUT DEVICE中的数置为了

00000011,将[0DH]中的数置为了

01000000。分别在IUPUT DEVICE输入端改变开关和程序中置入。仍需注 意在给INPUT DEVICE置数时,灯亮为 0,灯灭为1。 B计算

第一步,将00000011值赋给R0,即卩R0为00000011,转化为十六进制 为03;

第二步,将RO+[0DHp R0,即卩RO为01000011 ,转化为十六进制为 43; 第三步,将R0中的数带进位左移,因为上面进行的加法运算使 所以左移后,R0值变为10000111,化为十六进制为 87, CN的值变为0;

第四步,将R0中的值右环移,R0变为11000011,化为十六进制为 C3, CN的值变为1;

第五步,将 R0中的值带进位右移, 为1;

第六步,将R0中的数值左环移,则移动后 的值没有变化。

第七步至结束,输出结果,为11000011。

CN为1,

R0的值变为11100001 , CN的值仍

R0的值变为11000011 , CN

(六)、实验步骤

1、 按下页所示接线图连接实验线路 2、 写程序

过程与上面的实验类似。

3、 运行程序

过程与第一个实验相同。

一爭

□ H24

T3T5TST4 3 2 I □ 8

BUS UHIT

w/a unr

T1

STATE IffilT 3INGKL UMIT

;KUJ3

3

S_

SE6

EWB

Q

SWB

SWITCH WHT

CN LDDRl

M19

QLDML

SE1

口 』

口 山皿口

LDDH2

OLDDR2

F⑴ FG)

P⑶

口 ALV-E

OLDKI

OBS-B

PWJ

_ re)

□ P M)

17

12

LOG 1.IMT

12

= LDED CH LDIRD

一 匚I LDIK ties tniiT

3

工肛UT DEVICE

SIJ3

二|岂

:AUT6

—a

FC-B

E

LDPCQ

LDO IDg

MIE

*—

10

匚s

Q

JUKDRESS UflIT

AT

MICRO-CONTROLLKi' 口

QLDFC

□ A9

YiO

g

inuT

说口

如匸.

F/R

口卅

R

EIT BUS

MAIK HEM 7

ovrrvr iffifacE

S :

CE 口

(七)、实验结果

1、结论

按指令运行一条微指令,每按动一次

F1,待运行结束后可观察到理论

值与实际观察到的值相符。只是因为设备原因最后结果输出总为 FF。

2、程序流程图

3、部分实验截图:

这是程序运行的初始状态,执行的是 IN指令。运行结果是将 INPUT

中的数值赋给 R0,由图可以看到,RO的值变为了 03。

在这一步里,执行指令

转化为十六进制的 43。

RO+[OEH] RO,因此R0的值变为01000011

在这里我选取了四种移动的带进位左移来说明, 将R0中的数带进

位左移,因为上面进行的加法运算使 CN为1,所以左移后,R0值变为

10000111,化为十六进制为 87。

三、实验总结

四、参考书目

1、 《计算机组成与结构》作者:王爱英

子科技大学出版社,2004

北京:清华大学出版社,

2004

2、 《计算机组成原理与系统结构实验教程》作者:杨小龙 西安:西安电

3、 《计算机组成与设计》 作者:潘雪增、平玲悌 杭州:浙江大学出版社, 2004

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务