PREVIEW
ROM

ROM

Advanced signal_cellular_alt Advanced schedule 30 min

Interactive Circuit

ROM (mémoire morte)

Vue d'ensemble

  • Objectif : la ROM (Read-Only Memory, mémoire en lecture seule) est un composant de stockage numérique qui contient des données préprogrammées qui ne peuvent pas être modifiées en fonctionnement normal. Elle sert de mémoire non volatile qui conserve son contenu même lorsque l'alimentation est coupée.
  • Symbole : la ROM est représentée par un bloc rectangulaire avec des entrées d'adresse, des entrées de contrôle (Chip Select, Output Enable) et des sorties de données.
  • Rôle dans DigiSim.io : fournit un stockage permanent pour les programmes, les tables de correspondance et les données de référence dans les circuits numériques, essentiel pour implémenter des systèmes nécessitant des données ou instructions fixes.

composant rom

Description fonctionnelle

Comportement logique

La ROM fournit un accès en lecture seule aux données préstockées. Lorsqu'une adresse est appliquée aux entrées d'adresse, la ROM fournit en sortie les données stockées à cet emplacement, à condition que la puce soit activée par ses entrées de contrôle.

Table de vérité :

CS (broche) OE (broche) Adresse (A) Sortie de données Opération
0 (LOW) 0 (LOW) Toute valeur Données à l'adresse Lecture (activée)
0 (LOW) 1 (HIGH) Toute valeur High-Z (désactivé) Sortie désactivée
1 (HIGH) X Toute valeur High-Z (désactivé) Puce désactivée

Note : CS = Chip Select (actif à l'état bas), OE = Output Enable (actif à l'état bas), X = peu importe, High-Z = haute impédance. CS et OE doivent tous deux être à LOW (0) pour que la sortie de données soit active.

