《计算机组成原理》简单模型机的设计

更新时间:2023-09-06 22:46:01 阅读量: 教育文库 文档下载

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

实验六、 简单模型计算机设计(综合性实验)

一、实验目的:

1. 在掌握各部件功能的基础上,组成一个简单的计算机整机系统—模型机; 2. 了解微程序控制器是如何控制模型机运行的,掌握整机动态工作过程; 3. 定义五条机器指令,编写相应微程序并具体上机调试。 二、预习要求:

1. 复习计算机组成的基本原理; 2. 预习本实验的相关知识和内容 三、实验设备:

EL-JY-II型计算机组成原理实验系统一套,排线若干。 四、模型机结构:

模型机结构框图见图6-1。

图中运算器ALU由U7—U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。微控器部分控存由U13—U15三片2816构成。除此之外,CPU的其它部分都由EP1K10集成(其原理见系统介绍部分)。

存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H—FFH。

输出设备由底板上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。

注:本系统的数据总线为16位,指令、地址和程序计数器均为8位。当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低8位有效。 五 、工作原理:

在实验5中,我们学习了如何设计微程序来产生各部分的控制信号。在本实验中我们将学习读、写机器指令和运行机器指令的完整过程。在机器指令的执行过程中,从CPU从内存取出一条机器指令到执行结束为一个指令周期,指令由微指令组成的序列来完成,一条机器指令对应一段微程序。另外,读、写机器指令也分别由相应的微程序段来完成。

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

存储器读操作(MRD):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。

存储器写操作(MWE):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“10”时,按“单步”键,可对RAM连续写操作。

启动程序(RUN):拨动开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行。

注:CA1、CA2由控制总线的E4、E5给出。键盘操作方式时由监控程序直接对E4、E5赋值,无需接线。开关方式时可将E4、E5接至控制开关CA1、CA2,由开关来控制。

图6-1 模型机结构框图

与实验五一样,本系统设计的微指令字长24位,其控制位顺序如下:

系统涉及到的微程序流程见图6-2(图中各方框内为微指令所执行的操作,方框外的标号为该条微指令所处的八进制微地址)。控制操作为P4测试,它以CA1、CA2作为测试条件,出现了写机器指令、读机器指令和运行机器指令3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。

机器指令的执行过程如下:首先将指令在外存储器的地址送上地址总线,然后将该地址上的指令传送至指令寄存器,这就是“取指”过程。之后必须对操作码进行P1测试,根据指令的译码将后续微地址中的某几位强制置位,使下一条微指令指向相应的微程序首地址,这就是“译码”过程(其原理见图5-4)。然后才顺序执行该段微程序,这是真正的指令执行过程。

在所有机器指令的执行过程中,“取指”和“译码”是必不可少的,而且微指令执行的操作也是相同的,这些微指令称为公用微指令,对应于图6-2中01、02、31地址的微指令。31地址为“译码”微指令,该微指令的操作为P(1)测试,测试结果出现多路分支。本实验用指令寄存器的前4位(I7-I4)作为测试条件,出现5路分支,占用5个固定微地址单元。

当全部微程序流程图设计完毕后,应将每条微指令代码化,表6-2即为将图6-2的微程序流程按微指令格式转化而成的“二进制微代码表”。

(a) 五条机器指令的微指令流程图

(b)输入/检查/运行机器指令的微指令流程图

图6-2 微程序流程图

六、实验内容及参考代码

本实验采用五条机器指令,根据上面所说的工作原理,设计参考实验程序如下:

地址(二进制) 机器指令(二进制) 助记符 说 明

0000 0000 0000 0000 IN AX, KIN

AX 0000 0001 0010 0001 MOV Bx, 01H Bx 0000 0010 0000 0001

0000 0011 0001 0000 ADD Ax, Bx Ax+Bx Ax 0000 0100 0011 0000 OUT DISP, Ax 输出显示电路 0000 0101 0100 0000 JMP 00H PC 0000 0110 0000 0000

注:其中MOV、JMP为双字长(32位),其余为单字长指令。对于双字长指令,第一字为操作码,第二字为操作数;对于单字长指令只有操作码,没有操作数。上述所有指令的操作码均为低8位有效,高八位默认为0。而操作数8位和16位均可。KIN和DISP分别为本系统专用输入、输出设备。

表6-2 根据本实验程序流程图设计的二进制微代码表:

七、实验步骤:

Ⅰ、单片机键盘操作方式实验

在进行单片机键盘控制实验时,必须把K4开关置于“OFF”状态,否则系统处于自锁状态,无法

进行实验。 1、实验连线:

实验连线图如图6-3所示。

连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。

2、写微代码:

