计算机组成原理课程设计报告 - 图文

更新时间:2024-06-10 22:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机组成原理课程设计

课 程 设 计 报 告

课程设计名称: 计算机组成原理

系 : 学生姓名: 班 级: 学 号: 成 绩: 指导教师:

开课时间:

1-25

学年 学期

计算机组成原理课程设计

一.设计题目

计算机组成原理课程设计——简单模型机的微程序设计

二.主要内容

通过课程设计更清楚地理解下列基本概念: 1.计算机的硬件基本组成; 2.计算机中机器指令的设计 3.计算机中机器指令的执行过程; 4.微程序控制器的工作原理。 5.微指令的格式设计原则;

在此基础上设计可以运行一些基本机器指令的微程序的设计

三.具体要求

数据传送指令 MOV RD,RS:(RS) →(RD) 减法指令 SUB RD,RS:(RS)减(RD)→(RD) 或指令 OR RD,(addr):(RD)或(addr)→(RD) 异或指令 XOR RD,(addr):(addr)异或(RD)→(RD) 与指令 AND RD,RS:(RS)与(RD)→(RD)

其中的RS、RD可以是R0、R1、R2中的任一个。

四.进度安排

共1.5周11天的时间,具体安排如下:

1~2天:对整个课程设计的内容做详细的讲解,并辅导学生完成课程设计指导书的学习,使其掌握和理解课程设计的核心内容;

3~5天:学生在机房学习熟悉课程设计所使用的仿真软件,并深入了解该仿真软件所实现的模型机的指令系统(原有的5条指令)和微程序设计方法;

6~9天:在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。

2-25

计算机组成原理课程设计

10~11天:根据自己设计的微程序系统写出相应的课程设计实验报告

五.成绩评定

3-25

计算机组成原理课程设计

正文

一、模型机的CPU及系统硬件

基本模型机的CPU及系统硬件组成如图1所示:

图1 模型机的CPU及系统硬件组成

各部件的功能及控制信号如下:

运算器由算逻部件ALU(8位)、暂存器DR1、DR2及通用寄存器等组成。ALU的功能控制信号为S3、S2、S1、S0、M、CN,可以实现48种算术和逻辑运算功能,如图2所示。

运算器为单总线结构,其输入端分别连接到暂存器DR1和DR2,其装入数据的微命令分别为LDDR1和LDDR2,当它们为1电平时由节拍脉冲T4将数据总线上的数据装入相应

4-25

计算机组成原理课程设计

的暂存器。R0、R1、R2为通用寄存器。R0的装入数据的微命令为LDR0,R1的装入数据的微命令为LDR1,R2的装入数据的微命令为LDR2。299为实现移位运算的装置,当299B微命令有效时,其数据端和数据总线连接。

控制器由程序计数器PC、指令寄存器IR、地址寄存器AR、时序电路、控制存储器及相应的译码电路组成。

程序计数器PC的功能是存放下一条指令的地址,其输出是向地址寄存器提供要将执行的指令在存储器中的地址。在提供地址后立即加1,指向指令的下一个字节或下一条指令的地址。其控制微命令有三个。当LOAD=0而LDPC=1时,由T4的正跳变将数据总线上的数据装入PC;当当LOAD=1而LDPC=1时PC的内容加1;当PCB=1时,PC中的地址信息送到数据总线上。

5-25

计算机组成原理课程设计

指令寄存器IR用于存放当前执行的指令。当微命令LDIR=1时,由节拍脉冲T3将数据总线上的数据装入。

地址寄存器AR存放要从存储器中读出的数据或指令的地址或要向存储器写入数据或指令的地址。当微命令LDAR=1时,由节拍脉冲T3将数据总线上的数据装入。

存储器RAM用于存放程序和数据。当片选信号CE=0时,如果W/R为0,则根据AR中的地址,从存储器中读出数据并送到数据总线上;如果W/R为1,则根据AR中的地址,向存储器中写入数据总线上的数据。片选信号CE是由微指令中的有关字段(B1B0)译码产生的。

