PREVIEW
Memory Address Register (MAR)

Memory Address Register (MAR)

Advanced signal_cellular_alt Advanced schedule 22 min

Interactive Circuit

Speicheradressregister (MAR)

Übersicht

  • Zweck: Das Speicheradressregister (MAR, Memory Address Register) ist ein 8-Bit-Register, das die Speicheradresse für Lese-/Schreiboperationen hält. Es fungiert als Puffer zwischen den internen Adressquellen der CPU (Befehlszähler, Befehlsregister) und dem externen Speicheradressbus und ermöglicht so ein korrektes Timing und die Isolation der Adresssignale.
  • Symbol: Das MAR wird durch einen rechteckigen Block mit einem 8-Bit-Dateneingangsbus, einem Takteingang (CLK), einem Ladefreigabe-Steuersignal (LD) und einem 8-Bit-Adressausgangsbus dargestellt.
  • DigiSim.io-Rolle: Wesentliche Komponente in CPU-Designs, die die Adressgenerierung vom Speicherzugriff trennt, wodurch ein korrektes Bus-Timing ermöglicht und komplexe Adressierungsmodi in der 8-Bit-Computerarchitektur unterstützt werden.

Speicheradressregister-Komponente

Funktionsbeschreibung

Logikverhalten

Das Speicheradressregister speichert einen 8-Bit-Adresswert an der steigenden Flanke des CLK-Signals, wenn die Ladefreigabe (LD) HIGH ist. Dieser Entwurf entspricht den anderen synchronen Registern in der DigiSim-8-Bit-Computerarchitektur. Nach dem Speichern wird die Adresse kontinuierlich an den Ausgangspins ausgegeben, bis eine neue Adresse geladen wird. Im Gegensatz zu Tri-State-Komponenten treibt das MAR seine Ausgänge stets aktiv.

Funktionstabelle:

CLK-Flanke LD Operation A0-A7-Ausgang
1 Neue Adresse übernehmen D0-D7-Eingangsdaten
0 Halten Vorherige Adresse
- X Halten Vorherige Adresse

Hinweis: ↑ steht für eine steigende Flanke des CLK-Signals LD muss an der steigenden Taktflanke HIGH sein, um neue Daten zu übernehmen Die Ausgänge sind stets aktiv getrieben (kein Tri-State), um einen stabilen Adressbus zu gewährleisten

Eingänge und Ausgänge

  • Eingänge (10 insgesamt):

    • D0-D7[7:0]: 8-Bit-Dateneingänge (Bus-Eingänge) zum Laden einer neuen Adresse. Diese sind als Bus-Eingänge konfiguriert, sodass mehrere Quellen sie über Tri-State-Puffer ansteuern können.
    • CLK: Takteingang (steigende Flanke). Daten werden an der steigenden CLK-Flanke übernommen, wenn LD HIGH ist.
    • LD: 1-Bit-Ladefreigabe-Eingang (pegelempfindlich). Muss an der steigenden CLK-Flanke HIGH sein, um neue Daten zu übernehmen.
  • Ausgänge (8 insgesamt):

    • A0-A7[7:0]: 8-Bit-Adressausgänge, die mit Speicherkomponenten (RAM/ROM) verbunden werden. Diese Ausgänge sind stets aktiv getrieben (kein Tri-State).

Pin-Belegung

Eingangs-Pins (linke Seite):

  • Pins 0-7: D0-D7 (Daten-/Adresseingänge – Bus-Eingänge)
  • Pin 8: CLK (Takt – steigende Flanke)
  • Pin 9: LD (Ladefreigabe – pegelempfindlich)

Ausgangs-Pins (rechte Seite):

  • Pins 0-7: A0-A7 (Adressausgänge zum Speicher)

Konfigurierbare Parameter

  • Anfangswert: Der Adresswert beim Einschalten (typischerweise 0x00).
  • Flankenempfindlichkeit: An der steigenden Flanke des CLK-Signals getriggert (wenn LD HIGH ist).
  • Signallaufzeit: Die Zeit von der steigenden CLK-Flanke bis zu stabilen Ausgängen.

Visuelle Darstellung in DigiSim.io

Das Speicheradressregister wird als rechteckiger Block (128×192 Pixel, 8×12 Raster) dargestellt mit:

  • 8 Dateneingangs-Pins auf der linken Seite (D0-D7) bei relativeY: 0.16667 bis 0.75
  • 1 Takteingangs-Pin (CLK) bei relativeY: 0.83333
  • 1 Ladefreigabe-Pin (LD) bei relativeY: 0.91667
  • 8 Adressausgangs-Pins auf der rechten Seite (A0-A7) bei relativeY: 0.25 bis 0.83333

Die Komponentenbeschriftung „MAR" wird in der Mitte angezeigt, mit „ADDR" als Hinweis auf seine Rolle als Adressregister. Eingangs-Pins sind als Bus-Eingänge gekennzeichnet, erkennbar an dickeren Anschlusspunkten, die mehrere Tri-State-Treiber aufnehmen können.

Pädagogischer Wert

Schlüsselkonzepte

  • Adresspufferung: Zeigt, wie Adressen für ein korrektes Bus-Timing von ihren Quellen isoliert werden.
  • Flankengetriggertes Latching: Zeigt, wie Daten an Takt-/Steuersignalflanken erfasst werden.
  • Busarchitektur: Veranschaulicht die Trennung von Adress- und Datenbus im CPU-Design.
  • Speicheradressierung: Grundlegendes Konzept der Computerarchitektur.
  • Pipeline-Stufen: Das MAR repräsentiert eine Stufe in der Hol-Decodier-Ausführungs-Pipeline.

