PREVIEW
Memory Address Register (MAR)

Memory Address Register (MAR)

Advanced signal_cellular_alt Advanced schedule 22 min

Interactive Circuit

Registre d'adresse mémoire (MAR)

Vue d'ensemble

  • Objectif : le registre d'adresse mémoire (MAR) est un registre 8 bits qui contient l'adresse mémoire pour les opérations de lecture/écriture. Il agit comme un tampon entre les sources d'adresses internes du CPU (compteur de programme, registre d'instruction) et le bus d'adresses externe de la mémoire, permettant la temporisation et l'isolation correctes des signaux d'adresse.
  • Symbole : le MAR est représenté par un bloc rectangulaire avec un bus d'entrée de données 8 bits, une entrée d'horloge (CLK), un signal de contrôle d'autorisation de chargement (LD) et un bus de sortie d'adresse 8 bits.
  • Rôle dans DigiSim.io : composant essentiel dans les conceptions de CPU qui sépare la génération d'adresses de l'accès mémoire, permettant un calage correct des bus et prenant en charge des modes d'adressage complexes dans l'architecture d'ordinateur 8 bits.

composant registre d'adresse mémoire

Description fonctionnelle

Comportement logique

Le registre d'adresse mémoire verrouille une valeur d'adresse 8 bits sur le front montant du signal CLK lorsque l'autorisation de chargement (LD) est HIGH. Cette conception est cohérente avec les autres registres synchrones dans l'architecture d'ordinateur 8 bits de DigiSim. Une fois verrouillée, l'adresse est continuellement appliquée sur les broches de sortie jusqu'à ce qu'une nouvelle adresse soit chargée. Contrairement aux composants trois états, le MAR pilote toujours ses sorties.

Table de fonctionnement :

Front CLK LD Opération Sortie A0-A7
1 Verrouiller nouvelle adresse Données d'entrée D0-D7
0 Maintien Adresse précédente
- X Maintien Adresse précédente

Note : ↑ représente un front montant sur le signal CLK LD doit être HIGH au front montant de l'horloge pour verrouiller les nouvelles données Les sorties sont toujours pilotées (non trois états) pour assurer un bus d'adresses stable

Entrées et sorties

  • Entrées (10 au total) :

    • D0-D7[7:0] : entrées de données 8 bits (entrées bus) pour charger une nouvelle adresse. Elles sont configurées comme entrées bus, permettant à plusieurs sources de les piloter via des tampons trois états.
    • CLK : entrée d'horloge (déclenchée sur front montant). Les données sont verrouillées sur le front montant de CLK lorsque LD est HIGH.
    • LD : entrée d'autorisation de chargement 1 bit (sensible au niveau). Doit être HIGH au front montant de CLK pour verrouiller les nouvelles données.
  • Sorties (8 au total) :

    • A0-A7[7:0] : sorties d'adresse 8 bits qui se connectent aux composants mémoire (RAM/ROM). Ces sorties sont toujours pilotées (non trois états).

Disposition des broches

Broches d'entrée (côté gauche) :

  • Broches 0-7 : D0-D7 (entrées de données/adresse — entrées bus)
  • Broche 8 : CLK (horloge — déclenchée sur front montant)
  • Broche 9 : LD (autorisation de chargement — sensible au niveau)

