Consideriamo ora un caso leggermente più complesso. Supponiamo di voler creare un banco di memoria formato da una memoria ROM con organizzazione 1k x 1 byte e da tre RAM ciascuna con organizzazione 1k x 1 byte. In questo caso la dimensione della parola rimane invariata (1 byte), mentre si vuole espandere lo spazio degli indirizzi, cioè il numero di parole.
Il banco di memoria conterrà 4 x 1k = 4096 parole e dunque avrà bisogno di 12 linee di indirizzo (essendo 212= 4096) I quattro singoli integrati invece usano 10 bit di indirizzo ciascuno. Supponiamo di voler suddividere lo spazio degli indirizzi nel seguente modo:
Indirizzo iniziale | Indirizzo finale | Integrato | ||||
Decimale | Binario | Esadecimale | Decimale | Binario | Esadecimale | |
0 | 000000000000 | 000 | 1023 | 001111111111 | 3FF | ROM |
1024 | 010000000000 | 400 | 2047 | 011111111111 | 7FF | RAM1 |
2048 | 100000000000 | 800 | 3071 | 101111111111 | BFF | RAM2 |
3072 | 110000000000 | C00 | 4095 | 111111111111 | FFF | RAM3 |
La mappa di memoria corrispondente è questa:
Osserviamo che gli spazi degli indirizzi dei singoli integrati differiscono solo per il valore dei primi due bit (A11 e A10) e precisamente:
A11 |
A10 |
Integrato |
0
|
0 |
ROM |
0 |
1 |
RAM1 |
1 |
0 |
RAM2 |
1 |
1 |
RAM3 |
Possiamo dunque usare un decoder 2:4 per selezionare (tramite l'ingresso chip select, CS, che, se non attivato, manda l'integrato in alta impedenza) uno fra i quattro integrati. Lo schema del banco è il seguente:
Osserviamo che le linee di ingresso (I0-I7) arrivano contemporaneamente a tutti gli integrati. Anche le linee di uscita U0-U7 sono collegate insieme: questo è possibile solo perché il decodificatore abilita un integrato alla volta, lasciando gli altri in uno stato di alta impedenza.
Se per esempio A11=L e A10=L il decoder attiva la linea zero ed abilita la ROM, disabilitando le altre 3 memorie. Invece con A11=L e A10=H viene abilitata RAM1, eccetera.
Si noti che il segnale di ingresso R/W arriva a tutti gli integrati (tranne che alla ROM, che può solo essere letta). Se un integrato non è abilitato, esso non risponde ai comandi di lettura e scrittura.
precedente -
successiva
Sito realizzato in base al template offerto da
http://www.graphixmania.it