一 、 实 验 目 的
1 、 在 掌 握 部 件 单 元 电 路 实 验 的 基 础 上 , 进 一 步 将 其 组 成 系 统 以 构 造 一 台 基 本 模 型 实 验 计 算 机 。
2 、 设 计 五 条 机 器 指 令 , 并 编 写 相 应 的 微 程 序 , 具 体 上 机 调 试 , 掌 握 整 机 软 硬 件 组 成 概 念 。
二 、 实 验 内 容
1 、 实 验 原 理
部 件 实 验 过 程 中 , 各 部 件 单 元 的 控 制 信 号 是 人 为 模 拟 产 生 的 , 而 本 次 实 验 将 能 在 微 程 序 控 制 下 自 动 产 生 各 部 件 单 元 控 制 信 号 , 实 现 特 定 指 令 的 功 能 。 这 里 , 实 验 计 算 机 数 据 通 路 的 控 制 将 由 微 程 序 控 制 器 来 完 成 , CPU 从 内 存 中 取 出 一 条 机 器 指 令 到 指 令 执 行 结 束 的 一 个 指 令 周 期 全 部 由 微 指 令 组 成 的 序 列 来 完 成 , 即 一 条 机 器 指 令 对 应 一 个 微 程 序 。
⑴ 有 关 微 控 制 器 部 分 在 前 一 实 验 中 已 详 细 介 绍
⑵ 主 存 储 器 的 读 、 写 和 运 行
为 了 向 主 存 储 器 RAM 中 装 入 程 序 或 数 据 ,并 且 检 查 写 入 是 否 正 确 以 及 能 运 行 主 存 储 器 中 的 程 序 , 必 须 设 计 三 个 控 制 操 作 微 程 序 。
· 存 储 器 读 操 作 : 拨 动 总 清 开 关 后 , 置 控 制 开 关 SWC 、 SWA 为 “ 0 0 ”
时 , 按 要 求 连 线 后 , 连 续 按 “ 启 动 运 行 ”开 关 , 可 对 主 存 储 器 RAM连 续 手 动 读 操 作 。
· 存 储 器 写 操 作 : 拨 动 总 清 开 关 后 , 置 控 制 开 关 SWC 、 SWA 为 “ 0 1 ”
时 , 按 要 求 连 线 后 , 再 按 “ 启 动 运 行 ”开 关 , 可 对 主 存 储 器 RAM进 行 连 续 手 动 写 入 。
· 运 行 程 序 : 拨 动 总 清 开 关 后 , 置 控 制 开 关 SWC 、 SWA 为 “ 1 1 ” 时 ,
按 要 求 连 线 后 , 再 按 “ 启 动 运 行 ” 开 关 , 即 可 转 入 到 第 0 1 号 “ 取 址 ” 微 指
令 , 启 动 程 序 运 行 。
上 述 三 条 控 制 指 令 用 两 个 开 关 SWC 、 SWA 的 状 态 来 设 置 , 其 定 义 如 下 :
SWC | SWA | 控制台指令 |
0 0 1 | 0 1 1 | 读内存 写内存 启动程序 |
⑶ 指 令 寄 存 器 介 绍
指 令 寄 存 器 用 来 保 存 当 前 正 在 执 行 的 一 条 指 令 。 当 执 行 一 条 指 令 时 , 先 把 它 从 内 存 取 到 缓 冲 寄 存 器 中 , 然 后 再 传 送 到 指 令 寄 存 器 。 指 令 划 分 为 操 作 码 和 地 址 码 字 段 , 由 二 进 制 构 成 , 为 了 执 行 任 何 一 条 给 定 的 指 令 , 必 须 对 操 作 码 进 行 测 试 P ( 1),通 过 节 拍 脉 冲 T4 的 控 制 以 便 识 别 所 要 求 的 操 作 。
“ 指 令 译 码 器 ”根 据 指 令 中 的 操 作 码 进 行 译 码 , 强 置 微 控 器 单 元 的 微 地 址 , 使 下 一 条 微 指 令 指 向 相 应 的 微 程 序 首 地 址 。
⑷ 输 入 /输 出 设 备
本 系 统 有 两 种 外 部 I/O 设 备 , 一 种 是 二 进 制 代 码 开 关 KD 0 ~ KD 7 , 它 作 为 输 入 设 备 INPUT ; 另 一 种 是 数 码 显 示 块 , 它 作 为 输 出 设 备 OUTPUT 。 例 如 : 输 入 时 , 二 进 制 开 关 数 据 直 接 经 过 三 态 门 送 到 外 部 数 据 总 线 上 , 只 要 开 关 状 态 不 变 , 输 入 的 信 息 也 不 变 。 输 出 时 , 将 输 出 数 据 送 到 外 部 数 据 总 线 上 , 当 写 信 号 ( W/R ) 有 效 时 , 将 数 据 打 入 输 出 锁 存 器 , 驱 动 数 码 块 显 示 。
⑸ 设 计 指 令
根 据 基 本 模 型 机 的 硬 件 设 计 五 条 机 器 指 令 : 外 设 输 入 指 令 IN 、 二 进 制 加 法 指 令 ADD 、 存 数 指 令 STA 、 输 出 到 外 设 指 令 OUT 、 无 条 件 转 移 指 令 JMP。 指 令 格 式 如 下 :
助 记 符
IN ADD STA OUT JMP 说 明 : | ad dr ad dr ad dr ad dr |
机 器 指 令 码
00 00 0000 ;
000 1 00 00 XXXXXXXX;
00 10 00 00 XXXXXXXX;
00 1 1 00 00 XXXXXXXX;
0 100 00 00 XXXXXXXX;
说 明
“ 外 部 开 关 量 输 入 ”K70~ KD0 的 开 关 状 态 → R0
R0+ [a d dr ] → R0
R0 → [a d dr ]
[a d dr ] → BUS
[a d dr ] → PC
指 令 IN 为 单 字 节 指 令 ,其 余 均 为 双 字 节 指 令 , XXXXXXXX 为 ad dr 对 应 的
主 存 储 器 二 进 制 地 址 码 。
⑹ 基 本 模 型 机 监 控 软 件 的 设 计
本 模 型 机 监 控 软 件 主 要 完 成 从 输 入 设 备 读 入 数 据 , 进 行 简 单 算 术 运 算 后 , 将 结 果 存 入 内 存 的 某 个 单 元 , 最 后 通 过 输 出 设 备 输 出 结 果 。
2 、 实 验 步 骤
⑴ 根 据 实 验 原 理 设 计 数 据 通 路 框 图 , 如 图 3 - 12。
⑵ 根 据 机 器 指 令 画 出 对 应 的 微 程 序 流 程 图
本 实 验 的 微 程 序 流 程 见 图 3 - 13 , 当 拟 定 “ 取 指 ” 微 指 令 时 , 该 微 指 令 的 判 别 测 试 字 段 为 P ( 1 ) 测 试 。 由 于 “ 取 指 ” 微 指 令 是 所 有 微 程 序 都 使 用
的 公 用 微 指 令 , 因 此 P ( 1 ) 的 测 试 结 果 出 现 多 路 分 支 。 本 机 用 指 令 寄 存 器
的 前 4位 I7 ~ I4作 为 测 试 条 件 , 出 现 5路 分 支 , 占 用 5个 固 定 微 地 址 单 元 。
实 验 机 控 制 操 作 为 P( 4 ) 测 试 , 它 以 控 制 开 关 SWC 、 SWA作 为 测 试 条 件 ,
出 现 了 3路 分 支 , 占 用 3个 固 定 微 地 址 单 元 。 当 分 支 微 地 址 单 元 固 定 后 , 剩
下 的 其 它 地 方 就 可 以 一 条 微 指 令 占 用 控 存 一 个 微 地 址 单 元 随 意 填 写 。
注 意 : 微 程 序 流 程 图 上 的 单 元 地 址 为 16进 制 。
⑶ 根 据 微 程 序 流 程 图 设 计 微 指 令 并 转 换 成 16进 制 代 码 文 件 。
当 全 部 微 程 序 设 计 完 毕 后 , 应 将 每 条 微 指 令 代 码 化 , 即 按 微 指 令 格 式 将 图 3 — 13微 程 序 流 程 图 转 化 成 二 进 制 微 代 码 表 ,如 表 3 — 6所 示 ,再 转 换 成 16进 制 代 码 文 件 。
微地址 | S3 S2 S1 S0 M CN WE B1 B0 | A | B | C | UA5 …UA0 |
0 0 | 0 0 0 0 0 1 0 1 1 | 0 0 0 | 0 0 0 | 1 0 0 | 0 1 0 0 0 0 |
0 1 | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 0 0 0 1 0 |
0 2 | 0 0 0 0 0 1 0 0 1 | 1 0 0 | 0 0 0 | 0 0 1 | 0 0 1 0 0 0 |
0 3 | 0 0 0 0 0 1 0 0 1 | 1 1 0 | 0 0 0 | 0 0 0 | 0 0 0 1 0 0 |
0 4 | 0 0 0 0 0 1 0 0 1 | 0 1 1 | 0 0 0 | 0 0 0 | 0 0 0 1 0 1 |
0 5 | 0 0 0 0 0 1 0 1 1 | 0 1 0 | 0 0 1 | 0 0 0 | 0 0 0 1 1 0 |
0 6 | 1 0 0 1 0 1 0 1 1 | 0 0 1 | 1 0 1 | 0 0 0 | 0 0 0 0 0 1 |
0 7 | 0 0 0 0 0 1 0 0 1 | 1 1 0 | 0 0 0 | 0 0 0 | 0 0 1 1 0 1 |
0 8 | 0 0 0 0 0 1 0 0 0 | 0 0 1 | 0 0 0 | 0 0 0 | 0 0 0 0 0 1 |
0 9 | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 0 0 0 1 1 |
0 A | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 0 0 1 1 1 |
0 B | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 0 1 1 1 0 |
0 C | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 1 0 1 1 0 |
0 D | 0 0 0 0 0 1 0 0 1 | 0 0 0 | 0 0 1 | 0 0 0 | 0 0 0 0 0 1 |
0 E | 0 0 0 0 0 1 0 0 1 | 1 1 0 | 0 0 0 | 0 0 0 | 0 0 1 1 1 1 |
0 F | 0 0 0 0 0 1 0 0 1 | 0 1 0 | 0 0 0 | 0 0 0 | 0 1 0 1 0 1 |
1 0 | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 1 0 0 1 0 |
1 1 | 0 0 0 0 0 1 0 1 1 | 1 1 0 | 1 1 0 | 1 1 0 | 0 1 0 1 0 0 |
1 2 | 0 0 0 0 0 1 0 0 1 | 0 1 0 | 0 0 0 | 0 0 0 | 0 1 0 1 1 1 |
1 3 | 0 0 0 0 0 1 0 1 1 | 0 0 0 | 0 0 0 | 0 0 0 | 0 0 0 0 0 1 |
1 4 | 0 0 0 0 0 1 0 0 0 | 0 1 0 | 0 0 0 | 0 0 0 | 0 1 1 0 0 0 |
1 5 | 0 0 0 0 0 1 1 1 0 | 0 0 0 | 1 0 1 | 0 0 0 | 0 0 0 0 0 1 |
1 6 | 0 0 0 0 0 1 0 0 1 | 1 0 1 | 0 0 0 | 1 1 0 | 0 0 0 0 0 1 |
1 7 | 0 0 0 0 0 1 1 1 0 | 0 0 0 | 1 0 1 | 0 0 0 | 0 1 0 0 0 0 |
1 8 | 0 0 0 0 0 1 1 0 1 | 0 0 0 | 1 0 1 | 0 0 0 | 0 1 0 0 0 1 |
监 控 程 序 的 16进 制 文 件 格 式 ( 文 件 名 C8JH E 1 ):
程 序 : 机 器 指 令 格 式 说 明
$ $ $ $ $ $ $
P00
P01
P02
P03
P04
P05
P06
00
10
0A
20
0B
30
0B
$PXX 十 六 进 制 地 址
XX
机 器 指 令
$ P07
$ P08
$ P0A
40
00
0 1
微 程 序 :
$ M00 108 10 5 微 指 令 格 式 说 明
$ M0 1 82ED0 5 $MXX XXXXXXXX
$ M02 48C004 十 六 进 制 地 址 微 指 令 代 码
$ M0 3 04E004
$ M04 05B004
$ M0 5 06A20 5
$ M06 0 19A9 5
$ M0 7 0DE004
$ M08 0 1 1004
$ M09 83ED0 5
$ M0A 87ED0 5
$ M0B 8EED0 5
$ M0C 96ED0 5
$ M0D 0 1820 6
$ M0E 0FE004
$ M0F 15A004
$ M 10 92ED0 5
$ M 1 1 94ED0 5
$ M 12 17A004
$ M 1 3 0 1800 5
$ M 14 182004
$ M 1 5 0 10A0 7
$ M 16 8 1D 104
$ M 1 7 100A0 7
$ M 18 1 18A0 6
⑷ 实 验 接 线
1 、J20,J21 ,J22 接上短路片,
2 、J23,J24 ,J25 ,J26 接左边;
3 、J27,J28 右边;
4 、J29 不接;
5 、JA1 ,JA2 ,JA3 置“接通”;
6 、JA4 置“高阻”;
7 、JA5 置“接通”;
8 、JA8 置“微程序”
9 、JA6 置“微控”
10 、EXJ1 接 BUS3
⑸ 读 写 程 序
① 手 动 方 法 写 微 程 序 参 看 实 验 六 。
手 动 方 法 写 代 码 程 序 ( 机 器 指 令 ) 步 骤 如 下 :
通 过 上 一 步 将 机 器 指 令 对 应 的 微 代 码 正 确 地 写 入 E2 ROM 28 16 芯 片 后 , 再 进 行 机 器 指 令 程 序 的 装 入 和 检 查 。
A. 将 “ 编 程 开 关 ” 置 “ 运 行 ” 位 置 , “ 运 行 控 制 ” 开 关 置 “ 运 行 ” 位
置 , “ 运 行 方 式 ” 开 关 置 “ 单 步 ” 位 置 。
B. 拨 动 总 清 开 关 ( 0 → 1 ) , 微 地 址 寄 存 器 清 零 , 程 序 计 数 器 清 零 。 然
后 使 控 制 开 关 SWC 、 SWA开 关 置 为 “ 0 1 ” , 按 动 一 次 “ 启 动 运 行 ” 开 关 ,
微 地 址 显 示 灯 LUA0 ~ LUA 5 显 示 “ 01 000 1 ” , 再 按 动 一 次 “ 启 动 运 行 ”开 关 , 微 地 址 显 示 灯 LUA0 ~ LUA 5 显 示 “ 0 10 10 0 ” , 此 时 数 据 开 关 的 内 容 置 为 要 写 入 的 机 器 指 令 , 再 按 动 一 次 “ 启 动 运 行 ” 开 关 , 即 完 成 该 条 指 令 的 写 入 。 若 仔 细 阅 读 微 程 序 流 程 , 就 不 难 发 现 , 机 器 指 令 的 首 地 址 只 要 第 一 次 给 出 即 可 , PC会 自 动 加 1 , 所 以 , 每 次 按 动 “ 启 动 运 行 ” 开 关 , 只 有 在 微 地 址 灯 显 示 “ 0 10 10 0 ” 时 , 才 设 置 内 容 , 直 到 所 有 机 器 指 令 写 完 。
C. 写 完 程 序 后 须 进 行 检 验 。 拨 动 总 清 开 关 (0 → 1)后 , 微 地 址 清 零 , PC 程 序 计 数 器 清 零 , 然 后 使 控 制 开 关 SWC 、 SWA 为 “ 0 0 ” ,按 动 “ 启 动 运 行 ” 开 关 , 微 地 址 灯 将 显 示 “ 0 1 0 0 0 0 ” , 再 按 “ 启 动 运 行 ” 开 关 , 微 地 址 灯 显 示 为 “ 0 100 1 0 ”,第 三 次 按 “ 启 动 运 行 ”开 关 ,微 地 址 灯 显 示 为 “ 01 0 1 1 1 ”, 此 时 总 线 数 据 显 示 灯 LZD0 ~ LZD 7 显 示 为 该 首 地 址 的 内 容 , 再 按 动 一 次 “ 启 动 运 行 ” 开 关 , 微 地 址 灯 显 示 为 “ 0 1000 0 ” , 2位 数 码 管 即 显 示 RAM 中 的 程 序 。 不 断 按 动 “ 启 动 运 行 ” 开 关 , 可 检 查 后 续 单 元 内 容 。
注 意 : 每 次 仅 在 微 地 址 灯 显 示 为 “ 0 10000 ” 时 , 2位 数 码 管 显 示 的 内 容 才 是 相 应 地 址 中 的 机 器 指 令 内 容 。
② 联 机 读 / 写 微 程 序 和 机 器 指 令
用 联 机 软 件 的 装 载 功 能 将 16进 制 格 式 文 件 ( 文 件 名 为 C8JHE 1 ) 装 入 实 验 系 统 即 可( 详 细 操 作 见 随 机 软 件 的 README ) 。微 指 令 代 码 是 将 表 3-6 的 24 位 微 代 码 从 左 到 右 分 成 三 个 8位 , 将 此 三 个 8位 二 进 制 代 码 化 为 相 应 的 十 六 进 制 数 , 如 表 3-6第 一 行 转 化 为 108 10 5。
⑹
①
A.
运 行 程 序
单 步 运 行 程 序
“ 编 程 开 关 ” 置 “ 运 行 ” 状 态 ,
“ 运 行 方 式 ” 开 关 置 为 “ 单 步 ”
状 态 , “ 运 行 控 制 ” 开 关 置 为 “ 运 行 ” 状 态 。
B. 拨 动 总 清 开 关 (0 → 1) , 微 地 址 清 零 , PC计 数 器 清 零 , 程 序 首 地 址 为
00H。
C. 按 动 “ 启 动 运 行 ”开 关 , 即 单 步 运 行 一 条 微 指 令 。 对 照 微 程 序 流 程
图 , 观 察 微 地 址 显 示 灯 是 否 和 流 程 一 致 。
② 连 续 运 行 程 序
A . “ 编 程 开 关 ” 置 “ 运 行 ” 状 态 , “ 运 行 方 式 ” 开 关 置 为 “ 连 续 ”
状 态 , “ 运 行 控 制 ” 开 关 置 为 “ 运 行 ” 状 态 。
B. 拨 动 总 清 开 关 , 清 微 地 址 及 PC计 数 器 , 按 动 “ 启 动 运 行 ” 开 关 ,
系 统 连 续 运 行 程 序 。 如 果 要 停 止 程 序 的 运 行 , 只 需 将 “ 运 行 控 制 ” 开 关 置
为 “ 停 止 ” 状 态 , 系 统 就 停 机 。
C. 停 机 后 , 可 检 查 数 码 管 显 示 数 值 或 存 数 单 元 0BH 中 的 结 果 是 否 正确。
实验步骤
一、写入
1、首先,将“编程开关”设置为“写入”状态,将“运行控制”开关设置为“运行”,并将“运行方式”开关设置为“单步”状态。
2、使用二进制模拟开关UA0UA5设置6位微地址。其中,UA0UA5的电平由LK0LK5显示,高电平表示亮,低电平表示灭。
3、使用二进制模拟开关MK1MK24设置24位微代码。24位微代码由LMD1~LMD24显示灯显示,高电平表示亮,低电平表示灭。
4、按下“启动运行”开关,启动时序电路,这样就可以将微代码写入到存储器中的相应地址单元中。
5、重复以上步骤,将所需的微代码全部写入存储器中。
二、检验
在输入完所有程序后,按照以下步骤进行操作:首先,将“编程开关”设为“读”状态,将“运行控制”开关设为“运行”状态,并将“运行方式”开关设为“单步”状态。接下来,使用二进制模拟开关UA0UA5设置6位微地址。按下“启动运行”开关,启动时序电路,并读取微代码。观察显示灯LMD1LMD24的状态,检查读出的微代码是否与写入的相同。如果不同,将“编程开关”设为“写入”状态,然后重新执行写入步骤即可。
三、输入机器指令,步骤如下:
在完成微代码的正确写入存储器芯片后,接下来进行机器指令程序的装入和检查。
1、 首先,将“编程开关”设置为“运行”位置,将“运行控制”开关设置为“运行”位置,将“运行方式”开关设置为“单步”位置。
2、拨动总清开关,将其从0调至1,以清零微地址寄存器和程序计数器的值。然后,将控制开关SWC和SWA设置为“01”。按下一次“启动运行”开关,此时微地址显示灯LUA0~LUA5将显示“010001”。再次按下“启动运行”开关,微地址显示灯LUA0~LUA5将显示“010100”。此时,将数据开关的内容设置为要写入的机器指令。再次按下“启动运行”开关,即可完成该条指令的写入。
若仔细阅读微程序流程,可以发现机器指令的首地址只需要在第一次给出即可,程序计数器会自动递增。因此,每次按下“启动运行”开关时,只有当微地址灯显示“010100”时才设置内容,直到所有机器指令写入完毕。
四、检验机器指令
1、写完程序后须进行检验。拨动总清开关(0->1)后,微地址清零,PC程序计数器清零,然后使 控制开 SWC、SWA 为”0 0”,按动”启动运 行”开关,微地址灯将显示”010000”
2、按”启动运行” 开关,微地址灯显示为”010010”
3、三次按”启动运行”开关,微地址灯显示为”010111”,此时 总线数据显示灯LZN0~LZD7显示为该首地址的内容
4、再按动一次”启动运行”开关,微地址灯显 示为”010000”,2位 数码管即显示RAM中的程序
5、不断按动”启动运行”开关,可检查后续
5、单步运行程序
在设置中,将SWC和SWA的值设为"1 1",将"编程开关"设置为"运行"状态,将"运行方式"开关设置为"单步"状态,将"运行控制"开关设置为"运行"状态。接下来,将总清开关从0拨到1,以清零微地址和PC计数器,并将程序首地址设置为00H。
由于SWC和SWA被设置为"1 1",系统将根据RP(11)支路进行运行。为了开始单步运行微指令,按下"启动运行"开关。此时,微地址显示部分的地址将从00H变为13H,再按一次将变为01H。
为了确保微地址显示灯与微程序流程图一致,我们可以仔细观察微地址的变化。根据流程图,逐步检查微地址的变化是否与预期一致,以验证系统是否按照预期执行微指令。
通过这些设置和操作,我们可以控制系统以单步方式运行微指令,并观察微地址的变化来验证系统的执行流程是否正确。
第4次按动启动运行开关时,微地址显示为08H,此时通过外部输入07H,之后继续按动启动运行开关,直至微地址显示为15H,输出结果为08H。
之后的连续按动结果与微程序流程图如下: