# ROM

La ROM, acronimo di Read Only Memory, è un tipo di memoria che consente solamente l'operazione di lettura dei dati (da cui il nome, memoria di sola lettura), poiché il suo contenuto viene permanentemente definito in fase di costruzione della memoria stessa. È di tipo non volatile quindi il suo contenuto non viene perso se viene a mancare l'alimentazione.

## Caratteristiche generali

La struttura delle memorie ROM si può schematizzare come un decodificatore di indirizzo e un codificatore realizzato a matrice di diodi, transistor a giunzione bipolare (BJT) oppure transistori MOSFET.
Il codificatore a matrice di diodi, BJT o MOSFET ha a sua volta la struttura di una griglia; ogni cella corrisponde ad una locazione di memoria in cui viene scritto il bit in fase di costruzione.
Le linee di indirizzo vengono inviate al decodificatore di indirizzo: esso ha il ruolo di attivare la riga e la colonna corrispondente alla cella di memoria di cui si vuol leggere il dato.
In alcune memorie non necessariamente occorrono due decodificatori; in quelle a bassa capacità basta un decodificatore di riga.

## Esempi di memorie ROM

Le memorie illustrate qui sotto servono a capire il funzionamento generale di una memoria ROM; quelle in commercio hanno stessi princìpi di funzionamento, ma sono sicuramente più complesse di queste sotto esposte.

### ROM a diodi

La memoria in figura è una memoria a matrice di diodi. Essa è costituita, come illustrato sopra, da un decodificatore di riga a tre bit (l'intera parte di circuito a sinistra, terminante con la serie di porte AND) e dal codificatore a matrice di diodi. È evidente la sua struttura a griglia. Per ognuna delle otto combinazioni delle tre linee di indirizzo A0, A1, A2 in ingresso al decodificatore, si abilita una sola delle otto uscite del decodificatore. I diodi di quella riga trasferiscono il livello logico alto alla rispettiva colonna; i diodi delle altre righe sono interdetti perché l'anodo è sicuramente a potenziale zero. Questa è la tabella della verità della memoria illustrata in figura:
| $A2$ | $A1$ | $A0$ | $Y4$ | $Y3$ | $Y2$ | $Y1$ |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
Come si evince dalla tabella, abilitata una riga, se è presente un diodo si ha un livello logico alto nella colonna corrispondente, se il diodo non è presente, si ha un livello logico basso. Difetto delle memorie ROM a diodi è la lentezza del loro funzionamento.

### ROM a BJT

La memoria in figura è una memoria ROM a transistor BJT. Tutti i collettori dei transistor sono collegati all'alimentazione + Vcc, alle basi arrivano le linee di uscita di un decodificatore (non rappresentato in figura), e infine alcuni emettitori sono collegati alle linee di uscita Y1, Y2, Y3, altri non lo sono. I transistor lavorano come interruttori elettronici, perciò o sono in saturazione (interruttore chiuso), o sono interdetti (interruttore aperto).
In base alla combinazione del prodotto A1xA0, viene attivata una linea in ingresso (riga) alla volta: tutti i transistor con base collegata a quella riga vengono eccitati. Se gli emettitori sono collegati alla colonna corrispondente, essendo i transistor in saturazione, il potenziale +Vcc (corrispondente ad un livello logico alto) viene trasferito alle uscite corrispondenti a ciascun transistor. Per la memoria in figura, - con A1=0 e A0=0 viene eccitata la prima riga; quindi  Y3 Y2 Y1 = 1 1 1 - con A1=0 e A0=1 viene attivata la seconda riga; quindi  Y3 Y2 Y1 = 1 1 0 - con A1=1 e A0=0 viene attivata la terza riga; quindi  Y3 Y2 Y1 = 1 0 1 - con A1=1 e A0=1 viene attivata la quarta riga; quindi  Y3 Y2 Y1 = 0 1 1 In fase di costruzione di una memoria ROM a BJT l'atto di collegare o meno l'emettitore di un transistor alla colonna corrispondente equivale quindi a mettere o meno un diodo in una memoria ROM a matrice di diodi. Le memorie ROM a BJT, a differenza di quelle a matrice di diodi, hanno una maggior velocità di funzionamento.