微程序控制器实验
一、实验目的
1、掌握时序产生器的组成原理。 2、掌握微程序控制器的组成原理。
3、掌握微程序的编制、写入,观察微程序的运行。
二、实验设备
TDN-CM+或TDN-CM++计算机组成原理教学实验系统一台,排线若干。
三、实验原理
实验所用的时序控制电路框图如图1所示,可产生4个等间隔的时序信号TS1--TS4。 φ为时钟信号,由实验台右上方的方波信号源提供,可产生频率及脉宽可调的方波信号。
图中STEP(单步),STOP(停机)分别是来自实验板上方中部的两个二进制开关STEP,STOP的模拟信号。START键是来自实验板上方左部的一个微动开关START的按键信号。当STEP开关为 EXEC时,一旦按下启动键,时序信号TSI--TS4将周而复始地发送出去。当STEP为STEP时,一旦按下启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。另外,当机器连续运行时,如果STOP开关置STOP,也会使机器停机,或使CLR开关拨至零也可以使时序清零。时序状态图2。 由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接,即将时序电路的时钟脉冲输入端φ接至方波信号发生器输出端H23,就可产生时序信号TS1--TS4。时序电路的CLR已接至实验板左下方的CLR模拟开关上。
图1
微程序控制电路(组成)
控制存储器采用3片2816的E2PROM,具有掉电保护功能;
微命令寄存器18位,用两片8D触发器(74273)和一片4D(74175)触发器组成; 微地址寄存器6位,用三片正沿触发的双D触发器(7474)组成,它们带有清\端和预置端。
在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为\状态,完成地址修改。
在该实验电路中设有一个编程开关(位于实验板右上方),它具有三种状态:PROM (编程)、READ(校验)、RUN(运行)。
处于“编程状态”时,实验者可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。
处于“校验状态”时,可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。
处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。
微地址寄存器输出端增加了一组三态门,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。 微指令格式
微指令字长共24位,其控制位顺序如图2所示。 UA5--UA0为6位的后续微地址;
A,B,C为三个译码字段,分别由三个控制位译码出多个微命令。C字段中的P(1)-- P (4)是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序,分支,循环运行,其原理如图3(见最后一页)所示。图中I7一I2为指令寄存器的第7--2位输出。SE5--SE1为微程序控制器单元微地址锁存器的强置端输。AR为算术运算是否影响进位及判零标志控制位,其为零有效。B字段中的RS-B,R0-B,RI-B分别为源寄存器选通信号,目的寄存器选通信号及变址寄存器选通信号,其功能是根据机器指令来进行三个工作寄存器R0,R1及R2的选通译码,其原理如图4(见最后一页)所示。图中I0--I4为指令寄存器的第0—4为,LDRi为打入工作寄存器信号的译码器使能控制位。
图2
四、实验步骤
1、按图5连接好实验线路,检查无误后接通电源。
图5
2、编程:
(1)将编程开关(MJ20)置为PROM(编程)状态;
(2)将STATE UNIT中的STEP置为“STEP”状态,STOP置为“RUN”状态; (3)在UA5-UA0开关上置要写的某个微地址(八进制); (4)在MK24-MK1开关上置要写的微地址相应的24位微代码,24位开关对应24位显示灯,开关量为“1”灯亮,为“0”灯灭;
(5)启动时序电路(按动启动按钮START),即将微代码写入到E2PROM2816的
相应地址对应的单元中;
(6)重复(3)~(5)步骤将每一条微指令写入E2PROM2816。 3、校验:
(1)将编程开关置为READ状态;
(2)将STEP开关置为“STEP”状态,STOP开关置为“RUN”状态; (3)在开关UA5~UA0上置好要读的某个微地址;
(4)按动START键,启动时序电路,观察显示灯MD24-MD1的状态,检查读出的微代码是否已写入的相同。如果不同在将开关置于PROM编程状态,重新执行编程步骤;
(5)重复(3)(4)步骤将每一条微指令从E2PROM2816中读出。 4、单步运行:
(1)将编程开关置于“RUN”状态;
(2)STEP置为“STEP”状态,STOP置为“RUN”状态;
(3)“AW-BUS”开关置为0,将二进制开关INPUT DEVICE区域内的D5-D0全为1;
(4)操作CLR开关使信号系统1→0→1;
(5)按动“START”,启动时序电路,则每按动一次启动键,读出一条微指令,当读到某些指令时需通过强制端强制转换后读出指令。同理把所有分支后执行一遍。
5、连续运行
(1)将编程开关置于“RUN”状态; (2)STEP置为“EXEC”状态。
(3)操作CLR开关使信号系统1→0→1; (5)按动“START”,启动时序电路。 强置地址
在单步运行的状态下,可将“MICRO-CONTROLIER”单元的SE6~SE1接至“SWITCH UNIT”中的S3~Cn上,将其置为对应的二进制有效地址。CLR:1->0->1,然后拔掉SE6~SE1上的排线,按动START,即可。 实验结果分析:
STA由12微指令、07微指令、15微指令组成,其格式如下: 微地址 S3 S2 S1 S0 M CN WE A9 A8 A B C UA5?UA0 12 0 0 0 0 0 0 0 1 1 110 110 110 000111 07 0 0 0 0 0 0 0 0 1 110 000 000 001101 15 0 0 0 0 0 0 1 0 1 000 001 000 000001 指令的功能:
12:表示把PC(程序计数器)的内容传送到地址寄存器AR;PC加1,为读取下一条指令做好准备。
07:在存储单元中读出操作数,经过地址总线传送到AR。 15:寄存器R0的内容经过数据总线送到存储单元。 控制信号的作用
①S3、S2、S1、S0、M、CN是算术逻辑运算器ALU的运算选择控制信号,选择ALU进行哪种运算。
②WE是存储器RAM的写明信号,WE=1时,RAM进行写操作,WE=0时,RAM进行读操作。
③A8、A9是2:4译码器(74LS139)的输入端,Y0、Y1、Y2、Y3是译码器输出端。当A8=0、A9=0时 选中Y0,当 A8=1、A9=0时 选中Y1,当A8=0、A9=1时 选中Y2,当 A8=1、A9=1时 选中Y3。(其中Y0为控制三态门控制信SW-B,Y1为RAM的片选信号CE,Y2为数码管输出信号LED-B,Y3为空)
④A、B、C三个译码字段,通过3:8译码器分别译出多位控制信号。A字段中,主要是寄存器的打入信号,B字段中 主要是寄存器的输出信号,C字段中,主要是测试信号,其中C字段的AR为算术运算是否影响进位及判零标志控制,其为零有效。
⑤SW-B是输入三态门控制信号,CE是RAM的片选信号,LED是数码管输出信号。 ⑥UA5-UA0为6位的后续微地址。
⑦LOAD是PC加1信号,P(1)-P(4)是四个测试判别信号,其功能是根据机器指令及相应微代码译码,使微程序输入相应的微程序进行译码,使微程序输入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。
五、问题讨论:
(1)这次实验最重要的是如何执行五条机器指令,分别是IN(输入),ADD(二进制加法),STA(存数),OUT(输出),JMP(无条件转移)。 (2)S3、S2、S1、S0、M、CN是算术逻辑运算器ALU的运算选择控制信号,选择ALU执行哪种运算。通过改变S3、S2、S1、S0、M、CN控制信号,能够实现操作数与被操作数的算术运算或逻辑运算。 (3)WE信号是写命令信号。
(4)A、B、C分别能译出第15、14、13、12、11、10、9、8 、7位信号。A字段中,主要是寄存器的打入信号。B字段中,主要是寄存器的输出信号。C字段中,主要是测试信号。 (6)UA5-UA0是后继微地址。
六、实验总结:
(1)通过本次实验我掌握了微程序控制器的功能、组成知识,掌握了指令格式和各字段功能,掌握了微程序的编制、写入、观察微程序的运行,学习了基本指令的执行流程。
(2)我觉得,这次实验的原理比较难以理解,但是实施起来其实是不难的。在实验过程中,需要一定的耐心和细心。
图3
图4