AM2910 微程序定序器深度解析:在 TEC-2 中实现 3 种微程序流控制

AM2910 微程序定序器深度解析:在 TEC-2 中实现 3 种微程序流控制

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 硬件行为:

  1. PLR 寄存器锁存当前微指令
  2. AM2910 接收 14 号命令(二进制 1110)
  3. 内部增量器将当前地址加 1
  4. 新地址输出到 µ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")

硬件实现细节:

  1. 运算器执行比较操作后设置 Z 标志
  2. 微指令中 SCC/SC 字段配置测试条件(如 Z=1)
  3. AM2910 接收 3 号命令和 /CC 输入
  4. 地址选择逻辑根据 /CC 状态选择下址来源

关键信号时序

  1. T1:运算器输出标志位状态
  2. T2:PLR[55:46] 锁存转移目标地址
  3. T3:AM2910 输出最终地址到 µRA 总线

2.3 指令分支流(2 号命令)

处理机器指令译码时,需要通过 MAPROM 实现指令到微程序的映射:

// 指令分支的地址转换过程 uint16_t map_opcode_to_micro(uint8_t opcode) { return MAPROM[opcode]; // 硬件实现为2片2716 ROM }

TEC-2 具体实现步骤:

  1. 取指阶段将操作码存入 IR[15:10]
  2. AM2910 接收 2 号命令,激活 /MAP 信号
  3. MAPROM 输出 10 位微程序入口地址
  4. 地址选择器(3片LS257)将地址导向控存

关键电路参数

  • MAPROM 访问延迟:≤120ns
  • 地址建立时间:50ns(在 T2 周期内完成)
  • 微指令字长:56 位(7片6116 RAM构成)

3. TEC-2 的微程序控制子系统

3.1 硬件组成与数据通路

TEC-2 的微程序控制器采用三级流水结构:

  1. 地址生成级

    • AM2910 + MAPROM + 地址选择器
    • 工作频率:2MHz(主时钟分频)
  2. 控存访问级

    • 7片6116 RAM(2K×8)
    • 存取时间:150ns
  3. 流水线寄存器

    • PLR(6片LS374 + 1片LS273)
    • 建立时间:30ns

关键信号连接表

信号线源设备目的设备位宽
µRA[9:0]AM2910控存地址总线10
PLR[55:0]控存数据输出执行单元56
/MAPAM2910MAPROM1
/CC标志寄存器AM29101

3.2 动态微程序设计实现

TEC-2 支持通过 LDMC 指令动态加载微程序,其操作流程如下:

  1. 将微指令序列存入主存(如 0900H 开始)
  2. 设置参数寄存器:
    MOV R1, 900 ; 微码内存起始地址 MOV R2, 7 ; 微指令条数 MOV R3, 100 ; 控存目标地址
  3. 执行 LDMC 指令
  4. 硬件自动完成微码搬运

动态加载时序要求

  • 每个总线周期传输 16 位数据
  • 需要 4 个周期完成一条微指令加载
  • 总加载时间 = 微指令数 × 4 × 500ns

4. 典型微程序实例分析

以 TEC-2 的加法指令为例,其微程序包含 7 条微指令:

  1. 取操作数阶段

    PC->AR,PC+1->PC: 0000 0E00 A0B5 5402 MEM->AR: 0000 0E00 10F0 0002 MEM->Q: 0000 0E00 00F0 0000
  2. 执行运算阶段

    MEM+Q->Q: 0000 0E01 00E0 0000
  3. 结果写回阶段

    Q->MEM,CC#=0: 0029 0300 1020 0010

关键字段解码

  • A0B5:选择 ALU 的 A 口和 B 口输入
  • 5402:设置 ALU 为加法运算模式
  • 0300:AM2910 条件转移命令(3号)

在调试过程中,可以通过前面板开关手动输入微地址(使用 /VECT 信号),逐步观察每条微指令的执行效果。例如设置初始地址为 0100H,然后单步执行观察数据总线和寄存器状态的变化。