PREVIEW
Memory Address Register (MAR)

Memory Address Register (MAR)

Advanced signal_cellular_alt Advanced schedule 22 min

Interactive Circuit

Registro de Dirección de Memoria (MAR)

Descripción general

  • Propósito: El registro de dirección de memoria (MAR) es un registro de 8 bits que contiene la dirección de memoria para las operaciones de lectura/escritura. Actúa como un buffer entre las fuentes de dirección internas de la CPU (contador de programa, registro de instrucciones) y el bus de dirección de memoria externa, habilitando la temporización adecuada y el aislamiento de las señales de dirección.
  • Símbolo: El MAR está representado por un bloque rectangular con un bus de entrada de datos de 8 bits, una entrada de reloj (CLK), una señal de control de habilitación de carga (LD) y un bus de salida de dirección de 8 bits.
  • Rol en DigiSim.io: Componente esencial en diseños de CPU que separa la generación de direcciones del acceso a memoria, habilitando una temporización adecuada del bus y admitiendo modos de direccionamiento complejos en la arquitectura de computadora de 8 bits.

Memory Address Register component

Descripción funcional

Comportamiento lógico

El registro de dirección de memoria retiene un valor de dirección de 8 bits en el flanco de subida de la señal CLK cuando la habilitación de carga (LD) está en ALTO. Este diseño es consistente con otros registros síncronos en la arquitectura de computadora de 8 bits de DigiSim. Una vez retenido, la dirección se conduce continuamente en los pines de salida hasta que se carga una nueva dirección. A diferencia de los componentes en tercer estado, el MAR siempre conduce sus salidas.

Tabla de función:

Flanco CLK LD Operación Salida A0-A7
1 Retener nueva dirección Datos de entrada D0-D7
0 Retener Dirección anterior
- X Retener Dirección anterior

Nota: ↑ representa un flanco de subida en la señal CLK LD debe estar en ALTO en el flanco de subida del reloj para retener nuevos datos Las salidas siempre se conducen (no en tercer estado) para garantizar un bus de dirección estable

Entradas y salidas

  • Entradas (10 en total):

    • D0-D7[7:0]: Entradas de datos de 8 bits (entradas de bus) para cargar una nueva dirección. Estas están configuradas como entradas de bus, permitiendo que múltiples fuentes las conduzcan a través de buffers en tercer estado.
    • CLK: Entrada de reloj (disparado por flanco de subida). Los datos se retienen en el flanco de subida de CLK cuando LD está en ALTO.
    • LD: Entrada de habilitación de carga de 1 bit (sensible al nivel). Debe estar en ALTO en el flanco de subida de CLK para retener nuevos datos.
  • Salidas (8 en total):

    • A0-A7[7:0]: Salidas de dirección de 8 bits que se conectan a los componentes de memoria (RAM/ROM). Estas salidas siempre se conducen (no en tercer estado).

Distribución de pines

Pines de entrada (lado izquierdo):

  • Pines 0-7: D0-D7 (Entradas de datos/dirección - entradas de bus)
  • Pin 8: CLK (Reloj - disparado por flanco de subida)
  • Pin 9: LD (Habilitación de carga - sensible al nivel)

Pines de salida (lado derecho):

  • Pines 0-7: A0-A7 (Salidas de dirección a memoria)

Parámetros configurables

  • Valor inicial: El valor de dirección al encendido (típicamente 0x00).
  • Sensibilidad al flanco: Disparado por flanco de subida en la señal CLK (cuando LD está en ALTO).
  • Retardo de propagación: El tiempo desde el flanco de subida de CLK hasta las salidas estables.

Representación visual en DigiSim.io

El registro de dirección de memoria se muestra como un bloque rectangular (128×192 píxeles, cuadrículas de 8×12) con:

  • 8 pines de entrada de datos en el lado izquierdo (D0-D7) en relativeY: 0.16667 a 0.75
  • 1 pin de entrada de reloj (CLK) en relativeY: 0.83333
  • 1 pin de habilitación de carga (LD) en relativeY: 0.91667
  • 8 pines de salida de dirección en el lado derecho (A0-A7) en relativeY: 0.25 a 0.83333

La etiqueta del componente "MAR" se muestra en el centro, con "ADDR" que indica su rol como registro de dirección. Los pines de entrada están marcados como entradas de bus, indicados por puntos de conexión más gruesos que pueden aceptar múltiples controladores en tercer estado.

Valor educativo

Conceptos clave

  • Buffering de dirección: Demuestra cómo las direcciones se aíslan de sus fuentes para una temporización adecuada del bus.
  • Retención disparada por flanco: Muestra cómo los datos se capturan en los flancos de reloj/señales de control.
  • Arquitectura de bus: Ilustra la separación de los buses de dirección y datos en el diseño de CPU.
  • Direccionamiento de memoria: Concepto fundamental en la arquitectura de computadoras.
  • Etapas de canalización: El MAR representa una etapa en la canalización de búsqueda-decodificación-ejecución.

