Les EPROMs

Introduction
Principe de fonctionnement
Brochages et utilisation
Mettez des EPROMs dans vos montages !

Introduction

Lorsque l'on aborde l'électronique, on a souvent pour habitude de distinguer deux domaines différents : l'électronique analogique et l'électronique numérique. La deuxième discipline a connu un essor considérable depuis les années 70; aujourd'hui, l'électronicien a à sa disposition tout un panel de composants numériques les plus variés, allant des portes logiques les plus simples jusqu'au composants programmables, tel les mémoires, les cartes à puce, ou encore les microcontrôleurs.

Il est intéressant de constater que pour quelques dizaines de francs nous avons la possibilité de mettre dans nos montages l'équivalant d'un micro ordinateur d'il y a vingt ans. Néanmoins, si la miniaturisation et la baisse des coûts de production ont permis ce genre de prouesses, il n'en demeure pas moins que l'usage de tels composant dans ses montages nécessite un certain outillage et savoir-faire.
Dans cette partie, je vais vous expliquer le fonctionnement et l'utilisation des mémoires mortes, les EPROM. Utiliser ces composants constitue une bonne transition du monde de l'électronique classique au monde des microcontrôleurs. En effet, sans nécessiter un outillage et des compétences particulières, les EPROM peuvent déjà résoudre un certain nombre de problèmes, et - ce qui n'est pas de refus - introduire quelques concepts propres à la logique programmable.

Ainsi, vous verrez dans cette page que l'emploi de ces composants est fort simple. En consultant la rubrique montages de mon site vous pourrez vous construire un programmateur bon marché et vous verrez qu'utilisez une EPROM dans un montage permet de simplifier sa conception sans pour autant recourir aux microcontrôleurs.

Principe de fonctionnement

D'abord, commençons par définir ce qu'est une mémoire morte.

Une mémoire morte est un composant où l'on stocke des données de manière définitive, pour ensuite les lire. En effet, contrairement à une mémoire vive (RAM), une mémoire morte (ROM) ne peut être écrite qu'une seule fois. De plus, cette opération d'écriture ne s'effectue pas dans le montage où on utilisera la ROM, mais dans un outil appelé programmateur. Une fois la ROM programmée, on la place dans le montage, où elle est destinée à être lue.

On peut comparer une mémoire morte à un CD-R, qui n'est inscriptible qu'une fois.

En fait, les EPROMs peuvent être écrites plusieurs fois, mais on les considère comme des mémoires mortes, car pour réécrire dans une EPROM, il faut la sortir du montage, la mettre dans un effaceur qui effacera tout son contenu, la réécrire dans le programmateur, puis enfin la remettre dans le montage.

On peut comparer une EPROM à un CD-RW.

En effet, contrairement à une ROM, une RAM peut être lue et écrite au sein même du montage, et on peut y écrire sans avoir à l'effacer entièrement.

Nous venons de voir qu'une EPROM est un conteneur de données, qui peut être écrite dans un programmateur, puis placée dans un montage pour y être lue. Mais comment cela se passe du point de vue électronique ? Comment une EPROM se branche ?

Ci dessous j'ai représenté le schéma générique d'une EPROM :


En général, "m" vaut 1, 4, 8 ou 16. Par exemple, avec n=12 et m=8, on a une mémoire de 32768 bits = 8 * 4096 bits, soit une mémoire de 4Ko (un octet équivalant à un groupe de 8 bits !).

On distingue trois ensembles de broches :

- les 'n' lignes d'adresses
- les 'm' lignes de données
- les quatre lignes de 'contrôle' :
- VPP : Tension de programmation
- PP : Impulsion de programmation
- /CE : Validation de la puce
- /OE : Validation des sorties


Les quatre lignes de contrôle servent à définir le mode de fonctionnement de la puce. On distingue les modes :
- lecture,
- écriture,
- veille,
- sorties désactivées (haute impédance).

Bien entendu, seul le programmateur utilisera la puce en mode écriture. Les niveaux de tensions à appliquer sur les broches de contrôle correspondant aux différents modes seront vu en détail dans la partie suivante (brochage et utilisation).

Maintenant, je vais vous expliquer comment se passe la lecture et l'écriture de données dans la puce; vous verrez, c'est on ne peut plus simple.

