(实验五  CPU组成与指令周期实验)

课程 计算机组成原理实验

实验日期 2015 年 12 月  8 日

一、实验目的

1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机。

2.用微程序控制器控制模型计算机的数据通路。

3.通过TEC-5执行由8条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验内容

1. 实验电路图1

2.实验任务

(1)将下表5-1的程序按机器指令格式手工汇编成二进制机器代码(要求预习时完成)。

表5-1

内存地址

机器指令

机器代码(十六进制表示)

00H

ADD R1, R0

01H

01H

JC R3

5CH

02H

STA R1, [R2]

39H

03H

LDA R2, [R2]

4AH

04H

AND R2, R0

22H

05H

SUB R2, R3

1EH

06H

OUT R2

78H

07H

STP

60H

(2) 将实验任务(1)中的程序代码用控制台指令存入内存中,并根据程序的需要,用数码开关SW7-SW0设置通用寄存器的数据和内存数据。要求使用两组寄存器数据,第一组寄存器数据在执行 ADD R1,R0指令时产生进位,第二组寄存器数据在执行ADD R1,R0指令时不产生进位,以观察同一程序的不同执行流程。

(3)用单拍(DP)方式执行一遍程序,记录最后得到的四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值比较。执行时注意观察各个指示灯的显示,以跟踪程序执行的详细过程(可观察到每一条微指令的执行过程)。

(4)用连续方式再次执行程序。这种情况相当于计算机正常的工作。程序执行到STP指令后自动停机。读出寄存器中的运算结果,与理论值比较。

参考数据:

假设第一组数据:

预置寄存器数据R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。

假设第二组数据:

预置寄存器数据R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。

三、实验环境

软件: WIN XP、串口调试助手软件

硬件:1.微机                                    1台

   2.TEC-5实验系统                1台

3.逻辑测试笔          1支

4.编程器                                  公用

四、实验步骤和实验结果

(一)对机器指令系统组成的简单程序进行手工译码的结果如下:

内存地址

机器指令

机器代码(十六进制表示)

00H

ADD R1, R0

01H

01H

JC R3

5CH

02H

STA R1, [R2]

39H

03H

LDA R2, [R2]

4AH

04H

AND R2, R0

22H

05H

SUB R2, R3

1EH

06H

OUT R2

78H

07H

STP

60H

(二)接线表:

控制器

LDIR

PC+1

LDPC#

AR+1

LDAR#

LDDR1

LDDR2

LDRi

数据通路

LDIR

PC+1

LDPC#

AR+1

LDAR#

LDDR1

LDDR2

LDRi

控制器

SW_BUS#

Rs_BUS#

ALU_BUS#

RAM_BUS#

CER#

CEL#

数据通路

SW_BUS#

Rs_BUS#

ALU_BUS#

RAM_BUS#

CER#

CEL#

控制器

LR/W#

Cn#

M

S0

S1

S2

S3

数据通路

LR/W#

Cn#

M

S0

S1

S2

S3

控制器

进位C

IR7

IR6

IR5

IR4

数据通路

进位C

IR7

IR6

IR5

IR4

数据通路

IR3

IR2

IR1

IR0

IR1

IR0

数据通路

RS1

RS0

RD1

RD0

WR1

WR0

控制器

TJ

时序电路

TJ

(三)打开TEC-5电源。

(四)用串口调试助手对控存EEPROM进行改写。

首先需要用串口调试助手对控存EEPROM进行改写:

TEC-5中的4片EEPROM(CM0-CM3,U35-U38)是控存,里面装有TEC-5微程序的微代码。由于它是电可擦除可编程的EEPROM,因此可以实现不用将CM0-CM3从插座上取出就能实现对其编程的目的。为此我们在TEC-5上用1片单片机芯片89S52(U39)和一些附加电路实现了不用拔出CM0-CM3就能对其编程,从而改写这些EEPROM中微代码的目的。89S52中包含一个监控程序,它负责通过串行口和PC机通讯,向PC机发出提示信息、接收命令和数据,并根据接收到的命令(0,1,2,3)决定将随后收到的64个数据写入指定的EEPROM。命令0、1、2、3指定写那个器件,0对应CM0,1对应CM1,2对应CM2,3对应CM3。64个字节的数据将写入指定EEPROM的前64个单元(地址00H-3FH)。

 注意波特率为1200波特。

