计算机组成原理课程设计——CPU与简单模型机设计

一、设计目的

1、掌握一个简单CPU的组成原理。

2、在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。

3、掌握微程序控制器设计。

二、设计任务与要求      

设计任务:

用所学知识,设计并构造一台简单模型机。验证指导书所给出的五条指令的模型机实验。在此基础上,新设计五条机器指令。画出指令流程图,编写相应的微程序和机器语言调试程序,并上机调试通过。掌握整机概念。

设计要求:

1.验证实验测试通过。接线完成。形成调试程序和微程序文本文件。联机写入和校验,并联机执行。为后边设计打下基础。

2.设计LDI指令并测试通过。包括指令格式、代码。指令流程图。微程序。调试程序。主要成果形成TEST1.TXT文件。

3.设计ADD指令并测试通过。要求同上。

扫描二维码关注公众号,回复: 2148981 查看本文章

4.设计AND指令并测试通过。同上。

5.设计 RL指令并测试通过。同上。

6.设计LAD指令并测试通过。同上。

  1. 设计方案

1、设计思路

第一步:按照机器指令的功能设计微程序指令流程图

第二步:按照微指令来设计微程序

第三步:将微程序写入后联机运行

2、使用的I/O设备

二进制数码开关,作为输入设备(IN),两位十六进制LED数码管,作为输出设备(OUT)。

3、使用的功能模块

CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计 数器(PC)和地址寄存器(AR)组成。

4、功能模块的作用

1ALU作用:处理各种算术运算和逻辑运算。

2)微程序控制器作用:基本任务是完成当前指令的翻译和执行。

3)通用寄存器作用:可用于传送和暂存数据,也可参与算数逻辑运算并保存运算结果。

4)程序计数器作用:用于存放下一条指令所在单元的地址的地方。

5)地址寄存器作用:在移位脉冲作用下,存储在集萃器中的数据能逐位向左或向右的功能,可用来寄存数码,实现数据的串行——并行的转换、数值的运算及数据处理等功能。

  1. 连线图设计

  1. 验证实验

1、包括五条指令的验证:IN(输入)ADD(二进制加法)OUT(输出)JUMP(无条件转移)HLT(停机)

 

其中JUMP为双字节指令,其余均为单字节指令,其中********addr所对应的二进制地址码。

2、根据要求设计微程序流程图。

其微指令格式如表5-1-1

  1. 3.将每条微指令代码化将程序流程图按照指令格式转化成相应的二进制代码表
  2. 4. IN 单元读入数据送 R0 R0和自身相加,结果送R0 R0的值送OUT单元显示 

根据要求得到以下程序。

地址         内容          助记符              说明

00000000   00100000 ;    START: IN R0     IN单元读入数据送至R0

00000001   00000000 ;    ADD  R0,R0        RO与自身相加送至R0

00000010   00110000 ;   OUT R0               R0值送至OUT单元显示

00000011   11100000 ;   JMP START            跳转至00H地址

00000100   00000000 ;

00000101   01010000 ;    HLT 停机

  1. 5.具体操作步骤

(1)采用联机写入校验:微程序和机器程序得以指定的格式写入到以 TXT 为后缀的文件中,微程序和机器程序的格式如下:

机器指令格式说明: $P XX XX

   $P :  机器指令代码

    XX : 十六进制地址

    XX : 机器指令标志

微指令格式说明: $M XX XXXXXX

     $M :微指令代码

XX:十六进制地址

XXXXXX:微指令标志

(2)TEST0.txt文件

; //*************************************** //

; // //

; // CPU 与简单模型机实验指令文件 //

; // //

; // By TangDu CO.,LTD //

; // //

; //*************************************** //

; //****** Start Of Main Memory Data ****** //

$P 00 20 ;  START: IN R0 IN 单元读入数据送 R0

$P 01 00 ;  ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ;  OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ;  JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ;  HLT 停机

; //******* End Of Main Memory Data ******* //

; //**** Start Of MicroController Data **** //

$M 00 000001 ;  NOP

$M 01 006D43 ;  PC->AR,PC 1

$M 03 107070 ;  MEM->IR, P<1>

$M 04 002405 ;  R0->B

$M 05 04B201 ;  A B->R0

$M 1D 105141 ;  MEM->PC

$M 30 001404 ;  R0->A

$M 32 183001 ;  IN->R0

$M 33 280401 ;  R0->OUT

$M 35 000035 ;  NOP

$M 3C 006D5D ;  PC->AR,PC 1

; //** End Of MicroController Data **//

选择联机软件的【转储】【装载】功能,在打开文件对话框中选择上面所保存的文件TEST0.txt 软件自动将机器程序和微程序写入指定单元。

选择联机软件的【转储】【刷新指令区】可以读出下位机所有的机器指令和微指令, 并在指令区显示,对照文件检查微程序和机器程序是否正确,如果不正确,则说明写入操作失 败,应重新写入,可以通过联机软件单独修改某个单元的指令,以修改微指令为例,先用鼠标 左键单击指令区的微存’TAB 按钮,然后再单击需修改单元的数据,此时该单元变为编辑框, 输入 6 位数据并回车,编辑框消失,并以红色显示写入的数据。

(3)运行程序方法:联机运行

将时序与操作台单元的开关 KK1 KK3 置为运行档,进入软件界面,选择菜单命令【实验】【简单模型机】,打开简单模型机数据通路图。