模型机有两个外部设备:输入设备是置数开关SW,用于设置数据或地址,当微命令SWB=0时,设置的数据送到数据总线上;SWB也是由微指令中的有关字段(B1B0)译码产生的。输出设备是两位LED数码管,当微命令LEDB=1时,数据总线上的数据送到数码管显示。

二、基本模型机的指令设计

根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令ADD、存数指令STA、输出到外设指令OUT、无条件转移指令JMP。指令格式如下:

助记符 机器指令码 说 明

IN 0000 0000 ; 置数开关SW(KD0~KD7)的状态→R0 ADD addr 0001 0000 ×××× ××××; (R0)+(addr)→(R0) STA addr 0010 0000 ×××× ××××; (R0)→(addr) OUT addr 0011 0000 ×××× ××××; (addr)→输出设备\JMP addr 0100 0000 ×××× ××××; addr→PC

6-25

计算机组成原理课程设计

说明:

指令IN为单字节指令,其余均为双字节指令, ××××××××为要读写的主存储器单元的二进制地址码。

根据基本模型机的硬件设计五条机器指令:外设输入指令IN、二进制加法指令NADD、指令STA、输出到外设指令OUT、无条件转移指令JMP、数据传送指令 MOV、减法指令SUB、或指令 OR、异或指令 XOR、与指令AND。

指令设计格式如下:

00H:00110000 ; IN R0:(SW)→(R0)

01H:01000000 ; ADD R0,30:(R0)+(30)→(R0) 02H:00110000

03H:01010000 ; 31,R0:(R0)→(31) 04H:00110001

05H:01100000 ; OUT 31:(31)→(LED) 06H:00110001

07H:10000100 ; MOV R0,R1:(R1)→(R0) 08H:10010001 ; SUB R1,R0:(R0)(R1)→(R1) 09H:10100000 ; OR R0,(addr):(R0)(addr)→(R0) 0AH:00110101

0BH:10110000 ; XOR R0,(addr):(addr)(R0)→(R0) 0CH:00110110

0DH:11000001 ; AND R0,R1:(R1)与(R0)→(R0) 0EH:01110000 ; JMP 00: 00→(PC) 0FH:00000000 30H:00010001 35H:00010001 36H:00010001

7-25

计算机组成原理课程设计

三、指令微流程分析

这十条指令的微流程图如图所示:

8-25

计算机组成原理课程设计

01 PC→AR PC+1 02 RAM→BUS BUS→IR P(1)测试 IN 03 SWADD 04 PCSTA 05 PCOUT 06 PCJMP 07 PC→MOV 08 R1→SUB 09 R0→OR 0A PCXOR 0B PCAND 0C R0→→R0 →AR PC0D →AR PC11 RAM→AR PC+1 13 RAMAR PC+1 16 RAMBUS BUS→R0 BUS BUS→DR1 17 →AR PC+1 19 RAM→AR PC+1 1D RAMBUS BUS→DR1 21 R1→01 RAM01 →BUS BUS→0E RAM→→BUS BUS→AR12 R0→→BUS BUS→14 RAM→BUS BUS→R1→BUS BUS→DR2 →BUS BUS→AR 1A RAM→BUS BUS→AR 1E RAMBUS BUS→DR2 22 (DR1ANDR2)→R0 01 BUS BUS→DR2 0F R0BUS BUS→18 (DR1-DR2)→DR10 (D1+DR2)→01 15 →BUS BUS→DR1 →R0 →BUS BUS→DR2 1B RO→→BUS BUS→1F RO→BUS BUSDR101 →LED BUS BUS→DR1 1C →DR1 20 01 R0 01 01 DR1ORDR2→R0 9-25 DR1XORDR2→R0 01 01 计算机组成原理课程设计

图3 用数据流表示的微程序流程

该图是运行微程序的数据流图,实际上并没有分解到微命令一级。为了设计微程序,还应该根据此图进一步细化到微命令(微操作)一级。例如PC→AR,实际上应该同时发出PCB、LDAR两个微命令;PC+1应该发出LDPC微命令;SW→R0应该发出SWB、LDRi(与指令码中的相应位共同译码产生LDR0微命令)两个微命令;RAM→BUS应该发出CE有效和读存储器两个微命令;BUS→RAM应该发出CE有效和写存储器两个微命令;R0→××是指R0B微命令有效等等。据此可将该图改画成下图:

