EL-JY- 计算机组成原理第二套 实验五

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

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

计算机组成原理实验指导书 - 46 -

实验五 微程序设计实验

一、实验目的:

深入掌握微程序控制器的工作原理,学会设计简单的微程序。 二、预习要求:

1.复习微程序控制器工作原理; 2.复习计算机微程序的有关知识。 三、实验设备:

EL-JY-II型计算机组成原理实验系统一台,连接线若干。 四、微程序的设计: 1.微指令格式

设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。

微指令的最基本成份是控制场,其次是下地址场。控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。 1)最短编码格式

这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。 2)全水平编码格式

这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。若控制场长n位,则至多可表示n个不同的微操作命令。

采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。

3)分段编码格式是将控制场分成几段。若某段长i位,则经译码,该段可表示2 个互斥的即不能同时有效的微操作命令。

采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。 2.微程序顺序控制方式的设计

微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。下面是常见的两种。

i

计算机组成原理实验指导书 - 47 -

1)计数增量方式

这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。MPC的初值由微程序首址形成线路根据指令操作码编码形成。在微程序执行过程中该计数器增量计数,产生下一条微指令地址。这使得微指令格式中可以不设置“下地址场”。缩短了微指令长度,也使微程序控制部件结构较简单。但微程序必须存放在控存若干连续单元中。 2)断定方式

微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在控存中不一定要连续存放。在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成电路根据指令操作码产生。 3.本系统的微指令格式

微程序设计的关键技术之一是处理好每条微指令的下地址,以保证程序正确高效地进行。本系统采用分段编码的指令格式,采用断定方式确定下一条微指令的地址。 微操作控制信号

控制场 下地址场 微指令寄存器MIR 微指令

控存CM 微地址 状态条件

指令操作码

图5-2 断定方式微程序控制部件示意图

其中“微地址形成电路”对应于实验四的图4-1(b);“控存CM”对应于实验四的图4-1(a);“微指令寄存器及控制、地址场”对应于实验四的图4-1(c)。

微地址形成电路

计算机组成原理实验指导书 - 48 -

每条微指令由24位组成,其控制位顺序如下:

24 23 S3 S2 22 21 20 M 19 Cn 18 17 16 1B 15 14 13 F1 12 11 10 F2 9 8 7 F3 6 5 4 uA3 3 uA2 2 uA1 1 uA0 S1 S0 WE 1A uA5 uA4 微指令译码电路如下:

图5—3 微指令译码电路

图中MS24—MS16对应于微指令的第24—16位,S3S2S1S0MCn为运算器的方式控制,详见实验一和实验二;WE为外部器件的读写信号,‘1’表示写,‘0’表示读;1A、1B用于选通外部器件,通常接至底板IO控制电路的1A1B端,四个输出Y0Y1Y2Y3接外部器件的片选端。(注:再实验六及以后的实验中,Y3被系统占用,用于输入中断,Y0Y1Y2仍能被用户使用)

图5—3中MS15—MS13对应于微指令中的F1,经锁存译码后产生6个输出信号:LRi、LDR1、LDR2、LDIR、LOAD、LAR。其中LDR1、LDR2为运算器的两个锁存控制(见实验一);LDIR为指令寄存器的锁存控制(见系统介绍中指令寄存器电路);LRi为寄存器堆的写控制,它与指令寄存器的第0位和第1位共同决定对哪个寄存器进行写操作(见系统介绍中寄存器堆电路和图5-4);LOAD为程序计数器的置数控制,LAR为地址寄存

计算机组成原理实验指导书 - 49 -

器的锁存控制(见系统介绍中程序计数器和地址寄存器电路)。以上6个输出信号均为‘1’有效。

图5—3中MS12—MS10对应于微指令中的F2,经锁存译码后产生6个输出信号:RAG、RBG、RCG、299-G、ALU-G、PC-G。其中RAG、RBG、RCG分别为寄存器Ax、Bx、Cx的输出控制(见系统介绍中寄存器堆电路);299-G为移位寄存器的输出控制(见实验二);ALU-G为运算器的输出控制(见实验一);PC-G为程序计数器的输出控制(见系统介绍中程序计数器和地址寄存器电路)。以上信号均为‘0’有效。

图5—3中MS9—MS9对应于微指令中的F3,经锁存译码后产生6个输出信号:P1、P2、P3、P4、AR、LPC。其中P1、P2、P3、P4位测试字,其功能是对机器指令进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支和循环运行(见实验4的图4-1(b)和图5-4);AR为运算器的进位输出控制(见实验一);LPC为程序计数器的时钟控制(见系统介绍中程序计数器电路)。以上信号均为‘1’有效

图5-4 指令译码器电路

计算机组成原理实验指导书 - 50 -

微指令中的uA5-uA0为6位的后续微地址(见实验4的微地址形成电路图4-1(b))。 F1、F2、F3三个字段的编码方案如表5-1:

F1字段 15 14 13 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 选择 LDRi LOAD LDR2 自定义 LDR1 LAR LDIR 无操作 F2字段 12 11 10 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 选择 RAG ALU-G RCG 自定义 RBG PC-G 299-G 无操作 F3字段 9 8 7 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 选择 P1 AR P3 自定义 P2 LPC P 4 无操作 表5-1

五、实验内容:

