控制单元
本地实验舱 固定 8 位 CPU(中央处理器) 控制单元用于译码低半字节中的操作码,并在 FETCH、DECODE、EXECUTE 和 STORE 状态下发出数据通路控制信号。
概述
控制单元是 本地实验舱 内置 8 位 CPU 数据通路的固定软件时序控制模型。它译码低半字节操作码,并驱动既定控制输出;它不是用户可编程的微码存储器,也不是物理时序模型。
本地实验舱 的确切实现
| 方向 | 引脚 | 作用 |
|---|---|---|
| 输入 | CLK(时钟), RST | 上升沿时钟;高电平有效的异步复位。 |
| 输入 | OP0–OP3, Z_FLAG | 4 位操作码(OP0 为 LSB(最低有效位))与零标志。 |
| 输出 | PC_INC, PC_LD, PC_OE | 程序计数器控制。 |
| 输出 | MEM_RD, MEM_WR, RAM_OE | 存储器控制。 |
| 输出 | IR_LD, IR_ADDR_OE | 指令寄存器控制。 |
| 输出 | ALU0–ALU2, ALU_OE | ALU(算术逻辑单元) 运算与输出使能。 |
| 输出 | ACC_LD, ACC_OE, FLG_LD | 累加器与标志控制。 |
| 输出 | HALT, STATE0, STATE1 | 停机与当前状态(00 FETCH:取指,01 DECODE:译码,10 EXECUTE:执行,11 STORE:存储)。 |
逻辑与时序
- 每条指令随时钟上升沿依次经过 FETCH → DECODE → EXECUTE → STORE,随后返回 FETCH。
- 在每个状态下,软件模型都会从内置的固定控制信号表中查找输出。
- RST 立即返回 FETCH,并清除停机状态。
- 指令字节格式为
[operand:4][opcode:4]:操作数位于高半字节,操作码位于低半字节。因此,操作数和 CPU 地址范围为 0x0–0xF。 - LDI 已实现,并非保留操作码。
运行时参考
| 端子 | 方向 |
|---|---|
CLK |
输入 |
RST |
输入 |
OP0 |
输入 |
OP1 |
输入 |
OP2 |
输入 |
OP3 |
输入 |
ZF |
输入 |
PC_INC |
输出 |
PC_LD |
输出 |
PC_OE |
输出 |
MEM_RD |
输出 |
MEM_WR |
输出 |
RAM_OE |
输出 |
IR_LD |
输出 |
IR_ADDR_OE |
输出 |
ALU_OP0 |
输出 |
ALU_OP1 |
输出 |
ALU_OP2 |
输出 |
ALU_OE |
输出 |
ACC_LD |
输出 |
ACC_OE |
输出 |
FLG_LD |
输出 |
HALT |
输出 |
STATE0 |
输出 |
STATE1 |
输出 |
新放置元件的输出初始状态按上方输出端子顺序排列为:001100100000010000。四态符号为 0、1、X(主动驱动的未知态)和 Z(高阻态)。默认传播延迟:5 ns(仿真时间)。
学习路径
常见问题
控制单元有什么作用?
该元件读取 CLK、RST、OP0–OP3 和 Z_FLAG,然后为 本地实验舱 定义的 CPU 模型驱动程序计数器、存储器、指令寄存器、ALU、累加器、标志、停机和状态等信号。
本地实验舱 控制单元如何安排执行顺序?
软件模型在 CLK 上升沿依次推进 FETCH、DECODE、EXECUTE 和 STORE 状态,并为每个操作码查找固定的内置控制信号序列。此表不是用户可编程的控制存储器;RST 将控制单元返回 FETCH 状态并解除停机状态。