CM0-CM3的下载步骤:

(1)在TEC-5关闭电源的情况下,用出厂时提供的RS232串口线将TEC-5实验仪的串口与主机的串口连接起来。TEC-5上的编程开关拨到“1编程”位置。将串口调试助手程序打开,设置好参数。打开电源。按一下复位键RESET,使控制存储器处于接收信息状态,此时TEC-5中微地址与微码的指示灯全亮。(注意:在数据传送过程中这些指示灯会闪烁)。

(2)软件的数据接收区此时会显示‘WAITING FOR COMMAND ...’,如下图4。按“清空重填”按钮,然后请在数据发送窗口写入‘0’,按‘手动发送’按钮,将命令‘0’发送给89S52,表示通知它要写CM0文件了。

(3)此时数据接收区会出现‘PLEASE CHOOSE A CM FILE’,如下图5所示,请通过按钮‘选择发送文件’,选择要写入二进制文件(如CM0.BIN),文件必须是“BIN”格式,长度为64字节。然后点击‘发送文件’按钮,将文件发往89S52。89S52接收数据并对CM0编程,然后它读出CM0的数据和从PC机接收到数据比较,不管正确与否,89S52都向PC机发出结果信息,在串口调试助手软件数据接收窗口显示出来。如果发送成功,则结果如下图6所示。

图4  数据接收区等待命令窗口

图5 选择发送文件窗口

图6 数据接收区发送成功窗口

(4)等待文件发送完毕的提示(注意看软件的最底下的状态行和数据接收区),请注意看数据接收区的命令提示,重复(2)-(3)步骤,分别输入命令‘1’、‘2’、‘3’,同时,应分别选择CM1、CM2、CM3文件,对相应的EEPROM编程。CM1、CM2、CM3全部编程完后,按RESET按钮结束编程。最后将TEC-5上的编程开关拨到正常位置。

   注意:对CM0、CM1、CM2、CM3的编程顺序无规定,只要在发出器件号后紧跟着发送该器件的编程数据(文件)即可。例如,可以按CM3、CM2、CM0、CM1的顺序编程。编程也可以只对一个或者几个EEPROM编程,不一定对4个EEPROM全部编程,只要编程结束后按RESET按钮结束编程,最后将TEC-5上的编程开关拨到正常位置即可

(五)存程序代码。

设置通用寄存器R0、R1、R2和R3的第一组值及存储器相关单元的数据。

设本组的寄存器数据R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。选择这组数据的目的是执行ADD R1,R0指令时不产生进位C,从而在执行JC R3指令时不产生跳转,而是顺序执行。

设置通用寄存器R0、R1、R2和R3的值

在本操作中,置R0=35H,R1=43H,R2=10H,R3=07H

(1)令DP=0,DB=0,使系统处于连续运行状态。令SWC=0,SWB=1,SWA=1,使系统处于写寄存器状态WRF。按CLR#按钮,使实验系统处于初始状态。

(2)在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。即该地址设置为0FFH。按一次QD按钮,将0FFH写入左端口地址寄存器AR。

(3)在SW7—SW0上设置00H,作为通用寄存器R0的寄存器号。按一次QD按钮,将00H写入指令寄存器IR。

(4)在SW7—SW0设置35H,按一次QD按钮,将35H写入IR指定的R0寄存器。

(5)写入R1、R2、R3方法与写入R0类似,即重复(3)和(4)。

具体写寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(0  1  1)

0FFH

寄存器号

SW7-SW0

执行

结果

SW7-SW0

执行结果

(R0)00H

0000 0000

按QD按钮

00H写入IR

35H

将35H写入IR指定的R0寄存器

(R1)01H

0000 0001

01H写入IR

43H

将43H写入IR指定的R0寄存器

(R2)02H

0000 0010

02H写入IR

10H

将10H写入IR指定的R0寄存器

(R3)03H

0000 0011

03H写入IR

07H

将07H写入IR指定的R0寄存器

设置完R0-R3的值后,用读寄存器控制台操作检查一下写入内容是否正确。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示35H