Lernziele

  • Die Rolle von Adressregistern bei Speicheroperationen verstehen.
  • Lernen, wie Adresspufferung komplexe Speicherzugriffsmuster ermöglicht.
  • Die Timing-Anforderungen für Setup- und Hold-Zeiten von Speicheradressen erkennen.
  • MAR-Konzepte beim Entwurf von CPU-Speicherschnittstellen anwenden.
  • Verstehen, wie mehrere Adressquellen (PC, IR, ALU) sich einen einzigen Speicheradressbus teilen können.

Anwendungsbeispiele/Szenarien

  • Befehl holen: Der PC-Wert wird vor dem Holen des Befehls aus dem ROM/RAM in das MAR geladen.
  • Daten laden/speichern: Operandenadressen aus dem IR werden in das MAR für Datenspeicherzugriffe geladen.
  • Indirekte Adressierung: Aus der ALU berechnete Adressen werden für zeigerbasierte Zugriffe geladen.
  • Stack-Operationen: Der Stackpointer-Wert wird für Push-/Pop-Operationen geladen.
  • DMA-Operationen: Externe Adressquellen können Werte für direkten Speicherzugriff laden.

Integration in den 8-Bit-Computer

In der DigiSim-8-Bit-Computerarchitektur dient das MAR als zentraler Adresspuffer:

┌─────────────────────────────────────────────────────────────┐
│                     ADRESSQUELLEN                            │
│  ┌────────┐   ┌─────────────────┐   ┌──────────────┐       │
│  │   PC   │   │       IR        │   │     ALU      │       │
│  │ (8-Bit)│   │ (4-Bit-Adresse) │   │ (berechnet)  │       │
│  └───┬────┘   └───────┬─────────┘   └──────┬───────┘       │
│      │                │                     │                │
│      ▼                ▼                     ▼                │
│  ┌───────────────────────────────────────────────┐          │
│  │              TRI-STATE-PUFFER                 │          │
│  │           (vom Steuerwerk gesteuert)          │          │
│  └───────────────────────┬───────────────────────┘          │
│                          │                                   │
│                          ▼                                   │
│                    ┌───────────┐                            │
│                    │    MAR    │◄──── LD (vom Steuerwerk)   │
│                    │  (8-Bit)  │                            │
│                    └─────┬─────┘                            │
│                          │                                   │
│                          ▼                                   │
│                   ┌──────────────┐                          │
│                   │  RAM / ROM   │                          │
│                   └──────────────┘                          │
└─────────────────────────────────────────────────────────────┘

Steuersignale

Das Steuerwerk erzeugt das MAR_LD-Signal in bestimmten Mikrocode-Schritten:

  • FETCH-Zustand: PC-Wert laden, um den nächsten Befehl zu lesen (MAR_LD=1 an der steigenden CLK-Flanke)
  • EXECUTE-Zustand: Operandenadresse für Speicheroperationen laden (MAR_LD=1 an der steigenden CLK-Flanke)

Das CLK-Signal ist der mit allen synchronen Komponenten geteilte Systemtakt.

Technische Hinweise

  • Das MAR ermöglicht eine vollständige 8-Bit-Adressierung (256 Byte) im Vergleich zum 4-Bit-Adressausgang des Befehlsregisters.
  • Bus-Eingänge erlauben es mehreren Tri-State-Quellen, sich ohne explizites Multiplexing zu verbinden.
  • Die Triggerung an der steigenden Taktflanke gewährleistet saubere Adressübergänge ohne Glitches.
  • Die Ausgänge sind stets aktiv getrieben, um einen stabilen Adressbus während des Speicherzugriffs zu gewährleisten.
  • Das MAR sollte geladen werden, bevor Speicher-Lese-/Schreibsignale aktiviert werden.
  • Die Signallaufzeit sollte in zeitkritischen Designs berücksichtigt werden.
  • Der Takteingang (CLK) synchronisiert das MAR mit anderen CPU-Komponenten.

Verwandte Komponenten

  • Befehlszähler (PC): Primäre Adressquelle während des Befehlsholens.
  • Befehlsregister (IR): Liefert Operandenadressen für Speicheroperationen.
  • RAM: Direktzugriffsspeicher, der durch die MAR-Ausgänge adressiert wird.
  • ROM: Festwertspeicher, der durch die MAR-Ausgänge adressiert wird.
  • Steuerwerk: Erzeugt das LD-Signal zu den passenden Zeitpunkten.
  • Datenbus: Separater Bus für den Datentransfer zum/vom Speicher.
  • Tri-State-Puffer: Wird verwendet, um verschiedene Adressquellen auf die MAR-Eingänge zu schalten.

school Lernpfad

arrow_back Voraussetzungen

arrow_forward Nächste Schritte

help_outline Häufig gestellte Fragen

Was ist das MAR?

Das Speicheradressregister enthält die Adresse des Speicherorts, auf den zugegriffen werden soll. Es ist mit dem Adressbus verbunden und wählt den Speicherort aus.

Wie unterscheiden sich MAR und PC?

Der PC enthält die Adresse des NÄCHSTEN Befehls. Das MAR enthält die Adresse für JEDEN Speicherzugriff (Befehlsabruf, Datenlesen oder Datenschreiben).

play_arrow Live-Schaltung ausführen

Weitere Komponenten ansehen