Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO)
description
Transcript of Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO)
Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO)
1. I/O dalla memoria al disco in modalità Burst2. I/O dalla memoria al disco in modalità Bus Stealing3. I/O dal disco alla memoria in modalità Burst4. I/O dal disco alla memoria in modalità Bus Stealing
NOP
START=1 ?
NOP
PerifericaPronta?
DMAC
SI
NO
SI
NO
START
SELECT I/O
I/O WR
Programmazione del DMAC sono comandi dati a livello softwareDal PD 32
Il DMAC controlla che la perifericanon sia già impegnata con altre operazioni di I/O
Macchina a stati finiti DMAC
I/O FF=1?
DMAC
B-ST = 1?B-ST = 1?
SI NO
SISI NONO
L’SCO del DMAC legge il valore del Flip Flop SR I/O:-Se è 0 è un’interazione da disco verso la memoria-Se è 1 è un’interazione dalla memoria al disco
L’SCO legge il valore del Flip Flop SRBurst 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
*si tratta di controlli implementati a livello Firmware
( 1 )( 2 )( 3 )( 4 )
Macchina a stati finiti DMAC(1) Trasferimento da disco a memoria di tipo Burst 1 di 2
Dato Pronto=1
DMAC
SI
NO
Dato Letto=1
Nop
MBG = 1
SI
NO
MBR = 0
Bcar = 1Bout = 1MWR = 1Mbi = 1 ,
i=1..4
SI
Lo SCO del DMAC invia allo SCO della periferica il segnale “Dato Letto”
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.
Viene richiesto il bus al Processore, da parte del DMAC, attraversoIl Memory Bus Request, funzionante in logica negata
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
Questa serie di segnali di controllo generati dal SCO del DMACservono per scaricare i 30 bit dal CAR e i 32 del registo di out della periferica nella memoria.
Settare i quattro segnali Mbi, i=1,..,4 significa ipotizzare di scrivere simultaneamente 4 Byte allineati in memoria
Macchina a stati finiti DMAC(1) Trasferimento da disco a memoria di tipo Burst 2 di 2
WC = 0
DMAC
SI
NO
Inc = 1Dec = 1
Dato Pronto=1
NO
Nop
Dato Letto = 1
SI
Rstart = 1
MBR = 1
Sint = 1
Una volta effettuato il trasferimento viene incrementato di 4il registro CAR e decrementato di 4 il registro WC
Si verifica se il World Counter è divenuto 0:Se si il lavoro del DMAC è finitoSe no ci sono ancora dati da trasferire
Chiedo alla periferica di generare l’n-esimo dato
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.
Se il trasferimento è completato il DMAC rilascia il bus, ilProcessore si risveglia e continua il suo lavoro…
Resetta il Flip Flop SR “START”
Avvisa il PD32 di aver finito generando un Interrupt
Macchina a stati finiti DMAC(2) Trasferimento da disco a memoria di tipo Burst Stealing 1 di 2
Dato Pronto=1
DMAC
SI
NO
Dato Letto=1
Nop
MBG = 1
SI
NO
MBR = 0
Bcar = 1Bout = 1MWR = 1Mbi = 1 ,i=1..4
NO
Lo SCO del DMAC invia allo SCO della periferica il segnale “Dato Letto”
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.
Viene richiesto il bus al Processore, da parte del DMAC, attraversoIl Memory Bus Request, funzionante in logica negata
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
Questa serie di segnali di controllo generati dal SCO del DMACservono per scaricare i 30 bit dal CAR e i 32 del registo di out della periferica nella memoria.
Settare i quattro segnali Mbi, i=1,..,4 significa ipotizzare di scrivere simultaneamente 4 Byte allineati in memoria
Macchina a stati finiti DMAC(2) Trasferimento da disco a memoria di tipo Burst Stealing 2 di 2
WC = 0
DMAC
Inc = 1Dec = 1
NO
SI
Rstart = 1
Sint = 1
MBR = 1
Una volta effettuato il trasferimento viene incrementato di 4il registro CAR e decrementato di 4 il registro WC
Un trasferimento è completato il DMAC rilascia il bus , ilProcessore si risveglia e continua il suo lavoro…
Resetta il Flip Flop SR “START”
Avvisa il PD32 di aver finito generando un Interrupt
Si verifica se il World Counter è divenuto 0:Se si il lavoro del DMAC è finitoSe no ci sono ancora dati da trasferire
Macchina a stati finiti DMAC(3) Trasferimento da memoria a disco di tipo Burst 1 di 2
MBG = 1
DMAC
SI
NO
MBR = 0
MRD = 1Bcar = 1Mbi = 1 ,i=1..4Ereg = 1
SIEnr = 1
Bmdr = 1
Viene richiesto il bus al Processore, da parte del DMAC, attraversoIl Memory Bus Request, funzionante in logica negata
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
Questa serie di segnali di controllo generati dal SCO del DMACservono per selezionare i dati indirizzati dal CAR e depositarliNel REGin della periferica
Settare i quattro segnali Mbi, i=1,..,4 significa ipotizziamo di scrivere simultaneamente 4 Byte allineati in memoria
Trasferimento del dato dall’MDR al registro interno della periferica
Macchina a stati finiti DMAC(3) Trasferimento da memoria a disco di tipo Burst 2 di 2
WC = 0
DMAC
SI
NO
Inc = 1Dec = 1
Next Dato =1
NO
Nop
Dato Scritto=1
SI
Rstart = 1
MBR = 1
Sint = 1
Dato Scritto=1
Una volta effettuato il trasferimento viene incrementato di 4il registro CAR e decrementato di 4 il registro WC
Si verifica se il World Counter è divenuto 0:Se si il lavoro del DMAC è finitoSe no ci sono ancora dati da trasferire
Il DMAC avverte la periferica che il dato è stato scritto nel REGIN
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.
Il DMAC avverte la periferica che il dato è stato scritto nel REGIN
DMAC rilascia il bus, il Processore si risveglia e continua il lavoro…
Resetta il Flip Flop SR “START”
Avvisa il PD32 di aver finito generando un Interrupt
Macchina a stati finiti DMAC(4) Trasferimento da memoria a disco di tipo Burst Stealing 1 di 2
MBG = 1
DMAC
SI
NO
MBR = 0
MRD = 1Bcar = 1Mbi = 1 ,
i=1..4Ereg = 1
SI
MBR = 1
Dato Scritto=1
Viene richiesto il bus al Processore, da parte del DMAC, attraversoIl Memory Bus Request, funzionante in logica negata
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
Trasferimento del dato dall’MDR al registro interno della periferica
Enr = 1Bmdr = 1
Un trasferimento è completato il DMAC rilascia il bus , ilProcessore si risveglia e continua il suo lavoro…
Il DMAC avverte la periferica che il dato è stato scritto nel REGIN
Questa serie di segnali di controllo generati dal SCO del DMACservono per selezionare i dati indirizzati dal CAR e depositarliNel REGin della periferica
Settare i quattro segnali Mbi, i=1,..,4 significa ipotizzare di scrivere simultaneamente 4 Byte allineati in memoria
Macchina a stati finiti DMAC(4) Trasferimento da memoria a disco di tipo Burst Stealing 2 di 2
WC = 0
DMAC
SI
NO
Inc = 1Dec = 1
Next Dato =1
NO
Nop
SI
Rstart = 1
Sint = 1
Una volta effettuato il trasferimento viene incrementato di 4il registro CAR e decrementato di 4 il registro WC
Si verifica se il World Counter è divenuto 0:Se si il lavoro del DMAC è finitoSe no ci sono ancora dati da trasferire
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 DMACandrà a chiedere di nuovo il Bus al Processore
Resetta il Flip Flop SR “START”
Avvisa il PD32 di aver finito generando un Interrupt