(R1)01H

0000 0100

DBUS上显示43H

(R2)02H

0000 1000

DBUS上显示10H

(R3)03H

0000 1100

DBUS上显示07H

向存储器中输入程序机器代码和数据

本操作中,我们从00地址开始存8个机器代码:01H,5CH,39H,4AH,22H,1EH,78H,60H。在10H单元存入55H,作为10H单元的初值,以检查LDA和STA两条指令的作用。

(1)令DP = 0,DB = 0,使实验系统处于连续运行状态。令SWC = 0、SWB = 0、SWA = 1,使实验系统处于写双端口存储器工作方式WRM。按CLR#按钮,使实验系统处于初始状态。

(2)置SW7—SW0为00H,按QD按钮,将00H写入左端口地址寄存器AR。

(3)置SW7—SW0 为01H,按QD按钮,将01H写入存储器00H单元。AR自动加1,变为01H。

(4)置SW7—SW0 为5CH,按QD按钮,将5CH写入存储器01H单元。AR自动加1,变为02H。

(5)将数据39H、4AH、22H、1EH、78H、60H分别写入存储器02H单元、03H单元、04H单元、05H、06H单元、07H单元的方法与上述类似。

(6)按CLR#按钮,使实验系统恢复到初始状态。

(7)置SW7—SW0为10H,按QD按钮,将10H写入左端口地址寄存器AR。

(8)置SW7—SW0 为55H,按QD按钮,将55H写入存储器10H单元。AR自动加1,变为11H。

具体写存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  0   1)

(内存单元)

(机器代码)SW7-SW0

执行

执行结果

(00H)

00H

按QD按钮

将00H写入左边地址寄存器AR

(00H)

01H

将01H写入存储器00H单元,AR自动加1,变为01H

(01H)

5CH

将5CH写入存储器01H单元,AR自动加1,变为02H

(02H)

39H

将39H写入存储器02H单元,AR自动加1,变为03H

(03H)

4AH

将4AH写入存储器03H单元,AR自动加1,变为04H

(04H)

22H

将22H写入存储器04H单元,AR自动加1,变为05H

(05H)

1EH

将1EH写入存储器05H单元,AR自动加1,变为06H

(06H)

78H

将78H写入存储器06H单元,AR自动加1,变为07H

(07H)

60H

将60H写入存储器07H单元,AR自动加1,变为08H

按CLR#使系统处于初始状态

(内存单元)

(机器代码)SW7-SW0

执行

执行结果

(10H)

10H

按QD按钮

将10H写入左边地址寄存器AR

55H

将55H写入存储器10H单元,AR自动加1,变为11H

设置完存储器的程序和数据后,用存储器控制台操作检查一下写入的内容是否正确。

具体读存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

00H

00H

按QD按钮

00H

01H

01H

-

01H

5CH

02H

-

02H

39H

03H

-

03H

4AH

04H

-

04H

22H

05H

-

05H

1EH

06H

-

06H

78H

按CLR#使系统处于初始状态

10H

10H

按QD按钮

10H

55H

●用单拍(DP)方式执行一遍程序。

  置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。置SW7—SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。

  在单拍执行过程中,首先要随时监测AR、PC、µA5—µA0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。

  程序执行的结果如下:

  初值:R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。

(1)ADD R1,R0

  执行结果  R0=35H,R1=78H,R2=10H,R3=07H。存储器10H单元的内容为( 55 )H。无进位C。

(2)JC R3

  执行结果  R0=35H,R1=78H,R2=10H,R3=07H。存储器10H单元的内容为( 55 )H。PC为(02)H。进位C不变。

(3)STA R1,[R2]

  执行结果  R0=35H,R1=78H,R2=( 10 )H,R3=07H。存储器10H单元的内容为( 78  )H。

(4)LDA R2,[R2]

  执行结果  R0=35H,R1=78H,R2=(78)H,R3=07H。存储器10H单元的内容为(78)H。

(5)AND R2,R0

  执行结果  R0=35H,R1=78H,R2=(30)H,R3=07H。存储器10H单元的内容为(78)H。