Pour la lecture des données, après avoir mis la puce en mode lecture, il suffit d'appliquer sur les lignes d'adresse le mot binaire correspondant à l'adresse de la zone mémoire que l'on veut lire. Sur les lignes de données, on retrouve alors le code binaire de la zone mémoire.

Par exemple, si je dispose d'une ROM de 32k bits, organisée en 4k octets (n=12, m=8), et que je veux avoir en sortie l'octet numéros 1325, il faut que j'applique 1325 en binaire, ce qui fait 010100101101, sur les lignes d'adresses.


En d'autres termes, en appelant chacune des 12 lignes d'adresse A0, A1, ... A11, je dois appliquer : A0=1, A1=0, A2=1, ..., A11=0. Alors, je récupère sur les huit lignes de données (qui en mode lecture sont des sorties) la valeur en binaire de l'octet numéros 1325.

En ce qui concerne l'écriture, c'est presque la même chose : on met la puce en mode écriture, sur les lignes d'adresses on met en binaire l'adresse de l'octet à programmer. Puis on applique sur les lignes de données l'octet à écrire et on envoi une impulsion d'une durée bien précise sur la broche 'PP'; l'octet est alors écrit dans la mémoire.

Brochages et utilisation

1. Brochages
2. Lecture et écriture
3. Effacement des EPROMs

1. Brochages

Maintenant que nous avons vu comment fonctionne une EPROM, nous allons étudier plus en détail les principales EPROM commercialisées. Je me bornerais à quatre références, dont les caractéristiques sont regroupés dans le tableau suivant :

2732 2764 27128 27256
Taille 32 Kbits
(4 Ko)
64 Kbits
(8 Ko)
128 Kbits
(16 Ko)
256 Kbits
(32 Ko)
N 12 13 14 15
M 8 bits 8 bits 8 bits 8 bits
Boîtier DIL 24 DIL 28 DIL 28 DIL 28

NB : En binaire 1K = 1024 (et non 1000) !


Voici maintenant leur brochage (DIL) :


2. Lecture et écriture

Comme vous le constatez, certaines broches regroupent plusieurs signaux de contrôle; il en résulte quelques différences pour la sélection des quatre modes de fonctionnement. Dans le tableau suivant, je vous indique quelles tensions il faut appliquer à ces broches pour chaque mode de fonctionnement.

MODE 2732 2764 27128 27256
Lecture /CE-PP = 0
/OE-VPP = 0
VPP = +5V
PP = +5V
/CE = 0
/OE = 0
VPP = +5V
PP = +5V
/CE = 0
/OE = 0
VPP = +5V
/CE-PP = 0
/OE = 0
Ecriture /CE-PP = Imp.
/OE-VPP = UP
VPP = UP
PP = Imp.
/CE = 0
/OE = +5V
VPP = UP
PP = Imp.
/CE = 0
/OE = +5V
VPP = UP
/CE-PP = Imp.
/OE = +5V
Veille
sorties [Z]
/CE-PP = +5V
/OE-VPP = +5V
VPP = +5V
PP = +5V
/CE = +5V
/OE = +5V
VPP = +5V
PP = +5V
/CE =+5V
/OE = +5V
VPP = +5V
/CE-PP = +5V
/OE = +5V
Sorties
désactivées
[Z]
Ce mode
n'existe
pas pour
la 2732
VPP = +5V
PP = +5V
/CE = 0
/OE = +5V
VPP = +5V
PP = +5V
/CE = 0
/OE = +5V
VPP = +5V
/CE-PP = 0
/OE = +5V

Pour utiliser l'EPROM en mode lecture, rien de plus simple ! Appliquez les tensions idoines sur les broches de contrôle pour mettre l'EPROM en mode lecture; l'EPROM se chargera alors d'affecter aux lignes de données la valeur de l'octet stocké à l'adresse définie par les lignes d'adresse.

UP corresponds à la tension de programmation. Cette tension UP peut être de 12.5V, 21V ou 25V. En règle générale, cette valeur est inscrite sur la puce.

Imp. corresponds à une impulsion représentée ci-dessous :


Une fois le mode écriture sélectionné, l'écriture d'un octet dans une EPROM se déroule comme suit :
- Présentation de l'adresse sur les lignes d'adresses,
- Présentation de l'octet à écrire sur les lignes de données,
- Impulsion de programmation


