EMULATORE DI EPROM

 

di Andrea Barbadoro e Paolo Carrer

 

 

 

 

Questo circuito permette di sostituire una eprom in una qualsiasi scheda a microprocessore 8 bit per consentire un rapido test e correzione del firmware sotto sviluppo, senza dover cancellare e riprogrammare ogni volta la eprom reale.


È possibile emulare eprom dalla 2708 (1K) alla 27512 (64K), la selezione è gestita direttamente a livello software dalla dashboard.

Per le eprom a 24 pin (2708, 2716 e 2732) è possibile, spazio permettendo, usare lo stesso connettore DIL a 28 pin, lasciando i 4 pin in alto fuori dallo zoccolo, viceversa servirà cablare un secondo cavo piatto con connettore DIL a 24 pin
Con un cavo piatto di circa 30 cm di lunghezza ho testato il funzionamento con Z80 fino a 4,8 MHz senza notare malfunzionamenti o errori. Non è stato provato a frequenze più alte, eventualmente si può ridurre la lunghezza del cavo piatto.

 

Durante la fase di scrittura della RAM da parte del programma di gestione lato PC è possibile mantenere resettato il microprocessore della scheda sotto sviluppo, per poi venire avviato automaticamente al termine del trasferimento in RAM del codice.


Non è prevista alcuna alimentazione esterna per l'emulatore in quanto viene alimentato direttamente dalla scheda sotto test tramite D1 (o D2 in caso di eprom a 24 pin). Se è necessario mantenere in RAM il codice da testare anche a scheda spenta è necessario aggiungere il diodo opzionale D9, ponticellando anche il jumper SJ1.
Così facendo però si perde l'isolamento galvanico fra il PC e il computer sotto test.

 

Per quanto riguarda il funzionamento circuitale, il tutto è gestito dal microprocessore PIC a bordo che comunica via modulo USB al programma dashboard su PC.
Il PIC riceve dal PC i bytes da scrivere sequenzialmente nella memoria RAM e seleziona l'indirizzo da scrivere tramite i contatori IC2 e IC3. Durante l'operazione si può resetare la CPU esterna tramite le porte NOT OC di IC9
Terminato il caricamento della RAM e sbloccata la CPU, la RAM non è più indirizzata dal PIC ma proprio dal Bus indirizzi del computer sotto test tramite i buffer IC5 e IC6. I dati della RAM invece vengono letti dal sistema sotto test tramite il buffer IC4 e sono accessibili solo in lettura, come una eprom vera.

 

Come buffer si può usare sia una coppia di RAM tipo 62256 in formato DIL stretto (cache PC 486), per un totale di 64K, che un singolo chip da 128K tipo 628128P che verrà gestito in due banchi indipendenti da 64K da commutare in tempo reale da dashboard
In quest'ultimo caso non è necesario montare R3.

 

Il cavo piatto di collegamento va crimpato da un lato su un connettore IDC a 30 pin, lasciando vuoto il pin 1 (usare un cavo a 29 fili, crimpati dal pin 2 al 30).
Dall'altro lato va crimpato il connettore DIL a 28 pin, posizionando il primo filo (proveniente dal pin 2 dell'IDC) sul pin 1 del DIL
Il filo 30 proveniente dall'IDC non va crimpato sul DIL ma va tenuto separato e usato come uscita OC per il controllo Reset della CPU da testare.

Sul connettore a 5 pin per il controllo CPU, oltre al Reset sono disponibili due pin generici di I/O collegati direttamente al PIC, al momento non sono usati.

 

La lista dei componenti:

R1      100K
R2      100K
R3      1K
R4      1K
R5      1K
R6      4K7
R7      100
R8      470
R9      120
R10     10K
R11     4K7
R12     100K
R13     100K
R14     100K
R15     100K
R16     10K
R17     1K
R18     1K
R19     100
R20     100
 
C1      100n
C2      100n
C3      100n
C4      100n
C5      100n
C6      100n
C7      100n
C8      100n
C9      100n
C10     100n
C11     47u 16V
C12     100n
 
CN1     PINHD-1X6
CN2     PINHD-1X5
CN3     PINHD-2X15     EPROM
 
Led1    CPU_RESET    Rosso
Led2    RDY          Verde
 
D1      BAT42
D2      BAT42
D3      BAT42
D4      BAT42
D5      BAT42
D6      BAT42
D7      BAT42
D8      BAT42
(D9)    BAT42
 
IC1     PIC18F14K22
IC2     74HCT590N
IC3     74HCT590N
IC4     74HCT541N
IC5     74HCT244N
IC6     74HCT244N
IC7     62256 low
IC8     62256 high
IC9     74HC05N
(IC10)  628128P
 
OC1     TLP2361
OC2     TLP2361
 
S1      Reset
 
USB1    Modulo con FTDI232M

 

Files scaricabili:

 

 

 

Link al repository GitHub relativo all'emulatore

 

 

 

Alcune foto:

 

Emulatore - Fronte

Emulatore - Retro

Connettore crimpato con filo Reset separato

Connettore DIL 28 pin

Connettore IDC 30 pin

PCB componenti

PCB rame bottom

 

PCB rame TOP

PCB valori componenti