(6)SUB R2,R3

  执行结果  R0=35H,R1=78H,R2=( 29 )H,R3=07H。存储器10H单元的内容为(78)H。进位C为1。

(7)OUT R2

  执行结果  R0=35H,R1=78H,R2=(29)H,R3=07H。存储器10H单元的内容为( 78 )H。可在数据总线DBUS指示灯上观察到( 29 )H。

(8)STP

  执行结果  R0=( 35  )H,R1=(78)H,R2=( 29 )H,R3=(07)H。存储器10H单元的内容为( 78 )H。

最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示35H

(R1)01H

0000 0100

DBUS上显示78H

(R2)02H

0000 1000

DBUS上显示29H

(R3)03H

0000 1100

DBUS上显示07H

具体读存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

10H

10H

按QD按钮

10H

78H

●用连续方式执行一遍程序

(1)由于上面的单拍执行程序,已破坏了寄存器R1、R2和存储器10单元的内容(程序没有破坏),因此需要重新设置寄存器R1、R2和存储器10单元的值。初值:R0=35H,R1=43H,R2=10H,R3=07H。存储器10H单元的内容为55H。

重新写寄存器R1、R2的值的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(0  1  1)

0FFH

寄存器号

SW7-SW0

执行

结果

SW7-SW0

执行结果

(R1)01H

0000 0001

01H写入IR

43H

将35H写入IR指定的R1寄存器

(R2)02H

0000 0010

02H写入IR

10H

将10H写入IR指定的R2寄存器

重新写存储器10单元的值的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  0   1)

(内存单元)

(机器代码)SW7-SW0

执行

执行结果

(10H)

10H

按QD按钮

将10H写入左边地址寄存器AR

55H

将55H写入存储器10H单元,AR自动加1,变为11H

(2)置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使实验系统处于连续运行状态。置SW7—SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。

执行结果  R0=( 35  )H,R1=(78)H,R2=( 29 )H,R3=(07)H。存储器10H单元的内容为( 78 )H。

最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示35H

(R1)01H

0000 0100

DBUS上显示78H

(R2)02H

0000 1000

DBUS上显示29H

(R3)03H

0000 1100

DBUS上显示07H

具体读存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

10H

10H

按QD按钮

10H

78H

(六)存程序代码,(如果前面4.的存入程序代码不被破坏,就不要重新输入)

设置通用寄存器R0、R1、R2和R3的第二组值及存储器相关单元的数据。

设本组寄存器数据:R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。选择这组数据的目的是执行ADD R1,R0指令时产生进位C,从而在执行JC R3指令时产生跳转,而不是顺序执行。

设置通用寄存器R0、R1、R2和R3的值

  在本操作中,设R0=86H,R1=88H,R2=10H,R3=07H,

具体写寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(0  1  1)

0FFH

寄存器号

SW7-SW0

执行

结果

SW7-SW0

执行结果

(R0)00H

0000 0000

按QD按钮

00H写入IR

86H

将86H写入IR指定的R0寄存器

(R1)01H

0000 0001

01H写入IR

88H

将88H写入IR指定的R0寄存器

(R2)02H

0000 0010

02H写入IR

10H

将86H写入IR指定的R0寄存器

(R3)03H

0000 0011

03H写入IR

07H

将86H写入IR指定的R0寄存器

设置完R0-R3的值后,用读寄存器控制台操作检查一下写入内容是否正确。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示86H

(R1)01H

0000 0100

DBUS上显示88H

(R2)02H

0000 1000

DBUS上显示10H

(R3)03H

0000 1100

DBUS上显示07H

向存储器中输入程序机器代码和数据。

本操作中,我们从00地址开始存8个机器代码:01H,5CH,39H,4AH,22H,1EH,78H,60H。在10H单元存入55H。

具体写存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  0   1)

(内存单元)

(机器代码)SW7-SW0

执行

执行结果

(00H)

00H

按QD按钮

将00H写入左边地址寄存器AR

(00H)

01H

将01H写入存储器00H单元,AR自动加1,变为01H

(01H)

5CH

将5CH写入存储器01H单元,AR自动加1,变为02H

(02H)

39H

将39H写入存储器02H单元,AR自动加1,变为03H

(03H)

4AH

