SHMARB - Ciclo di Read PD32
T1
T2
MAB
T3
Utilizzo del segnale di WAIT*:
A
• Memorie o periferiche lente
• Memoria condivisa
• Controllore DMA
MRD
DATO
MDB
T1
MAB
T2
TW1
TW2
TW3
T3
A
MRD
MDB
WAIT*
DATO
SHMARB - Ciclo di Write PD32
T1
MAB
T2
T3
A
MWR
DATO
MDB
T1
MAB
T2
TW1
TW2
A
MWR
MDB
WAIT*
DATO
TW3
T3
SHMEM
ADD(21:0)
SHMEMWE
SHMEMOE
SHMEMCE0
WE
OE
RAM0
4M*8
CE
SHMEMD(7:0)
D(7:0)
A(21:0)
WE
SHMEMCE1
OE
SHMEMWE
RAM1
4M*8
CE
16 Mbytes (4M*32)
accessibile a byte , word, longword
SHMEMOE
SHMEMCE0
SHMEMD(15:8)
D(7:0)
SHMEMCE1
SHMEMCE2
SHMEMCE3
SHMEMA(21:0)
SHMEMA(21:0)
ADD(21:0)
WE
SHMEMCE2
OE
RAM2
4M*8
CE
SHMEMD(23:16)
D(7:0)
ADD(21:0)
WE
SHMEMCE3
OE
CE
RAM3
4M*8
D(7:0)
SHMEMD(31:24)
SHMEMD(31:0)
SHMEM Memory Mapping
Spazio di indirizzamento PD32 (byte)
Locazio ne
0x00000000
Spazio memoria
programma PD32
MAB(31:2)
=> SHMEMA(21:0)
0x3C000000
0x000000
0x3C000001
0x000001
................................................
................................................
0x3C3FFFFF
0x3FFFFF
Locazio ne
0xF0000000
SHMEM
shared RAM
(16 Mbytes)
Locazio ne
0xF0FFFFFF
Locazio ne
0xFFFFFFFF
Affinche’ il PD32 acceda in lettura la RAM interna
SHMARB deve “tradurre” gli indirizzi del MAB PD32
in indirizzi validi per la SHMEM
MAB(31:24) si usa per la decodifica
MAB(23:2) si usa per la generazione SHMEMA
inoltre per garantire tutti i tipi di accesso
Mb0
Mb1
Mb2
Mb3
=>
=>
=>
=>
SHMEMCE0
SHMEMCE1
SHMEMCE2
SHMEMCE3
SHMARB - Encoder
FLAG0
MARKER0(3:0)
FLAG1
MARKER1(3:0)
FLAG2
MARKER2(3:0)
FLAG3
MARKER3(3:0)
PDEN(1:0)
PDEN = i abilita l’accesso del PD32i alla SHMEM
Architettura progetto SHMARB
Memoria
PD32-0
PD32-0
MDB-0
MAB-0
MCB-0
Encoder
MARKER
counter
Internal
Clk
SHMARB
Memoria
PD32-3
PD32-3
MDB-3
MAB-3
MCB-3
SHMEMA
SHMEMD
SHMEMC
SHMEM
(4M*32)
Blocchi funzionali unita’ SHMARB
• SHMEM INTERFACE
- gestione segnali SHMEM
SHMEMA
SHMEMD
SHMEMCEi,SHMEMWE,SHEMEMRD
• PD32 DECODING
- decodifica “memory mapping” MAB(31:24),MWR,MRD
- generazione flag richiesta accesso inizio (MEMREQ-i)
• SCO
- gestione timing flag (FLAG-i)
- generazione marker temporali
- gestione linee di WAIT*-i
- gestione abilitazione accesso SHMEM
Protocollo SHMARB
PD32
1) Inizio ciclo di accesso di uno piu’ PD32
SHMARB
(al reset la SHMEM e’ libera)
2) Memoria libera
3) Generazione flag richiesta di accesso (MEMREQ-i)
e MARKER temporale (MARKER-i(3:0))
Inizio ciclo di accesso di uno piu’ PD32
4) Lettura Encoder ed abilitazione di un PD32
all’accesso con eventuale gestione del WAIT
per gli altri.
Durante l’accesso di un PD32 devo garantire il
punto 3 per gli altri PD32 e conseguente generazione
WAIT states
5) Alla fine del ciclo di accesso:
- Se non ho richieste attive (MEMREQi)
torno al punto 2
- Se ho richieste attive torno al punto 4
Protocollo SHMARB
RESET
NON ci sono richieste di accesso
SHMARB
MEM
FREE
(al reset la SHMEM e’ libera)
2) Memoria libera
Richiesta di accesso
Ciclo R/W finito e
NON ci sono richieste
di accesso
READ
ENC
Ciclo R/W finitoe
ci sono richieste
di accesso
MEM
BUSY
3) Generazione flag richiesta di accesso (MEMREQi)
e MARKER temporale (MARKi(3:0))
4) Lettura Encoder ed abilitazione di un PD32
all’accesso con eventuale gestione del WAIT
per gli altri.
Durante l’accesso di un PD32 devo garantire il
punto 3 per gli altri PD32 e conseguente generazione
WAIT states
5) Alla fine del ciclo di accesso:
- Se non ho richieste attive (MEMREQi)
torno al punto 2
- Se ho richieste attive torno al punto 4
Ciclo R/W in corso
SHMARB Schema a blocchi funzionale
- prima approssimazione MRD-0,MWR-0,Mb-0(3:0)
MDB-0(31:0)
MAB-0(23:2)
SHMEMOE
SHMEMWE
SHMEMCE3
SHMEMCE2
SHMEMCE1
MRD-1,MWR-1,Mb-1(3:0)
MDB-1(31:0)
MAB-1(23:2)
MRD-2,MWR-2,Mb-2(3:0)
MDB-2(31:0)
MAB-2(23:2)
SHMEMCE0
SHMEM
Interface
SHMEMA(31:0)
SHMEMD(31:0)
MRD-3,MWR-3,Mb-3(3:0)
MDB-3(31:0)
MAB-3(23:2)
WAIT*-i
ENABLE-i
MRD-0,MWR-0
MAB-0(31:24)
MRD-1,MWR-1
MAB-1(31:24)
MRD-2,MWR-2
MAB-2(31:24)
MRD-3,MWR-3
MAB-3(31:24)
MEMREQ-i
PD32
Decoding
Mem Map
Dec.
SCO
MARKER
Internal
CLK
Encoder
SHMARB - SHMEM INTERFACE
Segnali di controllo
ENABLE-0
ENABLE-0
ENABLE-0
MWR-0
MRD-0
Mb-0(3:0)
ENABLE-1
ENABLE-1
ENABLE-1
MWR-1
MRD-1
Mb-1(3:0)
ENABLE-2
SHMEMWE
ENABLE-2
SHMEMOE
ENABLE-2
MWR-2
MRD-2
Mb-2(3:0)
ENABLE-3
ENABLE-3
ENABLE-3
MWR-3
MRD-3
Mb-3(3:0)
SHMEMCE(3:0)
SHMARB - SHMEM INTERFACE
Address e Data Bus
ENABLE-0
MAB-0(23:2)
ENABLE-1
MAB-1(23:2)
ENABLE-2
MAB-2(23:2)
Questa logica va ripetuta 4 volte
ENABLE-3
MAB-3(23:2)
ENABLE-i
MWR-i
MDB-i (31:0)
ENABLE-i
MRD-i
AND
SHMEMD(31:0)
AND
SHMEMA(21:0)
SHMARB - PD32 DECODING
Generazione MEMREQ-i
MAB-i (24)
MAB-i (25)
MAB-i (26)
MAB-i (27)
NOR
Decodifica MAB(31:24) = 0xF0
MAB-i (28)
MAB-i (29)
MAB-i (30)
MAB-i (31)
MWR-i
MRD-i
AND
AND
MEMREQ-i
OR
Questa logica e’ ripetuta 4 volte per i che va (0..3)
SHMARB - SCO (MEMREQ-i timing)
Fine ciclo di accesso
Internal CLK
MEMREQ-i (MRD or MWR)
FLAG-i
MARKER-i
PDEN(1:0)
i- abilitato
CLKEN
ENABLE-i
WAIT*-i
ENWAIT*
MEM FREE
READ ENC
MEM BUSY
SHMARB - SCO
- gestione timing flag (FLAGi)
- generazione marker temporali
MEMREQ-3
D3
Q3
FLAG-3
MEMREQ-2
D2
Q2
FLAG-2
MEMREQ-1
D1
Q1
FLAG-1
MEMREQ-0
D0
Q0
FLAG-0
CLK
MARKER
REGISTERS
CLK CL
RESET
D(3:0) Q(3:0)
MARKER
COUNTER
FLAG-0 CLK
Q(3:0)
CLK
CLK
MARKER-0(3:0)
D(3:0) Q(3:0)
MARKER-1(3:0)
FLAG-1 CLK
D(3:0) Q(3:0)
FLAG-2
MARKER-2(3:0)
CLK
D(3:0) Q(3:0)
FLAG-3 CLK
MARKER-3(3:0)
SHMARB - SCO
- gestione abilitazione accesso SHMEM (ENABLE-i)
FLAG-0
MARKER-0(3:0)
FLAG-1
MARKER-1(3:0)
FLAG-2
MARKER-2(3:0)
FLAG-3
MARKER-3(3:0)
FLAG0
MARKER0(3:0)
FLAG1
MARKER1(3:0)
FLAG2
PDEN(1:0)
MARKER2(3:0)
FLAG3
MARKER3(3:0)
CLKEN
D3
Q3
Q3
D2
Q2
Q2
D1
Q1
Q1
D0
Q0
Q0
CLK CL
RESET
MEMFREE* e’ generato dalla macchina
a stati quando non ci sono trasferimenti
in corso e lo uso per tenere i bus di SHMEM
ad un valore inattivo
Q3
MEMFREE*
AND
Q2
MEMFREE*
AND
Q1
MEMFREE*
AND
Q0
MEMFREE*
AND
ENABLE-3
ENABLE-2
ENABLE-1
ENABLE-0
SHMARB - SCO
- gestione WAIT states
FLAG-3
ENWAIT*
ENABLE-3
WAIT*-3
OR
FLAG-2
ENWAIT*
ENABLE-2
WAIT*-2
OR
FLAG-1
ENWAIT*
ENABLE-1
WAIT*-1
OR
FLAG-0
ENWAIT*
ENABLE-0
WAIT*-0
OR
La SCO asserisce bassa la linea di WAIT-i solo se il PD32-i ha richiesto l’accesso alla SHMEM
e se la macchina a stati ne ne abilita uno diverso da i
SHMARB - SCO
RESET
ACCREQ = 0
MEM
FREE
FLAG-0
FLAG-1
FLAG-2
FLAG-3
OR
ACCREQ
ACCREQ = 1
MEMBUSY = 0 and
ACCREQ = 1
READ
ENC
FLAG-0
ENABLE-0
AND
FLAG-1
ENABLE-1
AND
MEMBUSY
MEMBUSY = 0 and
ACCREQ = 0
MEM
BUSY
MEMBUSY = 1
OR
FLAG-2
ENABLE-2
AND
FLAG-3
ENABLE-3
AND
SHMARB - SCO
Generazione segnali di controllo (CLKEN, ENWAIT, MEMFREE)
CLKEN
ENWAIT*
MEMFREE*
SMREG(1)
SMREG(0)
MEM_FREE
0
1
0
0
0
READ_ENC
1
1
1
0
1
MEM_BUSY
0
0
1
1
0
CLKEN <= SMREG(0).Q
MEMFREE* <= SMREG(1).Q or SMREG(0).q
ENWAIT* <= SMREG(1).Q*
SMREG(0).D <= not(SMREG(1).Q) and not(SMREG(0).Q) and ACCREQ or
SMREG(1).Q and not(MEMBUSY) and ACCREQ
SMREG(1).D <= SMREG(0).Q or
SMREG(1).Q and MEMBUSY
SHMARB - SCO
Logica macchina a stati
SM1Q*
SM0Q*
D
OR
AND
ACCREQ
SM0Q
CLKEN
SMREG(0)
CLK
MEMBUSY*
Q
CLK
Q*
SM0Q*
CL
RESET
AND
SM1Q
SM0Q
D
OR
SM1Q
OR
MEMFREE*
SMREG(1)
MEMBUSY
SM1Q
Q
AND
CLK
RESET
CLK
Q*
CL
SM1Q*
ENWAIT*
Scarica

Shmarb