一、实验内容与目的
实验要求:
利用 CP226 实验仪上的 K16..K23 开关做为 DBUS 的数据,其它开关做为控制信号,实现微程序计数器 uPC 的写入和加1功能。
实验目的:
1、了解模型机中微程序的基本概念。
2、了解 uPC 的结构、工作原理及其控制方法。
3、了解模型机中程序计数器PC 的工作原理及其控制方法。
4、了解程序执行过程中顺序和跳转指令的实现方法。
二、实验步骤
2.1 实验一:微程序计数器 uPC 实验
实验电路:
74HC161 是一片带预置的 4 位二进制记数器。功能如下:
当 RST = 0 时,记数器被清 0
当 IREN = 0 时,在CK 的上升沿,预置数据被打入记数器
当 IREN = 1 时,在CK 的上升沿,记数器加一
TC 为进位,当记数到 F(1111)时,TC=1;CEP,CET 为记数使能,当 CEP,CET=1 时,记数器工作,CEP,CET=0 时,记数器保持原记数值
图1 uPC 原理图
图2 uPC 工作波形图
在 CP226 中,指令 IBUS[7:0]的高六位被接到 uPC 预置的高六位,uPC 预置的低两位被置为 0。一条指令最多可有四条微指令。
微程序初始地址为复位地址 00,微程序入口地址由指令码产生,微程序下一地址有计数器产生。
连接线表:
连接 | 信号孔 | 接入孔 | 作用 | 状态说明 |
---|---|---|---|---|
1 | J2 座 | J3 座 | 将 K23-K16 接入 DBU[7:0] | 实验模式:手动 |
2 | IREN | K0 | 预置 uPC | 低电平有效 |
3 | EMEN | K1 | EM 存储器工作使能 | 低电平有效 |
4 | EMWR | K2 | EM 存储器写使能 | 低电平有效 |
5 | EMRD | K3 | EM 存储器读使能 | 低电平有效 |
6 | CK | 已连 | uPC 工作脉冲 | 上升沿打入 |
实验 1:uPC 加一实验
置控制信号为:
K3(EMRD) | K2(EMWR) | K1(EMEN) | K0(IREN) |
---|---|---|---|
1 | 1 | 1 | 1 |
按一次 STEP 脉冲键,CK 产生一个上升沿,数据 uPC 被加一。
实验 2:uPC 打入实验
二进制开关K23-K16 用于 DBUS[7:0]的数据输入,置数据 12H
K23 | K22 | K21 | K20 | K19 | K18 | K17 | K16 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
置控制信号为:
K3(EMRD) | K2(EMWR) | K1(EMEN) | K0(IREN) |
---|---|---|---|
1 | 0 | 0 | 0 |
当 EMWR,EMEN=0 时,数据总线(DBUS)上的数据被送到指令总线(IBUS)上。按住 STEP 脉冲键,CK 由高变低,这时寄存器 uPC 的黄色预置指示灯亮,表明 uPC被预置。放开STEP 键,CK 由低变高,产生一个上升沿,数据 10H 被写入 uPC 寄存器。
2.2 实验二:PC 实验
实验电路:
PC 是由两片 74HC161 构成的八位带预置记数器,预置数据来自数据总线。记数器的输出通过 74HC245(PCOE)送到地址总线。PC 值还可以通过 74HC245(PCOE_D)送回数据总线。
图3 PC 原理图
在 CPP226 中,PC+1 由PCOE 取反产生。
当 RST = 0 时,PC 记数器被清 0
当 LDPC = 0 时,在CK 的上升沿,预置数据被打入PC 记数器
当PC+1 = 1 时,在CK 的上升沿,PC 记数器加一
当PCOE = 0 时,PC 值送地址总线
图4 PC 打入控制原理图
PC 打入控制电路由一片 74HC151 八选一构成(isp1016 实现)。
ELP | IR3 | IR2 | Cy | Z | LDPC |
---|---|---|---|---|---|
1 | X | X | X | X | 1 |
0 | 0 | 0 | 1 | X | 0 |
0 | 0 | 0 | 0 | X | 1 |
0 | 0 | 1 | X | 1 | 0 |
0 | 0 | 1 | X | 0 | 1 |
0 | 1 | X | X | X | 0 |
当 ELP=1 时,LDPC=1,不允许PC 被预置
当 ELP=0 时,LDPC 由 IR3,IR2,Cy,Z 确定
当 IR3 IR2 = 1 X 时,LDPC=0,PC 被预置
当 IR3 IR2 = 0 0 时,LDPC=非 Cy,当 Cy=1 时,PC 被预置
当 IR3 IR2 = 0 1 时,LDPC=非 Z,当 Z=1 时,PC 被预置
连接线表
连接 | 信号孔 | 接入孔 | 作用 | 状态说明 |
---|---|---|---|---|
1 | J2 座 | J3 座 | 将 K23-K16 接入 DBU[7:0] | 实验模式:手动 |
2 | PCOE | K5 | PC 输出到地址总线 | 低电平有效 |
3 | JIR3 | K4 | 预置选择 1 | |
4 | JIR2 | K3 | 预置选择 0 | |
5 | JRZ | K2 | Z 标志输入 | |
6 | JRC | K1 | C 标志输入 | |
7 | ELP | K0 | 预置允许 | 低电平有效 |
8 | CK | 已连 | PC 工作脉冲 | 上升沿打入 |
实验 1:PC 加一实验
置控制信号为:
K5(PCOE) | K0(ELP) |
---|---|
0 | 1 |
按一次 STEP 脉冲键,CK 产生一个上升沿,数据PC 被加一。
实验 2:PC 打入实验
二进制开关K23-K16 用于 DBUS[7:0]的数据输入,置数据 12H
K23 | K22 | K21 | K20 | K19 | K18 | K17 | K16 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
置控制信号为:
IR3 (K4) | IR2 (K3) | JRZ (K2) | JRC (K1) | ELP (K0) | LDPC | 黄色PC 预置指示灯 |
---|---|---|---|---|---|---|
X | X | X | X | 1 | 1 | 灭 |
0 | 0 | X | 1 | 0 | 0 | 亮 |
0 | 0 | X | 0 | 0 | 1 | 灭 |
0 | 1 | 1 | X | 0 | 0 | 亮 |
0 | 1 | 0 | X | 0 | 1 | 灭 |
1 | X | X | X | 0 | 0 | 亮 |
每置控制信号后,按一下STEP 键,观察PC 的变化。
三、实验过程分析
2.1 实验一:微程序计数器 uPC 实验
实验 1:uPC 加一实验
图5 CK 产生一个上升沿,数据 uPC +1
实验 2:uPC 打入实验
当 EMWR,EMEN=0 时,数据总线(DBUS)上的数据被送到指令总线(IBUS)上。按住 STEP 脉冲键,CK 由高变低,这时寄存器 uPC 的黄色预置指示灯亮,表明 uPC被预置。放开STEP 键,CK 由低变高,产生一个上升沿,数据 10H 被写入 uPC 寄存器。
图6 数据 10H 被写入 uPC 寄存器
2.2 实验二:PC 实验
实验 1:uPC 加一实验
图7 CK 产生一个上升沿,数据PC 被+1
实验 2:uPC 打入实验
图8 黄色PC 预置指示灯灭
图9 黄色PC 预置指示灯亮
图10 黄色PC 预置指示灯灭
图11 黄色PC 预置指示灯亮
图12黄色PC 预置指示灯灭
图13 黄色PC 预置指示灯亮
四、实验总结
本次实验通过使用CP226实验仪,旨在深入了解微程序计数器(uPC)和程序计数器(PC)的基本概念、工作原理及其控制方法,以及顺序和跳转指令在程序执行过程中的实现方法。通过实验,我们成功地实现了uPC的写入和加1功能,并使用开关模拟程序执行过程中的顺序和跳转指令。实验结果表明,我们的实验结果与理论分析基本相符,从而验证了微程序计数器和程序计数器的工作原理。
通过本次实验,我们深入理解了微程序计数器和程序计数器在计算机中的作用和使用方法,掌握了其基本结构和控制方法,加深了对顺序和跳转指令在程序执行过程中的实现方法的认识。实验过程中,我们遇到了某些困难和挑战,比如在实验过程中出现了一些bug,但是我们通过反复的实验和观察,最终成功地得到了正确的实验结果。
尽管本次实验取得了成功,但是我们也意识到实验中存在的局限性和不足之处。例如,实验过程中我们没有对微程序计数器和程序计数器的硬件实现进行深入的研究和探索,这可能导致我们的认识存在某些不足。此外,我们在实验过程中只使用了简单的微程序计数器和程序计数器进行实验,实际应用中的微程序计数器和程序计数器可能更加复杂。
总之,本次实验让我们更深入地了解了微程序计数器和程序计数器的基本原理和工作方式,增强了我们对计算机中指令执行的理解。在未来的学习和实践中,我们将继续探索更深入的计算机体系结构和编程相关的问题,不断提高自己的能力和水平。