Dans la rubrique montages de mon site vous trouverez tous les plans pour réaliser un programmateur d'eprom, ainsi que les logiciels qui vont avec, en freeware.

3. Effacement

Nous avons vu précédemment que les EPROMs pouvaient être écrites plusieurs fois, il suffit en effet de les effacer puis de les programmer à nouveau. Mais comment les effacer ?
Vous avez sûrement remarqué que le boîtier des EPROMs comportaient une fenêtre. Cette fenêtre est en fait une lentille en Quartz; pour effacer l'EPROM, il suffit de l'exposer un certain temps aux Ultraviolets.

Apres un effacement, il faut recouvrir la fenêtre de l'EPROM avec du ruban adhésif opaque. Sinon, l'EPROM risque de s'effacer peu à peu à cause de la lumière du jour !

Attention ! Il faut utiliser des tubes U.V. dont le rayonnement se situe autour de 230 nm; une insoleuse pour circuits imprimés ne convient pas ! On ne trouve pas ces tubes partout, chez Selectronic ils en ont : page 9/34, REF : 21.8374.
Si vous acheter un effaceur d'EPROM, même en kit il vous coûtera plus de 600 Francs; si vous le faites vous-même, il vous reviendra à 150 Francs !

Voici le schéma de câblage d'un effaceur d'EPROM :


Le tube sera d'une puissance comprise entre 4 et 15 Watts (en fait cette puissance importe peu). Le ballast devra avoir une puissance supérieure à celle du tube. Le starter devra être choisi tel que la puissance du tube rentre dans la gamme de puissance du starter. Par exemple, avec un tube 6W, prenez un starter 4W/20W.

Réalisez votre effaceur de manière à ce que le rayonnement U.V. n'en sorte pas; les rayons utilisés sont très dangereux pour les yeux et la peau ! Si vous réalisez votre effaceur avec le tube de Selectronic et de sorte que les EPROMs soient situées à environ 2 cm du tube, le temps requis pour l'effacement sera de 20 minutes.

Si vous savez bien travailler le contre-plaqué, vous pouvez faire comme moi et réaliser un boîtier en deux parties : un châssis avec un tiroir pouvant contenir une dizaine d'EPROMs à effacer. Il faut que les rayons U.V. arrivent directement sur la fenêtre de l'EPROM ; en effet, le verre et le plastique ne laissent pas traverser les U.V. de catégorie C, et c'est justement ceux-ci qui ont un pouvoir 'effaçant'. C'est pour cette raison que la fenêtre des EPROMs est en quartz.

Voici quelques photos de mon effaceur d'EPROMs :

Vue du châssis avec le tiroir fermé :



Le tiroir ouvert :



Le tiroir et le châssis séparés :



Vue du contact de mise en route :



Pour des raisons de sécurité, l'interrupteur marche/arrêt est en fait un contact qui est enclenché lorsque le tiroir est rentré dans le châssis. Ainsi, il devient impossible d'être exposé aux rayons U.V.

Mettez des EPROMs dans vos montages !

Utilisez une EPROM comme :
1. Table de vérité
2. Fonction
3. Mémoire de programme

1. Une EPROM comme table de vérité

A première vue, utiliser une mémoire morte telle quelle dans un montage ne présente pas d'intérêt immédiat. Pourtant, c'est un moyen assez puissant pour réaliser un circuit logique combinatoire complexe !

Un circuit logique combinatoire est un circuit logique où les entrées sont en fonction des sorties, et ce indépendamment du temps.

En effet, une EPROM 27256 peut être considérée comme un circuit logique à 15 entrées et 8 sorties ; le contenu de la mémoire est alors la table de vérité de ce circuit.

Ainsi, si vous avez conçu un montage logique comportant par exemple 7 entrées et 4 sorties, et que pour sa réalisation vous devez utiliser plus de 5 circuits logiques CMOS, utilisez plutôt une EPROM ! Même si seulement 7 lignes d'adresse et 4 sorties sont utilisées, cela vaut la peine :
- coût réduit - une 27256 coûte 25 Francs;
- évolutif, il suffit de réécrire l'EPROM;
- encombrement réduit et tracé du circuit imprimé simplifié.

