PREVIEW
Memory Address Register (MAR)

Memory Address Register (MAR)

Advanced signal_cellular_alt Advanced schedule 22 min

Interactive Circuit

存储器地址寄存器 (MAR)

概述

  • 用途:存储器地址寄存器 (MAR) 是一个 8 位寄存器,用于保存读/写操作的内存地址。它充当 CPU 内部地址源(程序计数器、指令寄存器)与外部内存地址总线之间的缓冲器,实现正确的时序和地址信号隔离。
  • 符号:MAR 以矩形方块表示,具有 8 位数据输入总线、时钟 (CLK) 输入、加载使能 (LD) 控制信号和 8 位地址输出总线。
  • DigiSim.io 角色:在 CPU 设计中不可或缺的组件,将地址生成与内存访问分离,实现正确的总线时序,并支持 8 位计算机架构中的复杂寻址模式。

Memory Address Register component

功能描述

逻辑行为

存储器地址寄存器在 CLK 信号上升沿加载使能 (LD) 为 HIGH 时锁存一个 8 位地址值。此设计与 DigiSim 8 位计算机架构中的其他同步寄存器保持一致。一旦锁存,地址将持续驱动到输出引脚,直到加载新地址。与三态组件不同,MAR 始终驱动其输出。

功能表

CLK 边沿 LD 操作 A0-A7 输出
1 锁存新地址 D0-D7 输入数据
0 保持 先前地址
- X 保持 先前地址

注:↑ 表示 CLK 信号的上升沿 LD 必须在时钟上升沿时为 HIGH 才能锁存新数据 输出始终被驱动(非三态),以确保地址总线稳定

输入和输出

  • 输入(共 10 个)

    • D0-D7[7:0]:8 位数据输入(总线输入),用于加载新地址。这些被配置为总线输入,允许多个源通过三态缓冲器驱动它们。
    • CLK:时钟输入(上升沿触发)。当 LD 为 HIGH 时,数据在 CLK 上升沿锁存。
    • LD:1 位加载使能输入(电平敏感)。必须在 CLK 上升沿时为 HIGH 才能锁存新数据。
  • 输出(共 8 个)

    • A0-A7[7:0]:8 位地址输出,连接到存储器组件(RAM/ROM)。这些输出始终被驱动(非三态)。

引脚布局

输入引脚(左侧)

  • 引脚 0-7:D0-D7(数据/地址输入 - 总线输入)
  • 引脚 8:CLK(时钟 - 上升沿触发)
  • 引脚 9:LD(加载使能 - 电平敏感)

输出引脚(右侧)

  • 引脚 0-7:A0-A7(地址输出至存储器)

可配置参数

  • 初始值:上电时的地址值(通常为 0x00)。
  • 边沿敏感性:在 CLK 信号上升沿触发(当 LD 为 HIGH 时)。
  • 传播延迟:从 CLK 上升沿到输出稳定的时间。

DigiSim.io 中的视觉表示

存储器地址寄存器显示为矩形方块(128×192 像素,8×12 网格),包含:

  • 左侧 8 个数据输入引脚(D0-D7),relativeY:0.16667 至 0.75
  • 1 个时钟输入引脚(CLK),relativeY:0.83333
  • 1 个加载使能引脚(LD),relativeY:0.91667
  • 右侧 8 个地址输出引脚(A0-A7),relativeY:0.25 至 0.83333

组件标签 "MAR" 显示在中心,"ADDR" 表示其作为地址寄存器的角色。输入引脚标记为总线输入,以较粗的连接点表示,可以接受多个三态驱动器。

教育价值

核心概念

  • 地址缓冲:演示地址如何与其来源隔离以实现正确的总线时序。
  • 边沿触发锁存:展示数据如何在时钟/控制信号边沿被捕获。
  • 总线架构:说明 CPU 设计中地址总线和数据总线的分离。
  • 内存寻址:计算机架构中的基本概念。
  • 流水线级:MAR 代表取指-译码-执行流水线中的一个级。

