ÉNONCÉ :
1. On veut fabriquer un plan mémoire comprenant :
10 K de PROM entre les adresses D800 et FFFF et
6K de RAM entre les adresses 4000 et
57FF.
adressable par un microprocesseur délivrant 16 bits d'adresse.
Sachant que les boîtiers PROM et RAM contiennent chacun 2K de mots, proposer un schéma utilisant des décodeurs du commerce pour fournir à chaque boîtiers une autorisation à l'état bas.
Nous avons à notre disposition les
décodeurs 74 LS 138, qui est un décodeur 3à8 et le 74 LS 139 qui est un
double décodeur 2à4, indépendants du point de vue de la sélection du
boîtier (Chip Enable).
L'entrée A est l'entrée du LSB (Low State Bit).
*******************************
Comme nous l'avons vu dans l 'énoncé, nous avons à notre disposition des
boîtiers mémoire de 2K ; il nous faut donc 5 boîtiers de 2K pour les PROM et
3 boîtiers de 2K pour les RAM.
1. On commence par faire un tableau
Le processeur délivre 16 bits
d'adresse, donc le tableau ira de A0 à A15.
a. Nous avons les adresses en hexadécimal, donc on se sert de l'adresse
hexadécimale de début pour en connaître l'équivalent en binaire, et on
complète ainsi les bits d'adresse allant de A0 à A15 de la première ligne du
tableau.
Nous savons que 1K = 10 fils d'adresse,
donc 10 bits.
nous avons donc 2K = 11 fils
4K = 12 fils
8K = 13 fils, etc.
Tableau n°1 :
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Adressage RAM R0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000 (début) 1 1 1 1 1 1 1 1 1 1 1 47FF (fin) R1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 4800 (début) 1 1 1 1 1 1 1 1 1 1 1 4FFF (fin) R2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 5000 (début) 1 1 1 1 1 1 1 1 1 1 1 57FF (fin)
PROM P0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 D800 (début) 1 1 1 1 1 1 1 1 1 1 1 DFFF (fin) P1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 E000 (début) 1 1 1 1 1 1 1 1 1 1 1 E7FF (fin) P2 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 E800 (début) 1 1 1 1 1 1 1 1 1 1 1 EFFF (fin) P3 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 F000 (début) 1 1 1 1 1 1 1 1 1 1 1 F7FF (fin) P4 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 F800 (début) 1 1 1 1 1 1 1 1 1 1 1 FFFF (fin)
Espace occupé par 2 K
b. Pour connaître l'adresse de fin en
hexadécimal du boîtier R0 :
Sachant que 2K = 11 fils d'adresse, on force tous les bits allant de A0 à A10
à " 1 ", et on converti alors le chiffre binaire en hexadécimal ;
nous avons donc l'adresse de fin du boîtier de 2K commençant à l'adresse
(4000)16.
Résumé de cette première étape :
On a l'adresse de début du boîtier ;
on la converti en binaire
On force les bits représentant l'espace mémoire du boîtier à " 1
", ici, de A0 à A15 ;
On converti alors le chiffre binaire trouvé en hexadécimal et l'on obtient
l'adresse de fin de la mémoire.
Ensuite, par simple déduction, on écrit l'adresse de début du boîtier
mémoire suivant en incrémentant l'adresse hexadécimale de fin du boîtier
précédent de 1.
( il est absurde d'allouer une même adresse à deux boîtiers, voyons… !)
Et ainsi de suite pour chaque boîtier mémoire…
2. Étude du décodeur
Nous avons un décodeur de " disponible : le 74 LS 138.
Le fonctionnement de ce circuit est
conditionné (le boîtier est validé par…) avec les entrées G1, G2a et
G2b ; pour que le boîtier soit validé, il faut que G1 = " 1 ", G2a =
" 0 " et G2b = " 0 ".
Si le décodeur n'est pas validé, l'état logique de ses sorties sera à
l'état " 1 ".
Fonctionnement du décodeur :
Toutes les sorties sont à " 1
", sauf celle sélectionnée par le mot binaire présent en entrée.
exemple :(CBA) = (000)2, la sortie correspondante sera Y0
(CBA) = (010)2, la sortie correspondante sera Y2
(CBA) = (101)2, la sortie correspondante sera Y5
Dans un premier temps, comme nous avons 2 types de mémoire à faire fonctionner
(RAM et PROM), on va prendre 2 décodeurs 74 LS 138.
Pour la sélection du boîtier, c'est à dire quand activer le décodeur " RAM " ou le décodeur " PROM ", on doit trouver un moyen de les valider séparément. Pour cela, on regarde le tableau effectué en première étape ; on peut voir que :
- Pour la RAM : A15 = 0 A14 = 1 pour
tous les boîtier RAM
- Pour la PROM : A15 = 1 A14 = 1 pour tous les boîtier PROM
On obtient la première étape de
construction du schéma :
La sélection des boîtiers.
On remarque ici, que lorsque A15 est à
" 0 ", le boîtier RAM est sélectionné car il a besoin d'un " 0
" sur G2a pour être validé et que le boîtier PROM n'est pas
sélectionné car un " 0 " sort de la porte logique ET.
Et inversement, lorsque A15 est à " 1 ", le boîtier RAM est inactif
car G2a reçoit un " 1 " au lieu d'un " 0 ", et le boîtier
PROM est validé par un " 1 " sur G1.
Le décodeur possède 3 entrées A (LSB),
B, C
On remarque dans le tableau que les bits d'adresse A13, A12, A11 pourraient
représenter un mot binaire d'entrée, donc permettant de sélectionner une
sortie du décodeur. On choisi donc d'attribuer ces bits d'adresse aux entrées
des deux décodeurs.
Il nous suffit maintenant d'attribuer les boîtier mémoire sur les sorties
correspondantes* au mot binaire présent en entrée du décodeur, en se
référant au tableau. (Mot binaire représentatif d'un boîtier mémoire)
* : Voir fonctionnement du décodeur
expliqué précédemment
Nous obtenons le schéma final suivant
:
Fonctionnement du montage :
1. Données à mémoriser présentes
dans le bus d'adresse A0 - A15,
2. Sélection des décodeurs par les entrées G1, G2a et G2b (RAM ou PROM) par
A15 - A14,
3. Le mot binaire présent aux entrées C, B, A (A13 - A12 - A11) sélectionne
et force la sortie Yn correspondante à " 0 "
4. Cet sortie à l'état " 0 " valide un boîtier mémoire (RAM ou
PROM) actif à l'état bas, et permet ainsi à celui-ci de mémoriser les
données présentes sur le bus d'adresse A0 - A10.
FIN DE LA MÉTHODE