Objetivos de aprendizaje

  • Comprender el papel de los registros de dirección en las operaciones de memoria.
  • Aprender cómo el buffering de dirección habilita patrones complejos de acceso a memoria.
  • Reconocer los requisitos de temporización para la configuración y retención de la dirección de memoria.
  • Aplicar conceptos de MAR en el diseño de interfaces de memoria de CPU.
  • Comprender cómo múltiples fuentes de dirección (PC, IR, ALU) pueden compartir un solo bus de dirección de memoria.

Ejemplos de uso

  • Búsqueda de instrucción: El valor del PC se carga en el MAR antes de buscar la instrucción desde ROM/RAM.
  • Carga/almacenamiento de datos: La dirección de operando del IR se carga en el MAR para el acceso a memoria de datos.
  • Direccionamiento indirecto: Las direcciones calculadas desde la ALU se cargan para acceso basado en punteros.
  • Operaciones de pila: El valor del puntero de pila se carga para operaciones de empuje/extracción.
  • Operaciones DMA: Las fuentes de dirección externas pueden cargar valores para acceso directo a memoria.

Integración en la computadora de 8 bits

En la arquitectura de computadora de 8 bits de DigiSim, el MAR sirve como el buffer de dirección central:

┌─────────────────────────────────────────────────────────────┐
│                     FUENTES DE DIRECCIÓN                     │
│  ┌────────┐   ┌─────────────────┐   ┌──────────────┐       │
│  │   PC   │   │       IR        │   │     ALU      │       │
│  │ (8-bit)│   │ (dirección 4-bit│   │  (calculado) │       │
│  └───┬────┘   └───────┬─────────┘   └──────┬───────┘       │
│      │                │                     │                │
│      ▼                ▼                     ▼                │
│  ┌───────────────────────────────────────────────┐          │
│  │           BUFFERS EN TERCER ESTADO            │          │
│  │         (controlados por unidad de control)   │          │
│  └───────────────────────┬───────────────────────┘          │
│                          │                                   │
│                          ▼                                   │
│                    ┌───────────┐                            │
│                    │    MAR    │◄──── LD (desde UC)         │
│                    │  (8-bit)  │                            │
│                    └─────┬─────┘                            │
│                          │                                   │
│                          ▼                                   │
│                   ┌──────────────┐                          │
│                   │  RAM / ROM   │                          │
│                   └──────────────┘                          │
└─────────────────────────────────────────────────────────────┘

Señales de control

La unidad de control genera la señal MAR_LD durante pasos específicos de microcódigo:

  • Estado FETCH: Cargar el valor del PC para leer la siguiente instrucción (MAR_LD=1 en flanco de subida de CLK)
  • Estado EXECUTE: Cargar la dirección del operando para operaciones de memoria (MAR_LD=1 en flanco de subida de CLK)

La señal CLK es el reloj del sistema compartido con todos los componentes síncronos.

Notas técnicas

  • El MAR habilita el direccionamiento completo de 8 bits (256 bytes) en comparación con la salida de dirección de 4 bits del registro de instrucciones.
  • Las entradas de bus permiten que múltiples fuentes en tercer estado se conecten sin multiplexación explícita.
  • El disparo de reloj por flanco de subida garantiza transiciones de dirección limpias sin glitches.
  • Las salidas siempre se conducen para mantener un bus de dirección estable durante el acceso a memoria.
  • El MAR debe cargarse antes de afirmar las señales de lectura/escritura de memoria.
  • El retardo de propagación debe tenerse en cuenta en diseños críticos de temporización.
  • La entrada de reloj (CLK) sincroniza el MAR con otros componentes de la CPU.

Componentes relacionados

  • Contador de programa (PC): Fuente primaria de direcciones durante la búsqueda de instrucciones.
  • Registro de instrucciones (IR): Proporciona direcciones de operandos para operaciones de memoria.
  • RAM: Memoria de acceso aleatorio direccionada por las salidas del MAR.
  • ROM: Memoria de solo lectura direccionada por las salidas del MAR.
  • Unidad de control: Genera la señal LD en los momentos apropiados.
  • Bus de datos: Bus separado para la transferencia de datos hacia/desde la memoria.
  • Buffer en tercer estado: Se usa para controlar diferentes fuentes de dirección hacia las entradas del MAR.

school Ruta de Aprendizaje

arrow_back Requisitos Previos

arrow_forward Siguientes Pasos

help_outline Preguntas Frecuentes

¿Qué es el MAR?

El Registro de Dirección de Memoria contiene la dirección de la ubicación de memoria a acceder. Se conecta al bus de direcciones y selecciona la ubicación de memoria.

¿En qué se diferencian MAR y PC?

El PC contiene la dirección de la SIGUIENTE instrucción. El MAR contiene la dirección para CUALQUIER acceso a memoria (búsqueda de instrucción, lectura de datos o escritura de datos).

play_arrow Ejecutar Circuito en Vivo

Ver Otros Componentes