NB : les lignes d'adresse non utilisées sont à relier à la masse (0V), les sorties non utilisées sont à laisser 'en l'air'.

J'ai procédé comme cela dans mon Interface II pour réaliser l'afficheur hexadécimal, dont le coeur est une 27256 qui reçoit sur ses lignes d'adresse l'octet à afficher et en sortie qui commande des afficheurs 7 segments.

2. Une EPROM comme fonction

Vous connaissez sûrement les convertisseurs numérique analogique. C'est un montage qui reçoit en entrée une donnée numérique (en général huit bits), et qui en sortie délivre une tension proportionnelle à la valeur de l'octet. Ce convertisseur, utilisé avec une EPROM et un compteur réalise un générateur de fonctions bon marché !

Regardez le schéma qui suit :


Le principe est de considérer l'EPROM comme une fonction y=f(x). 'x' est l'octet formé par les huit premières lignes d'adresse (A0 ... A7), et 'y' l'octet formé par les huit lignes de sortie (D0 ... D7). Les trois lignes d'adresse A8, A9 et A10, commandées par des interrupteurs, permettent de choisir l'une des huit 'fonctions' stockées dans l'EPROM (avec trois bits il y a 2^3 = 8 combinaisons différentes).

Le compteur avec son horloge fait varier 'x' de façon périodique entre 0 et 255; le convertisseur numérique analogique transforme l'octet D0 ... D7 en une tension proportionnelle. Comme vous le voyez, il n'y a rien de compliqué !

NB : sur le schéma, les lignes de contrôle, les alimentations, les lignes d'adresse non utilisés et les autres broches du compteur ne sont pas représentés. En effet, ce n'est qu'un schéma de principe, qu'il conviendra de compléter en fonction des composants utilisés. Avec les renseignements que je vous ai donnés, il ne devrait pas y avoir de problème.

3. Une EPROM comme mémoire de programme

La dernière application des EPROMs que je vais vous présenter est en fait la première raison qui motiva leur fabrication !

En effet, le but premier d'une mémoire morte est, dans un système à microcontrôleur, de stocker le programme. La ROM et la RAM se complètent : la RAM, qui peut être lue et écrite, sert à stocker les valeurs des variables manipulées par le programme, tandis que la ROM, non volatile sert à stocker et à conserver le programme lui-même.

Presque tous les microcontrôleurs contiennent au sein de leur boîtier de la ROM et de la RAM. Mais dans certains cas, il est nécessaire de stocker le programme dans une ROM externe. C'est le cas lorsque le programme est trop gros pour la ROM interne, ou encore lorsque la ROM interne est déjà écrite et non réinscriptible, et que l'on veut changer le programme !

Ci dessous je vous indique comment faire fonctionner un microcontrôleur 8051 avec le programme stocké dans une EPROM comme ROM externe.


La broche /EA mise à la masse indique au microcontrôleur qu'il doit chercher l'ensemble du programme dans la ROM externe. Si /EA est mis à +5V, le microcontrôleur va seulement considérer la ROM externe comme une extension de mémoire, ce qui veux dire que le début du programme sera cherché dans la ROM interne.

La lecture d'un octet contenu dans la ROM externe se déroule comme suit :
- l'octet bas (l'adresse est sur 16 bits) de l'adresse est émis sur le port P0;
- une impulsion est envoyée sur ALE pour recopier l'état du port P0 dans le tampon;
- l'octet haut de l'adresse est alors émis sur le port P2;
- alors PSEN active les sorties de l'EPROM et l'octet est lu sur P0.

Il est intéressant de remarquer que le 8051 s'occupe de toutes ces opérations automatiquement, sans que vous n'ayez quoi que ce soit à programmer en plus, si ce n'est de profiter de l'extension de mémoire, qui peut atteindre 64 Ko (soit le contenu d'une EPROM 27512) !

L'utilisation d'une ROM externe monopolise deux des quatre ports que comporte le 8051.

De la même manière, il est possible d'adjoindre à un microcontrôleur de la RAM externe, mais cela sort du cadre de cette page consacrée aux EPROMs !

En conclusion, nous avons vu que les mémoires mortes, qui sont des composants programmables peu coûteux et simples d'emploi, peuvent rendre bien des services, sans pour autant recourir à des usines à gaz "microcontrôlées" ;-)