(1) 将开关K1K2K3K4拨到写状态即K1 off、K2 on、K3 off、K4 off,其中K1、K2、K3在微程序控制电路,K4在24位微代码输入及显示电路上。在监控指示灯滚动显示【CLASS SELECt】状态下按【实验选择】键,显示【ES--_ _ 】输入06或6,按【确认】键,显示为【ES06】,再按下【确认】键。

(2) 监控显示为【CtL1=_】,输入1显示【CtL1_1】,按【确认】。

(3) 监控显示【U-Addr】,此时输入【000000】6位二进制数表示的微地址,然后按【确认】键,监控指示灯显示【U_CodE】,显示这时输入微代码【007F90】,该微代码是用6位十六进制数来表示前面的24位二进制数,注意输入微代码的顺序,先右后左,按【确认】键则显示【PULSE】,按【单步】完成一条微代码的输入,重新显示【U-Addr】提示输入第二条微代码地址。

(4) 按照上面的方法输入表6-3微代码,观察微代码与微地址显示灯的对应关系(注意输入微代码的顺序是由右至左)。

3.读微代码及校验微代码:

(1) 先将开关K1K2K3K4拨到读状态即K1 off、K2 off、K3 on、K4 off,按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态。

(2) 按【实验选择】键,显示【ES--_ _ 】输入06或6,按【确认】键,显示【ES06】。按【确认】键。

(3) 监控显示【CtL1=_】时,输入2,按【确认】显示【U_Addr】 ,此时输入6位二进制微地址,进入读代码状态。再按【确认】显示【PULSE】,此时按【单步】键,微地址指示灯显示输入的微地址,同时微代码显示电路上显示该地址对应的微代码,至此完成一条微指令的读过程。

(4) 此时监控显示【U_Addr】,按上述步骤对照表6-3表检查微代码是否有错误,如有错误,可按步骤2重新输入微代码。 4.写机器指令

(1) 先将K1K2K3K4拨到运行状态即K1 on、K2 off、K3 on、K4 off,按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态。

(2) 按【实验选择】键,显示【ES--_ _ 】输入06或6,按【确认】键,显示【ES06】,再按【确认】。 (3) 监控显示【CtL1=_】,按【取消】键,监控指示灯显示【CtL2=_】,输入1显示【CtL2_1】表示进

入对机器指令操作状态,此时拨动CLR清零开关(在控制开关电路上,注意对应的JUI应短接)对地址寄存器、指令寄存器清零,清零结果是微地址指示灯(uA5—uA0)和地址指示灯(A7—A0)全灭,清零步骤是使其电平高-低-高即CLR指示灯状态为亮-灭-亮。如不清零则会影响机器指令的输入!!!确定清零后,按【确认】。

(4) 监控显示闪烁的【PULSE】,连续按【单步】键,当微地址显示灯显示“010100”,时按【确认】键,监控指示灯显示【data】,提示输入机器指令“00”或“0000”(两位或四位十六进制数),输入后按【确认】,显示【PULSE】,再按【单步】,微地址显示灯显示“011000”,数据总线显示灯显示“0000000000000000”,即输入的机器指令。

(5) 再连续按【单步】,当微地址显示灯再次显示“010100”时,按【确认】输入第二条机器指令。依此规律逐条输入表6-4的机器指令,输完后,可连续按【取消】或【RESET】退出写机器指令状态。注意,每当微地址显示灯显示“010100”时,地址指示灯自动加1显示。如输入指令为8位,则高8位自动变为0。

表6-4 机器指令表

5.读机器指令:

在监控指示灯显示【CtL2=_】状态下,输入2,显示【CtL2_2】,表示进入读机器指令状态,按步骤4的方法拨动CLR开关对地址寄存器和指令寄存器进行清零,然后按【确认】键,显示【PULSE】,连续按【单步】键,微地址显示灯从“000000”开始,然后按“010000”、 “010010” 、“010111”方式循环显示。当微地址灯再次显示为“010000”时,输出显示数码管上显示写入的机器指令。读的过程注意微地址显示灯,地址显示灯和数据总线指示灯的对应关系。如果发现机器指令有误,则需重新输入机器指令。

注意:机器指令存放在RAM里,掉电丢失,故断电后需重新输入。 6.运行程序

在监控指示灯显示【CtL2=_】状态下,输入3,显示【CtL2_3】,表示进入运行机器指令状态,按步骤4的方法拨动CLR开关对地址寄存器和指令寄存器进行清零,使程序入口地址为00H,可以【单步】运行程序也可以【全速】运行,运行过程中提示输入相应的量,运行结束后从输出显示电路上观察结果。

6.实验结果说明 1).单步运行结果

