# EPROM

In informatica ed elettronica una EPROM (acronimo dell'inglese Erasable Programmable Read Only Memory, lett. "memoria di sola lettura programmabile e cancellabile") è un tipo di memoria informatica di sola lettura cancellabile tramite raggi ultravioletti. Si tratta di un'evoluzione della PROM che, una volta programmata, non può più essere in generale modificata. La EPROM invece può essere totalmente cancellata, per un numero limitato ma consistente di volte, e riprogrammata a piacimento.
L'invenzione, avvenuta nel 1971, è dovuta ad un ingegnere israeliano, Dov Frohman, fuoriuscito dalla Fairchild Semiconductor per unirsi a Moore, Noyce e Grove, fondatori della società Intel, che a loro volta erano usciti dalla Fairchild l'anno prima.
Tali memorie si basano sul transistor ad effetto di campo FAMOS (Floating-gate Avalanche Injection MOS), un tipo di Floating Gate MOSFET a canale p programmabile mediante breakdown a valanga.

## Tipi di EPROM

Sono stati prodotti diversi tipi di EPROM che si differenziano - oltre che per la capacità di memoria disponibile, anche per la velocità (tempo di accesso) e per le tensioni di lavoro e di programmazione. Generalmente ciascun programmatore ha un elenco di chip, divisi per produttore, per automatizzare le operazioni di impostazione ai fini della programmazione, la quale poteva essere effettuata in due modi: trasferire all'EPROM Programmer il file in codice esadecimale residente su floppy o hard disk di un computer tramite un'interfaccia, oppure copiare direttamente il contenuto di una EPROM campione, in una o più EPROM vergini.
Le EPROM con capacità fino a 4096 byte (32768 celle), con sigla commerciale 2732, adottavano un package a 24 pin, interamente occupati dai 12 fili di indirizzo, 8 fili dei dati, 1 di selezione chip, 1 per la programmazione e 2 per l'alimentazione. Per le versioni successive, a partire dal chip siglato 2764, avente capacità doppia (8192 byte per un totale di 65536 celle), si rese necessario impiegare un package a 28 pin, venendo a mancare il pin necessario ad ospitare il tredicesimo filo di indirizzo; più avanti nel tempo con l'aumentare di capacità, anche il package a 28 pin non fu più sufficiente. Il package era unicamente ceramico, dovendo garantire la tenuta stagna della finestra.
A partire dal chip con capacità di 8 Kbyte in poi, alcuni di questi tipi di memoria furono prodotti anche usando la tecnologia CMOS, consentendo una forte riduzione nel consumo di corrente a beneficio anche di una minore produzione di calore.

## Programmazione

L'architettura di una memoria EPROM è simile a quella delle Read Only Memory, dalle quali discende, e si basa sull'elemento di memoria FAMOS, un Floating Gate MOSFET a canale p programmabile mediante breakdown a valanga nella regione di drain al di sotto del gate: applicando una forte corrente tra drain e source, alcuni elettroni caldi riescono a penetrare nel gate flottante grazie al campo elettrico positivo presente nell'ossido generato dall'accoppiamento capacitivo tra Floating-gate e drain. La cella è programmata quando nel gate flottante è presente una carica tale da inibire l'accensione del dispositivo aumentando considerevolmente il valore della tensione di soglia.
Per i primi dispositivi esisteva un metodo per velocizzare la programmazione: nelle specifiche fornite del costruttore sulle temporizzazioni dei segnali è indicato anche il tempo di programmazione, cioè la durata di permanenza della tensione di programmazione sul pin adibito a questa funzione, che è dell'ordine di qualche decina di millisecondi. Dal momento che tale valore è sovrastimato, si adotta un metodo detto adattativo, il quale consiste in due operazioni ripetute più volte: viene fornita la tensione di programmazione per un decimo del tempo standard, quindi viene letta la cella e si ripete il ciclo fino a che la cella non risulta essere programmata, e a questo punto viene fornita tensione di programmazione per un tempo uguale alla somma dei tentativi di programmazione precedenti, ottenendo così la certezza di stabilità del dato scritto. Tale sequenza è gestita in automatico dal firmware dell'EPROM Programmer.

## Cancellazione

Per permettere l'irradiazione ultravioletta, il die della EPROM è posizionato nel package al di sotto di una finestrella trasparente. Nelle prime versioni, la finestra veniva chiusa con una sottile lastrina di quarzo, in seguito fu utilizzato il semplice vetro, impiegando la quantità necessaria a coprire come una lente il foro tondo ricavato nella metà superiore del package ceramico destinato a questo dispositivo. La cancellazione avveniva per mezzo di un attrezzo chiamato EPROM Eraser, una semplice scatola contenente una lampada a raggi UV di tipo UV-C e un temporizzatore elettromeccanico, il quale permetteva di impostare il tempo di irradiazione fino ad un massimo di 45 minuti; gli Eraser più piccoli erano dotati di una lampada in grado di cancellare in un'unica operazione una dozzina di EPROM. La cancellazione consisteva nel portare tutti i bit (celle o locazioni) a valore alto (1), la EPROM a questo punto tornava a essere programmabile. Le EPROM sono ormai da considerare obsolete e non vengono praticamente più usate. Sono state sostituite dalle memorie flash o EEPROM che possono essere cancellate elettricamente senza dover ricorrere ai raggi UV.

## Tipi di EPROM

| Tipo di EPROM | Anno | Dimens — bit | Dimens — byte | Lunghezza (esadecimale) | Ultimo indirizzo (esadecimale) | Tecnologia |
| 1702, 1702A | 1971 | 2 Kbit | 256 | 100 | FF | PMOS |
| 2704 | 1975 | 4 Kbit | 512 | 200 | 1FF | NMOS |
| 2708 | 1975 | 8 Kbit | 1 KB | 400 | 3FF | NMOS |
| 2716, 27C16, TMS2716, 2516 | 1977 | 16 Kbit | 2 KB | 800 | 7FF | NMOS/CMOS |
| 2732, 27C32, 2532 | 1979 | 32 Kbit | 4 KB | 1000 | FFF | NMOS/CMOS |
| 2764, 27C64, 2564 | | 64 Kbit | 8 KB | 2000 | 1FFF | NMOS/CMOS |
| 27128, 27C128 | | 128 Kbit | 16 KB | 4000 | 3FFF | NMOS/CMOS |
| 27256, 27C256 | | 256 Kbit | 32 KB | 8000 | 7FFF | NMOS/CMOS |
| 27512, 27C512 | | 512 Kbit | 64 KB | 10000 | FFFF | NMOS/CMOS |
| 27C010, 27C100 | | 1 Mbit | 128 KB | 20000 | 1FFFF | CMOS |
| 27C020 | | 2 Mbit | 256 KB | 40000 | 3FFFF | CMOS |
| 27C040, 27C400, 27C4001 | | 4 Mbit | 512 KB | 80000 | 7FFFF | CMOS |
| 27C080 | | 8 Mbit | 1 MB | 100000 | FFFFF | CMOS |
| 27C160 | | 16 Mbit | 2 MB | 200000 | 1FFFFF | CMOS |
| 27C320, 27C322 | | 32 Mbit | 4 MB | 400000 | 3FFFFF | CMOS |