学习目标

  • 理解地址寄存器在内存操作中的作用。
  • 学习地址缓冲如何实现复杂的内存访问模式。
  • 认识内存地址建立和保持的时序要求。
  • 将 MAR 概念应用于设计 CPU 内存接口。
  • 理解多个地址源(PC、IR、ALU)如何共享单一内存地址总线。

使用示例

  • 指令获取:在从 ROM/RAM 获取指令之前,将 PC 值加载到 MAR 中。
  • 数据加载/存储:将 IR 中的操作数地址加载到 MAR 中以进行数据内存访问。
  • 间接寻址:将 ALU 计算的地址加载用于基于指针的访问。
  • 栈操作:加载栈指针值用于压栈/弹栈操作。
  • DMA 操作:外部地址源可以加载值用于直接内存访问。

在 8 位计算机中的集成

在 DigiSim 8 位计算机架构中,MAR 作为中央地址缓冲器:

┌─────────────────────────────────────────────────────────────┐
│                     地址源                                    │
│  ┌────────┐   ┌─────────────────┐   ┌──────────────┐       │
│  │   PC   │   │       IR        │   │     ALU      │       │
│  │ (8-bit)│   │ (4-bit address) │   │  (computed)  │       │
│  └───┬────┘   └───────┬─────────┘   └──────┬───────┘       │
│      │                │                     │                │
│      ▼                ▼                     ▼                │
│  ┌───────────────────────────────────────────────┐          │
│  │              三态缓冲器                        │          │
│  │         (由控制单元控制)                        │          │
│  └───────────────────────┬───────────────────────┘          │
│                          │                                   │
│                          ▼                                   │
│                    ┌───────────┐                            │
│                    │    MAR    │◄──── LD (来自 CU)           │
│                    │  (8-bit)  │                            │
│                    └─────┬─────┘                            │
│                          │                                   │
│                          ▼                                   │
│                   ┌──────────────┐                          │
│                   │  RAM / ROM   │                          │
│                   └──────────────┘                          │
└─────────────────────────────────────────────────────────────┘

控制信号

控制单元在特定的微代码步骤中生成 MAR_LD 信号:

  • FETCH 状态:加载 PC 值以读取下一条指令(MAR_LD=1,在 CLK 上升沿时)
  • EXECUTE 状态:加载操作数地址用于内存操作(MAR_LD=1,在 CLK 上升沿时)

CLK 信号是与所有同步组件共享的系统时钟。

技术说明

  • MAR 支持完整的 8 位寻址(256 字节),相比指令寄存器的 4 位地址输出。
  • 总线输入允许多个三态源连接,无需显式多路复用。
  • 上升沿时钟触发确保地址切换时无毛刺。
  • 输出始终被驱动,以在内存访问期间保持地址总线稳定。
  • MAR 应在断言内存读/写信号之前被加载。
  • 在时序关键的设计中应考虑传播延迟。
  • 时钟输入(CLK)使 MAR 与其他 CPU 组件同步。

相关组件

  • 程序计数器 (PC):指令获取期间的主要地址来源。
  • 指令寄存器 (IR):为内存操作提供操作数地址。
  • RAM:由 MAR 输出寻址的随机存取存储器。
  • ROM:由 MAR 输出寻址的只读存储器。
  • 控制单元:在适当时机生成 LD 信号。
  • 数据总线:用于与内存之间数据传输的独立总线。
  • 三态缓冲器:用于将不同地址源接入 MAR 输入。

school 学习路径

arrow_forward 下一步

help_outline 常见问题

什么是MAR?

内存地址寄存器保存要访问的内存位置的地址。它连接到地址总线并选择内存位置。

MAR和PC有什么区别?

PC保存下一条指令的地址。MAR保存任何内存访问的地址(指令取指、数据读取或数据写入)。

play_arrow 运行在线电路

查看其他组件