将4AH写入存储器03H单元,AR自动加1,变为04H

(04H)

22H

将22H写入存储器04H单元,AR自动加1,变为05H

(05H)

1EH

将1EH写入存储器05H单元,AR自动加1,变为06H

(06H)

78H

将78H写入存储器06H单元,AR自动加1,变为07H

(07H)

60H

将60H写入存储器07H单元,AR自动加1,变为08H

按CLR#使系统处于初始状态

(内存单元)

(机器代码)SW7-SW0

执行

执行结果

(10H)

10H

按QD按钮

将10H写入左边地址寄存器AR

55H

将55H写入存储器10H单元,AR自动加1,变为11H

设置完存储器的程序和数据后,用读存储器控制台操作检查一下写入内容是否正确。

具体读存储器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

00H

00H

按QD按钮

00H

01H

01H

-

01H

5CH

02H

-

02H

39H

03H

-

03H

4AH

04H

-

04H

22H

05H

-

05H

1EH

06H

-

06H

78H

按CLR#使系统处于初始状态

10H

10H

按QD按钮

10H

55H

  • 用单拍(DP)方式执行一遍程序。

  置SWC=0,SWB=0,SWA=0,DP=1,DB=0,使实验系统处于单拍运行状态。置SW7—SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后一次一次按QD按钮,使程序一拍一拍的执行。

  在单拍执行过程中,首先要随时监测AR、PC、µA5—µA0和IR的值,以判定程序执行到何处,正在执行哪条指令和微指令。对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。程序执行的结果如下:

  初值:R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。

(1)ADD R1,R0

  执行结果  R0=(86 )H,R1=(0E)H,R2=(10)H,R3=( 07 )H。存储器10H单元的内容为(55)H。有进位C。

(2)JC R3

  执行结果  R0=(86)H,R1=(0E)H,R2=(10)H,R3=(07)H。存储器10H单元的内容为(55)H。PC为(07)H。进位C不变。

(3)STP

  执行结果  R0=(86)H,R1=( 0E )H,R2=(10 )H,R3=(07)H。存储器10H单元的内容为(55)H,进位C为1。

  最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示86H

(R1)01H

0000 0100

DBUS上显示0EH

(R2)02H

0000 1000

DBUS上显示10H

(R3)03H

0000 1100

DBUS上显示07H

读存储器:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

10H

10H

按QD按钮

10H

55H

●用连续方式执行一遍程序。

(1)由于上面的单拍执行程序,已破坏了寄存器R1内容(程序没有破坏),因此需要重新设置寄存器R1的值。初值:R0=86H,R1=88H,R2=10H,R3=07H。存储器10H单元的内容为55H。

写寄存器R1的值:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(0  1  1)

0FFH

寄存器号

SW7-SW0

执行

结果

SW7-SW0

执行结果

(R1)01H

0000 0001

按QD按钮

01H写入IR

88H

将88H写入IR指定的R1寄存器

(2)置SWC=0,SWB=0,SWA=0,DP=0,DB=0,使实验系统处于连续运行状态。置SW7—SW0=00H,使程序从地址00H开始执行。按CLR#按钮,使实验系统处于初始状态,然后按一次QD按钮,则程序自动连续运行到地址为07H的STP指令。

执行结果  R0=(86)H,R1=( 0E )H,R2=(10 )H,R3=(07)H。存储器10H单元的内容为( 55 )H。

最后的执行结果可通过控制台的读寄存器操作和读存储器操作观察到,在观察最后结果之前,首先应按CLR#按钮,使实验系统处于初始状态。

具体读寄存器的操作如下表所示:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

SW7-SW0

按QD将0FFH写入AR

0   0

(1  0   0)

0FFH

寄存器号

SW7-SW0

执行

执行结果

(R0)00H

0000 0000

按QD按钮

DBUS上显示86H

(R1)01H

0000 0100

DBUS上显示0EH

(R2)02H

0000 1000

DBUS上显示10H

(R3)03H

0000 1100

DBUS上显示07H

读存储器:

DP  DB

使系统处于连续状态

SWC SWB SWA

按CLR#使系统处于初始状态

0   0

(0  1   0)

内存单元

SW7-SW0

执行

执行结果

