Temporizzazioni BUS Z80
Il microprocessore attraverso i suoi BUS dialoga in modo diretto solo con memoria e periferiche di ingresso/uscita (dette anche porte di I/O o registri), sul BUS indirizzi di 16 fili emette l'indirizzo binario della cella di memoria o della porta a cui vuole accedere (A0 è il bit meno significativo, A15 il più significativo), e quindi abbassa IORQ o MREQ a seconda che voglia accedere rispettivamente a una porta o alla memoria.
Inoltre abbassa WR o RD a seconda che debba scrivere o leggere. Se deve scrivere, cioe' inviare un dato all'esterno, allora oltre all'indirizzo emette anche il dato sul BUS dati di 8 fili (D0..D7), se deve leggere, cioè ricevere un dato dall'esterno, predispone i pin del BUS dati come ingressi (il BUS dati è infatti bidirezionale).

In ogni caso si deve tenere conto che "il direttore" è il microprocessore, è lui, alimentato dalla frequenza di clock, che genera le temporizzazioni dei segnali "fiducioso" di trovarsi collegati dei circuiti esterni che "gli stiano dietro", in altre parole: quando deve leggere dalla memoria lui genera gli appositi segnali di comando, ma non può "sapere" se c'è effettivamente collegata una memoria funzionante, lui "butta fuori" i segnali e al momento di leggere legge comunque, qualsiasi cosa sia in arrivo sul BUS dati in quel momento. Sta al progettista hardware fare in modo che attorno alla CPU vi siano circuiti di memoria e porte di I/O "efficienti" in grado di rispondere correttamente ai suoi segnali di comando.

Ci sono diverse temporizzazioni dei segnali del BUS, per la realizzazione di semplici circuiti di memoria e di I/O è necessario conoscere solo le cinque principali: lettura/scrittura su porta, lettura/scrittura su memoria e lettura del codice operativo di un'istruzione, che è un caso particolarmente rapido di lettura da memoria.
 


 
Accesso alla memoria
 
Lettura codice operativo

Lettura codice operativo di un'istruzione dalla memoria:

Il processore emette l'indirizzo della cella di memoria da leggere (da 0 a 65535) sul BUS indirizzi (A0..A15), abbassa MREQ (richiesta accesso alla memoria) e RD (lettura), sul fronte di salita dello stato T2 viene letto il dato in arrivo dalla memoria sul bus dati (D0..D7). 

Si vede come la memoria deve rispondere entro 1,5 cicli di clock, il prelievo del codice operativo è l'accesso più veloce effettuato dallo Z80. 

In generale è bene scegliere una memoria con tempo di accesso non superiore a un ciclo di clock, ad esempio, per un clock di 4Mhz la memoria dovrebbe avere un tempo di accesso non superiore a 250nS.


Animazione lettura dalla memoria
Lettura dato generico

Lettura di un dato generico dalla memoria:

La lettura di un dato generico è un pò più lenta, il processore infatti legge il bus dati mezzo ciclo di clock più tardi, per un tempo di accesso complessivo di 2 cicli di clock. 

Una tipica istruzione che causa questo tipo di lettura è LD A,(350) in cui si comanda al processore di caricare nel registro A il valore letto dalla cella di memoria di indirizzo 350. Sul BUS indirizzi verrà inviato il valore binario 350, verranno abbassati MREQ e RD e dopo 2 cicli di clock verrà letto il BUS dati e il suo valore verrà scritto nel registro A.

Scrittura dato generico

Scrittura in memoria:

Il processore emette l'indirizzo della cella in cui scrivere sul BUS indirizzi, abbassa il segnale MREQ ed emette il dato da scrivere sul BUS dati, poi abbassa il segnale WR (scrittura) per un ciclo di clock, questo segnale comanda alla memoria di incamerare il dato. 

Per analogia con il caso precedente un'istruzione che causa questo tipo di accesso in scrittura è LD (350),A in cui si comanda al processore di caricare nella cella di memoria di indirizzo 350 il valore contenuto nel registro A. Sul BUS indirizzi verrà inviato il valore binario 350 e sul BUS dati il valore di A, verrà abbassato MREQ e dopo 1 ciclo di clock anche WR, dopo un altro ciclo di clock MREQ e WR tornano a 1 e la memoria immagazzina il dato.


Animazione scrittura in memoria
 
Accesso alle periferiche (porte di I/O)
 
Lettura da periferica

Lettura da una porta:

Il processore emette sul BUS indirizzi l'indirizzo della porta da cui leggere (da 0 a 255), abbassa IORQ (richiesta di accesso ad una porta) e RD (lettura), e attende per 2,5 cicli di clock l'arrivo di un dato sul BUS dati, quindi lo legge in corrispondenza del fronte di discesa centrale di T3. 

Viene aggiunto automaticamente uno stato di attesa TW per dare più tempo alla porta per rispondere. 

Un'istruzione che produce questa temporizzazione è IN A,(5) che comanda al processore di leggere un valore dalla porta di ingresso di indirizzo 5 e memorizzarlo nel registro A.

Scrittura su periferica

Scrittura su una porta:

Il processore emette l'indirizzo della porta sul BUS indirizzi e il dato da scrivere sul BUS dati, quindi abbassa IORQ e WR per 2,5 cicli di clock. 

Un'istruzione che produce questa temporizzazione è OUT (5),A che comanda al processore di scrivere il valore del registro A sulla di uscita di indirizzo 5.

NOTA: Per semplicità i fronti di salita e discesa dei segnali sono stati disegnati perfettamente verticali, in realta'sono da considerarsi leggermente obliqui come per i BUS dati e indirizzi, nessun segnale elettrico cambia istantaneamente di livello.

Pagina e disegni realizzati da Claudio Fin
Ultimo aggiornamento 23-9-2000