在监控指示灯显示【run CodE】状态下,连续按【单步】键,可以单步运行程序。当微地址显示

灯显示“001000”时,监控显示【dAtA】,提示输入数据,即被加数,输入1234,按【确认】,再连续按【单步】,在微地址灯显示“010101”时,按【单步】,此时可由输出显示电路的数码管观察结果为1235,即1234+0001=1235,同时数据显示灯显示“0001001000110101”。表示结果正确。 2).全速运行结果

在监控指示灯显示【run CodE】状态下,按【全速】键,则开始自动运行程序,在监控指示灯显示【dAtA】时输入数据,按【确定】键,程序继续运行,此时可由输出显示电路的数码管显示加1运算结果。

Ⅱ、采用开关控制操作方式实验

本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。 连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。

1. 实验接线

开关控制操作方式如图6-4所示:

图6-4 开关控制方式的模型机实验接线图

数据输入电路DIJ1 接 数据总线BD7-----BD0 数据输入电路DIJ2 接 数据总线BD15-----BD8 数据输入电路DIJ-G 接 I/O控制电路Y3 微控器接口UAJ1 接 控制开关电路UA5---UA0 脉冲源及时序电路fin 接 脉冲源及时序电路f/8 脉冲源及时序电路T4—T1 接 控制总线T4---T1 控制开关电路CA1 接 控制总线E4 控制开关电路CA2 接 控制总线E5 2.实验步骤:

1)写微代码 (以写表6-2的微代码为例) :

首先将微程序控制电路上的开关K1K2K3拨到写入状态,即K1 off、K2 on、K3 off,然后将24位微代码输入及显示电路上的开关K4拨到on状态。置控制开关UA5 …… UA0=“000000”,输入微地址“000000”, 置24位微代码开关MS24---MS1为:“00000000 01111111 10010000”,输入24位二进制微代码,按【单步】,微地址灯显示“000 000”,写入微代码。保持K1K2K3K4状态不变,写入表6-2的所有微代码。 2) 读微代码并验证结果:

将微程序控制电路上的开关K1K2K3拨到读出状态,即K1 off、K2 off、K3 on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。置控制开关UA5 …… UA0=“000000”,输入微地址“000000”, 按【单步】,微地址灯显示“000 000”,24位微代码显示“00000000 01111111 10010000”,即第一条微代码。保持K1K2K3K4状态不变,改变UA5 …… UA0微地址的值,读出相应的微代码,并和表6-2的微代码比较,验证是否正确。如发现有误,则需重新输入该微地址相应的微代码。 3)写机器指令

(1) 将微程序控制电路上的开关K1K2K3拨到运行状态,即K1 on、K2 off、K3 on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零。

(2) 确定清零后,把控制开关CA1、CA2置为“10”,按动一次【单步】按钮,微地址显示灯显示“010001”,再按动一次【单步】,微地址灯显示 “010100”,此时通过数据输入电路的开关输入要写入的机器指令,置D15----D0=“0000000000000000”,按【单步】,微地址显示灯显示“011000”,数据总线显示灯显示“0000000000000000”,即输入的机器指令。这样就完成本实验的第一条机器。

(3) 再连续按【单步】,微地址显示灯再次显示“010100”时,按上面的方法通过数据输入电路的开关输入第二条机器指令指令“0000000000010000”,直至写完表6-4的所有二进制机器指令。注意,每当微地址显示灯显示“010100”时,地址指示灯自动加1显示。 4)读机器指令及校验机器指令:

拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零,清零结果是微地址指示灯和地址指示灯全灭,置CA1、CA2开关置为“00”, 连续按【单步】键,微地址显示灯显示从“000000”开始,然后按“010000”、 “010010” 、“010111”方式循环显示。当微地址灯再次显示为“010000”时,输出显示数码管上显示写入的机器指令。读的过程注意微地址显示灯,地址显示灯和数据总线指示灯的对应关系。如果发现机器指令有误,则需重新输入机器指令。

注意:机器指令存放在RAM里,掉电丢失,故断电后需重新输入。 5)运行程序

将微程序控制电路上的开关K1K2K3拨到运行状态,即K1 on、K2 off、K3 on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。拨动控制开关电路上的清零开关CLR,对地址寄存器、指令寄存器清零,清零结果是微地址指示灯(和地址指示灯全灭,使程序的入口地址位00H。置CA1CA2=“11”,连续按【单步】,当微地址显示灯显示“001 000”时,通过数据输入电路输入二进制数据“0001001000110101”, 再连续按【单步】,在微地址灯显示“010101”时,按【单步】,此时可由输出显示电路的数码管观察结果为1235H,同时数据显示灯显示“0001001000110101”,表示结果正确。

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

Top