按动CON单元的总清按钮CLR,然后通过软件运行程序,选择相应的功能命令,即可联机 运行、监控、调试程序,当模型机执行完JMP指令后,检查OUT单元显示的数是否为IN单元值的2倍。在数据通路图和微程序流中观测指令的执行过程,并观测软件中地址总线、数据总线以及微指令显示和下位机是否一致

  1. 功能设计
  1. 1.机器指令功能说明(ADD+LDI+AND+RL+LAD

序号

助记符

机器指令代码

十六进制代码

功能说明

0

ADD   R0im

00000000

00H

 R0<-(R0) + im

1

AND   R0im

00010000

10H

R0<-(R0) im

2

IN   R0, K

00100000

20H

R0<- IN

3

OUT   L0R0

00110000

30H

OUT<-L0

4

MOV   R0,[R0]

01000000

40H

R0<- [R0]

5

HLT

01010000

50H

暂停

6

LDI   R0, im

01100000

60H

R0<- im

7

 INC    R0

01110000

70H

R0<-(R0) + 1

8

SUB    R0im

10000000

80H

 R0<-(R0) - im

9

OR    R0im

10010000

90H

R0<-(R0) im

10

RR    R0, 1

10100000

A0H

R0<-(R0)右移1

11

RL    R0, 1

10110000

B0H

R0<-(R0)左移1

12

LAD  R0, addr

11000000

C0H

  R0<-[addr]

13

STA  addr, R0

11010000

D0H

 ADDR<-(R0)

14

 JMP  addr

11100000

E0H

  PC<-E

15

BZC

11110000

F0H


注释:im为立即数。addr为直接地址。从而相应的指令变为双字节指令。

2、指令流程图设计

    


                                                                                

       




 





3、微程序设计

ADD:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

06

006D47

00000

0000

110

110

101

000111

07

102008

00010

0000

010

000

000

001000

08

04B201

00000

1001

011

001

000

000001

31

001406

00000

0000

001

010

000

000110

LDI:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

09

103001

00010

0000

011

000

000

000001

3C

006D5D

00000

0000

110

110

101

011101


AND:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

07

006D08

00000

0000

110

110

100

001000

08

102009

00010

0000

010

000

000

001001

09

013201

00000

0010

011

001

000

000001

31

001407

00000

0000

001

010

000

000111

RL:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

06

03B201

00000

0111

011

001

000

000001

3B

001406

00000

0000

001

010

000

000110

LAD:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

08

106009

00010

0000

110

000

000

001001

09

103001

00010

0000

011

000

000

000001

3C

006D48

00000

0000

110

110

101

001000

4、调试程序设计

  1. 最终联机程序清单
  1. 1.验证

; //*************************************** //

; // //

; // CPU 与简单模型机实验指令文件 //

; // //

; // By TangDu CO.,LTD //

; // //

; //*************************************** //

; //****** Start Of Main Memory Data ****** //

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ; JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ; HLT 停机

; //******* End Of Main Memory Data ******* //

; //**** Start Of MicroController Data **** //

$M 00 000001 ; NOP

$M 01 006D43 ; PC->AR,PC 1

$M 03 107070 ; MEM->IR, P<1>


$M 04 002405 ; R0->B

$M 05 04B201 ; A B->R0

$M 1D 105141 ; MEM->PC

$M 30 001404 ; R0->A

$M 32 183001 ; IN->R0

$M 33 280401 ; R0->OUT

$M 35 000035 ; NOP

$M 3C 006D5D ; PC->AR,PC 1

; //** End Of MicroController Data **//

  1. 2.ADD

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 02 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 03 E0 ; JMP START 跳转至 00H 地址

$P 04 00 ;

$P 05 50 ; HLT 停机


$M 06 006D47 ;

$M 07 102008 ;

$M 08 04B201 ;

$M 31 001406 ; R0->A

  1. 3.LDI

$P 00 60 ; LDI

$P 01 33 ;

$P 02 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 

$P 05 00 ;

$P 06 03 ; 

$P 07 50 ; HLT 停机


$M 09 103001 ; MEM->R0

$M 3C 006D5D ; PC->AR,PC 1

  1. 4.AND

$P 00 20 ; IN

$P 01 10 ; AND

$P 02 F0 ;

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 跳转至 00H 地址

$P 05 00 ;

$P 06 50 ; HLT 停机


$M 07 006D08 ; PC->AR PC+1

$M 08 102009 ; MEM->B

$M 09 013201 ; AB

$M 31 001407 ; R0->A

  1. 5.RL

$P 00 20 ; START: IN R0 IN 单元读入数据送 R0

$P 01 B0 ; RL

$P 02 00 ; ADD R0,R0 R0 和自身相加,结果送 R0

$P 03 30 ; OUT R0 R0 的值送 OUT 单元显示

$P 04 E0 ; JMP START 跳转至 00H 地址

$P 05 00 ;

$P 06 50 ; HLT 停机


$M 06 03B201 ;R0->A

$M 3B 001406 ;A左移->R0

  1. 6.LAD

$P 00 C0 ; LAD

$P 01 37 ;

$P 02 30 ; JMP START 跳转至 00H 地址

$P 03 40 ;

$P 04 50 ; HLT 停机


$M 00 000001 ; NOP

$M 08 106009 ; MEM->AR

$M 09 103001 ; MEM->R0

$M 3C 006D48 ; PC->AR,PC 1

  1. 调试过程









  1. 1.验证





  1. 2.ADD

   







  1. 3.AND

    





  1. 4.LDI

 




  1. 5.RL

  1. 6.LAD

   

9、参考文献

   [1]白中英、戴志涛主编.《计算机组成原理》.第五版 科学出版社


猜你喜欢

转载自blog.csdn.net/Rabbit_in/article/details/80952081