实验六 基本模型机实验
1. 2. 3. 4.
[***********]
D R i D R 1D R 2D R I R D A D D A R
S -B D -B J -B 99-B L U -B C -B
三、 实验原理
二、 实验设备
一、 实验目的
C (1)C (2)C (3)C (4)
R D P C
E 1E 2E 3E 4E 5E 6
掌握微程序执顺序强制改变的原理 掌握机器指令与微程序的对应关系。 掌握机器指令的执行流程。
掌握机器指令的微程序的编制、写入。
TDN -CM +计算机组成原理教学实验系统。
实验六基本模型机实验
图1:微控器原理图
部件实验过程中,各部件单元的控制信号是人为模拟产生的,如运算器实验中对74LS -181芯片的控制,存储器实验中对存储器芯片的控制信号,以及几个实验中对输入设备的控制。而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU 从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一段微程序。
1. 微程序执行顺序强制改变原理
如图2 所示,后继地址是由6片正沿触发的双D 触发器(74)构成,它们带有清“0”和置“1”端,可以让CLR 有效(低电平)使MA0~MA5置0,也可以让SE1~SE5有效(低电平),使对应的触发器置1。在微程序的运行过程中,在T2时刻,将当前运行的微指令中的µA5~µA0置入对应的触发器中,作为下条执行微指令的地址,如果在T2后的T4时刻,可能会使SE1~SE5中的某一位或者几位有效,将强制的置对应触发器为“1”,从而改变由µA5~µA0指定的微地址,改变微程序执行流程。
后继微地址输出
SE1SE2SE3SE4SE5SE6
图2:后继地址逻辑图 注:
CLR :清零信号 T2:时钟信号
µA5~µA0:对应微指令中µA5~µA0
2. 机器指令与微程序的对应关系
每条机器指令由多条微指令按一定的顺序完成,如MOV 指令(从存储器到存储器)需要6条微指令的执行才能完成,其执行流程为:
将完成某条机器指令的这些微指令的第一条指令放置在微控器的存储器的固定位置,通过对机器指令的编码,当读到某条机器指令后,能将微程序的执行流程转入该指令对应的微
程序位置。如有某机器指令对应的微程序如下安排:
若微控器读到该指令后,能使微程序的后继地址转向“00”,即可实现机器指令与微程序的对应。
微控器读取一条机器指令后,将通过如下的逻辑电路,对SE1~SE5中的某一位或者几位激活,从而实现机器指令与微程序的对应。当然,该逻辑电路还能接收外部控制输入SW A 、SWB ,内部状态输出FC 、FZ 等信号,并对这些信号给出相应的输出。
FC FZ T4SWA SWB
图3
注:
FC :进位标志 FZ :0标志
SWA 、SWB 存储器读写控制标志
P (1)~P (4):微指令C 字段译码输出结果 I2~I7:机器指令第2位~第7位。
根据该逻辑电路图,得SE1~SE5的逻辑表达式如下: SE 5=(FC +FZ ) ∙T 4∙p (3) =(FC +FZ ) +T 4+P (3) (1)
SE 4=I 7∙T 4∙P (1) =I 7+T 4+P (1) (2)
SE 3=I 6∙T 4∙P (1) =I 6+T 4+P (1) (3)
SE 2=(I 5∙T 4∙P (1) ) +(I 3∙T 4∙P (2) ) +(SWB ∙T 4∙P (4)) =(I 5+T 4+P (1)) ∙(I 3+T 4+p (2)) ∙(SW B +T 4+P (4)) (4)
SE 1=(I 4∙T 4∙P (1) +(I 2∙T 4∙P (2) ) +(SWA ∙T 4∙P (4)) =(I 4+T 4+P (1)) ∙(I 2+T 4+P (2)) ∙(SW A +T 4+P (4)) (5)
由这些逻辑表达式可知:
● 由于P (1)~P (4)微指令中C 字段译码后的部分输出,所以它们至多有一个有
效(低电平)。
● 当P (1)有效时,在T4时刻,可以通过对I4~I7置“1”,使对应的SE1~SE4有
效(低电平)。
● 当P (2)有效时,在T4时刻,可以通过对I2~I3置“1”,使对应的SE1~SE2有
效(低电平).
● 当P (3)有效时,在T4时刻,标志位FZ 或者FC 有效(高电平)使SE7有效(低
电平)。
● 当P (4)有效时,在T 时刻,外部输入控制信号SW A 或者SWB 有效(高电平),
使SE1~SE2有效(低电平)。
假如某微控器的微程序流程如下图所示,微程序微控器的00单元内容如表所示。
计算机启动后,微控器从微程序存储器的第一个单元(00)处读取微指令,该微指令中的C 字段值为“100”,该值的译码结果使P (4)有效,而µA5~µA0的值“0 1 0 0 0 0”。由逻辑表达式(4)、(5)以及上面的分析可知:
● 当SWA 有效,SWB 无效,对应的取值组合为(01),将使SE1的值有效,由图1
可知,SE1有效将使MA0的输出将变为“1”。而MA1~MA5的值为µA1~µA5的输入,所以微控器中下条执行的微指令地址为“0 1 0 0 0 1”(对应8进制为21),从而转入输入流程。
● 当SWA 无效,SWB 无效,对应的取值组合为(00),不会使SE1及SE2值有效,
由图1可知,MA0~MA5的值为µA0~µA5的输入,则下条执行的微指令地址为“0 1 0 0 0 0”(对应8进制为20),从而转入输出流程。 ● 当SW A 有效,SWB 有效,对应的取值组合为(11),会使SE1及SE2值都有效,
由图1可知,SE1有效将使MA0的输出将变为“1”,SE2有效将使MA1的输出将变为“1”,MA2~MA5的值为µA2~µA5的输入,则下条执行的微指令地址为“0 1 0 0 1 1”(对应8进制为23),从而转入执行机器指令流程。
图4
计算机启动后,微程序流程将按图4 所示流程运行,由上面分析可知,当SW A 、SWB
知将会产生“LDAR ”信号、“PC-B ”信号、“LDPC ”信号,由数据通路图可知,这3个信号将会选通PC 所指的存储器单元,同时将PC +1。同时该微指令的µA5~µA0的值为“0 0 0 0 1 0”,由图1和图2可知,下条微指令地址为“0 0 0 0 1 0”(02)
02单元中微指令中的A 字段的值为“100”,将产生LDIR 信号。WE 信号“0”,将会发出WR 信号。A9A8的值为“01”,将会使存储器的CE 有效。这几个信号的配合将会把PC 所指单元的机器指令读入机器指令寄存器IR 中。B 字段的值为“000”,不产生控制信号。C 字段的值分别为“001”,是P (1)有效。由逻辑表达式(2)~(5)可知,当P (1)有效时,机器指令中的I4~I7中的“1”将会对应的SE 有效。如图4所示,现设计STA 、ADD 、OUT 的机器指令为:
STA :0010 0000 ADD :0001 0000 OUT :0011 0000
当读取的机器指令为STA 时,由逻辑表达式(4)可知,将会使SE2有效。由图2可知,SE2将会使MA1输出1,其余的与微地址输入一致,所以产生的后继微地址为“0 0 1 010”(12),从而转向STA 指令对应的微程序。
当读取的机器指令为ADD 指令时,由逻辑表达式(5)可知,将会使SE1有效。由图2可知,SE1将会使MA0输出1,其余的与微地址输入一致,所以产生的后继微地址为“0 0 1 0 01”(11),从而转向ADD 指令对应的微程序。
当读取的机器指令为OUT 指令时,由逻辑表达式(4)、(5)可知,将会使SE1、SE2有效。由图2可知,SE1、SE2将会使MA0、MA1输出1,其余的与微地址输入一致,所以产生的后继微地址为“0 0 1 0 11”(13),从而转向OUT 指令对应的微程序。
图5
3. 寄存器控制信号的产生逻辑
在微控器内部设计了多个寄存器,用于存储运算的中间结果。对于这些寄存器的控制信号有两类,一类是寄存器的数据载入信号,另一类信号是寄存器的数据输出信号(输出到总线伤)。每个寄存器的这两类信号由图5所示的逻辑电路产生。
图中输入信号由两类构成,一类是有微指令的A 字段和B 字段产生的译码输出信号,LDRi 、RD -B ,RS -B 。一类是机器指令中的I0和I1。A 字段和B 字段产生的译码输出信号作为2-4译码器的门控信号,当这类信号有效时,2-4译码器才可能有有效信号的输出。当门控信号有效时,机器指令中的I0和I1的不同组合决定了2-4译码器的输出,具体对应关系为:
在这段微程序中的15单元中,存储的微指令的B 字段的值为“001”,该值使译码器输出“RS -B ”有效信号,而STA 机器指令的(I0,I1)值为(0,0),由上面分析可知,将会产生“R0-B ”信号,使R0中的数据输出到数据总线上。
图6
4. 其它控制信号
● 设备片选控制信号,由微指令中“A9 A8”字段的值通过译码产生,其具体对应关系
如下:
WE ”字段的值决定了
对存储器的读写操作。当“WE ”为0时,对存储器读,当“WE ”为1时,对存储器写。
四、 实验内容
本实验采用五条机器指令:IN (输入)、ADD (二进制加法)、STA (存数)、OUT (输出)、
根据实验要求,设计如图所示的数据通路图。
图7中包括运算器、存储器、微控器、输入设备、输出设备以及寄存器。这些部件的动作控制信号都有微控器根据微指令产生。需要特别说明的是由机器指令构成的程序存放在存储器中,而每条机器指令对应的微程序存储在微控器中的存储器中。
图7
根据机器指令的要求和数据通路图,设计各指令对应的微程序流程图如下:
图8
为了向RAM 中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作程序,流程图如下。
存储器读操作(KRD ):拨动总清开关CLR 后,控制台开关SWB 、SW A 为“0 0”时,按START 微动开关,可对RAM 连续手动读操作。
存储器写操作(KWE ):拨动总清开关CLR 后,控制台开关SWB 、SW A 为“0 1”时,按START 微动开关,可对RAM 连续手动写入。
启动程序:拨动总清开关CLR 后,控制台开关SWB 、SW A 为“1 1”时,按START
微动开关,即可转入到第01号“取指”微指令,启动程序运行。
图9
本实验设计机器指令程序如下:
五、 实验步骤
1. 按图10连接实验线路 2. 写入程序
1) 手动写入
A. 按如下步骤讲微代码写入微控器中的存储器2816中: ① 将编程开关置为PROM (编程)状态。
② 将实验板上“STA TE UNIT”中的“STEP ”置为“STEP ”,“STOP ”置为“RUN ”
状态。
③ 用二进制模拟开关置微地址MA5—MA0。
④ 在MK24-MK1开关上置微代码,24位开关对应24位显示灯,开关量置为“0”
时灯亮,开关量为“1”时灯灭。
⑤ 启动时序电路(按动启动按钮“START ”),即将微代码写入到2816的相应地址对
应的单元中。
⑥ 重复①-⑤步骤,将表?的微代码写入2816中。 B. 按如下步骤校验微代码
① 将编程开关置为READ (校验)状态。
② 将实验板上“STA TE UNIT”中的“STEP ”置为“STEP ”,“STOP ”置为“RUN ”
状态。
③ 用二进制模拟开关置微地址MA5—MA0。 ④ 启动时序电路(按动启动按钮“START ”),读出微代码。观察显示灯MD24-MD1
的状态(灯亮为“0”,灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM 编程状态,重新执行③)即可。 C. 按如下步骤使用KWE 微程序进行机器指令程序的装入。 ① 使编程开关处于“RUN ”,STEP 为“STEP ”状态,STOP 为“RUN ”状态。 ② 拨动总清开关CLR (0→1→0),微地址寄存器清零,程序计数器清零,然后使控制
台SWB 、SW A 开关置为“0 1”,并按动一次START ,微地址显示灯显示“010001”。 ③ 再按动一次START ,微地址灯显示“010100”,此时数据开关的内容置为要写入的
机器指令。再按动两次START 键后,即完成该条指令的写入,并且微地址显示灯显示“010001”。(注:由KWE 的流程图可知,该流程每执行一次,将向PC 寄存
器所指向的存储器单元中写入一个字节的数据,并且将PC 加1。) ④ 如果还需要向存储器中输入数据,则需重复重新执行③。 D. 按如下步骤使用KRD 微程序进行机器指令程序的检查。 ① 使编程开关处于“RUN ”,STEP 为“STEP ”状态,STOP 为“RUN ”状态。 ② 拨动总清开关CLR (0→1→0),微地址寄存器清零,程序计数器清零,然后使控制
台SWB 、SW A 开关置为“0 0”,并按动一次启动开关START ,微地址显示灯显示“010000”。
③ 再按动一次START ,微地址灯显示“010010”,第三次按动STRAT ,微地址灯显示
为“010111”,再按动STRAT 后此时输出单元的数码管显示为PC 寄存器所指单元的内容。(注:由KRD 的流程图可知,该流程每执行一次,将显示PC 寄存器所指向的存储器单元中一个字节的数据,并且将PC 加1。)
④ 如果还需要检查存储器中其他单元的数据,则需重复重新执行③。 2) 联机读/写程序
按照下图格式,将机器指令写文本文件中。
十六进制机器指令代码十六进制地址标识符
机器指令转换格式 如:
$P000 $P0110
按照下图格式,将微指令指令写文本文件中。
十六进制微指令代码十六进制地址标识符
微指令转换格式 如:
$M000181110 $M0101ED82
将按上述格式转换好的文本文件通过联机软件载入实验系统即可。
3. 运行程序
1) 本机运行
A. 单步运行程序
① 使编程开关处于“RUN ”状态,STEP 为“STEP ”状态,STOP 为“RUN ”状态。 ② 拨动总清开关CLR (0→1→0),微地址寄存器清零,程序计数器清零。
③ 单步运行一条微指令,每按动一次START 键,即单步运行一条微指令。对照微程
序流程图,观察微地址显示灯是否与流程一致。
④ 当运行结束后,可检查存数单元(0BH )中的结果是否和理论计算结果一致。 B. 连续运行程序
① 使编程开关处于“RUN ”状态,STEP 为“EXEC ”状态,STOP 为“RUN ”状态。 ② 拨动总清开关CLR (0→1→0),微地址寄存器清零,程序计数器清零。 ③ 按动START 键,系统将连续运行程序,直至将STOP 拨至“STOP ”状态。
④ 当运行结束后,可检查存数单元(0BH )中的结果是否和理论计算结果一致。 2) 联机运行
图10