Entrées et sorties

  • Entrées :

    • Address[7:0] : entrée d'adresse 8 bits qui sélectionne l'un des 256 emplacements mémoire (A0-A7).
    • CS (Chip Select) : entrée de contrôle 1 bit qui active ou désactive la puce entière (active à l'état bas).
    • OE (Output Enable) : entrée de contrôle 1 bit qui active ou désactive les sorties de données (active à l'état bas).
  • Sorties :

    • Data[7:0] : sortie de données 8 bits représentant le contenu stocké à l'adresse sélectionnée.

Paramètres configurables

  • Taille mémoire : la capacité de stockage totale (par exemple, 256 octets, 1 KB, etc.), déterminée par la largeur d'adresse.
  • Largeur des données : le nombre de bits par emplacement mémoire (typiquement 8, mais peut être 4, 16, 32, etc.).
  • Contenu : les données préprogrammées stockées dans la ROM, chargées lors de la configuration.
  • Temps d'accès : le délai entre l'application d'une adresse et l'apparition de données valides aux sorties.

Représentation visuelle dans DigiSim.io

La ROM est affichée sous la forme d'un bloc rectangulaire avec des entrées étiquetées sur le côté gauche (A0-A7 pour l'adresse, CS pour la sélection de puce, OE pour l'autorisation de sortie) et des sorties de données (D0-D7) sur le côté droit. Le composant indique visuellement son état actif via les valeurs affichées sur ses sorties et les changements de couleur sur les fils de connexion. Les utilisateurs peuvent visualiser et modifier le contenu de la ROM via une boîte de dialogue dédiée.

Valeur pédagogique

Concepts clés

  • Stockage non volatile : démontre comment les systèmes numériques stockent des données permanentes.
  • Adressage mémoire : illustre comment des données spécifiques sont accédées en utilisant des adresses binaires.
  • Hiérarchie mémoire : introduit le concept de différents types de mémoire dans les systèmes informatiques.
  • Signaux de contrôle : montre comment les signaux de sélection de puce et d'autorisation de sortie gèrent le fonctionnement du périphérique.
  • Organisation mémoire : présente l'organisation fondamentale de la mémoire adressable par mot.

Objectifs d'apprentissage

  • Comprendre le rôle du stockage permanent dans les systèmes numériques.
  • Apprendre comment les schémas d'adressage fournissent un accès à des emplacements mémoire spécifiques.
  • Reconnaître les différences entre les divers types de mémoire (ROM vs. RAM).
  • Appliquer la ROM dans les conceptions nécessitant des données constantes comme les tables de correspondance ou le stockage de programme.
  • Comprendre la relation entre l'espace d'adressage, la largeur des données et la capacité mémoire.

Exemples d'utilisation / scénarios

  • Stockage de programme : conservation du firmware ou du code de bootloader dans les systèmes informatiques.
  • Génération de caractères : stockage des données de police pour les systèmes d'affichage.
  • Tables de correspondance : implémentation de fonctions mathématiques via des valeurs précalculées.
  • Machines à états : encodage de transitions d'état complexes dans les systèmes de contrôle.
  • Stockage de microcode : stockage des informations de décodage d'instructions dans les CPU.
  • Données constantes : fourniture de valeurs de référence pour le calibrage ou la configuration.

Notes techniques

  • Les implémentations de ROM incluent la mask ROM (programmée en usine), la PROM (programmable une seule fois), l'EPROM (effaçable aux UV), l'EEPROM et la Flash (effaçables électriquement).
  • Le temps d'accès est un paramètre critique affectant les performances du système, allant typiquement de 45 à 200 ns selon la technologie.
  • Les systèmes modernes implémentent souvent la fonctionnalité ROM en utilisant la mémoire flash ou en chargeant des données du stockage vers la RAM lors de l'initialisation.
  • Dans DigiSim.io, le temps d'accès de la ROM est simulé pour fournir un comportement de calage réaliste.
  • La ROM est particulièrement importante dans les processus d'amorçage où un système a besoin d'instructions initiales avant le chargement depuis d'autres stockages.
  • Signaux de contrôle : CS (Chip Select) et OE (Output Enable) sont tous deux implémentés comme signaux actifs à l'état bas :
    • CS (Chip Select) : lorsque CS = 0 (LOW), la puce est sélectionnée et active. Lorsque CS = 1 (HIGH), la puce est désactivée et les sorties sont en haute impédance.
    • OE (Output Enable) : lorsque OE = 0 (LOW), les tampons de sortie sont activés. Lorsque OE = 1 (HIGH), les sorties sont en haute impédance (trois états).
    • Logique combinée : les données sont fournies en sortie UNIQUEMENT lorsque CS = 0 (LOW) ET OE = 0 (LOW). Si l'un des signaux est HIGH, les sorties sont en haute impédance.
    • Ceci suit les conventions logiques numériques standard pour les composants mémoire et permet à plusieurs périphériques ROM de partager un bus de données commun.

Caractéristiques

  • Configuration des entrées :

    • Entrées d'adresse (typiquement 8 à 20 lignes pour des tailles de ROM allant de 256 octets à 1 Mo)
    • Entrée Chip Select (CS) pour activer/désactiver le périphérique
    • Entrée Output Enable (OE) pour contrôler les tampons de sortie
    • Toutes les entrées compatibles avec les niveaux logiques numériques standard
    • Les lignes d'adresse déterminent quel emplacement mémoire est lu
    • Les entrées de contrôle gouvernent le calage de fonctionnement du périphérique
  • Configuration des sorties :

    • Sorties de données (typiquement 8 bits, mais peut être 4, 16 ou 32 bits)
    • Sorties trois états qui peuvent être désactivées vers l'état de haute impédance
    • Les sorties fournissent les données stockées à l'adresse sélectionnée
    • Capable de piloter les charges numériques standard
    • Habituellement mises en tampon pour une plus grande capacité de pilotage en courant
  • Fonctionnalité :

    • Stocke le code de programme fixe ou les données constantes
    • Non volatile (conserve les données quand l'alimentation est coupée)
    • En lecture seule pendant le fonctionnement normal
    • Le temps d'accès détermine la rapidité avec laquelle les données sont disponibles après changement d'adresse
    • Décode l'adresse pour sélectionner l'un des 2^n emplacements mémoire
    • Fournit la valeur préprogrammée de l'emplacement sélectionné
    • Ne peut pas être écrite pendant le fonctionnement normal
  • Délai de propagation :

    • Temps d'accès d'adresse : 45-200 ns typique
    • Temps d'accès de sélection de puce : 45-200 ns typique
    • Temps d'accès d'autorisation de sortie : 20-100 ns typique
    • Dépendant de la technologie (mask ROM, PROM, EPROM, etc.)
    • Paramètre critique pour le calage du système
    • Peut varier avec la température et la tension
  • Sortance :

    • Pilote typiquement 10-20 charges standard
    • Tampons de sortie conçus pour l'interfaçage de bus
    • Peut inclure une force de pilotage de sortie configurable
    • Habituellement conçue pour piloter les charges de bus standard
  • Consommation :

    • Consommation statique faible à modérée selon la technologie
    • La consommation active augmente avec la fréquence d'accès
    • Consommation en veille lorsque la puce est désélectionnée
    • Modes de gestion de l'alimentation dans les périphériques modernes
    • Consommation significativement plus faible qu'une RAM équivalente
    • Peut offrir des modes de mise hors tension pour la conservation de la batterie
  • Complexité du circuit :

    • Complexité interne élevée (décodeur d'adresse, matrice mémoire, tampons de sortie)
    • Interface externe simple (entrées d'adresse, entrées de contrôle, sorties de données)
    • Varie avec la capacité et la technologie
    • Complexité supplémentaire pour les variantes programmables (EPROM, EEPROM)
    • Les périphériques modernes peuvent inclure des fonctionnalités avancées (correction d'erreur, etc.)

Méthodes d'implémentation

  1. Mask ROM

    • Contenu programmé pendant la fabrication par une couche de masque
    • Plus haute densité et plus faible coût pour la production en grand volume
    • Ne peut pas être modifiée après fabrication
    • Long délai pour les motifs personnalisés
    • Plus efficace pour la production de masse
    • Typiquement utilisée pour les applications fixes en grand volume
  2. PROM (ROM programmable)

    • Programmable une seule fois en utilisant la technologie de fusible ou d'antifusible
    • L'utilisateur peut programmer une fois mais ne peut pas effacer
    • Délai plus rapide que la mask ROM
    • Adaptée aux volumes de production modérés
    • Programmation effectuée avec un programmateur PROM spécial
    • Courante dans les systèmes hérités et les environnements de production
  3. EPROM (PROM effaçable programmable)

    • Peut être effacée à la lumière ultraviolette et reprogrammée
    • Reconnaissable par la fenêtre en quartz sur le boîtier
    • Plusieurs cycles de programmation possibles
    • Temps d'effacement long (typiquement 20-30 minutes)
    • Idéale pour le développement et les petites séries de production
    • Populaire pour les systèmes embarqués et les applications de microcontrôleur
  4. EEPROM (PROM effaçable électriquement)

    • Effaçable et reprogrammable électriquement
    • Effacement et programmation au niveau de l'octet
    • Cycles de programmation limités (typiquement 100 000+)
    • Temps d'écriture plus lent que la RAM
    • Stockage non volatile avec réécriture électrique
    • Courante pour le stockage de configuration et les petits ensembles de données
  5. ROM Flash

    • ROM effaçable électriquement haute densité
    • Effacement au niveau du bloc (plutôt qu'au niveau de l'octet)
    • Capacité plus élevée que l'EEPROM traditionnelle
    • Temps d'effacement et d'écriture plus rapides que l'EEPROM
    • Cycles de programmation limités (100 000 à 1 000 000)
    • Domine les applications embarquées et de stockage modernes
  6. Implémentation FPGA/ASIC

    • Implémentée comme des tables de correspondance ou des blocs ROM dédiés
    • Configurable au moment de la conception ou de l'initialisation
    • Optimisée pour les exigences spécifiques de l'application
    • Économe en ressources dans la logique programmable moderne
    • Peut être combinée avec une logique de traitement
    • Permet des mises à jour sur le terrain lorsqu'elle est implémentée en logique reprogrammable
  7. ROM émulée

    • Fonctionnalité ROM implémentée avec RAM et logique d'initialisation
    • Contenu chargé depuis le stockage externe au démarrage
    • Permet des mises à jour faciles tout en maintenant une interface de type ROM
    • Courante dans les systèmes basés sur microprocesseur
    • Combine la flexibilité de reprogrammation avec la vitesse d'accès de la RAM
    • Techniques de Shadow ROM pour l'amorçage du système

Applications

  1. Stockage de bootloader

    • Stockage BIOS/UEFI dans les ordinateurs
    • Code de démarrage des microcontrôleurs
    • Chargeur de programme initial
    • Routines d'initialisation système
    • Procédures d'auto-test
    • Stockage de séquence d'amorçage
  2. Stockage de firmware

    • Noyaux de systèmes d'exploitation
    • Pilotes de périphériques
    • Stockage de programme de contrôle
    • Logiciel de système embarqué
    • Implémentation d'algorithmes fixes
    • Routines de contrôle système
  3. Tables de correspondance

    • Valeurs de fonctions trigonométriques
    • Jeux de caractères et polices
    • Palettes de couleurs
    • Tables de conversion
    • Coefficients d'algorithmes
    • Approximations de fonctions
  4. Stockage de microcode

    • Décodage d'instructions CPU
    • Interprétation d'instructions complexes
    • Algorithmes de traitement de signal
    • Contrôle de séquence fixe
    • Expansion d'instructions
    • Encodage de machine à états
  5. Générateurs de caractères

    • Motifs de caractères ASCII/Unicode
    • Polices d'affichage
    • Jeux de symboles personnalisés
    • Stockage d'éléments graphiques
    • Bibliothèques d'icônes
    • Génération de motifs d'affichage
  6. Stockage de données constantes

    • Paramètres de configuration
    • Constantes de calibrage
    • Données de référence fixes
    • Clés et identifiants de sécurité
    • Numéros de série et identifiants
    • Informations de licence
  7. Traitement numérique du signal

    • Coefficients de filtre
    • Constantes de transformée de Fourier rapide
    • Formes d'onde audio
    • Reconnaissance de motifs de signaux
    • Implémentation de filtre numérique
    • Constantes algorithmiques

Limitations

  1. Inflexibilité

    • Le contenu ne peut pas être modifié pendant le fonctionnement normal
    • Les mises à jour nécessitent un remplacement ou des procédures de programmation spéciales
    • Inadaptée au stockage de données variables
    • Refonte du système nécessaire pour les changements de contenu
    • Inflexible pour les exigences évolutives
    • Défis de contrôle de version pour plusieurs variantes de ROM
  2. Contraintes de temps d'accès

    • Plus lente que la RAM dans la plupart des technologies
    • Le temps d'accès limite les performances du système
    • Peut nécessiter des états d'attente pour les processeurs rapides
    • Mise en cache souvent nécessaire pour les systèmes haute performance
    • Contraintes de calage pour les systèmes haute vitesse
    • Compromis vitesse-consommation dans la conception
  3. Complexité de programmation

    • Équipement spécial requis pour la programmation
    • Procédures complexes pour les variantes effaçables
    • Cycles de programmation limités pour EEPROM/Flash
    • Exigences de vérification de programmation
    • Gestion de protection contre l'écriture
    • Protocoles de programmation spécialisés
  4. Limitations physiques

    • Densité limitée par rapport au stockage moderne
    • Contraintes de taille et de consommation
    • Sensibilité à la température
    • Préoccupations de rétention des données dans le temps
    • Limitations de boîtier
    • Obsolescence des technologies plus anciennes
  5. Facteurs de coût

    • Coût par bit plus élevé que le stockage de masse
    • Économies d'échelle requises pour la mask ROM
    • Coûts de développement pour le contenu personnalisé
    • Dépenses de test et de vérification
    • Investissement en équipement de programmation
    • Gestion des stocks de périphériques préprogrammés

Détail de l'implémentation du circuit

Structure de matrice ROM de base

Organisation de la matrice de cellules mémoire :

graph TB
    AddressInputs[Address Inputs<br/>A0, A1, ...] --> RowDecoder[Row Decoder]
    RowDecoder --> MemoryArray[Memory Cell Array<br/>Programmed Cells]
    MemoryArray --> ColumnDecoders[Column Decoders<br/>& Output Buffers]
    ColumnDecoders --> DataOutputs[Data Outputs<br/>D0, D1, D2, D3, ...]

Composants de la structure :

  • Décodeur de ligne : sélectionne une ligne de cellules mémoire en fonction des entrées d'adresse
  • Matrice de cellules mémoire : matrice 2D de cellules programmables (● = 1, ○ = 0)
  • Décodeurs de colonne : acheminent les données de la ligne sélectionnée vers les tampons de sortie
  • Tampons de sortie : amplifient et pilotent les sorties de données

Fonctionnement : l'adresse sélectionne la ligne → les états des cellules sont lus → les données apparaissent sur les sorties

Exemple : CI EEPROM 28C16

Configuration des broches (EEPROM 2 Ko) :

Groupe de broches Broches Fonction
Adresse A0-A10 Adresse 11 bits (2048 emplacements)
Données D0-D7 Bus de données 8 bits (bidirectionnel)
Contrôle /CE Chip Enable (actif à l'état bas)
Contrôle /OE Output Enable (actif à l'état bas)
Contrôle /WE Write Enable (actif à l'état bas)
Alimentation VCC, GND +5 V et masse

Caractéristiques :

  • Capacité : 2K × 8 bits (2048 octets)
  • Temps d'accès : 150-250 ns typique
  • Cycles d'écriture : 100 000+ cycles d'effacement/écriture
  • Rétention des données : 10+ années
  • Programmation : programmation électrique octet par octet

Composants associés

  • RAM (mémoire vive) : permet à la fois les opérations de lecture et d'écriture à des vitesses comparables
  • PROM (ROM programmable) : ROM programmable une seule fois
  • EPROM (PROM effaçable) : ROM qui peut être effacée à la lumière UV et reprogrammée
  • EEPROM (PROM effaçable électriquement) : ROM qui peut être effacée et reprogrammée électriquement
  • Mémoire Flash : EEPROM haute densité avec effacement par bloc
  • NVRAM (RAM non volatile) : RAM qui conserve les données quand l'alimentation est coupée
  • FRAM (RAM ferroélectrique) : mémoire non volatile utilisant le stockage ferroélectrique
  • Mask ROM : ROM programmée pendant la fabrication
  • Mémoire adressable par contenu : mémoire qui compare l'entrée au contenu stocké
  • Contrôleur mémoire : gère l'accès à la ROM et autres composants mémoire

school Parcours d'apprentissage

arrow_back Prérequis

arrow_forward Prochaines étapes

help_outline Foire aux questions

Qu'est-ce que la ROM ?

La ROM est une mémoire non volatile qui conserve les données sans alimentation. Son contenu est fixe (programmé une fois), utilisé pour les programmes permanents, les tables de correspondance et le code d'amorçage.

En quoi la ROM diffère-t-elle de la RAM ?

ROM : lecture seule, non volatile, contenu permanent. RAM : lecture/écriture, volatile, contenu modifiable. ROM pour le firmware, RAM pour la mémoire de travail.

play_arrow Exécuter le circuit en direct

Voir d'autres composants