# Logique séquentielle/Mémoires
## Les mémoires

Il existe différentes catégories de mémoires :
* les mémoires informatiques ;
* les mémoires ROM ;
* les mémoires RAM ;
* Les mémoires EPROM et EEPROM ;
* les mémoires Flash sont aussi des composants très utilisés.

## Organisation des mémoires : les bus

Une mémoire est caractérisée par plusieurs bus :
* un bus de données composé de n fils. En général n sera égal à 8, mais ce n’est pas une obligation.
* un bus d'adresses composé de m fils
* et un bus de commande ou de contrôle de taille variable.
Le bus de commande comporte en général 3 signaux : WE (Write Enable) qui permet de choisir entre écriture et lecture, CE (Chip Enable) qui sélectionne le composant et OE (Output Enable) qui sélectionne les sorties 3 états. Bien sûr dans le cas d’une mémoire à lecture seulement (PROM) le signal WE est absent.
* Écriture dans une mémoire : la mémoire dispose d'une entrée notée /WE (Write Enable) qui doit prendre la valeur 0. L'écriture devient possible sur un front de /WE si la mémoire est sélectionnée (/CE = 0).
* Puisque notre bus d'adresse comporte m fils, ils seront notés de $A_{0}$ pour le poids faible à $A_{m-1}$ pour le poids fort.
* Puisque notre bus de données comporte n fils, ils seront notés de $D_{0}$ pour le poids faible à $D_{n-1}$ pour le poids fort.
* Le mot donnée et le mot adresse commencent par la même lettre en anglais (data et address) ce qui laisse penser que la notation anglaise sera identique.
La capacité des mémoires est mesurée en bits ou octets. Pour un bus de données de largeur n (n fils) et un bus d'adresse de largeur m la capacité en bits est définie par :
$C=n\cdot 2^{m}\;\mathrm {bits}$
On divisera cette capacité par 8 pour l'avoir en octets. On utilisera aussi les multiples :
* $1\mathrm {K} =1024=2^{10}$
* $1\mathrm {M} =2^{20}$
* $1\mathrm {G} =2^{30}$

## PROM à diodes

Nous allons décrire le schéma interne d'une petite mémoire à diodes. Son intérêt est qu'elle est suffisamment simple pour qu'on puisse la comprendre à l'aide des connaissances que l’on a acquises jusqu'à présent. On vous déconseille cependant de réaliser cela avec des composants discrets. Prenez plutôt cela comme un schéma de principe, sachant que les diodes seront en fait des transistors qui seront plus ou moins sophistiqués suivant la technologie et surtout si l’on désire que tout ceci soit reprogrammable ou pas.
Voyons un peu de quoi est constitué ce composant :
Nous voyons apparaître un décodeur dont le but est de sortir un zéro sur une des sorties Y$_i$. Chacune des diodes peut être assimilée à un contact électrique (c'est naturellement exact seulement quand cette diode est polarisée pour être passante). Lorsqu'aucune diode n'apparaît au croisement d'une ligne horizontale et verticale, on dira qu'elle a été grillée, et d’un point de vue électrique, elle matérialise l'absence de contact. Remarquez en sortie des commandes trois états (technologie expliquée dans le chapitre suivant).

### Exercice 1

À partir du schéma ci-dessus, on vous demande de donner le contenu de cette mémoire. Les diodes de connexion non représentées sont naturellement grillées
Ainsi vous pouvez nous aider!!!!
Exercice 1'
.Le boitier 2114 est une mémoire vive N MOS de 1Kx4 ayant des broches d’entrée/sortie commune et deux entrées de validation de puce vraie au niveau bas. Dessinez son symbole logique
Exercice 2'
Montrez comment on peut construire un modulo de mémoire 1024x8 à partir de CI de mémoire vive dont la capacité est 1Kx1 qui a des entrées et sorties communes et une entrée de sélection de puce vraie au niveau bas.

## Zones utiles mémoires

Une mémoire peut être modélisée comme un ensemble d'octets indexé par une adresse. Mais il suffit de forcer une des broches d'adresses à 0 ou à 1 pour que seules certaines zones soient accessibles et pas d'autres.
Avant de faire une exercice sur une EPROM, nous allons en rappeler les caractéristiques à partir de sa dénomination.
Par exemple, une 27C256_20 signifie :
* 27=EPROM,
* C=CMOS
* 256=capacité en Kbits,
* 20= temps d'accès en unité 10 ns (ici 200 ns)

### Exercice 2

On considère une mémoire EPROM type 27C256 de 32K octets.
    a) Déterminer la largeur du bus de donnée et le nombre de bits du bus d'adresse.
    b) Calculer le nombre de zones et les adresses de début et fin des zones dans les cas suivants :
   * A14 = 1
   * A13 = 0
   * A12 = 0 et A10 = 1

## Associations de mémoires

En général lorsqu'on ne dispose que de circuits ayant une certaine capacité mémoire et que l’on désire réaliser un espace mémoire de plus grande capacité nous devons faire face à deux problèmes différents :
* étendre la largeur du bus de données ;
* étendre la largeur du bus d'adresse.
Le premier problème est très simple à résoudre comme le montre la figure ci-dessous (partie gauche) et le deuxième un peu plus complexe (partie droite). En fait, malheureusement, on rencontre bien plus souvent le deuxième problème. Intéressant de remarquer que dans ce cas on double la capacité en ajoutant un seul fil d'adresse. Si vous comprenez bien cela, il n'y aura pas de problème pour réaliser le circuit combinatoire de droite.
On montre dans cette figure, à gauche, comment doubler la taille du bus de données et à droite comment doubler la capacité d’un circuit mémoire en en prenant deux mais en gardant la même dimension pour le bus de données.

### Exercice 3

On souhaite constituer un bloc mémoire de 5K octets à partir de blocs élémentaires plus petits de 2K et 1K. Réaliser un schéma de la fonction Choix dans le cas où le bloc commence à l'adresse 0000H.

## Décodage d'adresse

Le décodage d'adresse consiste à sélectionner correctement un ensemble de circuits mémoire pour constituer une mémoire continue ou discontinue. Le principe est identique à l'extension des mémoires, réaliser un circuit de sélection.

### Exercice 4

Nous voulons réaliser une interface mémoire avec un bus de données 8 bits (D7-D0) et un bus d'adresse 16 bits (A15-A0) avec un microprocesseur. Ce microprocesseur gère un signal /WR pour écrire et /RD pour lire. Donner les équations de sélection pour :
* une ROM 8K pour une adresse commençant à 2000H ;
* une ROM 4K pour une adresse commençant à 8000H ;
* une ROM 2K pour une adresse commençant juste après celle de 8k.
Donner les mêmes équations de sélection si on admet la possibilité de voir plusieurs fois le même boîtier dans l'espace mémoire.
| Registres | Les technologies |