MICROPROCESSEURqui se traduirait par d’éventuellesréflexions à ce niveau. On aura comprisqu’il est souvent délicat, pourcela, de connecter un émulateurd’EPROM au système-cible.La dite approche présente un autreinconvénient, il est en effet pratiquementimpossible de programmerce type d’émulateur par le biais d’unprogrammateur d’EPROM classique.Il est bien souvent nécessaire d’utiliserun programme spécifique livréà cet effet avec l’émulateur.L’émulateur présenté ici ne présenteaucun des inconvénients cités plushaut. Il se laisse programmer dansun programmateur d’EPROM et l’implantationde l’ensemble du montagedans le circuit-cible à l’endroitoù se trouve normalement l’EPROMse fait sans la moindre difficulté.L’EPROMNormalement, la programmationd’une EPROM se fait à l’aide d’unprogrammateur d’EPROM. La plupartdes programmateur commencentpar vérifier que le composantqu’on leur « confie » est totalementvide (on parle du test de virginité). Àcet effet, il entreprend la lecture detous les octets et s’assure qu’ils onttous pour contenu la valeur 0xFF. Sice n’est pas le cas, il en déduit quel’EPROM n’est pas vierge, déductionqu’il affiche par le biais d’un messageavant de croiser purement etsimplement les bras.Certains programmateurs modernesdisposent d’une capacité de détecterle type et la marque de l’EPROMque l’on vient de mettre dans le supportFIN (à Force d’Insertion Nulle),Caractéristiques– Émule une 27C256–Peut être programmé par n’importe quelprogrammateur d’EPROM capable de programmerune 26C256–Protection électrique empêchant la lecturede l’identificateur composant (DEVICE-ID)– Se laisse facilement effacer– Compact– Aisé à mettre en oeuvrece qui le met en demeure d’utiliser l’algorithmeet les niveaux de tension de programmationles mieux adaptés. Cette fonctiond’auto-information prend la forme d’uneapplication de la tension de +12 V sur labroche A9 avant de procéder à la lecture decertaines adresses de l’EPROM. Cesadresses additionnelles ne peuvent pas être+5VR3D1A9R4100½D24V7+5VR2A0A1A2A3A4A5A6A7A8A10A11A12A13A1410987654325242123226271 28VPPA0A1A2D0A3IC2 D1A4D2A5EPROM D3A6 HEADERD4A7D5A8 27256D6A9D7A10A11A12A13A14OE CS22 14 2011121315161718192345678911920 C4IC510 100nIC512 18171615141312113EN13EN2G374HCT245+5VR9 1 8x 10k2 3 4 5 6 7 8 920+5VA1228A0A111 D0A21213D1D2IC3A3A415 D3A51617RAMD4D5A6A718 D6 62256A819 D7A9A10A11CSA13A14OE WR22 14 27109876543252421232261A0A1A2A3A4A5A6A7A8A9A10A11A12A13A1433½7V510kC3+5V+5VT1100n20R8R7D34V710kR1S1BS170+5VR6 R510k10kS2EPOELEPCSLEPVPPLEPSV12345678911I0I1I2I3I4I5I6I7I8I9IC4GAL16V810F0F1F2F3F4F5F6F71213141516171819RAMWRLRAMOELRAMCSLLED2LLED1LBUDIRBUGATEL+9V DCK1IC178L05C1100n1k21k2D5 D4+5VC2100n024066 - 11Figure 1. La caractéristique la plus marquante du schéma de l’émulateur est sa simplicité. Les contacts de « IC2 » servent à établir laconnexion de l’EPROM artificielle.11/2002 Elektor9
MICROPROCESSEURprogrammées et sont uniquement sélectéespar l’application d’une tension de +12 V à laligne A9.S’il s’est avéré que l’EPROM est bien vierge, leprogrammateur passe à l’étape suivante, laprogrammation proprement dite. Pour cela oncommence par forcer l’EPROM à l’état de programmationpar la mise de l’entrée V pp à unetension relativement élevée. Le niveau decette tension est fonction du type d’EPROMconcernéet peut varier entre 12, 5 et 21 V.L’étape suivante consiste, dans la plupart descas, par une augmentation de la tension d’alimentationde +5 vers +6 V. Un coup d’oeilsur la partie supérieure de la figure 4 proposéeun peu plus loin.L’application d’un niveau bas à l’entrée CS del’EPROM lorsque cette dernière se trouve enmode de programmation se traduit par la programmationdans l’EPROM des signaux présentssur les lignes de données à l’adressedéfinie par le bus d’adresses. L’applicationd’un niveau bas à l’entrée OE permet la lecturede la donnée présente à l’adresse définieà cet instant. Dans la plupart des cas, un programmateurmoderne vérifie immédiatementaprès la programmation d’un octet que la programmationdu dit s’est faite correctementdans l’EPROM. Si c’est bien le cas, il programmel’octet suivant. La longueur de l’impulsionde programmation est fonction de l’algorithmede programmation utilisé de mêmed’ailleurs que la reprise ou non du cycle deprogrammation au cas où l’octet concernén’aurait pas été programmé correctement.En fonctionnement normal (Vpp et Vcc = 5 V)l’EPROM réagit de façon normale aux signauxCS et OE. Cela signifie que ce n’est quelorsque les signaux CS et OE sont actifs (miseau niveau bas de la ligne correspondante)que le contenu de l’EPROM correspondant àl’adresse appliquée sera placé sur le bus dedonnées.L’électroniqueLe schéma de l’émulateur d’EPROM reproduiten figure 1 ne comporte guère plus de 3 circuitsintégrés, un régulateur, un transistorFET et une paire de LED indicatrices. En cequi concerne IC2 il ne s’agit pas en fait d’uncircuit intégré, mais d’une paire de barrettessécables à 14 contacts qui serviront à établirle contact avec le support destiné à recevoirl’EPROM émulée par la présente électronique.IC3 est un circuit de RAM (Random AccessMemory) du type 62C256. La liste des com-Figure 2. Listage du programme présent dansIC4, la GAL.*IDENTIFICATION024066;*TYPEGAL16V8;*PINS% Pin-assignment for input signals %EPVP = 8, % Detection of 5V supply %/EPVPP = 3, % Low active detection of VPP > 12V %/EPOE = 1, % Input for /OE from EPROM-socket %/EPCS = 2, % Input for /CS form EPROM-socket %/SW1 = 9, % Input for switch S1 %/SW2 = 11, % Input for switch S2 %% Pin-assignment for output signals %/RAMCS.t = 15, % output for /CS of RAM IC3 %/RAMOE.t = 14, % output for /OE of RAM IC3 %/RAMWR.t = 13, % output for /WR of RAM IC3 %/BLANK.t = 16, % BLANK-state output for LED D5 %/PROGRAM.t = 17, % PROGRAM-detect output for LED D4 %/BUGATE.t = 19, % output for /G of buffer IC 5 %BUDIR.t = 18; % output for DIR of buffer IC 5 %*BOOLEAN-EQUATIONSRAMCS.e = VCC; % These lines make sure that all used %RAMOE.e = VCC; % output-lines of the GAL are %RAMWR.e = VCC; % constantly driven %BLANK.e = VCC;PROGRAM.e = VCC;BUGATE.e = VCC;BUDIR.e = VCC;% Switch to BLANK-state is S1 is pressed and hold this state %% Until the EPROM programmer wishes to program the EPROM %% OR the user wishes to switch to normal operation by pressing %% S2 %% This signal also drives LED D5 to indicate the BLANK-mode %BLANK = BLANK*/PROGRAM*/SW2+SW1 ;% Detection of a programming pulse to drive LED D4 %PROGRAM = EPVPP*EPCS*/EPOE;% CS for the RAM : Continuous during programming, else equal %% to CS on the ROM %% Only active during presence of external power to save the %% battery %RAMCS= EPVPP*EPVP+/EPVPP*EPCS*EPVP;% OE for the RAM : During programming if OE on the ROM is %% active AND Cs of the ROM is inactive %RAMOE= EPVPP*EPOE*/EPCS + /EPVPP*EPOE*/BLANK;% WR for the RAM : During programming if ROM-OE is inactive %% AND ROM-CS is inactive, else if in BLANK-mode AND ROM-OE %% is active. This means that reading while in blank-mode %% causes the RAM to be written. Pull-ups make sure that the %% code 0xFF will be written %RAMWR= EPVPP*EPCS*/EPOE + /EPVPP*BLANK*EPOE;% The DIR-signal for the 74HCT245. When this pin is active, %% Data is transferred from the socket to the RAM-IC %% Otherwise, the datapath is FROM the RAM to the socket %BUDIR = EPVPP*/EPOE;% The GATE-signal for the 74HCT245. If it is active (low) %% the drivers are active, otherwise the A and B pins are %% in High-Z state %% It has to be active even in the BLANK-mode, so it wil force%% 0xFF on the external databus during blank-check! %% BUGATE is only active when external power is supplied to %% save power from the battery whenever the device is not %% required to be active %BUGATE=EPVP*EPVPP*EPOE + EPVP*EPVPP*EPCS + EPVP*/EPVPP*EPOE;*END10 Elektor 11/2002