AR7-AR0显示

DBUS7-DBUS0显示

10H

10H

按QD按钮

10H

55H

五、实验结果与讨论

(一)第一组数据的实验结果:

在存完寄存器和存储器数据,并通过读取数据及指令以确保数据及指令无误后,用单拍方式和连续方式执行程序,查看寄存器R0、R1、R2、R3及(10H)单元的值,如下所示:

最终通用寄存器和内存单元数据表(实验结果表)

寄存器号

R0

R1

R2

R3

(10H)

理论值

35H

78 H

29H

07 H

78H

实验值

35H

78 H

29H

07 H

78H

实验数据与理论数据相符。

(二)第二组数据的实验结果:

在存完寄存器和存储器数据,并通过读取数据及指令以确保数据及指令无误后,用单拍方式和连续方式执行程序,查看寄存器R0、R1、R2、R3及(10H)单元的值,如下所示:

最终通用寄存器和内存单元数据表(实验结果表)

寄存器号

R0

R1

R2

R3

(10H)

理论值

86H

0E H

10H

07 H

55H

实验值

86H

0E H

10H

07 H

55H

实验数据与理论数据相符。

六、思考题

请简述设计模型计算机的步骤。

答:模型机设计具体步骤下:

1、 确定指令系统;

2、 规划设计整机逻辑;

3、 设计数据通路;

4、 设计控制器(以常规型微程序控制器为例);

  a.设计时序电路;

  b.最后确定指令周期;

  c.画出微程序流程图,同时检查设计的数据通路和控制器是否满足1、指令系统的要求。

  d.根据微程序流程图化简、归并微信号;

  e.设计微指令格式;

  f.设计地址转移逻辑;

  g.若不满足,则进行修改,返回到C进行修改;

  h.根据流程图编写微代码;

  i.写微代码到控制存储器,并检查写入代码的正确性;

5、将数据通路与控制器联机,组成一台模型计算机;

6、通过运行一段简单的程序(应包括该机的所有指令系统),便可知道设计的正确性。不过程序运行前须通过控制台为所用的寄存器、内存单元提供必要的数据以及向内存送程序的机器代码。

七、总结

(一) 本次实验按时按量完成。

(二) 通过本次实验我将微程序控制器同执行部件(整个数据通路)联机,组成了一台模型计算机。并用微程序控制器控制模型计算机的数据通路。最后通过TEC-5执行由8条机器指令组成的简单程序,掌握机器指令与微指令的关系,牢固建立了计算机的整机概念。

(三) 本次实验将前面几个实验中的所有电路,包括运算器、存储器、通用寄存器堆、微程序控制器等模块组合在一起,构成一台简单的模型机。因此,本实验与前面的实验相比,虽然会比较复杂些,但也是收获最多的一个实验。

(四) 在前面的实验中,我们学生本身作为“控制器”,完成了对数据通路的控制。而在这次实验中,数据通路的控制将交由微程序控制器来完成。TEC-5从内存中取出一条机器指令到执行指令结束的一个指令周期,是由微程序完成的,即一条机器指令对应一个微程序序列。

(五) 本次实验起初多次出现存入寄存器的数据无法正确读出的问题,经过反复排查与请教老师,发现是因为接线接触不良的问题,接下来的几次独立试验则十分注意接线的接触问题,情况得到很好改善。

(六) 开始执行程序的时候,如果指令没有按照应该有的顺序执行,而是跳到下一条或者是其他条,则应该排查接线IR7-IR4的接触是否良好。

(七) 若74LS181运算结果有的对,有的错,可能是S3-S0中有的连线接触不良。

