第一部分 微控制器实验
1、掌握时序信号发生电路组成原理。
2、掌握微程序控制器的设计思想和组成原理。
3、通过微程序的编制、写入,观察微程序的运行。
1、实验原理
实验所用的时序电路原理如图1.1所示,可产生4个等间隔的时序信号TS1~TS4,其中SP为时钟信号,由实验机上时钟源提供,可产生频率及脉宽可调的方波信号。学生可根据实验要求自行选择方波信号的频率及脉宽。为了便于控制程序的运行,时序电路发生器设计了一个启停控制触发器UN1B,使TS1~TS4信号输出可控。图中“运行方式”、“运行控制”、“启动运行”三个信号分别是来自实验机上三个开关。当“运行控制”开关置为“运行”,“运行方式”开关置为“连续”时,一旦按下“启动运行”开关,运行触发器UN1B的输出QT一直处于“1”状态,因此时序信号TS1~TS4将周而复始地发送出去;当“运行控制”开关置为“运行”,“运行方式”开关置为“单步”时,一旦按下“启动运行”开关,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。利用单步方式,每次只运行一条微指令,停机后可以观察微指令的代码和当前微指令的执行结果。另外,当实验机连续运行时,如果“运行方式”开关置“单步”位置,也会使实验机停机。
2、微程序控制电路与微指令格式
(1)微程序控制电路
微程序控制器的组成如图1.2所示,其中控制存储器采用3片E2PROM 2816芯片,具有掉电保护功能,微命令寄存器18位,用两片8D触发器74LS273(U23、U24)和一片4D触发器74LS175(U27)组成。微地址寄存器6位,用三片正沿触发的双D触发器74LS74(U14~U16)组成,它们带有清“0”端和预置端。在不进行判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成地址修改。
在本实验电路中设有一个编程开关,它具有三种状态:写入、读出、运行。当处于“写”状态时,学生可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。当处于“读”时,可以对写入控制存储器中的二进制代码进行验证,从而可判断写入的二进制代码是否正确。当处于“运行”状态时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。图中微地址寄存器输出端增加了一组三态门(U12),目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。
(2)微指令格式
微指令长共24位,其控制位顺序如表1.1所示。
表1.1 微指令控制位顺序
24
23
22
21
20
19
18
17
16
15 14 13
12 11 10
9 8 7
6
5
4
3
2
1
S3
S2
S1
S0
M
CN
WE
B1
B0
A
B
C
UA5
UA4
UA3
UA2
UA1
UA0
A字段
15
14
13
选择
0
0
0
0
0
1
LDRi
0
1
0
LDDR1
0
1
1
LDDR2
1
0
0
LDIR
1
0
1
LOAD
1
1
0
LDAR
B字段
12
11
10
选择
0
0
0
0
0
1
RS-B
0
1
0
RD-B
0
1
1
RI-B
1
0
0
299-B
1
0
1
ALU-B
1
1
0
PC-B
C字段
9
8
7
选择
测试字
0
0
0
关闭测试
0
0
1
P(1)
测指令的高4位
0
1
0
P(2)
0
1
1
P(3)
1
0
0
P(4)
SWC、SWA(3分支)
1
0
1
AR
1
1
0
LDPC
将总线数据写入PC
注意:A字段举例:LDIR:将总线数据写入指令寄存器;(100)
B字段总线数据来源: ALU-B指总线数据来源于ALU的输出;(101)
C字段举例:LDPC指将总线数据写入PC;
P(1) 举例:P测试第一字节的高4位。实际有效地址为E=基地址∨第一字节的高4位 例:UA5~UA0为08,第一字节20H( 00010000),E=08∨01=09 。
其中UA5~UA0为6位的后续微地址,A、B、C 三个译码字段,分别由三组译码控制电路译码产生各控制信号。C字段中的P(1)~P(4)是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图1.3所示,图1.3中I7~I2为指令寄存器的第7~2位输出,SE5~SE1为微控器单元微地址锁存器的强置端输出。AR为算术运算是否影响进位及判零标志控制位,低电平有效。B字段中的RS-B、RD-B、RI-B分别为源寄存器选通信号、目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码,其原理如图7.4所示,图1.4中I0-I4为指令寄存器的第0~4位,LDRI为 打入工作寄存器信号的译码器使能控制位。
(3)机器指令的微程序设计
设计如下五条机器指令:
- 外设输入指令:IN
- 二进制加法指令:ADD [ADDR]
- 存数指令: STA [ADDR]
- 输出到外设指令:OUT [ADDR]
- 无条件转移指令:JMP [ADDR]
根据机器指令画出对应的微程序流程图,如图1.5所示。
图1.5 微程序流程图
② 根据微程序流程图设计微指令,并按微指令格式转换成二进制代码,如表1.2所示。
表1.2 二进制微代码表 |
3、实验预习
进一步了解微程序控制器的工作原理
①写微程序
A. "编程开关"置为" 写入 "状态。
B. "运行控制"开关置为" 运行 ","运行方式"开关置为" 单步 "状态。
C. 用二进制模拟开关UA0~UA5置6位微地址,UA0~UA5的电平由LK0~LK5显示,高电平亮,低电平灭。
D. 用二进制模拟开关MK1~MK24置24位微代码,24位微代码由LMD1~LMD24显示灯显示,高电平亮,低电平灭。
E. 按动" 启动运行 "开关,启动时序电路,即可将微代码写入到E2PROM 2816的相应地址单元中。
F. 重复C-E步骤,将微代码全部写入E2PROM2816中。
②读微程序
A. 将"编程开关"设置为" 读 "状态。
B. "运行控制"开关置为" 运行 ","运行方式"开关置为" 单步 "状态。
C. 用二进制模拟开关UA0~UA5置6位微地址。
D. 按动" 启动运行 "开关,启动时序电路,读出微代码,观察显示灯LMD1~LMD24的状态,检查读出的微代码是否与写入的相同,如果不同,则将"编程开关"置为" 写入 "状态。重新执行①即可。
③单步运行
A. "编程开关"置于" 运行 "状态。
B. "运行控制"开关置为" 运行 ","运行方式"开关置为" 单步 "状态。
C. 系统总清,即"总清"开关拨0→1。使微地址寄存器U14~U16清零,从而明确本机的运行入口微地址为000000(二进制)。
D. 按动" 启动运行 "开关,启动时序电路,则每按动一次,读出一条微指令后停机,此时实验机上的微地址显示灯和微程序显示灯将显示所读出的一条指令。
④连续运行
A. 将"编程开关"置为" 运行 "状态。
B. "运行控制"开关置为" 运行 "状态,"运行方式"开关置为" 连续 "状态。
C. 系统总清,即"总清"开关拨0→1。使微地址寄存器U14~U16清零,从而明确本机的运行入口微地址为000000(二进制)。
D. 按动" 启动运行 "开关,启动时序电路,则可连续读出微指令。
4、实验步骤
① 实验接线
- J20,J21,J22,ZI2接上短路片;
- JJ23,J24,J25,J26接左边;
- J27,J28 右边;
- J29不接;
- JA1,JA2,JA3,JA4置“高阻”;
- JA5置“接通”;
- JA8置“微程序”;
- JA6 置“微控”。
② 仔细查线无误后接通电源
③ 写微程序
A.“编程开关”置为“写入”状态。
B.“运行控制”开关置为“运行”,“运行方式”开关置为“单步”状态。
C.用二进制模拟开关UA0~UA5置6位微地址,UA0~UA5的电平由LK0~LK5显示,高电平点亮,低电平熄灭。
D.用二进制模拟开关MK1~MK24置24位微代码,24位微代码由LMD1~LMD24显示灯显示,高电平亮,低电平灭。
E.按动“启动运行” 开关,启动时序电路,即可将微代码写入到E2PROM 2816的相应地址单元中。
F.重复C-E步骤,将表7.2的微代码全部写入E2PROM 2816中。
④ 读微程序
A. 将“编程开关”设置为“读”状态。
B. “运行控制”开关置为“运行”,“运行方式”开关置为“单步”状态。
C. 用二进制模拟开关UA0~UA5置6位微地址。
D. 按动“启动运行” 开关,启动时序电路,读出微代码,观察显示灯LMD1~LMD24的状态,检查读出的微代码是否与写入的相同,如果不同,则将“编程开关”置为“写入”状态。重新执行写微程序即可。
⑤ 单步运行
A.“编程开关”置于“运行”状态。
B.“运行控制”开关置为“运行”,“运行方式”开关置为“单步”状态。
C. 系统总清,即“总清”开关拨0→1。使微地址寄存器U14~U16清零,从而明确本机的运行入口微地址为000000(二进制)。
D.按动“启动运行”开关,启动时序电路,则每按动一次,读出一条微指令后停机,此时实验机上的微地址显示灯和微程序显示灯将显示所读出的一条指令。
⑥ 连续运行
A.将“编程开关”置为“运行”状态。
B.“运行控制”开关置为“运行”,“运行方式”开关置为“连续”状态。
C.系统总清,即“总清”开关拨0→1。使微地址寄存器U14~U16清零,从而明确本机的运行入口微地址为000000(二进制)。
D.按动“启动运行”开关,启动时序电路,则可连续读出微指令。
三、实验电路图
图1. 1 时序电路图
图1. 2 微程序控制器组成图
图1.3 逻辑译码电路
图1.4 逻辑译码电路
四、实验数据记录
根据微程序流程图设计微指令,并按微指令格式转换成二进制代码。将设计的微令代码填入表1.3:
表1.3
微操作
区号
0区域
1区域
2区域
微指令代码十六进制
控制信号
S3
S2
S1
S0
M
Cn
WE
B1
B0
A
B
C
uA5
uA4
uA3
uA2
uA1
uA0
功能
运算器功能选择
运算器逻辑选择
运算器进位选择
存储器的写线
外设选择控制信号。00:SWB
01:RAM
10:LED
各寄存器的写允许控制信号
100:LDIR
指令寄存器写允许
总线数据来源
101:ALU-B
总线数据来源于ALU的输出
测试位
下一条微指令的地址(后续微地址),要配合测试位来确定后续微地址
地址
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0区
1区
2区
空指令
00
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
05
81
10
PC—AR PC+1
01
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
0
0
0
1
0
05
ED
82
RAM—BUS BUS—IR
02
0
0
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
04
C0
48
RAM—BUS BUS—AR
03
0
0
0
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
1
0
0
04
E0
04
RAM—BUS BUS—DR2
04
0
0
0
0
0
1
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
1
0
1
04
B0
05
R0—DR1
05
0
0
0
0
0
1
0
1
1
0
1
0
0
0
1
0
0
0
0
0
0
1
1
0
05
A2
06
(DR1)+(DR2)—R0
06
1
0
0
1
0
1
0
1
1
0
0
1
1
0
1
0
0
0
0
0
0
0
0
1
95
9A
01
RAM—BUS BUS—AR
07
0
0
0
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
1
1
0
1
04
E0
0D
SWB—R0
08
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
04
10
01
PC—AR PC+1
09
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
0
0
0
1
1
05
ED
83
PC—AR PC+1
0A
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
0
0
1
1
1
05
ED
87
PC—AR PC+1
0B
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
0
1
1
1
0
05
ED
8E
微操作
区号
0区域
1区域
2区域
微指令代码十六进制
控制信号
S3
S2
S1
S0
M
Cn
WE
B1
B0
A
B
C
uA5
uA4
uA3
uA2
uA1
uA0
功能
运算器功能选择
运算器逻辑选择
运算器进位选择
存储器的写线
外设选择控制信号。00:SWB
01:RAM
10:LED
各寄存器的写允许控制信号
100:LDIR
指令寄存器写允许
总线数据来源
101:ALU-B
总线数据来源于ALU的输出
测试位
微指令后续地址(基地址),要配合测试位来确定后续微地址
地址
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0区
1区
2区
PC—AR PC+1
0C
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
1
0
1
1
0
05
ED
96
RAM—BUS BUS—RAM
0D
0
0
0
0
0
1
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
0
1
06
82
01
RAM—BUS BUS—AR
0E
0
0
0
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
0
1
1
1
1
04
E0
0F
RAM—BUS BUS—DR1
0F
0
0
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
1
0
1
04
A0
15
PC—AR PC+1
10
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
1
0
0
1
0
05
ED
92
PC—AR PC+1
11
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
1
0
0
1
0
1
0
0
05
ED
94
RAM—BUS BUS—DR1
12
0
0
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
1
1
1
04
A0
17
空指令
13
0
0
0
0
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
05
80
01
SWB—DR1
14
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
04
20
18
DR1—LED
15
0
0
0
0
0
1
1
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
1
07
0A
01
RAM—BUS BUS—PC
16
0
0
0
0
0
1
0
0
1
1
0
1
0
0
0
1
1
0
0
0
0
0
0
1
04
D1
81
ALU-B—LED
17
0
0
0
0
0
1
1
1
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
0
07
0A
10
ALU-B—RAM
18
0
0
0
0
0
1
1
0
1
0
0
0
1
0
1
0
0
0
0
1
0
0
0
1
06
8A
11
五、根据图1.2的微程序控制器组成图,分析其工作原理。
由图1.2的微程序控制器组成图可以分析出微程序控制器组成中的核心成分是控制存储器(CM),由ROM器件实现,用于存储按一定规则组织好的全部的控制信号。 微程序控制器的工作原理是依据读来的机器指令的操作码找到与之对应的一段微程序的入口地址,并按由指令具体功能所确定的次序,逐条从控制存储器中读出微指令,以“驱动”计算机各功能部件正确运行。
六、给出读写微程序过程和验证结果。
写微程序
A.“编程开关”置为“写入”状态。
B.“运行控制”开关置为“运行”,“运行方式”开关置为“单步”状态。
C.用二进制模拟开关UA0~UA5置6位微地址,UA0~UA5的电平由LK0~LK5显示,高电平点亮,低电平熄灭。
D.用二进制模拟开关MK1~MK24置24位微代码,24位微代码由LMD1~LMD24显示灯显示,高电平亮,低电平灭。
E.按动“启动运行” 开关,启动时序电路,即可将微代码写入到E2PROM 2816的相应地址单元中。
F.重复C-E步骤,将表7.2的微代码全部写入E2PROM 2816中。
读微程序
A. 将“编程开关”设置为“读”状态。
B. “运行控制”开关置为“运行”,“运行方式”开关置为“单步”状态。
C. 用二进制模拟开关UA0~UA5置6位微地址。
D. 按动“启动运行” 开关,启动时序电路,读出微代码,观察显示灯LMD1~LMD24的状态,检查读出的微代码是否与写入的相同,如果不同,则将“编程开关”置为“写入”状态。重新执行写微程序即可。
七、实验总结
通过本次实验我了解了时序信号发生电路组成原理并且掌握微程序控制器的设计思想和组成原理。本次实验主要是通过微程序的编制、写入,观察微程序的运行。可以设定状态为单步或者连续两种状态进行观察,尤其注意写微程序之后记得及时读微程序,避免影响后续微程序的写入。在写完微程序之后可以通过连续运行观察微程序状态。
八、思考题
1、根据实验中所设计的微指令格式,指出哪几位是操作控制字段和顺序控制字段?微指令采用的是什么编码方式和什么后继地址形成方法?
答:操作控制字段:S3、S2、S1、S0、M、Cn即19、20、21、22、23、24.顺序控制C字段,即7、8、9 。
编码方式:直接编码。
后继地址:指令的操作码和位指令的下地址字段。
2、根据微程序流程图,写出这5条机器指令实现的功能。
答:IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
3、分析加法指令的微程序。
答:Ad(IR)->MAR,1->R
Ad(CMDR)->CMAR
M(MAR)->MDR
Ad(CMDR)->CMAR
(AC)+(MDR)->AC
Ad(CMDR)->CMAR
4、根据微指令格式设计一段减法指令SUB [ADDR] 的微程序,减法指令的功能是
R0 — [ADDR] → R0
答:减法微程序:019A65。