5 Mappinge decodifica - unibo.itvision.deis.unibo.it › ~smatt › DIDATTICA ›...
Transcript of 5 Mappinge decodifica - unibo.itvision.deis.unibo.it › ~smatt › DIDATTICA ›...
5 Mapping e decodifica
1
Fondamenti di Informatica P2 Ingegneria Meccatronica
Stefano MattocciaDipartimento di Informatica
Università di Bologna
Spazio di indirizzamento• Una CPU emette un certo numero di indirizzi e altri segnali
sui bus di sistema per comunicare con altri moduli
• Il numero di diversi indirizzi emessi dalla CPU costituiscelo spazio di indirizzamento
• Una CPU che emette un indirizzo a 20 bit ha uno spazio diindirizzamento di 1 MB (2^20)
• Una CPU che emette un indirizzo a 32 bit ha uno spazio diindirizzamento di 4 GB (2^32)
• Le prime CPU avevano spazi di indirizzamento molto ridottodi alcuni KB (e.g., 64 KB o meno)
• Oggi è consuetudine avere almeno 32 bit di indirizzo
Un indirizzo per distribuire merci
WR (consegna)RD (preleva)
CPU
Decoder(RC)
I livello
CS_ACS_BCS_CCS_DCS_ECS_FCS_GCS_H
A B C D
E F G H
Un indirizzo per distribuire dati (CPU)
Il decoder di II livello è all’interno di ciascundispositivo (memoria, etc)
BA[K-1..0]
BD[R-1..0]
Condizione di visibilità di un dispositivo da parte del software
• Condizione necessaria affinché un dispositivo fisico(memoria, interfaccia, o altra entità) sia accessibileal software è:
– il dispositivo deve essere mappato in uno spazio diindirizzamento
• Mappare in uno spazio di indirizzamento significa:
– associare al dispositivo una finestra di indirizzi diquello spazio di indirizzamento
• Si accede ai dispositivi mappati in uno spazio diindirizzamento con cicli di bus
Esempio: una CPU con K=3 bit di indirizzo
CPU
3
• Lo spazio di indirizzamentosarebbe di solo 8 elementi
• Supponiamo di avere duedispositivi di memoria, da 4byte: A e B
7
6
5
4
3
2
1
0
111
110
101
100
011
010
001
000Decoder(RC)
I livello
CS_ACS_B
BA[2..0]
• Come facciamo ad attivare una delle due memorie in baseall’indirizzo BA[2..0] emesso dalla CPU?
• Ovvero, come è fatta la rete di decodifica (I livello) che genera i due segnali CS_A e CS_B?
CS_A=BA2CS_B = BA2*
• Questi segnali sarannoinviati a alle memorie(decodifica di I livello)
• Poi, sarà individuatol’elemento all’internodelle memoria selezionata(decodifica di II livello)
7
6
5
4
3
2
1
0
111
110
101
100
011
010
001
000
BA2=1
BA2=0
II livello
Come è fatto un generico dispositivo?
• Un qualsiasi dispositivo (memoria, periferica, etc),comunica con la CPU mediante una interfaccia standard a sx
DISP
CSA[K-1..0].RD
WR
D[R-1..0]?
KBA[K-1..0]
CS_DISP
RBD[R-1..0]
RD
WRCPU
• La comunicazione con l’esterno avviene secondo modalitàche sono specifiche del dispositivo e quindi non standard
• BA[K-1..0] utilizzati (internamente) per decodifica di IIlivello
9
Memorie EPROM
• Memorie non volatili a sola lettura• Capacità a multipli di 2:
32K, 64K, 128K, 256K, etcVPPA16A15A12A7A6A5A4A3A2A1A0D0D1D2GND
VCCPGM*
NCA14A13
A8A9
A11OE*A10CE*
D7D6D5D4D3
EPROM123456789
10111213141516
32313029282726252423222120191817
128K ´ 8
Ai
CE*
OE*
Di
Tce
Tacc
Toe
CE*OE*
DiCella M/bit i
10
Memorie RAM (SRAM)
• Memorie volatili, leggibili e scrivibili
• Capacità a multipli di 4:8K, 32K, 128K, 512K, etc
• DRAM: 1 transistore per bit, maggiore capacità, più lente
Ai
CE*
OE*
I/Oi
Tce
Tacc
Toe
(Out)
ReadCycle
Ai
CE*
WE*
I/Oi
Taw
Twp
(In)
Tds
WriteCycle
NCA16A14A12A7A6A5A4A3A2A1A0I/O0I/O1I/O2GND
VCCA15
NCWE*A13
A8A9
A11OE*A10CE*I/O7I/O6I/O5I/O4I/O3
12345678910111213141516
32313029282726252423222120191817
128K ´ 8
RAM
11
Integrati Notevoli: �244�
1A1
1A2
1A3
1A4
2A1
2A2
2A3
2A4
1Y1
1Y2
1Y3
1Y4
2Y1
2Y2
2Y3
2Y4
EN1* EN2*
74XX244
ENx*
xAi
xYi
Driver 3-state ad 8-bit(strutturato in 2 gruppi di 4 bit)
12
EN*
Bi
DIR
Ai
A1
A2
A3
A4
A5
A6
A7
A8
B1
B2
B3
B4
B5
B6
B7
B8
EN* DIR
74XX245
Integrati Notevoli: �245�
Driver bidirezionale (transceiver) ad 8-bit.
13
Integrati Notevoli: �374�
D0
D1
D2
D3
D4
D5
D6
D7
O0
O1
O2
O3
O4
O5
O6
O7
CK OE*
74XX374
CK
Di
QiOE*
Oi Z
Qi
D
CK
Di
OE*
OiFlip-Flop D
Flip-Flop D edge-triggeredcon uscite 3-state
14
Registro Edge-Triggered con WE e OE
WE
D0
OE
O0
Flip-Flop D
MUX
0
1CK
D Q0
O1
Flip-Flop D
D Q1MUX
0
1
ON-1
Flip-Flop D
D QNMUX
0
1
D1
DN-1
D[0..N-1] WEO
O[0..N-1]
Register File (1 read-port, 1 write-port)
DEC
01
M-1
EN
m Read_Address
DEC
01
M-1
EN
m Write_Address
RD WR
N
Write_DataRead_Data
N
CK
D[0..N-1] WEOE
O[0..N-1]
R0
D[0..N-1] WEOE
O[0..N-1]R1
D[0..N-1] WEOE
O[0..N-1]RM-1
N.B. :M=2m
Mapping di dispositivi da 8 bit in sistemicon bus dati da 8 bit
• Consideriamo dispositivi con porta dati a 8 bit
• Imponiamo (temporaneamente) l�ulteriore condizione che
il parallelismo del bus dati sia di 8 bit
• In queste ipotesi l�assegnamento a un dispositivo di una
finestra di indirizzi in uno spazio di indirizzamento
avverrà in generale nel rispetto delle due seguenti
ulteriori condizioni restrittive:
– la dimensione della finestra di indirizzi associata a
un dispositivo è una potenza di due
– la finestra è composta da indirizzi contigui
17
Dimensione della finestra occupata da un dispositivo - esempi
• Un dispositivo accessibile attraverso il bus occupa in
generale n = 2^K posizioni nello spazio di indirizzamento
• n rappresenta il numero di oggetti di 8 bit
indirizzabili all�interno del dispositivo (es. numero di
celle di memoria nelle RAM ed EPROM)
• K (numero di bit di indirizzo interni al dispositivo) è fortemente variabile al variare del dispositivo:
– In generale nei dispositivi di input/output (i.e., le
interfacce) K è piccolo (e.g., 2)
– in generale nei dispositivi di memoria K è grande (e.g., per una RAM da 128 KB si ha K =17)
Caratteristiche ai morsetti di un dispositivo indirizzabile su una finestra di n = 2^K byte
Qualunque dispositivo da 8 bit con all’interno n = 2^k elementi indirizzabili separatamente ha al suo interno un decoder (II livello) di K variabili con ingresso di enable che seleziona i singoli oggetti indirizzabili
– Read (RD), detto anche Output Enable (OE) è il comando di lettura. Quando RD e CS sono attivi, il dispositivo espone il suBD[7..0] il contenuto della cella indirizzata
– Write (WR), è il comando di scrittura. Quando CS asseritosul fronte di discese di WR è campionato il dato presente su BD[7..0]
DISP
CSA[K-1..0].RDWRD[R..0]
?
KBA[K-1..0]
CS_DISP
8BD[7..0]
RDWR
19
01
00
10
11
0K
32K
8K
8K
8K
8K
Spazio di memoria
8K
Dispositivo di memoria fisico che realizza una zona della memoria logica
0000h
1FFFh
0121314
Indirizzo del blocco
Indirizzo interno al blocco
CS = A14 AND A13*
(Dispositivo da 8K di memoria)
Esempio con 15 bit di indirizzo del sistema
In questo caso
Mapping allineato di dispositivi da 8 bit in sistemi con bus dati da 8 bit
Si consideri un dispositivo D di n=2^K byte indirizzabili
• Si dice che D è mappato all�indirizzo A se gli indirizzi dei byte
di D sono compresi tra A e A+(n-1), cioè se A è l�indirizzo più
basso tra tutti gli indirizzi associati a D
• Si dice che D è allineato se A è un multiplo di n (numero di
bytes interni al dispositivo), cioè se:
(indirizzo più basso di D) MOD n = 0 (condizione di
allineamento)
• Se D è allineato allora i k bit meno significativi di A sono
uguali a zeroEsempi:• Un dispositivo da due byte è allineato se è mappato a un indirizzo pari
• Una dispositivo da 8 byte è allineato se è mappato a un indirizzo il cui valore
codificato in binario termina con 3 zeri
• Un dispositivo da 16 byte è allineato se il suo indirizzo iniziale in codice
esadecimale ha la cifra meno significativa uguale a zero
• Un dispositivo da 64 KB è allineato se il suo indirizzo in codice esadecimale ha
le quattro cifre meno significative uguali a zero
Come individuare univocamente una finestra allineata di 2^K byte in uno spazio di
indirizzamento
• Supponiamo di mappare un dispositivo D di 2^k byte (k=4) a un indirizzo A allineato di uno spazio di indirizzamento di 1 MB (bus di indirizzi di 20 bit):
• Allora possiamo porre A = α ## (0)k (ex F8570) ove α è una
configurazione binaria di 20 - K bit e gli indirizzi associati a D
saranno compresi tra
Amin = A = α ## (0)k e Amax = Amin + 2k -1 = α ## (1)k
(Amin = F8570 – Amax = F857F)
• Dunque, possiamo indicare l�indirizzo Ai dell�i-esimo byte di D
come l�insieme di due campi concatenati:
Ai = α ## i (Ai = F8573)
α individua tra le 2^(20-K) finestre allineate di 2^K byte presenti
nello spazio di indirizzamento, quella su cui è mappato (a = F857)
i individua l�offset nel chip del byte indirizzato (i = 3)
(NB ## è l’operatore simbolico concatenazione)
Campi in cui si suddivide l�indirizzo di dispositivi mappati in uno spazio di
indirizzamento - esempio n. 1
Indirizzamento di un byte di una RAM all�indirizzo 40010H in uno spazio di indirizzamento di 1 MB nell�ipotesi di disporre di un chip da 128 KB mappato all�indirizzo 40000H:
L�indirizzo viene suddiviso in due campi: il primo identifica la finestra di 128 KB in cui è mappata la RAM, il secondo identifica l�offset all’interno della RAM
A0A19 A17 A16
Identificatore dellafinestra di 128K
in cui si trova la RAM
Offset del byte indirizzato all�interno del dispositivo
di 128KB
0 1 0 0 0000 0000 0000 0000
iα
Campi in cui si suddivide l�indirizzo di dispositivi mappati in uno spazio di
indirizzamento - esempio n. 2
Indirizzamento di un byte all’indirizzo 1026H in un dispositivo di I/O di 16 byte mappato all’indirizzo 1020H di uno spazio di indirizzamento di 64 KB
L�indirizzo viene suddiviso in due campi: il primo identificala finestra di 16 B in cui è mappato il dispositivo, ilsecondo identifica l�offset nel dispositivo
A0A15 A4 A3
Identificatore dellafinestra di 16Bin cui si trova D
Offset del byte indirizzato all�interno del dispositivo D
di 16 B indirizzato
0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0
iα
Decodifica degli indirizzi in caso di mapping allineato
• Consideriamo uno spazio di indirizzamento di 1 MB in cui sia mappato un dispositivo di 2^K byte
• Per individuare una cella di indirizzo Ai = α ## i possiamo decodificare tutti i 20 bit che compongono Ai
• Questa decodifica è effettuata ricorrendo alla struttura dei decoder ad albero, con albero di due livelli:
– Il I livello è usato per decodificare α (che identifica la posizione in cui il chip è mappato); per decodificare α dobbiamo decodificare 20-K variabili
– il II livello viene utilizzato per decodificare i (che identifica il byte all�interno del chip, serve un decoder di k variabili)
• Il decoder di II livello si trova all�interno del chip mentre la decodifica di α è a carico del progettista del sistema che può utilizzare un decoder di 20-k variabili con cui si decodifica α
• La decodifica è completa se si utilizzano tutti i 20-K bit perdecodificare α, semplificata se si utilizza solo un sottoinsieme (minimo) dei 20-K bit
0K
32K
8K
8K
8K
8K
Spazio di memoria
8K
Il modulo di memoria fisico è di fatto attivato (mappato) in due differenti zone della memoria logica
0000
1FFF
0121314
Ind. delBlocco
Indirizzo interno al blocco
CS = A14 � A13*
Se gli indirizzi usati da un programma sono quelli che vanno da 16K a 24K (overo da 4000H a 5FFFH) e quelli da 24K a 32K (da 6000H a 7FFF) non sono usati allora è possibile la decodifica incompleta o parziale in quanto la zona 24K-32K non viene mai indirizzata. Espressione CS più semplice
0K
32K
8K
8K
8K
8K
Spazio di memoria
8K
Il modulo di memoria fisico è attivato (mappato) in due differenti zone della memoria logica non consecutive
0000
1FFF
0121314
Ind. delBlocco
Indirizzo interno al blocco
CS = A14 � A13
Decodifica parziale 2/2
Esercizio
Si consideri un sistema con bus indirizzi a 16 bit e bus dati a 8 bit. Scrivere le espressioni di decodificacompleta e semplificata (quella da usare all’esame) neiseguenti casi:
1)Dispositivo di memoria da 8 KB mappato a 0000h
CS_8KB = ?
2)Dispositivo di memoria da 16 KB mappato a 8000h
CS_16KB = ?
3)Entrambi i dispositivi precedenti
CS_8KB = ? CS_16KB = ?
Se c’è un solo dispositivo (casi 1 e 2) il CS è moltoparticolare….
28
BA[15..0]
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
0000h – 0000 0000 0000 0000
FFFFh – 1111 1111 1111 1111
8000h - 1000 0000 0000 0000
BFFFh – 1011 1111 1111 1111 C000h – 1100 0000 0000 0000
CS_8KB = BA15*·BA14*·BA13*
7FFFh - 0111 1111 1111 1111
3FFFh - 0011 1111 1111 11114000h - 0100 0000 0000 0000
1FFFh - 0001 1111 1111 11112000h - 0010 0000 0000 0000
29
BA[15..0]
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
0000h
FFFFh
8000h - 1000 0000 0000 0000
BFFFh – 1011 1111 1111 1111 C000h – 1100 0000 0000 0000
CS_16KB = BA15·BA14*
30
BA[15..0]
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
0000h – 0000 0000 0000 0000
FFFFh – 1111 1111 1111 1111
8000h - 1000 0000 0000 0000
BFFFh – 1011 1111 1111 1111 C000h – 1100 0000 0000 0000
CS_16KB = BA15·BA14*
7FFFh - 0111 1111 1111 1111
3FFFh - 0011 1111 1111 11114000h - 0100 0000 0000 0000
1FFFh - 0001 1111 1111 11112000h - 0010 0000 0000 0000
CS_8KB = BA15*·BA14*·BA13*
Completa
31
BA[15..0]
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
8 KB
0000h – 0000 0000 0000 0000
FFFFh – 1111 1111 1111 1111
8000h - 1000 0000 0000 0000
BFFFh – 1011 1111 1111 1111 C000h – 1100 0000 0000 0000
CS_16KB = BA15
7FFFh - 0111 1111 1111 1111
3FFFh - 0011 1111 1111 11114000h - 0100 0000 0000 0000
1FFFh - 0001 1111 1111 11112000h - 0010 0000 0000 0000
CS_8KB = BA15*
Semplificata
Mapping, read, write e set/reset di un FFD
• Il FFD è un elementare dispositivo di memoria
• Con una CPU, come possiamo:
• scrivere nel FFD
• leggere nel FFD B
• settare o resettare in modo asincrono il FFD
FFDD QA_RES
A_SET
CPUMEMRDMEMWR
BD[7..0]
BA[19..0] ?
Consideriamo il caso di una CPU con bus dati a 8 bit con 20 bit di indirizzo. 64 K di RAM agli indirizzi alti e 64 K di EPROM agli indirizzi bassi
Nelle pagine seguenti assumiamo che i comandi del FFD e del latch siano mappati nei seguenti indirizzi:
CS_READ_FFD -> 80003hCS_WRITE_FFD -> 80002hCS_A_RES_FFD -> 80001hCS_A_SET_FFD -> 80000h
Assumiamo inoltre di utilizzare il segnale BD0 del bus dati per leggere e scrivere il singolo bit di dato.
Ovviamente sarebe possibile utilizzare altri indirizzi non appartenenti alle memorie e anche altri segnali del bus dati (anche diversi per letture e scritture).
Se il testo dell’esame non specifica quali indirizzi usare la scelta è lasciata allo studente.
Spesso, la scelta degli indirizzi semplifica/complica i segnali di decodifica.
FFDD QA_RES
A_SET
CS_A_RES_FFD
CS_A_SET_FFD
CS_READ_FFD
CS_WRITE_FFD
BD0BD0
MEMWR*
CS_RAM_H = BA19·BA18·BA15CS_RAM_H = BA19·BA18·BA15*CS_READ_FFD = BA19·BA18*·BA1·BA0·MEMRD (ist. lettura)CS_WRITE_FFD = BA19·BA18*·BA1·BA0* (ist. scrittura)CS_A_RES_FFD = BA19·BA18*·BA1*·BA0·MEMWR (ist. scrittura)CS_A_SET_FFD = BA19·BA18*·BA1*·BA0*·MEMWR (ist. scrittura) CS_EPROM = BA19*
Vedremo che istruzioni di lettura e scrittura sono (risp.)load byte (LB) e store byte (SB).
0
1
FFD(x8)
D[7..0]Q[7..0]A_RES
A_SET
CS_A_RES_FFD
CS_A_SET_FFD
CS_READ_FFD
CS_WRITE_FFD
BD[7..0]BD[7..0]
MEMWR*
Estensione a 8 bit
0
1
Stessi CS della pagina precedente, cambia solo il numero di bit di dato trasferiti.
8
88
Incrementare il parallelismo dei dati
• Abbiamo considerato fino a ora sistemi con un parallelismo (bus dati) a 8 bit
• Ogni trasferimento richiede un ciclo di bus
• N elementi (byte) -> N cicli di bus
• Sappiamo che le memorie (e non solo) sono lente (vs CPU)
1
i)
ii)
iii)
1
1
1
• Possiamo fare meglio?
• Si, aumentando il parallelismo dei dati
• Riducendo la dimensione di ciascuna memoria
• Trasferendo più dati nello stesso ciclo di bus
¼
¼
¼
¼
i)
i)
i)
i)
IS
• Cosa NON fare?
• Trasferire gli elementi sequenzialmente in memorie piùpiccole
• Elementi contigui vanno su memorie diverse
¼¼¼¼NOil parallelismo di ciascuna memoria è sempre 8 bit!
i)ii)
iii)iv) i)
ii)iii)
iv)
Memoria con processori a parallelismo > 8Il caso dei 16 bit
Indirizzo fisico memorie = Indirizzo logico / 2
Sul piedino A0 della memoria -> BA1 busA1 della memoria -> BA2 bus……………………………..
Memorialogica Memoria
fisicaBUS ALTO BUS BASSO
8
7
6
5
4
3
2
1
0
8
7
6
5
4
3
2
1
0a
b
c
d
e
f
g
h
i
a
c
e
g
i
b
d
f
h
l
Word(3) -> Byteh(1) e Byteb(2) -> 2 letture
Logico Fisico Fisico
Le memorie fisiche vanno sempre in coppiaPer ogni �banco� ci deve essere un ByteEnable
BE0 per banco 7-0 e BE1 per banco 15-8
078bit 15
Indirizzo interno ai chip
Memorie sempre in coppia Ad esempio 2 x 8K = 16 K
(Lettura bytes 3 e 4 che però stanno a indirizzi fisici interni delle memorie differenti)
(d ,e) (d ) (e )
Memorie con bus a 16 bit
BE1 BE01 1 Word1 0 Byte alto (ind. dispari)0 1 Byte basso (ind. pari)0 0 Non possibile
Lo scambio byte alto esterno, byte basso del registro e viceversa avviene all�interno del microprocessore
BA0 del processore non viene generato (di fatto seleziona il banco - al suo posto BE0 e BE1)BA1 del processore connesso ai piedini A0 delle memorieBA2 del processore connesso ai piedini A1 delle memorie etc. etc.
7 015 8
Memorie fisiche
MicroprocessoreRi
MUX
Memorialogica
Memoriafisica
BUS ALTO BUS BASSO
128K
128K
128K
128K
FFFFFh
00000h
64K 64K
070bit 7
40000h
5FFFFh
0000h
FFFFh
Indirizzi interni alle EPROM
2 x 64K = 128K
EPROM1BE1*
EPROM0BE0*
CSEPROM1= BA19* � BA18 � BA17* � BE1
CSEPROM0= BA19* � BA18 � BA17* � BE0
Individua la zona di memoria da realizzare
Le memorie vanno sempre in coppia (16 bit)
La decodifica si fa come se si avesse una memoria a 8 bit. Si usano dispositivi di taglia metà selezionati con BE0 e BE1
Memoria con processori a parallelismo > 8Il caso dei 16 bit
Memorialogica
Memoriafisica
BUS ALTO BUS BASSO
128K
128K
128K
128K
FFFFFh
00000h
64K 64K
070bit 780000h
9FFFFh0000h
FFFFh
Indirizzi interni alle EPROM
2 x 64K = 128K
EPROM1BE1*
EPROM0BE0*
CSEPROM1= BA19 � BA18* � BA17* � BE1
CSEPROM0= BA19 � BA18* � BA17* � BE0
Individua la zona di memoria da realizzare
Memoria con processori a parallelismo > 8Il caso dei 16 bit
BUS BASSO
400054000440003400024000140000
5FFFF5FFFE5FFFD5FFFC5FFFB
Memoria Logica
128K
0 Eprom Pin0 Bus Pin
77
EPROM0BE0 - 64K
FFFFFFFEFFFDFFFC
0003000200010000
BUS ALTO
07
EPROM1BE1 - 64K
FFFFFFFEFFFDFFFC
0003000200010000
Eprom PinBus Pin 15 8
Indirizzi interni della EPROM Indirizzi interni della EPROM
Indirizzi della memoria logica
Memoria con processori a parallelismo > 8Il caso dei 16 bit
Memoria con processori a parallelismo 32 bit
Memorialogica
Memoriafisica
BUS 3BE3
8
7
6
5
4
3
2
1
0 a
b
c
d
e
f
g
h
i
a
e
i
b
f
l
07815
c
g
d
h
162324bit 31
8
7
6
5
4
2
1
0
BUS 2BE2
BUS 1BE1
BUS 0BE0
Indirizzo fisico = Indirizzo logico/4
46
Bus enable con parallelismo 32 bit
BE3 BE2 BE1 BE01 1 1 1 Word 32 bit0 0 1 1 Half word bassa 1 1 0 0 Half word alta 0 0 0 1 Byte 0-7
N.B. BA0 e BA1 del processore non vengono generati (di fatto selezionano uno dei banchi - al loro posto BE0, BE1, BE2, BE3)
BA2 del processore connesso ai piedini A0 delle memorieBA3 del processore connesso ai piedini A1 delle memorie etc. etc.
etc.
0 0 1 0 Byte 15-8
Lo scambio fra i bytes (half word) dei banchi di memoria e i byte (half word) dei registri e viceversa avviene all�interno del microprocessore
47
Memoria logica
Memoria fisica
BUS 3
2MB
2MB
2MB
FFFFFFFFh
00000000h
512K
243140000000h
401FFFFFh00000h
7FFFFh
Indirizzi interni alle EPROM
4 Memorie x 512K= 2MB
EPROM3BE3*
CSEPROM3= BA31*�BA30�BA29*�BA28*�BA27*�BA26*�BA25*�BA24*�BA23*�BA22*�BA21*� BE3
CSEPROM2 = BA31*�BA30�BA29*�BA28*�BA27*�BA26*�BA25*�BA24*�BA23*�BA22*�BA21*� BE2
CSEPROM1 = BA31*�BA30�BA29*�BA28*�BA27*�BA26*�BA25*�BA24*�BA23*�BA22*�BA21*� BE1
CSEPROM0= BA31*�BA30�BA29*�BA28*�BA27*�BA26*�BA25*�BA24*�BA23*�BA22*�BA21*� BE0
Individua la zona di memoria da realizzare
512K
1623
EPROM2BE2*
512K
815
EPROM1BE1*
512K
07
EPROM0BE0*
BUS 2 BUS 1 BUS0
Selezionail BUS
CS espressi in forma vera
Memoria allineata
11 bitdi indirizzosono fissi
Memorie con parallelismo 32 bit
Memoria logica
Memoria fisica BUS 3 - D24-312MB
2MB
2MB
FFFFFFFFh
00000000h
512K
40000000h
401FFFFFh00000h
7FFFFh
EPROM3
DLX
512K
512K
EPROM2
EPROM1
00000h
7FFFFh
00000h
7FFFFh
512K EPROM000000h
7FFFFh
BUS 2 - D23-16
BUS1 - D15-8
BUS 0 - D7-0
BE0
BE1
BE2
BE3
Emessi dal processoreal posto di BA1 e BA0
Memorie con parallelismo 32 bit
Memoria logica(come vista dal
programmatore)
512K
40000000h
401FFFFFh
00000h
7FFFFhEPROM3 Memoria fisica
(come realizzatafisicamente)
dh 00001h
2MB
512K
00000h
7FFFFhEPROM2
cg 00001h 512K
00000h
7FFFFhEPROM1
bf 00001h
512K
00000h
7FFFFhEPROM0
ae 00001h
abcde
40000001h40000002h40000003h40000004h
Indirizzi fisicidei singolidispositivi
------
x
I dati di indirizzi logici consecutivisi trovano su dispositivi diversi
La cella x di indirizzo logico abcdefgh si troverà all�indirizzo fisicoabcdefgh/4 del dispositivo EPROMi ove i è il resto della divisione
abcdefgh
Memorie con parallelismo 32 bit
Esempio: si vuole realizzare nel DLX (bus 32 bit) una memoria RAM da 256K posta all�indirizzo 84000000 (allineata). Campo di indirizzamento 84000000-8403FFFF. Dispositivi: 8 RAM da 32 K (le RAM da 64K statiche NON esistono !!!!)Di fatto quindi vi sono due banchi da 128K l�uno: il primo realizza la memoria da 84000000 a 8401FFFF e l�altro da 84020000 a 8403FFFF. I chip di memoria da 32 K utilizzano al loro interno (fisicamente) come indirizzi di selezione delle celle i pin A14-A0 che sono però collegati rispettivamente agli indirizzi emessi dal DLX BA16-BA2 (ricordiamo infatti che BA1 e BA0 del DLX NON sono emessi e al loro posto vengono emessi BE3, BE2, BE1 e BE0). Si noti il ruolo dell�indirizzo DLX BA17 che divide i due banchi
Primo banco (decodifica non semplificata)CSRAM00= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� .…�BA18*�BA17*) �BE0CSRAM01= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� .…�BA18*�BA17*) �BE1CSRAM02= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� .…�BA18*�BA17*) �BE2CSRAM03= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� .…�BA18*�BA17*) �BE3
Secondo banco (decodifica non semplificata)CSRAM10= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� ….�BA18*�BA17) �BE0CSRAM11= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� ….�BA18*�BA17) �BE1 CSRAM12= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� ….�BA18*�BA17) �BE2CSRAM13= (BA31�BA30*�BA29*�BA28*�BA27*�BA26� ….�BA18*�BA17) �BE3
Ovviamente nel caso di decodifica semplificata (memoria logica incompletamente realizzata fisicamente) le funzioni di decodifica vengono ridotte di complessità. Ove questi due banchi fossero gli unici da realizzare i CS dipenderebbero solo da BA17 e da BEi
Memorie con parallelismo 32 bit