AM2910 微程序定序器深度解析:在 TEC-2 中实现 3 种微程序流控制
📅 2026/7/11 23:15:27
👁️ 阅读次数
📝 编程学习
AM2910 微程序定序器深度解析:在 TEC-2 中实现 3 种微程序流控制
微程序控制器作为计算机硬件设计的核心组件,其性能直接决定了指令执行的效率与灵活性。在清华大学设计的 TEC-2 教学计算机系统中,AM2910 微程序定序器扮演着控制流调度的关键角色。本文将深入剖析 AM2910 的 16 条命令的工作机制,并结合 TEC-2 的具体电路实现,揭示微程序控制器如何通过硬件逻辑实现复杂的指令执行流程。
1. AM2910 架构与核心功能
AM2910 是一款 12 位微程序定序器芯片,采用 40 引脚 DIP 封装。其内部包含 4 个关键功能单元:
- 寄存器堆栈:5×12 位的循环栈结构,支持 PUSH/POP 操作
- 计数器/寄存器:12 位的 PC 寄存器与增量器
- 多路选择器:4 路输入选择逻辑
- 控制逻辑:16 种命令的译码与执行单元
在 TEC-2 系统中,AM2910 通过三组输入信号决定下一条微指令地址:
// 典型输入信号连接示意 input [11:0] D; // 直接输入(来自 MAPROM/PLR/开关) input /MAP, /VECT, /PL; // 输入源选择信号 input /CC; // 条件测试输入 input [3:0] CMD; // 命令码输入关键引脚功能对照表:
| 引脚 | 名称 | 功能描述 | TEC-2 连接目标 |
|---|---|---|---|
| /MAP | 映射使能 | 有效时从 MAPROM 取指令入口地址 | MAPROM 输出使能 |
| /VECT | 向量使能 | 有效时接收手动输入的微地址 | 前面板地址开关 |
| /PL | 微程序加载 | 有效时采用 PLR 中的下址字段 | PLR[55:46] |
| /CC | 条件测试 | 与命令码配合实现条件转移 | 标志位状态 |
2. 三种典型微程序流控制实现
2.1 顺序执行流(14 号命令)
当执行加法等无需分支的指令时,AM2910 采用最简单的顺序执行模式:
graph LR A[当前微指令] --> B[PC+1] B --> C[下一微指令]对应的 TEC-2 硬件行为:
- PLR 寄存器锁存当前微指令
- AM2910 接收 14 号命令(二进制 1110)
- 内部增量器将当前地址加 1
- 新地址输出到 µRA[9:0] 总线
典型微指令示例:
MEM->AR 微指令: 0000 0E00 10F0 0002 └─┬─┘ └┬┘ └─┬─┘ └┬┘ │ │ │ └─ AM2910命令码=14 │ │ └────── 运算器控制字段 │ └─────────── 存储器控制字段 └──────────────── 下址字段(未使用)2.2 条件分支流(3 号命令)
实现条件转移指令时,需要根据标志位状态决定程序流向。以 TEC-2 的 BEQ(相等跳转)指令为例:
# 条件分支的硬件决策流程 def next_address(cc, cmd, current_addr, branch_addr): if cmd == 0x3: # 条件转移命令 return branch_addr if not cc else current_addr + 1 else: raise Exception("Invalid command")硬件实现细节:
- 运算器执行比较操作后设置 Z 标志
- 微指令中 SCC/SC 字段配置测试条件(如 Z=1)
- AM2910 接收 3 号命令和 /CC 输入
- 地址选择逻辑根据 /CC 状态选择下址来源
关键信号时序:
- T1:运算器输出标志位状态
- T2:PLR[55:46] 锁存转移目标地址
- T3:AM2910 输出最终地址到 µRA 总线
2.3 指令分支流(2 号命令)
处理机器指令译码时,需要通过 MAPROM 实现指令到微程序的映射:
// 指令分支的地址转换过程 uint16_t map_opcode_to_micro(uint8_t opcode) { return MAPROM[opcode]; // 硬件实现为2片2716 ROM }TEC-2 具体实现步骤:
- 取指阶段将操作码存入 IR[15:10]
- AM2910 接收 2 号命令,激活 /MAP 信号
- MAPROM 输出 10 位微程序入口地址
- 地址选择器(3片LS257)将地址导向控存
关键电路参数:
- MAPROM 访问延迟:≤120ns
- 地址建立时间:50ns(在 T2 周期内完成)
- 微指令字长:56 位(7片6116 RAM构成)
3. TEC-2 的微程序控制子系统
3.1 硬件组成与数据通路
TEC-2 的微程序控制器采用三级流水结构:
地址生成级:
- AM2910 + MAPROM + 地址选择器
- 工作频率:2MHz(主时钟分频)
控存访问级:
- 7片6116 RAM(2K×8)
- 存取时间:150ns
流水线寄存器:
- PLR(6片LS374 + 1片LS273)
- 建立时间:30ns
关键信号连接表:
| 信号线 | 源设备 | 目的设备 | 位宽 |
|---|---|---|---|
| µRA[9:0] | AM2910 | 控存地址总线 | 10 |
| PLR[55:0] | 控存数据输出 | 执行单元 | 56 |
| /MAP | AM2910 | MAPROM | 1 |
| /CC | 标志寄存器 | AM2910 | 1 |
3.2 动态微程序设计实现
TEC-2 支持通过 LDMC 指令动态加载微程序,其操作流程如下:
- 将微指令序列存入主存(如 0900H 开始)
- 设置参数寄存器:
MOV R1, 900 ; 微码内存起始地址 MOV R2, 7 ; 微指令条数 MOV R3, 100 ; 控存目标地址 - 执行 LDMC 指令
- 硬件自动完成微码搬运
动态加载时序要求:
- 每个总线周期传输 16 位数据
- 需要 4 个周期完成一条微指令加载
- 总加载时间 = 微指令数 × 4 × 500ns
4. 典型微程序实例分析
以 TEC-2 的加法指令为例,其微程序包含 7 条微指令:
取操作数阶段:
PC->AR,PC+1->PC: 0000 0E00 A0B5 5402 MEM->AR: 0000 0E00 10F0 0002 MEM->Q: 0000 0E00 00F0 0000执行运算阶段:
MEM+Q->Q: 0000 0E01 00E0 0000结果写回阶段:
Q->MEM,CC#=0: 0029 0300 1020 0010
关键字段解码:
A0B5:选择 ALU 的 A 口和 B 口输入5402:设置 ALU 为加法运算模式0300:AM2910 条件转移命令(3号)
在调试过程中,可以通过前面板开关手动输入微地址(使用 /VECT 信号),逐步观察每条微指令的执行效果。例如设置初始地址为 0100H,然后单步执行观察数据总线和寄存器状态的变化。
编程学习
技术分享
实战经验