10-25

计算机组成原理课程设计

运行微程序 IN 03 SWB 有效 ADD 04 STA 05 PCB LDAR LDPC 11 CE有效 W/R=0 LDAR 12 R0B CE有效 W/R=1 PCB LDAR LDPC 13 CE有效 W/R=0 LDAR 14 CE有效 W/R=0 LDDR1 15 01 ALUB LEDB ALU=A W/R=1 01 01 OUT 06 PCB LDAR LDPC 02 CE有效 W/R=0 LDIR P(1)测试 JMP 07 PCB LDAR LDPC 16 CE有效 W/R=0 01 效 LDDR2 18 ALU做减法 LDRi ALUB 01 MOV 08 R1B LDRi SUB 09 R0B有效 LDDR1 17 R1B有OR 0A PCB LDAR LDPC 19 CE有效 W/R=0 LDAR 1A CE有效 W/R=0 LDDR2 1B R0B有效 XOR 0B PCB LDAR LDPC 1D CE有效 W/R=0 LDAR 1E CE有效 W/R=0 LDDR2 1F R0B有效 LDDR1 AND 0C R0B LDDR1 21 R1B LDDR2 22 ALU做“与” LDRi ALUB PCB LDAR LDPC LDRi 0D 01 CE 有效 W/R=0 LDAR 0E 有效 CE W/R=0 LDDR2 0F R0B 有效 LDDR 1 10 做ALU加 LDRi ALUB 01

01 LDDR1 1C ALU做或 LDRi ALUB 20 ALU做异或 LDRi ALUB 01 01 图4 用微命令表示的执行十条基本指令的微指令流程

11-25

01 计算机组成原理课程设计

该图中每个框上的数字表示该条微指令在控存中的地址(与指令格式有关,也与设计者的意愿有关)。如何在一条微指令中实现一个框中的微操作与微指令的格式密切相关。

四、基本模型机的微指令格式

本模型机的微指令长共24位,基本采用水平型微指令字段直接编码方式,其控制位顺序如下:

其中,S3、S2、S1、S0、M、CN(μA24~μA19位)为ALU运算类型的控制字段,其输出不需译码直接连接到ALU的对应控制信号即可。需要指出的是,该字段无论如何编码,ALU都要进行某种运算,但是只要不发出ALUB微命令,ALU的运算结果都不会送到数据总线上,也就是不会对其它部件的操作产生任何影响。在设计微程序时,只要不发ALUB微命令,该字段的编码可以任意设置。

μA18位为输出设备(LED)和主存(RAM)的读写控制字段,该位为0,表示读;该位为1,表示写。

12-25

计算机组成原理课程设计

μA17~μA16位(B1B0)字段用于选择外设和主存。B1B0=01选择主存(CE有效),B1B0=00选择输入数据开关(SWB有效),B1B0=10选择输出LED(LEDB有效)。B1B0=11对本模型机无效,即没有选中任何外设或主存。

对本模型机而言,上述三位可以看成一个字段,其编码的含义如下:

μA18μA17μA16=000或100 从输入开关SW读数据 μA18μA17μA16=001 从主存读数据 μA18μA17μA16=101 向主存写数据 μA18μA17μA16=110 向LED写数据 其它组合无意义。

ΜA6~μA1位为6位的预置后续微地址,“预置”的含义是该字段与微地址控制字段以及指令寄存器等部件的内容共同产生下一条微指令在控存中的微地址。

A、B、C 三个译码字段,分别由三组译码控制电路译码产生各种微命令。

A字段用于产生各寄存器的数据装入微命令,各种编码的含义如上表所示。 由于模型机有三个通用寄存器(R0、R1、R2),它们都有相应的数据装入微命令,为了不增加微指令的宽度,该字段只设计了一个LDRi命令。为了区分究竟是哪个寄存器装入数据,要根据指令寄存器的最低两位(I1I0)的状态而定:当I1I0=00时,发LDR0微命令;I1I0=01时,发LDR1微命令;I1I0=10时,发LDR2微命令;I1I0=11时,对本模型机无效;

B字段中的RSB、RDB、RIB分别为源寄存器的内容送数据总线、目的寄存器送数据总线及变址寄存器送数据总线的微命令,其功能是根据机器指令来选通三个工作寄存器R0、R1及R2之一,将其内容送数据总线。 具体规则如下:

13-25

计算机组成原理课程设计

如果RDB有效,根据指令寄存器的最低两位(I1I0)的状态决定哪个寄存器的内容送数据总线:当I1I0=00时,发R0B微命令;I1I0=01时,发R1B微命令;I1I0=10时,发R2B微命令;I1I0=11时,对本模型机无效;

如果RSB有效,根据指令寄存器(I3I2)两位的状态决定哪个寄存器的内容送数据总线:当I3I2=00时,发R0B微命令;I3I2=01时,发R1B微命令;I3I2=10时,发R2B微命令;I3I2=11时,对本模型机无效;

本模型机的变址寄存器固定为R2,故RIB有效就是R2B有效。

基于上述字段的设计规则,在设计机器指令格式时,必须将目的寄存器的编码放在指令的第一个字节的I1I0位置,将源寄存器的编码放在指令的第一个字节的I3I2位置,且编码必须符合上述规则,即00代表寄存器R0,01代表寄存器R1,10代表寄存器R2。

B字段中的299B是移位运算装置的数据端与数据总线相连的微命令。该装置在图中没有画出。

C字段中的P(1)~P(4)是四个测试字段。其功能是根据机器指令、μA5~μA0字段及其它有关部件的内容,产生下一条微指令在控存中的微地址,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行等。AR为算术运算是否影响进位及判零标志控制位,低电平有效。LDPC为使PC+1的微命令。

P(1)~P(4)的意义如下:

14-25

计算机组成原理课程设计

P(1)测试的作用是次地址字段NA(4~1位)或指令寄存器IR(8~5位)产生下一条微指令在控存中的微地址的4~1位,下一条微指令在控存中的微地址的6~5位仍为NA字段的6~5位。

P(2)测试的作用是次地址字段NA(2~1位)或指令寄存器IR(4~3位)产生下一条微指令在控存中的微地址的2~1位,下一条微指令在控存中的微地址的6~3位仍为NA字段的6~3位。

P(3)测试的作用是次地址字段NA(4位)或进位或零标志产生下一条微指令在控存中的微地址的4位,下一条微指令在控存中的微地址的其它位仍为NA字段的相应位。

P(4)测试的作用是次地址字段NA(2~1位)或(SWC,SWA)产生下一条微指令在控存中的微地址的2~1位,下一条微指令在控存中的微地址的6~3位仍为NA字段的6~3位。

五、编写微程序

在了解了微指令格式后,就可以开始编写微程序了。

00:000001011000000100010000 01:000001011110110110000010 02:000001001100000001000000 03:000001000001000000000001 04:000001011110110110001101 05:000001011110110110010001 06:000001011110110110010011 07:000001011110110110010110 08:000001000001001000000001 09:000001011010001000010111

15-25

计算机组成原理课程设计

0A:000001011110110110011001 0B:000001011110110110011101 0C:000001011010001000100001 0D:000001001110000000001110 0E:000001001011000000001111 0F:000001011010001000010000 10:100101011001101000000001 11:000001001110000000010010 12:000001101000001000000001 13:000001001110000000010100 14:000001001010000000010101 15:000001110000101000000001 16:000001001101000110000001 17:000001011011010000011000 18:011000011001101000000001 19:000001001110000000011010 1A:000001001011000000011011 1B:000001011010010000011100 1C:000101011001101000000001 1D:000001001110000000011110 1E:000001001011000000011111 1F:000001011010010000100000 20:011010011001101000000001 21:000001011011010000100010 22:101110011001101000000001

