实验三 微程序设计 一 实验目的 1 掌握时序产生器的组成及工作原理 掌握微程序控制器的组成及工作原理 2 根据给出的指令系统 微指令格式 微命令的字段译码方案 地址转移逻辑电路分别设计部分微程序流程图 微指令的二进制代码 3 掌握微程序的编制 写入和读出验证的方法 4 根据给出的汇编语言和机器语言源程序 通过改变SE1 SE6的值 模拟P 1 测试 观察微程序的运行过程 掌握由微程序解释机器语言源程序的工作原理 二 实验设备 TDN CM 计算机组成原理教学实验系统一台 排线若干 三 实验内容 1 实验原理实验所用的时序电路原理如图5 1所示 可产生4个等间隔的时序信号TS1 TS4 其中 为时钟信号 由实验台左上方的方波信号源提供 可产生频率及脉宽可调的方波信号 学生可根据实验自行选择方波信号的频率及脉宽 为了便于控制程序的运行 时序电路发生器也设置了一个启停控制触发器Cr 使TS1 TS4信号输出可控 图5 1中STEP 单步 STOP 停机 分别是来自实验台上方中部的两个二进制开关STEP STOP的模拟信号 START键是来自实验板上方中部的一个微动开关START的按键信号 当STEP的开关为0时 EXEC 一旦按下启动键 运行触发器Cr一直处于 1 状态 因此时序信号TS1 TS4将周而复始地发送出去 当STEP为1 STEP 时 一旦按下启动键 机器便处于单步运行状态 即此时只发送一个CPU周期的时序信号就停机 利用单步方式 每次只读一条微指令 可以观察微指令的代码与当前微指令的执行结果 另外 当机器连续运行时 如果STOP开关置 1 STOP 也会使机器停机 由于时序电路的内部线路已经连好 所以只需将时序电路与方波信号源连接 即将时序电路的时钟脉冲输入端 接至方波信号发生器输出端H23 时序电路的CLR已接至实验板右下方的CLR模拟开关上 2 微程序控制电路与微指令格式 1 微程序控制电路微程序控制器的组成见图5 2 其中控制存储器采用3片2816的E2PROM 具有掉电保护功能 微命令寄存器18位 用两片8D触发器 74LS273 和一片4D 74LS175 触发器组成 微地址寄存器6位 用三片正沿触发的双D触发器 74LS74 组成 它们带有清 0 端和预置端 在不判别测试的情况下 T2时刻打入微地址寄存器的内容即为下一条微指令的微地址 当T4时刻进行测试判别时 转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为 1 状态 完成微地址的多路转移功能 在该实验电路中设有一个编程开关 位于实验台中部上方 它具有三种状态 PROM 编程 READ 校验 RUN 运行 当处于 编程状态 时 学生可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中 当处于 校验状态 时 可以对写入控制存储器中的二进制代码进行验证 从而可以判断写入的二进制代码是否正确 当处于 运行状态 时 只要给出微程序的入口微地址 则可根据微程序流程图自动执行微程序 图中微地址寄存器输出端增加了一组三态门 目的是隔离触发器的输出 增加抗干扰能力 并用来驱动微地址显示灯 2 微指令格式微指令字长共24位 其微指令格式及每位的功能如表5 1所示 其中UA5 UA0为6位的后续微地址 A B C为三个译码字段 分别由三个控制位译码出多位 C字段中的P 1 P 4 是四个测试字位 其功能是根据机器指令及相应微代码进行译码 使微程序转入相应的微地址入口 从而实现微程序的顺序 分支 循环运行 其原理如图5 3所示 图中I7 I2为指令寄存器的第7 2位输出 SE6 SE1为微程序控制器单元微地址锁存器的异步置 1 输入端 AR为算术运算是否影响进位及判零标志控制位 其为低电零有效 B字段中的RS B RD B RI B分别为源寄存器选通信号 目的寄存器选通信号及变址寄存器选通信号 均为低电平有效 其功能是根据机器指令来进行三个工作寄存器R0 R1及R2的选通译码 其原理如图5 4 图中I0 I3为指令寄存器的第0 3位 LDRi为打入工作寄存器信号的译码器使能控制位 高电平有效 说明 指令格式中IN指令为单字长 8位 指令 其它指令为双字长指令 16位 指令格式中给出了各条指令的操作码编码 Rs为源寄存器编码 共2位 Rd为目的寄存器编码 共2位 4 实验步骤 1 图5 5给出了几条机器指令对应的参考微程序流程图 设计ADD和JMP机器指令对应的微程序流程图 将有关的微程序按微指令格式编写二进制代码 填入表5 2所示的二进制代码表 表5 2微指令的二进制代码表 2 按图5 6连接实验线路 仔细查线无误后接通电源 时序电路中的 STOP 开关置为 RUN STEP 开关置为 EXEC 按动START按键 4 观察微程序控制器的工作原理 编程A 将编程开关置为PROM 编程 状态 B 将实验板上 STATEUNIT 中的 STEP 置为 STEP STOP 置为 RUN 状态 C 用二进制模拟开关置微地址MA5 MA0 D 在MK24 MK1开关上置微代码 24位开关对应24位显示灯 开关量为 0 时灯亮 开关量为 1 时灯灭 E 启动时序电路 按动启动按钮 START 即将微代码写入到E2PROM 2816 的相应地址对应的单元中 F 重复C E步骤 将表5 2的微代码写入到2816 校验A 将编程开关设置为READ 校验 状态 B 将实验板的 STEP 开关置为 STEP 状态 STOP 开关置为 RUN 状态 C 用二进制开关置好微地址MA5 MA0 D 按动 START 键 启动时序电路 读出微代码 观察显示灯MD24 MD1的状态 灯亮为 0 灯灭为 1 检查读出的微代码是否与写入的相同 如果不同 则将开关置于PROM编程状态 重新执行 即可 单步运行A 将编程开关置于 RUN 运行 状态 B 将实验板的 STEP 开关置为 STEP 状态 STOP 开关置为 RUN 状态 C 操作CLR开关 拨动开关在实验板右下角 使CLR信号1 0 1 微地址寄存器MA5 MA0清零 从而明确本机的运行入口微地址为000000 二进制 D 按动 START 键 启动时序电路 则每按动一次启动键 读出一条微指令后停机 此时实验台上的微地址显示灯和微命令显示灯将显示所读出的一条指令 注意 在当前条件下 可将 MICR0 CONTROLLER 单元的SE6 SE1接至 SWITCHUNIT 中的S3 Cn对应二进制开关上 即 将SE1 SE6对应二进制开关置为 1 当需要人为设置分支地址时 可通过强制端SE1 SE6人为设置分支地址 将某个或某几个二进制开关置为 0 相应的微地址位即被强置为 1 从而改变下一条微指令的地址 二进制开关置为 0 相应的微地址位将被强置为 1 连续运行A 将编程开关置为 RUN 运行 状态 B 将实验板的单步开关 STEP 置为 EXEC 状态 STOP 开关置为 RUN 状态 C 使CLR从1 0 1 此时微地址寄存器清 0 从而给出取指微指令的入口地址为000000 二进制 D 启动时序电路 则可连续读出微指令 思考题 1 为什么取指周期在这里要占用2个CPU周期 2 在解释OUT指令时 17 25微地址的微指令所完成的操作为什么不能由一条微指令实现 3 在向RAM写入机器码时 24 30微地址的微指令所完成的操作为什么不能由一条微指令实现 注意事项 1 所有导线使用前须测通断 2 不允许带电接线 3 0 亮 1 灭 注意连接线的颜色 数据的高低位
展开阅读全文