计算机组成原理实验之CPU组成与指令周期实验的更多相关文章

  1. 【计算机组成原理】中央处理器CPU

    一.CPU的功能和基本结构 1.功能 当用计算机解决某个问题是,我们首先必须为他编写程序,程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据,一旦把程序装入内存器 ...

  2. 计算机组成原理--64位CPU装载32位操作系统,它的寻址能力还是4GB吗?

    借由这个问题,今天我们就把 32 位 CPU.64 位 CPU.32 位操作系统.64 位操作系统之间的区别与联系彻底搞清楚.对于这个问题,博主也是一知半解了好长时间啊~ 基本概念 32位的CPU与6 ...

  3. 计算机组成原理——中央处理器(CPU)考研题

    (一)   CPU的功能和基本结构 (二)   指令执行过程 (三)   数据通路的功能和基本结构 (四)   控制器的功能和工作原理 1.     硬布线控制器2.     微程序控制器微程序.微指 ...

  4. 计算机组成原理 — CPU 中央处理器

    目录 文章目录 目录 前文列表 逻辑电路部件 组合逻辑电路 时序逻辑电路 阵列逻辑电路 中央处理器(CPU) 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 ...

  5. 编程必备基础知识|计算机组成原理篇(09):CPU的控制器和运算器

    计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁 ...

  6. linux的系统组成和计算机组成原理,linux常用操作

    Linux入门 linux简介   学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...

  7. day01-编程与计算机组成原理

    什么是编程 编程语言:是人与计算机沟通交流的介质,通过标准化的规则传递信息 编程:就是为了使计算机能够理解人的意图,通过编程语言写出一个个文件,这堆文件完成相应的目的 编程的目的:用计算机取代人完成工 ...

  8. 【0725 | Day 1】计算机编程/计算机组成原理/计算机操作系统

    什么是编程 编程语言:人与计算机交流的手段 编程:通过编程语言编写文件 学习编程的目的:让计算机代替人力,为我们服务 计算机组成原理 计算机由五大部分组成:控制器.运算器.存储器.输入设备.输出设备. ...

  9. 重学计算机组成原理(五)- "旋转跳跃"的指令实现

    CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if-else.for这样的条件和循环存在,这些指令也不会一路平直执行下去. 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CP ...

随机推荐

  1. 跟我学Spring3(9.2):Spring的事务之事务管理器

    原文出处: 张开涛9.2.1 概述 Spring框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架(如Hibernate)通过实现策略接口PlatformTransactionManage ...

  2. Linux命令缩写来由

    A 命令 全称 功能 备注 apt AdvancedPackaging Tool APT用来自动下载,配置,安装二进制或者源代码格式的软件包   awk Aho Weiberger and Kerni ...

  3. HDU 4462 DFS

    2012 Asia Hangzhou Regional Contest 给出N*N的矩阵,所有标记为0,当中有K个点标记为1.而且能够在该位置放置一个能够覆盖曼哈顿距离为r的草人.问最少放置几个草人, ...

  4. IntPtr 转 string

    假设有 intPtr pBuffer 方法一: 直接使用Marshal.PtrToStringAnsi方法: string ss = Marshal.PtrToStringAnsi(pBuffer); ...

  5. (转)Unity中protobuf的使用方法

    在移动手机游戏开发中,目前Unity3D已成为比较主流的开发技术. 那么对于客户端服务器协议的打解包,我们有3中常用的处理方式: 1.自定义结构体:在协议中直接传输代码中自定义的结构体:这种方式的坏处 ...

  6. Mac下Sublime Text 总是以新窗口打开文件的解决办法

    Mac下的Sublime有个毛病,经常打开后,之前打开的窗口都没了,太难受了. Windows/Linux下的sublime总是默认的以标签页的形式打开关联的文件,但是在Mac下使用Sublime打开 ...

  7. Passing address of non-local object to __autoreleasing parameter for write-back

    在希望通过函数的參数返回Objective-C对象的时候.遇到了这个问题 错误代码例如以下: - (void)methodA:(NSString **)string<span style=&qu ...

  8. ArcEngine10.x开发的许可问题

    1. ArcEngine9.x迁至ArcEngine10.x 相信很多同学都知道,在ArcEngine9.x下正常编译的代码到ArcEngine10.x会报错:ArcGIS version not s ...

  9. 修改上一篇文章的node.js代码,支持调用自定义页面

    上一篇文章所有请求只能调用index.html,现在做个改造,允许调用自定义页面 服务端 app.js var app = require('http').createServer(handler) ...

  10. Hibernate(十一)检索

    一.Hibernate检索策略 二.检索方法 三.get和load比较 get和load的区别:  get不支持延迟加载,而load支持.  当查询特定的数据库中不存在的数据时,get会返回null, ...