此后就可以手动地用开关将微程序输入机器的控存。然后将控存的启动地址置为0,运行微程序,将要执行的测试程序存入主存,也可从主存中读出指令,检查输入的指令是否正确。

下面是利用该软件设计的微程序编码及各条微指令的功能分析。注意第一条微指令的微地址为01H,其它各条微指令的微地址都由上一行文字最后的数字(16进制)指定。

微指令000001011110110110000010

16-25

计算机组成原理课程设计

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:03

微指令000001000001000000000001

执行的操作是:输入开关SWB有效,LDR0,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:04

微指令000001011110110110001101

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:0D

微指令000001001110000000001110

17-25

计算机组成原理课程设计

执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:0E

微指令000001001011000000001111

执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:0F

微指令000001011010001000010000

执行的操作是:R0→B,LDDR1,转微地址:10

微指令100101011001101000000001

执行的操作是:算术:A加B,ALU→B,LDR0,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:05

微指令000001011110110110010001

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:11

微指令000001001110000000010010

18-25

计算机组成原理课程设计

执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:12

微指令000001101000001000000001

执行的操作是:存储器CE有效,写存储器,R0→B,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:06

微指令000001011110110110010011

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:13

微指令000001001110000000010100

执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:14

微指令000001001010000000010101

执行的操作是:存储器CE有效,存储器读,LDDR1,转微地址:15

微指令000001110000101000000001

19-25

计算机组成原理课程设计

执行的操作是:算术:A,数码管LEDB有效,写LED,ALU→B,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:08

微指令000001000001001000000001

执行的操作是:输入开关SWB有效,R1→B,LDR0,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:09

微指令000001011010001000010111

20-25

计算机组成原理课程设计

执行的操作是:R0→B,LDDR1,转微地址:17

微指令000001011011010000011000

执行的操作是:R1→B,LDDR2,转微地址:18

微指令011000011001101000000001

执行的操作是:算术:A减B,ALU→B,LDR1,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:0A

微指令000001011110110110011001

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:19

微指令000001001110000000011010

执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:1A

微指令000001001011000000011011

21-25

计算机组成原理课程设计

执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:1B

微指令000001011010010000011100

执行的操作是:R0→B,LDDR1,转微地址:1C

微指令000101011001101000000001

执行的操作是:算术:A+B,ALU→B,LDR0,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:0B

微指令000001011110110110011101

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:1D

微指令000001001110000000011110

执行的操作是:存储器CE有效,存储器读,LDAR,转微地址:1E

微指令000001001011000000011111

22-25

计算机组成原理课程设计

执行的操作是:存储器CE有效,存储器读,LDDR2,转微地址:1F

微指令000001011010010000100000

执行的操作是:R0→B,LDDR1,转微地址:20

微指令011010011001101000000001

执行的操作是:逻辑:A异或B,ALU→B,LDR0,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:0C

微指令000001011010001000100001

执行的操作是:R0→B,LDDR1,转微地址:21

微指令000001011011010000100010

执行的操作是:R1→B,LDDR2,转微地址:22

微指令101110011001101000000001

23-25

计算机组成原理课程设计

执行的操作是:逻辑:AB,ALU→B,LDR1,转微地址:01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:07

微指令000001011110110110010110

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:16

微指令000001001101000110000001

执行的操作是:存储器CE有效,存储器读,PCLOAD,允许PC加1(LDPC=1),转微地址:

01

微指令000001011110110110000010

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:02

微指令000001001100000001000000

24-25

计算机组成原理课程设计

执行的操作是:存储器CE有效,存储器读,LDIR,P(1)测试:NA(3~0)或(IR7~IR4),

转微地址:04

微指令000001011110110110001101

执行的操作是:PC→B,LDAR,允许PC加1(LDPC=1),转微地址:0D

不难看出,上面的文字说明和我们所画的用微命令表示的微程序流程图中各个框中所列的微命令是一一对应的。

这个微程序可以根据用微命令表示的微程序流程图在本仿真软件上很方便地设计出来。

25-25

本文来源:https://www.bwwdw.com/article/ora6.html

Top