实验五 微程序设计实验
一、实验目的:
深入学懂计算机各种指令的设计和执行过程,掌握微程序设计的概念。 二、预习要求:
1.复习微程序控制器工作原理;
2.复习计算机各种指令和微程序的有关知识。 三、实验设备:
EL-JY-II型计算机组成原理实验系统一台,连接线若干。 四、微程序的设计: 1.微指令格式
设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。
微指令的最基本成份是控制场,其次是下地址场。控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。 1)最短编码格式
这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。 2)全水平编码格式
这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。若控制场长n位,则至多可表示n个不同的微操作命令。
采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。
3)分段编码格式是将控制场分成几段。若某段长i位,则经译码,该段可表示2i 个互斥的即不能同时有效的微操作命令。
采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。 2.微程序顺序控制方式的设计
微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。下面是常见的两种。
1)计数增量方式
这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。MPC的初值由微程序首址形成线路根据指令操作码编码形成。在微程序执行过程中该计数器增量计数,产生下一条微指令地址。这使得微指令格式中可以不设置“下地址场”。缩短了微指令长度,也使微程序控制部件结构较简单。但微程序必须存放在控存若干连续单元中。
微操作控制信号
加1
图5-1 计数增量方式微程序控制部件示意图 2)断定方式
微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在控存中不一定要连续存放。在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成线路根据指令操作码产生。见图5-2。 3.本系统的微指令格式
微程序设计的关键技术之一是处理好每条微指令的下地址,以保证程序正确高效地进行。在本系统中,uA5-uA0为6位的后续微地址,F1、F2、F3为三个译码字段,分别
由三个控制位译码出多位。F3字段中的P1- P4是四个测试字位。其功能是根据机器指令 微操作控制信号
状态条件
指令操作码
图5-2 断定方式微程序控制部件示意图
及相应微代码进行译码,使微程序转入相应的微地址入囗,从而实现微程序的顺序、分支、循环运行。
表5-1
F2字段中的RAG、RBG、RCG分别为源寄存器选通信号、目的寄存器选通信号
及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1、R2的选通译码,LRi打入工作寄存器的信号译码使能控制位。
五、实验内容:
编写几条可以连续运行的微代码,熟悉本实验系统的微代码设计方式。表5-2为几条简单的可以连续运行的二进制微代码表:
表5-2 实验五微代码表 六、实验步骤:
Ⅰ、单片机键盘操作方式实验
在进行单片机键盘控制实验时,必须把K4开关置于“OFF”状态,否则系统处于自锁状态,无法进行实验。 1.实验连线:
实验连线图如图5-3所示。
连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
2.写微代码:
将开关K1K2K3K4拨到写状态即K1 off、K2 on、K3 off、K4 off,其中K1、K2、K3在微程序控制电路,K4在24位微代码输入及显示电路上。在监控指示灯滚动显示【CLASS SELECt】状态下按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】
键,显示为【ES05】,表示准备进入实验五程序,也可按【取消】键来取消上一步操作,重新输入。再按下【确认】键,显示为【CtL1=_】,表示对微代码进行操作。输入1显示【CtL1_1】,表示写微代码,也可按【取消】键来取消上一步操作,重新输入。按【确认】显示【U-Addr】,此时输入【000000】6位二进制数表示的微地址,然后按【确认】键,也可按【取消】键来取消上一步操作,重新输入,微地址显示灯(六个黄色指示灯,二位八进制)全灭,显示刚才输入的微地址,也可按【取消】键来取消上一步操作,重新输入。同时监控指示灯显示【U_CodE】,显示这时输入微代码【000001】,该微代码是用6位十六进制数来表示前面的24位二进制数,注意输入微代码的顺序,先右后左,此过程中可按【取消】键来取消上一次输入,重新输入。按【确认】键则显示【PULSE】,按【单步】完成一条微代码的输入,重新显示【U-Addr】提示输入表5-3第二条微代码地址。
按照上面的方法输入表5-3微代码,观察微代码与微地址显示灯的对应关系(注意输入微代码的顺序是由右至左)。
表5-3 实验五微代码表
3.读微代码及校验微代码:
先将开关K1K2K3K4拨到读状态即K1 off、K2 off、K3 on、K4 off,在监控指示灯显示【U_Addr】状态下连续按两次【取消】键,退回监控指示灯显示【ES06】状态,也可按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态,按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】键,显示【ES05】。按【确认】键,显示【CtL1=_】时,输入2,按【确认】显示【U_Addr】 ,此时输入6位二进
制微地址,进入读微代码状态。再按【确认】显示【PULSE】,此时按【PULSE】键,显示【U_Addr】,微地址指示灯显示输入的微地址,微代码显示电路上显示该地址对应的微代码,至此完成一条微指令的读过程。对照表5-3表检查微代码是否有错误,如有错误,可按步骤2写微代码重新输入这条微代码的微地址及微代码。 4.微代码的运行:
在监控指示灯显示【CtL1=_】状态下,输入3,显示【CtL1_3】,表示进入运行微代码状态,拨动CLR清零开关(在控制开关电路上,注意对应的JUI应短接)对程序计数器清零,清零结果是地址指示灯(8个黄色指示灯,在地址寄存器电路上)和微地址显示灯(六个黄色指示灯,在微程序控制器电路上)全灭,清零步骤是使其电平高-低-高即CLR指示灯状态为亮-灭-亮,使程序入口地址为00H。
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-4接线图接线:
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状态不变,写入表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”,程序运行入口地址位
00H
(十六进制),按【单步】,运行微代码,观察黄色微地址显示灯,显示 “000001”,再按【单步】,显示为“000010”,连续按【单步】,则可单步运行微代码,注意观察微地址显示灯和微代码的对应关系,微地址显示灯显示从“000000”开始,到“000001”、“000010”、“000011”、“000100”、“001000”、“001001”、“010000”、“010101”、“011000”、“011001”再到“000000”,循环显示。
实验五 微程序设计实验
一、实验目的:
深入学懂计算机各种指令的设计和执行过程,掌握微程序设计的概念。 二、预习要求:
1.复习微程序控制器工作原理;
2.复习计算机各种指令和微程序的有关知识。 三、实验设备:
EL-JY-II型计算机组成原理实验系统一台,连接线若干。 四、微程序的设计: 1.微指令格式
设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。
微指令的最基本成份是控制场,其次是下地址场。控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。 1)最短编码格式
这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。 2)全水平编码格式
这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。若控制场长n位,则至多可表示n个不同的微操作命令。
采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。
3)分段编码格式是将控制场分成几段。若某段长i位,则经译码,该段可表示2i 个互斥的即不能同时有效的微操作命令。
采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。 2.微程序顺序控制方式的设计
微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。下面是常见的两种。
1)计数增量方式
这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。MPC的初值由微程序首址形成线路根据指令操作码编码形成。在微程序执行过程中该计数器增量计数,产生下一条微指令地址。这使得微指令格式中可以不设置“下地址场”。缩短了微指令长度,也使微程序控制部件结构较简单。但微程序必须存放在控存若干连续单元中。
微操作控制信号
加1
图5-1 计数增量方式微程序控制部件示意图 2)断定方式
微指令中设有“下地址场”,它指出下条微指令的地址,这使一条指令的微程序中的微指令在控存中不一定要连续存放。在微程序执行过程中,微程序控制部件中的微地址形成电路直接接受微指令下地址场信息来产生下条微指令地址,微程序的首址也由此微地址形成线路根据指令操作码产生。见图5-2。 3.本系统的微指令格式
微程序设计的关键技术之一是处理好每条微指令的下地址,以保证程序正确高效地进行。在本系统中,uA5-uA0为6位的后续微地址,F1、F2、F3为三个译码字段,分别
由三个控制位译码出多位。F3字段中的P1- P4是四个测试字位。其功能是根据机器指令 微操作控制信号
状态条件
指令操作码
图5-2 断定方式微程序控制部件示意图
及相应微代码进行译码,使微程序转入相应的微地址入囗,从而实现微程序的顺序、分支、循环运行。
表5-1
F2字段中的RAG、RBG、RCG分别为源寄存器选通信号、目的寄存器选通信号
及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1、R2的选通译码,LRi打入工作寄存器的信号译码使能控制位。
五、实验内容:
编写几条可以连续运行的微代码,熟悉本实验系统的微代码设计方式。表5-2为几条简单的可以连续运行的二进制微代码表:
表5-2 实验五微代码表 六、实验步骤:
Ⅰ、单片机键盘操作方式实验
在进行单片机键盘控制实验时,必须把K4开关置于“OFF”状态,否则系统处于自锁状态,无法进行实验。 1.实验连线:
实验连线图如图5-3所示。
连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。
2.写微代码:
将开关K1K2K3K4拨到写状态即K1 off、K2 on、K3 off、K4 off,其中K1、K2、K3在微程序控制电路,K4在24位微代码输入及显示电路上。在监控指示灯滚动显示【CLASS SELECt】状态下按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】
键,显示为【ES05】,表示准备进入实验五程序,也可按【取消】键来取消上一步操作,重新输入。再按下【确认】键,显示为【CtL1=_】,表示对微代码进行操作。输入1显示【CtL1_1】,表示写微代码,也可按【取消】键来取消上一步操作,重新输入。按【确认】显示【U-Addr】,此时输入【000000】6位二进制数表示的微地址,然后按【确认】键,也可按【取消】键来取消上一步操作,重新输入,微地址显示灯(六个黄色指示灯,二位八进制)全灭,显示刚才输入的微地址,也可按【取消】键来取消上一步操作,重新输入。同时监控指示灯显示【U_CodE】,显示这时输入微代码【000001】,该微代码是用6位十六进制数来表示前面的24位二进制数,注意输入微代码的顺序,先右后左,此过程中可按【取消】键来取消上一次输入,重新输入。按【确认】键则显示【PULSE】,按【单步】完成一条微代码的输入,重新显示【U-Addr】提示输入表5-3第二条微代码地址。
按照上面的方法输入表5-3微代码,观察微代码与微地址显示灯的对应关系(注意输入微代码的顺序是由右至左)。
表5-3 实验五微代码表
3.读微代码及校验微代码:
先将开关K1K2K3K4拨到读状态即K1 off、K2 off、K3 on、K4 off,在监控指示灯显示【U_Addr】状态下连续按两次【取消】键,退回监控指示灯显示【ES06】状态,也可按【RESET】按钮对单片机复位,使监控指示灯滚动显示【CLASS SELECt】状态,按【实验选择】键,显示【ES--_ _ 】输入05或5,按【确认】键,显示【ES05】。按【确认】键,显示【CtL1=_】时,输入2,按【确认】显示【U_Addr】 ,此时输入6位二进
制微地址,进入读微代码状态。再按【确认】显示【PULSE】,此时按【PULSE】键,显示【U_Addr】,微地址指示灯显示输入的微地址,微代码显示电路上显示该地址对应的微代码,至此完成一条微指令的读过程。对照表5-3表检查微代码是否有错误,如有错误,可按步骤2写微代码重新输入这条微代码的微地址及微代码。 4.微代码的运行:
在监控指示灯显示【CtL1=_】状态下,输入3,显示【CtL1_3】,表示进入运行微代码状态,拨动CLR清零开关(在控制开关电路上,注意对应的JUI应短接)对程序计数器清零,清零结果是地址指示灯(8个黄色指示灯,在地址寄存器电路上)和微地址显示灯(六个黄色指示灯,在微程序控制器电路上)全灭,清零步骤是使其电平高-低-高即CLR指示灯状态为亮-灭-亮,使程序入口地址为00H。
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-4接线图接线:
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状态不变,写入表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”,程序运行入口地址位
00H
(十六进制),按【单步】,运行微代码,观察黄色微地址显示灯,显示 “000001”,再按【单步】,显示为“000010”,连续按【单步】,则可单步运行微代码,注意观察微地址显示灯和微代码的对应关系,微地址显示灯显示从“000000”开始,到“000001”、“000010”、“000011”、“000100”、“001000”、“001001”、“010000”、“010101”、“011000”、“011001”再到“000000”,循环显示。