Broches de sortie (côté droit) :

  • Broches 0-7 : A0-A7 (sorties d'adresse vers la mémoire)

Paramètres configurables

  • Valeur initiale : la valeur d'adresse à la mise sous tension (typiquement 0x00).
  • Sensibilité au front : déclenchée sur front montant du signal CLK (lorsque LD est HIGH).
  • Délai de propagation : le temps entre le front montant CLK et la stabilisation des sorties.

Représentation visuelle dans DigiSim.io

Le registre d'adresse mémoire est affiché sous la forme d'un bloc rectangulaire (128×192 pixels, 8×12 grilles) avec :

  • 8 broches d'entrée de données sur le côté gauche (D0-D7) à relativeY : 0.16667 à 0.75
  • 1 broche d'entrée d'horloge (CLK) à relativeY : 0.83333
  • 1 broche d'autorisation de chargement (LD) à relativeY : 0.91667
  • 8 broches de sortie d'adresse sur le côté droit (A0-A7) à relativeY : 0.25 à 0.83333

L'étiquette du composant « MAR » est affichée au centre, avec « ADDR » indiquant son rôle de registre d'adresse. Les broches d'entrée sont marquées comme entrées bus, indiquées par des points de connexion plus épais qui peuvent accepter plusieurs pilotes trois états.

Valeur pédagogique

Concepts clés

  • Mise en tampon des adresses : démontre comment les adresses sont isolées de leurs sources pour un calage de bus correct.
  • Verrouillage déclenché par front : montre comment les données sont capturées sur les fronts d'horloge ou de signal de contrôle.
  • Architecture de bus : illustre la séparation des bus d'adresses et de données dans la conception de CPU.
  • Adressage mémoire : concept fondamental dans l'architecture des ordinateurs.
  • Étapes du pipeline : le MAR représente une étape dans le pipeline lecture-décodage-exécution.

Objectifs d'apprentissage

  • Comprendre le rôle des registres d'adresse dans les opérations mémoire.
  • Apprendre comment la mise en tampon des adresses permet des schémas d'accès mémoire complexes.
  • Reconnaître les exigences de calage pour la mise en place et le maintien des adresses mémoire.
  • Appliquer les concepts de MAR dans la conception d'interfaces mémoire de CPU.
  • Comprendre comment plusieurs sources d'adresse (PC, IR, ALU) peuvent partager un seul bus d'adresses mémoire.

Exemples d'utilisation / scénarios

  • Lecture d'instruction : la valeur du PC est chargée dans le MAR avant la lecture d'une instruction depuis ROM/RAM.
  • Chargement/stockage de données : l'adresse d'opérande de l'IR est chargée dans le MAR pour l'accès à la mémoire de données.
  • Adressage indirect : les adresses calculées par l'ALU sont chargées pour l'accès basé sur des pointeurs.
  • Opérations sur la pile : la valeur du pointeur de pile est chargée pour les opérations push/pop.
  • Opérations DMA : des sources d'adresse externes peuvent charger des valeurs pour l'accès direct à la mémoire.

Intégration dans l'ordinateur 8 bits

Dans l'architecture d'ordinateur 8 bits de DigiSim, le MAR sert de tampon d'adresses central :

┌─────────────────────────────────────────────────────────────┐
│                     SOURCES D'ADRESSE                        │
│  ┌────────┐   ┌─────────────────┐   ┌──────────────┐       │
│  │   PC   │   │       IR        │   │     ALU      │       │
│  │ (8-bit)│   │ (4-bit address) │   │  (computed)  │       │
│  └───┬────┘   └───────┬─────────┘   └──────┬───────┘       │
│      │                │                     │                │
│      ▼                ▼                     ▼                │
│  ┌───────────────────────────────────────────────┐          │
│  │              TRI-STATE BUFFERS                │          │
│  │         (controlled by Control Unit)          │          │
│  └───────────────────────┬───────────────────────┘          │
│                          │                                   │
│                          ▼                                   │
│                    ┌───────────┐                            │
│                    │    MAR    │◄──── LD (from CU)          │
│                    │  (8-bit)  │                            │
│                    └─────┬─────┘                            │
│                          │                                   │
│                          ▼                                   │
│                   ┌──────────────┐                          │
│                   │  RAM / ROM   │                          │
│                   └──────────────┘                          │
└─────────────────────────────────────────────────────────────┘

Signaux de contrôle

L'unité de commande génère le signal MAR_LD durant des étapes spécifiques du microcode :

  • État FETCH : charge la valeur du PC pour lire l'instruction suivante (MAR_LD=1 au front montant CLK)
  • État EXECUTE : charge l'adresse d'opérande pour les opérations mémoire (MAR_LD=1 au front montant CLK)

Le signal CLK est l'horloge système partagée avec tous les composants synchrones.

Notes techniques

  • Le MAR permet l'adressage 8 bits complet (256 octets) par rapport à la sortie d'adresse 4 bits du registre d'instruction.
  • Les entrées bus permettent à plusieurs sources trois états de se connecter sans multiplexage explicite.
  • Le déclenchement par front montant d'horloge garantit des transitions d'adresse propres sans glitches.
  • Les sorties sont toujours pilotées pour maintenir un bus d'adresses stable pendant l'accès mémoire.
  • Le MAR doit être chargé avant d'activer les signaux de lecture/écriture mémoire.
  • Le délai de propagation doit être pris en compte dans les conceptions critiques en termes de calage.
  • L'entrée d'horloge (CLK) synchronise le MAR avec les autres composants du CPU.

Composants associés

  • Compteur de programme (PC) : source principale d'adresses lors de la lecture d'instructions.
  • Registre d'instruction (IR) : fournit les adresses d'opérande pour les opérations mémoire.
  • RAM : mémoire à accès aléatoire adressée par les sorties du MAR.
  • ROM : mémoire morte adressée par les sorties du MAR.
  • Unité de commande : génère le signal LD aux moments appropriés.
  • Bus de données : bus distinct pour le transfert de données vers/depuis la mémoire.
  • Tampon trois états : utilisé pour aiguiller différentes sources d'adresse vers les entrées du MAR.

school Parcours d'apprentissage

arrow_forward Prochaines étapes

help_outline Foire aux questions

Qu'est-ce que le MAR ?

Le registre d'adresse mémoire contient l'adresse de l'emplacement mémoire à accéder. Il est connecté au bus d'adresses et sélectionne l'emplacement mémoire.

En quoi le MAR diffère-t-il du PC ?

Le PC contient l'adresse de la PROCHAINE instruction. Le MAR contient l'adresse pour TOUT accès mémoire (récupération d'instruction, lecture de données ou écriture de données).

play_arrow Exécuter le circuit en direct

Voir d'autres composants