编写几条可以连续运行的微代码,熟悉本实验系统的微代码设计方式。表5-2为几条简单的可以连续运行的二进制微代码表:

注意UA5-------UA0的编码规律,观察后续地址。 微地址(二进制) 000000 000001 000010 000011 000100 001000 001001 010000 010101 011000 011001 S3 S2 S1 S0 M CN WE 1A 1B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 F1 000 000 000 101 010 000 101 101 111 111 111 F2 000 000 000 111 111 111 101 101 001 001 111 F3 UA5...UA0 000 000001 000 000010 000 000011 111 000100 111 001000 000 001001 101 010000 101 010101 111 011000 111 011001 000 000000 表5-2 实验五微代码表 以下举例说明微代码的含义:

1、 微地址“000011”:读Y1设备上的数据,并将该数据打入地址寄存器。然后跳转

至微地址“000100”。

2、 微地址“000100”:读Y1设备上的数据,并将该数据打入运算暂存器2,然后跳转

至微地址“001000”。

3、 微地址“011000”:运算暂存器1数据输出至数据总线,将该数据写入Y1设备,

然后跳转至微地址“011001”。

计算机组成原理实验指导书 - 51 -

4、 微地址“011001”:读Y1设备上的数据,然后进行P1测试。由于未对指令寄存器

操作,I7—I0均为0,强制置位无效,仍跳转至后续微地址“000000”。 六、实验步骤:

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

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

实验连线图如图5-5所示。

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

图5—5 实验五键盘实验连线图

2.写微代码:

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

(2) 监控显示为【CtL1=_】,表示对微代码进行操作。输入1显示【CtL1_1】,表示写微代码,按【确认】。

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

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

计算机组成原理实验指导书 - 52 -

微地址(二进制) 000000 000001 000010 000011 000100 001000 001001 010000 010101 011000 011001 微代码(十六进制) 000001 000002 000003 015FC4 012FC8 018E09 005B50 005B55 06F3D8 FF73D9 017E00 表5-3 实验五微代码表

3.读微代码:

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

(2) 按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】键,显示【ES05】。按【确认】键。

(3) 监控显示【CtL1=_】时,输入2,按【确认】显示【U_Addr】 ,此时输入6位二进制微地址,进入读微代码状态。再按【确认】显示【PULSE】,此时按【单步】键,监控显示【U_Addr】,微地址指示灯显示输入的微地址,微代码显示电路上显示该地址对应的微代码,至此完成一条微指令的读过程。对照表5-3表检查微代码是否有错误,如有错误,可按步骤2写微代码重新输入这条微代码。 4.微代码的运行:

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

(2) 按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】键,显示【ES05】。按【确认】键。

(3) 监控指示灯显示【CtL1=_】,输入3,显示【CtL1_3】,表示进入运行微代码状态,拨动CLR清零开关(在控制开关电路上,注意对应的JUI应短接)对程序计数器清零,清零结果是地址指示灯(A7—A0)和微地址显示灯(uA5—uA0)全灭,清零步骤是使其电平高-低-高即CLR指示灯状态为亮-灭-亮,使程序入口地址为000000。

计算机组成原理实验指导书 - 53 -

1)、单步运行

在监控指示灯显示【CtL1_3】状态下,确认清零后,按【确认】键,监控指示灯滚动显示【Run CodE】,此时可按【单步】键单步运行微代码,观察微地址显示灯,显示 “000001”,再按【单步】,显示为“000010”,连续按【单步】,则可单步运行微代码,注意观察微地址显示灯和微代码的对应关系。 2)、全速运行

在控指示灯滚动显示【Run CodE】状态下,按【全速】键,开始自动运行微代码,微地址显示灯显示从“000000”开始,到“000001”、“000010”、“000011”、“000100”、“001000”、“001001”、“010000”、“010101”、“011000”、“011001”再到“000000”,循环显示。

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

本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。 为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。

1. 按图5-6接线图接线:

2.实验步骤:

1) 写微代码 (以写表5-3的微代码为例) :

首先将微程序控制电路上的开关K1K2K3拨到写入状态,即K1 off、K2 on、K3 off,然后将24位微代码输入及显示电路上的开关K4拨到on状态。置控制开关UA5 …… UA0=“000000”,输入微地址“000000”, 置24位微代码开关MS24---MS1为:“00000000 00000000 00000001”,输入24位二进制微代码,按【单步】,红色微地址灯显示“000 000”,写入微代码。保持K1K2K3K4状态不

计算机组成原理实验指导书 - 54 -

变,写入表4-1的所有微代码。

2) 读微代码并验证结果:

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

将微程序控制电路上的开关K1K2K3拨到运行状态,即K1 on、K2 off、K3 on,然后将24位微代码输入及显示电路上的开关K4拨到off状态。拨动控制开关电路上的清零开关CLR,使微地址和地址指示灯全灭。置控制开关“UA5------UA0=“000 000”,程序运行入口地址为000000,按【单步】,运行微代码,观察黄色微地址显示灯,显示 “000001”,再按【单步】,显示为“000010”,连续按【单步】,则可单步运行微代码,注意观察微地址显示灯和微代码的对应关系,微地址显示灯显示从“000000”开始,到“000001”、“000010”、“000011”、“000100”、“001000”、“001001”、“010000”、“010101”、“011000”、“011001”再到“000000”,循环显示。

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

Top