Title: Macchina a stati finiti DMAC (c
1Macchina a stati finiti DMAC (cè una sola
periferica bidirezionale DISCO)
- I/O dalla memoria al disco in modalità Burst
- I/O dalla memoria al disco in modalità Bus
Stealing - I/O dal disco alla memoria in modalità Burst
- I/O dal disco alla memoria in modalità Bus
Stealing
I/O WR
NOP
DMAC
SELECT I/O
Programmazione del DMAC sono comandi dati a
livello software Dal PD 32
START1 ?
NO
START
SI
NOP
Il DMAC controlla che la periferica non sia già
impegnata con altre operazioni di I/O
Periferica Pronta?
NO
SI
2Macchina a stati finiti DMAC
DMAC
- LSCO del DMAC legge il valore del Flip Flop SR
I/O - Se è 0 è uninterazione da disco verso la memoria
- Se è 1 è uninterazione dalla memoria al disco
I/O FF1 ?
SI
NO
- LSCO legge il valore del Flip Flop SR
- Burst Bus St
- Se è 0 si tratta di un uso del Bus
- di tipo Burst
- Se è 1 si tratta di un uso del Bus
- di tipo Burst Stealing
B-ST 1?
B-ST 1?
NO
SI
NO
SI
si tratta di controlli implementati a livello
Firmware
( 1 )
( 2 )
( 3 )
( 4 )
3Macchina a stati finiti DMAC(1) Trasferimento da
disco a memoria di tipo Burst 1 di 2
DMAC
Lo SCO del DMAC invia allo SCO della periferica
il segnale Dato Letto
Dato Letto1
Nop
Subito dopo lo SCO del DMAC si mette in ascolto
del segnale Dato Pronto, il quale verrà posto
ad uno dalla periferica quando sarà pronto il
dato da lei generato.
Dato Pronto1
NO
SI
Viene richiesto il bus al Processore, da parte
del DMAC, attraverso Il Memory Bus Request,
funzionante in logica negata
MBR 0
MBG 1
Si attende che il PD32 abbia messo le sue uscite
in alta impedenza, Il tutto avviene quando il
segnale Memory Bus Grent, ascoltato dal DMAC, è
posto ad uno dal PD32
NO
SI
Bcar 1 Bout 1 MWR 1 Mbi 1 , i1..4
Questa serie di segnali di controllo generati dal
SCO del DMAC servono per scaricare i 30 bit dal
CAR e i 32 del registo di out della periferica
nella memoria. Settare i quattro segnali Mbi,
i1,..,4 significa ipotizzare di scrivere
simultaneamente 4 Byte allineati in memoria
SI
4Macchina a stati finiti DMAC(1) Trasferimento da
disco a memoria di tipo Burst 2 di 2
DMAC
Una volta effettuato il trasferimento viene
incrementato di 4 il registro CAR e decrementato
di 4 il registro WC
Inc 1 Dec 1
WC 0
Si verifica se il World Counter è divenuto 0 Se
si il lavoro del DMAC è finito Se no ci sono
ancora dati da trasferire
NO
Chiedo alla periferica di generare ln-esimo dato
SI
Dato Letto 1
Nop
Lo SCO del DMAC si mette di nuovo in ascolto del
segnale Dato Pronto, il quale verrà posto ad
uno dalla periferica quando sarà pronto il nuovo
dato da lei generato.
Dato Pronto1
NO
SI
Se il trasferimento è completato il DMAC rilascia
il bus, il Processore si risveglia e continua il
suo lavoro
MBR 1
Resetta il Flip Flop SR START
Rstart 1
Avvisa il PD32 di aver finito generando un
Interrupt
Sint 1
5Macchina a stati finiti DMAC(2) Trasferimento da
disco a memoria di tipo Burst Stealing 1 di 2
DMAC
Lo SCO del DMAC invia allo SCO della periferica
il segnale Dato Letto
Dato Letto1
NO
Nop
Subito dopo lo SCO del DMAC si mette in ascolto
del segnale Dato Pronto, il quale verrà posto
ad uno dalla periferica quando sarà pronto il
dato da lei generato.
Dato Pronto1
NO
SI
Viene richiesto il bus al Processore, da parte
del DMAC, attraverso Il Memory Bus Request,
funzionante in logica negata
MBR 0
MBG 1
Si attende che il PD32 abbia messo le sue uscite
in alta impedenza, Il tutto avviene quando il
segnale Memory Bus Grent, ascoltato dal DMAC, è
posto ad uno dal PD32
NO
SI
Bcar 1 Bout 1 MWR 1 Mbi 1 , i1..4
Questa serie di segnali di controllo generati dal
SCO del DMAC servono per scaricare i 30 bit dal
CAR e i 32 del registo di out della periferica
nella memoria. Settare i quattro segnali Mbi,
i1,..,4 significa ipotizzare di scrivere
simultaneamente 4 Byte allineati in memoria
6Macchina a stati finiti DMAC(2) Trasferimento da
disco a memoria di tipo Burst Stealing 2 di 2
DMAC
Una volta effettuato il trasferimento viene
incrementato di 4 il registro CAR e decrementato
di 4 il registro WC
Inc 1 Dec 1
Un trasferimento è completato il DMAC rilascia il
bus , il Processore si risveglia e continua il
suo lavoro
MBR 1
WC 0
Si verifica se il World Counter è divenuto 0 Se
si il lavoro del DMAC è finito Se no ci sono
ancora dati da trasferire
NO
SI
Rstart 1
Resetta il Flip Flop SR START
Sint 1
Avvisa il PD32 di aver finito generando un
Interrupt
7Macchina a stati finiti DMAC(3) Trasferimento da
memoria a disco di tipo Burst 1 di 2
DMAC
Viene richiesto il bus al Processore, da parte
del DMAC, attraverso Il Memory Bus Request,
funzionante in logica negata
MBR 0
NO
MBG 1
Si attende che il PD32 abbia messo le sue uscite
in alta impedenza, Il tutto avviene quando il
segnale Memory Bus Grent, ascoltato dal DMAC, è
posto ad uno dal PD32
SI
MRD 1 Bcar 1 Mbi 1 , i1..4 Ereg 1
Questa serie di segnali di controllo generati dal
SCO del DMAC servono per selezionare i dati
indirizzati dal CAR e depositarli Nel REGin della
periferica Settare i quattro segnali Mbi,
i1,..,4 significa ipotizziamo di scrivere
simultaneamente 4 Byte allineati in memoria
Enr 1 Bmdr 1
Trasferimento del dato dallMDR al registro
interno della periferica
SI
8Macchina a stati finiti DMAC(3) Trasferimento da
memoria a disco di tipo Burst 2 di 2
DMAC
Una volta effettuato il trasferimento viene
incrementato di 4 il registro CAR e decrementato
di 4 il registro WC
Inc 1 Dec 1
WC 0
Si verifica se il World Counter è divenuto 0 Se
si il lavoro del DMAC è finito Se no ci sono
ancora dati da trasferire
NO
SI
Il DMAC avverte la periferica che il dato è stato
scritto nel REGIN
Dato Scritto1
Nop
Lo SCO del DMAC si mette in ascolto del segnale
Next Dato, il quale verrà posto ad uno dalla
periferica quando sarà pronta a ricevere un
nuovo dato.
Next Dato 1
NO
SI
Il DMAC avverte la periferica che il dato è stato
scritto nel REGIN
Dato Scritto1
DMAC rilascia il bus, il Processore si risveglia
e continua il lavoro
MBR 1
Resetta il Flip Flop SR START
Rstart 1
Sint 1
Avvisa il PD32 di aver finito generando un
Interrupt
9Macchina a stati finiti DMAC(4) Trasferimento da
memoria a disco di tipo Burst Stealing 1 di 2
DMAC
Viene richiesto il bus al Processore, da parte
del DMAC, attraverso Il Memory Bus Request,
funzionante in logica negata
MBR 0
MBG 1
NO
Si attende che il PD32 abbia messo le sue uscite
in alta impedenza, Il tutto avviene quando il
segnale Memory Bus Grent, ascoltato dal DMAC, è
posto ad uno dal PD32
SI
MRD 1 Bcar 1 Mbi 1 , i1..4 Ereg 1
Questa serie di segnali di controllo generati dal
SCO del DMAC servono per selezionare i dati
indirizzati dal CAR e depositarli Nel REGin della
periferica Settare i quattro segnali Mbi,
i1,..,4 significa ipotizzare di scrivere
simultaneamente 4 Byte allineati in memoria
SI
Trasferimento del dato dallMDR al registro
interno della periferica
Enr 1 Bmdr 1
Un trasferimento è completato il DMAC rilascia il
bus , il Processore si risveglia e continua il
suo lavoro
MBR 1
Dato Scritto1
Il DMAC avverte la periferica che il dato è stato
scritto nel REGIN
10Macchina a stati finiti DMAC(4) Trasferimento da
memoria a disco di tipo Burst Stealing 2 di 2
DMAC
Una volta effettuato il trasferimento viene
incrementato di 4 il registro CAR e decrementato
di 4 il registro WC
Inc 1 Dec 1
WC 0
Si verifica se il World Counter è divenuto 0 Se
si il lavoro del DMAC è finito Se no ci sono
ancora dati da trasferire
NO
SI
Nop
Lo SCO del DMAC si mette in ascolto del segnale
Next Dato, il quale verrà posto ad uno dalla
periferica quando sarà pronta a ricevere un
nuovo dato, poi il DMAC andrà a chiedere di nuovo
il Bus al Processore
Next Dato 1
NO
SI
Resetta il Flip Flop SR START
Rstart 1
Sint 1
Avvisa il PD32 di aver finito generando un
Interrupt