Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO)

10
Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO) 1. I/O dalla memoria al disco in modalità Burst 2. I/O dalla memoria al disco in modalità Bus Stealing 3. I/O dal disco alla memoria in modalità Burst 4. I/O dal disco alla memoria in modalità Bus Stealing NOP START=1 ? NOP Periferica Pronta? DMAC SI NO SI NO START SELECT I/O I/O WR Programmazione del DMAC sono comandi dati a livello software Dal PD 32 Il DMAC controlla che la periferica non sia già impegnata con altre operazioni di I/O

description

Macchina 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. DMAC. NOP. - PowerPoint PPT Presentation

Transcript of Macchina a stati finiti DMAC (c’è una sola periferica bidirezionale: DISCO)

Page 1: 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

Page 2: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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 )

Page 3: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 4: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 5: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 6: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 7: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 8: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 9: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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

Page 10: Macchina a stati finiti DMAC  (c’è una sola periferica bidirezionale: DISCO)

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