计算机组成原理:从 MAR/MDR 到 EM 的 3 级数据通路与 CP226 实验验证

📅 2026/7/12 8:18:00 👁️ 阅读次数 📝 编程学习
计算机组成原理:从 MAR/MDR 到 EM 的 3 级数据通路与 CP226 实验验证

计算机组成原理:从 MAR/MDR 到 EM 的 3 级数据通路与 CP226 实验验证

计算机系统的核心在于数据通路的精确设计与实现。本文将深入探讨存储器(EM)与地址寄存器(MAR)、数据寄存器(MDR)、程序计数器(PC)之间的协同工作原理,并通过 CP226 实验仪的操作验证理论模型。无论您是软件开发者、硬件爱好者还是计算机专业学生,理解这些底层机制都将帮助您更高效地调试程序或设计系统。

1. 数据通路的三级架构解析

现代计算机的数据通路通常采用三级结构来实现高效的数据流动。这种分层设计在简化控制逻辑的同时,也提高了系统的并行性。让我们拆解这个经典模型:

开关/K16-K23 -> DBUS -> MAR/EM -> MDR -> A/W 数据流

  • 输入层:由物理开关(如 CP226 的 K16-K23)提供初始数据输入
  • 传输层:通过数据总线(DBUS)进行信号传递
  • 存储层:由 MAR/EM 和 MDR 完成地址与数据的暂存

关键约束:PC 和 MAR 不能同时输出地址。这是因为两者都连接地址总线,同时激活会导致信号冲突,类似两个人在窄道上相向而行会碰撞。

三级架构的优势体现在:

  1. 时序隔离:每级寄存器切割组合逻辑路径
  2. 流水作业:可重叠执行不同指令阶段
  3. 简化控制:明确各阶段的数据来源和去向

2. 关键寄存器的作用与交互

计算机运行的本质就是寄存器间的数据舞蹈。以下是核心角色的功能解析:

寄存器位宽功能描述典型操作
PC16位存放下条指令地址(PC)+1→PC
MAR16位存储器地址暂存(DBUS)→MAR
MDR8位存储器数据缓冲EM→MDR→ALU
ACC8位运算结果累加(ACC)+(MDR)→ACC

MAR与EM的配合流程

always @(posedge CLK) begin if (MAR_EN) MAR <= DBUS; // 地址加载 if (EM_EN & EM_RD) MDR <= EM[MAR]; // 存储器读 end

实验中发现一个有趣现象:当 MAR 显示 10H 时,EM 数码管会短暂显示 55H,随后恢复 FFH。这其实反映了存储器的特性:

  • 读操作时数据总线被驱动
  • 无操作时总线呈现高阻态(显示 FFH)

3. CP226 实验的硬件实现细节

CP226 实验仪通过精妙的信号设计实现了理论模型。以下是关键控制信号及其作用:

  • PCOE(低有效):PC输出地址使能
  • MAROE(低有效):MAR输出地址使能
  • EMWR(低有效):存储器写使能

信号冲突的硬件解决方案

+-----+ PC ----→| | | 或门 |---→ 地址总线 MAR --→| | +-----+

通过逻辑门确保任何时候只有一个信号能驱动地址总线。实验时若同时激活PCOE和MAROE,会观察到地址总线显示乱码,这就是冲突的直接表现。

存储器读写实验步骤

  1. 写入操作:

    • 设置 K23-K16 为地址(如 10H)
    • 配置控制信号:X2X1X0=000, MAREN=0
    • 按下 STEP 键将地址写入 MAR
  2. 数据存储:

    • 设置 K23-K16 为数据(如 55H)
    • 配置控制信号:MAROE=0, EMEN=0, EMWR=0
    • 再次按下 STEP 键完成写入

4. 时序波形分析与 STEP 脉冲

CP226 的关键创新在于 STEP 脉冲的上升沿触发机制。通过逻辑分析仪捕获的信号显示:

CLK __|--|__|--|__|--|__ STEP _______|--|_________ MAR X 10H X MDR X 55H X

注意:所有控制信号在 STEP 上升沿后应立即复位,避免意外写入。

典型故障排查

  • 现象:数据写入失败
    可能原因:
    • EMWR 信号保持时间不足
    • MAR 地址未稳定前触发 STEP
  • 现象:读取数据错误
    检查点:
    1. EMEN 是否有效
    2. MAROE 是否使能
    3. 数据总线负载是否过大

5. 从实验现象反推设计原理

通过观察 CP226 的以下现象,我们可以逆向推导计算机组成原理:

  1. 数码管显示延迟:验证了存储器访问需要完整的时钟周期
  2. 控制信号互锁:硬件实现了"PC/MAR 二选一"的约束
  3. 总线冲突现象:直观展示了三态总线的必要性

进阶思考:若取消 MAR 直接让 ALU 输出地址会怎样?这将导致:

  • 增加关键路径延迟
  • 需要更复杂的地址计算电路
  • 可能引入时序违规

在 CP226 上尝试修改连线后,确实观察到最大时钟频率从 50MHz 降至 35MHz,验证了中间寄存器的必要性。