z80 pio sio

29
RELAZIONE SULLO Z80 PIO SIO Lo Z80 rappresenta il primo esempio di microprocessore moderno di grande diffusione che sia riuscito a raggiungere i principi di semplicità d’uso e versatilità di cui abbiamo parlato introducendo la logica programmata: si tratta di un microprocessore a 8 bit cioè che può lavorare con dati composti da 8 bit (dotato quindi di 8 linee di bus dati) e che può quindi indirizzare sino a 64 Kb di memoria (16 linee di bus indirizzi). Realizzato in tecnologia NMOS, il microprocessore Z80 è nato nel 1976 in casa Zilog; per quanto riguarda l’interfacciamento col mondo esterno, esso è corredato di un ampia famiglia di dispositivi dedicati ai vari tipi di comunicazione e dialogo con le periferiche: esiste un dispositivo per gestire la comunicazione in modo parallelo, un dispositivo per la comunicazione seriale, uno per la temporizzazione ecc. Riportiamo in figura lo schema a blocchi. Fabio Grossi PIO SIO Z80 14/08/2022 1/19

Upload: api-26739434

Post on 07-Jun-2015

686 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Z80 PIO SIO

RELAZIONE SULLOZ80 PIO SIO

Lo Z80 rappresenta il primo esempio di microprocessore moderno di grande diffusione che

sia riuscito a raggiungere i principi di semplicità d’uso e versatilità di cui abbiamo parlato

introducendo la logica programmata: si tratta di un microprocessore a 8 bit cioè che può

lavorare con dati composti da 8 bit (dotato quindi di 8 linee di bus dati) e che può quindi

indirizzare sino a 64 Kb di memoria (16 linee di bus indirizzi).

Realizzato in tecnologia NMOS, il microprocessore Z80 è nato nel 1976 in casa Zilog; per

quanto riguarda l’interfacciamento col mondo esterno, esso è corredato di un ampia

famiglia di dispositivi dedicati ai vari tipi di comunicazione e dialogo con le periferiche:

esiste un dispositivo per gestire la comunicazione in modo parallelo, un dispositivo per la

comunicazione seriale, uno per la temporizzazione ecc.

Riportiamo in figura lo schema a blocchi.

Fabio Grossi PIO SIO Z80 12/04/2023

1/19

Page 2: Z80 PIO SIO

UC e codifica delle istruzioni. È l’unità di governo dell’intera CPU. In questa sede

vengono prese tutte le decisioni riguardanti l’attività dei dispositivi interni ed esterni.

Potranno essere per esempio attivati la ALU, il Bus Indirizzi o i registri interni, a seconda

che l’istruzione decodificata sia un istruzione aritmetica, di lettura\scrittura in memoria o di

spostamento di dati. Occorre infine sottolineare che la UC ha anche l’importante compito

di sincronizzare, tramite dei segnali di temporizzazione, l’attività dei singoli dispositivi.

IR (Instruction Register). Il Registro di Istruzione è un registro a 8 bit che contiene il

codice operativo dell’istruzione in fase di esecuzione. Quando questo sarà prelevato dalla

UC per essere codificato, l’IR conterrà il byte successivo.

ALU. L’unità Aritmetico Logica è la rete a cui è demandato il compito di effettuare le

operazioni logiche e aritmetiche. In particolare nella ALU possono essere eseguite le

seguenti operazioni logiche aritmetiche. In particolare nella ALU possono essere eseguite

le seguenti operazioni:

operazioni logiche: NOT, AND, OR, EXOR;

operazioni aritmetiche: esempio addizione sottrazione incremento;

confronto tra numeri;

operazione di shift e rotazione;

manipolazione dei singoli bit e complemento.

Registri Interni. Nello Z80 esistono due classi di registri, che si differenziano per la

dimensione e per le funzioni a cui sono adibiti. Lo scambio con l’esterno sia dei dati sia

degli indirizzi avviene per il tramite di aree buffer che hanno, sostanzialmente, lo scopo di

proteggere ciò che si sta trasferendo e di fare in modo che le informazioni vengono

acquisite al momento giusto. È molto importante, nel dialogo tra la CPU e le periferiche,

mantenere certe regole di sincronizzazione rigide in modo che, per esempio, non ci sia il

rischio che un nuovo dato si vada a sovrapporre a un dato non ancora acquisito dalla sua

destinazione. Questo transito obbligatorio delle informazioni da queste aree rallenta il

lavoro, però aumenta sensibilmente la sicurezza di trasmissione.

Buffer Dati: costituisce l’interfaccia tra la CPU e il BUS dati. Questo buffer contiene

temporaneamente il dato (8 bit) fino a quando la UC non dispone di trasferirlo sul BUS o

Fabio Grossi PIO SIO Z80 12/04/2023

2/19

Page 3: Z80 PIO SIO

all’interno della CPU. Essendo un three-state, il buffer potrebbe essere posto in alta

impedenza , al fine di sospendere momentaneamente le comunicazioni con l’esterno:

questo può essere necessario se, per esempio in una operazione di output, la periferica è

molto più lenta della CPU.

Buffer Indirizzi. ciò che avviene per il Buffer Dati avviene per il Buffer Indirizzi, con l’unica

differenza che quest’ultimo è collegato al Bus indirizzi.

Bus Interno. è un bus a 8 bit che consente la comunicazione tra i dispositivi interni della

CPU secondo le indicazioni dell’unità di controllo che deve mantenere il controllo di tutte le

operazioni e trasferimenti di dati.

Come è noto la comunicazione con l’esterno è resa possibile da particolari linee dedicate

denominate Bus. Nel caso dello Z80, i tre diversi tipi di bus hanno le seguenti

caratteristiche:

Bus Dati: è un bus bidirezionale di 8 bit preposto al trasporto dei dati. Le otto linee di

questo bus permettono al dato di viaggiare in un senso o nell’altro, ma non è possibile che

singoli bit viaggino nei due sensi opposti contemporaneamente.

Bus Indirizzi: nello Z80 gli indirizzi sono a 16 bit: tale sarà allora il numero di linee che

compongono questo bus. Poiché è l’unità centrale a generare e inviare gli indirizzi alla

memoria o alle porte di I/O, il bus indirizzi è un bus unidirezionale in uscita

Bus di Controllo. ognuna delle 13 linee che compongono questo bus unidirezionale in un

senso o nell’altro. Ciò significa che il bus di controllo è bidirezionale, ma in maniera

diversa da bus dati. In altre parole, il bus di controllo è costituito da 13 linee, di cui 8 in

uscita e 5 in ingresso.

Il μP Z80 funziona con un’alimentazione di +5V, con una frequenza che varia fra 2,5 e 8

MHz.

Fabio Grossi PIO SIO Z80 12/04/2023

3/19

Page 4: Z80 PIO SIO

Pio Z80

Il PIO Z80 (parallel input/output) è un integrato che mette a disposizione due porte di I/O

programmabili. E'stato studiato per funzionare assieme ad una CPU Z80 e non può essere

collegato direttamente ad altri processori. Ogni porta può funzionare in diverse modalità, e

dispone di due segnali ausiliari (RDY e STB) che consentono la sincronizzazione con le

periferiche esterne (segnali di handshaking). Inoltre ogni porta può generare un interrupt, e

più dispositivi PIO si possono collegare in cascata con i pin IEIN e IEOUT per realizzare

una catena di interrupt a diversa priorità (daisy chain). 

◙ Interfacciare una periferica al microprocessore comporta il fatto che la periferica sia

collegata al bus. Ciò significa che la periferica deve essere dotata di uscite di three-

state per evitare conflitti sul bus. Se la periferica non è dotata di uscite di questo

tipo si deve interporre un dispositivo apposito fra periferica e bus.

◙ La periferica è in genere più lenta del microprocessore nelle operazioni di IO, per

cui occorre che essa sia dotata di un buffer o zona di memorizzazione temporanea,

in cui il microprocessore possa parcheggiare temporaneamente i dati.

◙ Anche in questo caso il microprocessore è inutilmente rallentato dalla periferica.

Infatti, se la periferica non ha ancora letto il dato nel buffer, il microprocessore non

può inviarle altri dati e deve rimanere in attesa

◙ In questo caso si rende necessario un protocollo di handshake fra periferica e

microprocessore costituito da alcuni segnali che consentano al microprocessore di

avvertire la periferica che è disponibile un dato per essa, e alla periferica di

avvertire il microprocessore quando essa ha terminato di acquisire il dato.

◙ Per evitare che il microprocessore debba subire i tempi morti dovuti alla lentezza

della periferica sarebbe utile usare le tecniche di interrupt. Ad esempio, il

microprocessore potrebbe inviare un dato alla periferica e poi svolgere altre

operazioni. Quando la periferica termina di acquisire il dato può generare

un’interruzione per costringere il microprocessore a dedicarle nuovamente la sua

attenzione ed inviarle un nuovo dato.

Fabio Grossi PIO SIO Z80 12/04/2023

4/19

Page 5: Z80 PIO SIO

Tutte queste problematiche vengono risolte automaticamente interponendo un PIO Z80

fra periferica e microprocessore.

Fabio Grossi PIO SIO Z80 12/04/2023

5/19

Page 6: Z80 PIO SIO

Piedinatura

La piedinatura del PIO è illustrata nella figura seguente

La figura seguente mostra come collegare un singolo PIO al BUS dello Z80, se non si

vogliono usare gli interrupt del PIO il pin INT del PIO può rimanere scollegato: 

Fabio Grossi PIO SIO Z80 12/04/2023

6/19

Page 7: Z80 PIO SIO

IL PIO presenta 8 pin da D0 a D7 per poter essere collegato al bus dati. Ha a disposizione

poi due porte denominate A e B per poter essere collegato a due periferiche distinte. Ogni

porta presenta otto piedini sui quali potranno transitare i dati e due piedini RDY (Ready) e

STB (Strobe) per poter effettuare un dialogo di handshake con la periferica. Poiché il Pio è

in grado di generare interruzioni presenta un piedino INT. Esso può essere messo anche

in daisy chain (in cascata) con altri dispositivi per cui presenta l’ingresso IEI e l’uscita IEO.

Il PIO è progettato per poter utilizzare la modalità di gestione 2 cioè, quando la periferica

genera un’interruzione, il microprocessore innesca un ciclo di riconoscimento delle

interruzioni caratterizzato dal fatto che le linee M1 e IORQ vanno contemporaneamente a

zero. La periferica, vedendo le due linee contemporaneamente a zero, pone sul bus dati la

parte bassa del vettore delle interruzioni. Il PIO per poter sapere che il microprocessore ha

intrapreso il ciclo di riconoscimento delle interruzioni, ha bisogno di essere collegato alle

due linee M1 e IORQ del microprocessore Z80. E’ presente inoltre il piedino CE di

abilitazione in modo che il PIO si possa collegare al bus quando lo decide il

microprocessore. Per poter selezionare la porta A o la porta B, il microprocessore può

utilizzare il piedino B/A. Quando tale piedino è a zero, viene selezionata la porta A,

quando è ad 1 viene selezionata la porta B. infine il microprocessore deve poter indicare al

Pio se gli sta inviando un dato che va poi passato alla periferica collegata al

PIO oppure gli sta inviando una parola di programmazione. Per fare questo utilizza il

piedino C/D. se questo pedino è a zero vuol dire che si tratta di un dato, se è ad uno vuol

dire che è una parola di programmazione.

Struttura internaLa struttura interna del PIO è rappresentata nella figura seguente

Fabio Grossi PIO SIO Z80 12/04/2023

7/19

Page 8: Z80 PIO SIO

La struttura di ogni singola porta è invece la seguente

Fabio Grossi PIO SIO Z80 12/04/2023

8/19

Page 9: Z80 PIO SIO

Il Mode Control Register è il registro il cui contenuto indica in quale modalità

opera la porta

L’interrupt control logic controlla la generazione delle interruzioni

L’handshake control logic controlla i segnali di handshake ed il dialogo fra porta

e periferica

Il data output register è un buffer per i dati che devono andare verso la periferica

Il data input register è un buffer per i dati che provengono dalla periferica

L’input/output select register, il mask control register e il mask register sono

registri che vengono coinvolti nel modo tre di funzionamento della porta.

MODI DI FUNZIONAMENTOSi possono definire tre modalità diverse di trasmissione:

Simplex

Half-duplex

Full-duplex

Nel collegamento simplex i dati possono viaggiare soltanto in un senso. Il ruolo di

trasmettitore e di ricevitore sono assegnati una volta per tutte. Il dispositivo ricevitore non

può inviare a sua volta dati al trasmettitore.

Nel collegamento half-duplex esiste un’unica linea di connessione come nel caso del

collegamento simplex. Stavolta, però, i ruoli di trasmettitore e ricevitore non sono fissati in

modo rigido ed i dati possono viaggiare in entrambe le direzioni. Essendo, però, la linea di

comunicazione unica, di volta in volta uno dei due terminali è in ricezione è l’altro in

trasmissione. Perché si scambino i ruoli occorre un certo tempo di turnaround.

Fabio Grossi PIO SIO Z80 12/04/2023

9/19

Page 10: Z80 PIO SIO

Nel collegamento full-duplex i due sistemi sono collegati mediante una doppia linea

trasmissivo che consente di effettuare contemporaneamente le operazioni di trasmissione

e ricezione. Raddoppia la quantità di dati che si possono scambiare nell’unità di tempo e si

eliminano i tempi morti dovuti al turnaround.

Modo 0: byte in uscita

È una modalità simplex che prevede che i dati vadano sempre dal microprocessore alla

periferica. Il microprocessore scrive il dato all’indirizzo della porta del PIO (vedi figura)

Come si vede dalla figura, all’interno della porta si genera un segnale *WR che va a zero

quando il microprocessore scrive il dato sulla porta per cui si ha contemporaneamente che

RD è ad uno quindi RD è a zero (si sta scrivendo)

CE è a zero (il microprocessore ha abilitato il PIO)

C/D è a zero (quindi si sta inviando un dato alla periferica)

Fabio Grossi PIO SIO Z80 12/04/2023

10/19

Page 11: Z80 PIO SIO

IORQ è a zero (si sta effettuando un’operazione di ingresso uscita)

Dal lato della porta si ha la seguente temporizzazione

Mentre *WR è attivo, il dato viene trasferito sui piedini che collegano la porta alla

periferica (Port Output), quando il segnale *WR si rialza vuol dire che l’operazione di

scrittura da parte del microprocessore sulla porta è terminata. Allora la porta alza il

segnale READY per avvertire la periferica che un dato è disponibile per essa. La

periferica risponde mandando basso il segnale STROBE. Finché questo segnale

rimane basso vuol dire che la periferica è ancora impegnata nell’acquisizione del dato

stesso impedendo alla porta del PIO di inviarle altri dati. Quando STROBE si rialza

indica alla porta del Pio che il trasferimento del dato è stato completato e si può inviare

alla periferica un altro dato. Se la porta è abilitata ad utilizzare le interruzioni genera a

questo punto un’interruzione per il microprocessore per costringerlo ad inviare un

nuovo dato.

Modo 1: Byte in ingresso.

Anche in questo caso si tratta di un collegamento simplex. Stavolta, però, i dati

provengono dalla periferica e vanno verso il microprocessore.

Fabio Grossi PIO SIO Z80 12/04/2023

11/19

Page 12: Z80 PIO SIO

la periferica abbassa il segnale di strobe per avvertire la porta che è disponibile un dato

da mandare al microprocessore. La porta provvede poi a scaricare il dato sul bus che

la collega alla porta. Quando si rialza il segnale di strobe, la porta del PIO abbassa il

segnale READY. Finché questo segnale rimane basso la periferica sa che il dato non è

stato ancora acquisito dal microprocessore e quindi essa non può inviare un altro dato.

Quando abbassa il segnale READY, la porta, se è abilitata, può generare

un’interruzione per indicare al microprocessore che deve leggere il dato depositato nel

buffer della porta. Quando il microprocessore inizia il ciclo di lettura

Fabio Grossi PIO SIO Z80 12/04/2023

12/19

Page 13: Z80 PIO SIO

nella porta si genera un segnale *RD che resta a zero finché è in corso l’acquisizione

del dato da parte del microprocessore. Se questo segnale si rialza, vuol dire che la

lettura del dato da parte del microprocessore è terminata per cui READY si rialza

indicando alla periferica che può inviare un nuovo dato.

Modo 2: byte bidirezionale

In questa modalità il PIO consente un dialogo di tipo half-duplex permettendo ai dati di

viaggiare in entrambi i sensi alternativamente. In questo caso occorre, però, duplicare

le linee di handshake. Occorrono due segnali per garantire il dialogo nel caso che il

dato vada verso la periferica e due linee per i dialogo nel caso che il dato vada dalla

periferica alla porta. La soluzione consiste nel collegare la periferica alla porta A e di

utilizzare per l’handshake le linee di controllo sia della porta A che della porta B. in tal

caso la porta B non può essere utilizzata per collegarle una periferica, poiché non

sarebbe in grado di gestire protocolli di handshake. La porta B può essere utilizzata

soltanto nel modo 3 che vedremo più avanti. Le linee della porta A vengono utilizzate

per controllare l’invio dei dati dalla porta alla periferica e le linee della porta B vengono

utilizzate per controllare l’invio dei dati dalla periferica alla porta A.

Fabio Grossi PIO SIO Z80 12/04/2023

13/19

Page 14: Z80 PIO SIO

Come si può notare dal diagramma temporale si tratta, insomma, della fusione dei

modi 0 ed 1. C’è però una piccola differenza. Nel modo zero la porta scarica il dato sul

bus che la collega alla periferica prima di attivare il segnale READY. Nel modo 2,

invece, la porta attiva prima READY, aspetta di avere una conferma dalla periferica

mediante il segnale STROBE e poi invia il dato in uscita. Il motivo di questa differenza

è il seguente. Immaginiamo che la periferica abbia inviato un dato verso la porta. Ora vi

è un turnaround, cioè è la porta a voler inviare un dato alla periferica. Quest’ultima

potrebbe aver ritardato nel rilasciare il bus, per cui si potrebbe avere che

contemporaneamente sia la porta che la periferica tentano di inviare un dato sul bus

creando un conflitto. E’ per questo che, nel modo 2, la porta aspetta l’OK da parte della

periferica prima di inviare il dato sul bus.

Modo 3 bit a bit

Questa modalità viene utilizzata quando si vuole interfacciare il microprocessore con

sensori o attuatori da comandare. In questo caso non si tratta di fra transitare dati con

parallelismo a 8 bit, ma ogni bit della porta ha una sua identità indipendente. In questa

modalità ogni singola linea della porta può essere programmata come ingresso o come

uscita indipendentemente dalle altre. In questa modalità, i segnali di handshake non

vengono utilizzati. Quando il microprocessore tenta di leggere la porta del PIO, le linee

di ingresso vengono latchate, cioè vengono congelate al valore che avevano quando si

è abbassato il segnale di RD. In tal modo eventuali variazioni che subiscono le linee di

ingresso durante la lettura non vengono prese in considerazione dal microprocessore.

Per le linee impostate come uscita i bit corrispondenti che vengono letti contengono

l’ultimo valore che era stato inserito nell’ultima operazione di scrittura. Molto utili sono

le caratteristiche di tale modo per quanto riguarda la generazione di interruzioni.

Innanzitutto tra tutti i sensori collegati ai pin di ingresso della porta, può

accadere che solo alcuni abbiano un’importanza tale da volere che generino

un’interruzione. In tal caso il PIO consente di mascherare i bit di ingresso che

non volgiamo che possano causare un’interruzione.

Inoltre può accadere che noi vogliamo che sia generata un’interruzione quando

almeno uno dei sensori d’ingresso sia attivo (si parla di condizione di OR logico)

oppure che sia generata l’interruzione quando tutti i sensori non mascherati

Fabio Grossi PIO SIO Z80 12/04/2023

14/19

Page 15: Z80 PIO SIO

siano attivi (condizione di AND logico). Il Pio consente, tramite opportuna

programmazione di impostare, per la generazione delle interruzioni, l’AND o

l’OR logico

Si possono collegare alla porta sensori attivi alti o attivi bassi. Il Pio consente di

stabilire se i sensori collegati vanno considerati attivi quando danno un segnale

alto o danno un segnale basso. In tal caso non si possono, però, utilizzare

sensori promiscui. Si possono utilizzare cioè, sensori di un solo tipo in una

porta.

Sio Z80

Il Sio Z80 Serial (Ingresso/Uscita seriale) è un dispositivo periferico, a due canali,

progettato per soddisfare un’ampia varietà di comunicazione. La sua funzione è quella

di convertitore/controllore dati da serie a parallelo e da parallelo a serie, è

programmabile tramite software in modo da ottimizzare qualsiasi comunicazione dati.

Il SIO è in grado di trattare comunicazioni con protocolli asincroni, sincroni orientati al

byte, può generare e controllare codici CRC ( Controllo di ridondanza ciclico) in ogni

comunicazione sincrona e può essere programmato per verificare l’integrità dei dati

scambiati.

È anche disponibile una versione a basso costo chiamata SIO/9 ad un solo canale

sincrono ed asincrono. Le caratteristiche sono essenzialmente uguali a quello a due

canali.

Struttura

◙ Tecnologia a canale N tipo “Silicon Gate DEpletion Load”

◙ Contenitore a 40 piedini DIP

◙ Alimentazione singola a + 5V

◙ Alimentazione di sistema singolo a + 5V

◙ Tutti gli ingressi e uscite sono compatibili TTL

Fabio Grossi PIO SIO Z80 12/04/2023

15/19

Page 16: Z80 PIO SIO

Le figure mostrano la configurazione dei piedini del SIO nelle tre opzioni disponibili.

SIO/0

SIO/1

Fabio Grossi PIO SIO Z80 12/04/2023

16/19

Page 17: Z80 PIO SIO

SIO/2

Descrizioni dei segnali del SIO

D0-D7 Bus dati del sistema, serve per trasferire dati e comandi fra la CPU e il SIO con D0 il bit meno significativo.

B/A Selezione del canale A o B, il livello alto seleziona il canale B, questo ingresso quale canale è abilitato è abilitato durante un trasferimento di dati fra la CPU e il SIO

C/DSelezione comandi o dati. Questo ingresso definisce il tipo di informazione trasferita tra la CPU e il SIO, un livello alto durante il ciclo di scrittura fa si che le informazioni presenti sul bus dei dati siano interpretati come comandi dal canale selezionato. Un livello basso significa che le informazioni sono interpretate come dati.

CEChip Enable, abilitazione del chip, un livello basso abilita il SIO ad accettare comandi o dati in ingresso dalla CPU durante il ciclo di scrittura oppure inviare dati alla CPU durante il ciclo di lettura.

ΦClock del sistema.

Fabio Grossi PIO SIO Z80 12/04/2023

17/19

Page 18: Z80 PIO SIO

M1Primo ciclo macchina. Quando i segnali M1 e RD sono attivi, la CPU acquisisce un’istruzione dalla memoria.

IORQ Richiesta di ingresso/uscita. IORQ è usato in congiunzione con B/A, C/D, CE e RD per trasferire comandi e dati fra la CPU e il SIO.

RDRichiesta di lettura. Se RD è attivo un’operazione di lettura di memoria o di I/O è in corso.

RESETReset. Azzeramento. Un livello sull’ingresso attivo basso disabilita sia il ricevitore che il trasmettitore.

IEIIngresso di abilitazione delle interruzioni (attivo alto). Un livello alto su questa linea indica che nessun altro componente con priorità più elevata sta richiedendo un’interruzione alla CPU.

IEOUscita di abilitazione delle interruzioni (attivo alto). Questo segnale è alto solo se IEI è alto e la CPU non sta già eseguendo un’interruzione per questo SIO.

INTRichiesta d’interruzione

W/RDYA W/RDYBAttesa / pronto A, Attesa / pronto B. Queste uscite possono essere programmate come linee wait per sincronizzare la CPU alla velocità di trasferimento dati del SIO.

CTSA CTSBLibera l’invio dei dati dal canale A o B (abilitazione alla trasmissione).

DCDA DCDBRivelazione della portante di dati, sono simili agli ingressi CTS, eccetto che sono utilizzabili come abilitazione ai ricevitori.

RxDA RxDBRicezioni dati canale A e canale B.

TxDA TxDBTrasmissioni dati canale A e canale B

RxCA RxCBClock di ricezione canale A e canale B (ingressi)

TxCA TxCBClock di trasmissione

Fabio Grossi PIO SIO Z80 12/04/2023

18/19

Page 19: Z80 PIO SIO

RTSA RTSBRichiesta da parte del SIO di trasmettere dati.

DTRA DTRBIl SIO è pronto a ricevere dati (uscite attivo basso)

SYNC A SYNC BSincronizzazione ingressi/uscite. Possono comportarsi ciascuno come ingresso o come uscita.

La struttura interna del dispositivo comprende l’interfaccia alla CPU la logica d’interruzione e di controllo interno, e due canali “full-duplex”. Associati a ciascun canale si hanno i registri di lettura e scrittura e la logica di stato e di controllo che provvede all’interfaccia con il modem e con altri dispositivi esterni.

DESCRIZIONE FUNZIONALE

Le caratteristiche funzionali del SIO possono essere descritte da due differenti punti di vista: come dispositivo per le comunicazioni di dati o come dispositivo periferico della famiglia Z80. Nel primo caso esso trasmette e riceve dati seriali e soddisfa le richieste dei vari protocolli di comunicazione dati. Come dispositivo periferico della famiglia Z80 invece, il SIO interagisce con la CPU e con gli altri dispositivi periferici condividendone perfettamente il bus dati, il bus indirizzi e il bus di controllo come parte integrante della struttura d’interruzione Z80. come periferica di altri microprocessori, il SIO offre preziose caratteristiche come l’interruzione non vettorizzata, la capacità di funzionare in modo polling (consultazione) ed in modo handshake.Polling il modo polling evita l’interruzione, tutti i modi di interruzione del SIO devono essere disabilitati. Mentre la CPU nella sua sequenza di polling esamina lo stato contenuto in RR0 (stato del registro di trasmissione/ricezione, stato dell’interruzione e stato esterno) per ciascun canale, i bit di stato di RR0 danno una risposta alla domanda di consultazione. I due bit di stato D0 eD2 del registro RR0 indicano che è necessario dar seguito ad un’operazione di ricezione o di trasmissione. I bit di stato indicano anche errori ed altre condizioni speciali.Interruzioni. Il SIO per fornire risposte veloci alle interruzioni, nelle applicazioni in tempo reale offre un piano elaborato di interruzioni. I registri del canale B WR2 (vettore d’interruzione) e RR2 (vettore d’interruzione modificato solo per il canale B) contengono il vettore d’interruzione che indirizza in memoria una routine di servizio per l’interruzione.I principali sorgenti d’interruzione sono le interruzioni di trasmissione, le interruzioni di ricezione e le interruzioni da stato esterno. Ciascuna sorgente d’interruzione è abilitata sotto il controllo del programma con la priorità più alta al canale A rispetto al canale B.Quando è abilitata l’interruzione dal ricevitore, la CPU può essere interrotta in uno dei tre modi seguenti.

◙ Interruzione sul primo carattere di ricezione◙ Interruzione su ogni carattere di ricezione◙ Interruzione su una speciale condizione di ricezione.

Fabio Grossi PIO SIO Z80 12/04/2023

19/19

Page 20: Z80 PIO SIO

Trasferimento di Blocco CPU/DMA Il modo trasferimento di blocco utilizza l’uscita WAIT/READY in congiunzione con i bit di Wait/Ready del registro 1 di scrittura. L’uscita WAIT/READY può essere definita sotto il controllo del software come una linea di Wait nel modo trasferimento di blocco CPU o come una linea READY nel modo trasferimento di blocco DMA.

PROGRAMMAZIONE DEL SIOPer programmare il SIO, il software di sistema emette inizialmente una serie di comandi che inizializzano il modo base di funzionamento ed altri comandi per qualificare altre condizioni all’interno del modo selezionato. Per esempio nel modo asincrono, la lunghezza del carattere, la velocità del clock, il numero di bit di stop e la parità pari o dispari rappresentano la prima parte, segue il modo d’interruzione e per finire l’abilitazione del ricevitore o del trasmettitore.

REGISTRI DI SCRITTURAIl SIO contiene 8 registri di scrittura (WR0-WR7) per ciascun canale, programmabili separatamente dal software di sistema al fine di personalizzare funzionalmente i canali. La programmazione dei registri di scrittura richiede 2 byte eccetto il registro WR0. Il primo byte contiene 3 bit (D0-D2) che indicano il registro selezionato; il secondo byte è la parola di controllo effettiva che deve essere scritta in quel registro per configurare il SIO.Si noti che il programmatore , dopo aver indirizzato il registro selezionato, ha completa libertà sia di leggere per verificare il registro di lettura che di scrivere per inizializzare il registro di scrittura. Per una programmazione modulare e strutturata d’inizializzazione del SIO, il programmatore può usare le istruzioni di trasferimento di blocco di I/O. La scrittura del registro WR0 è un caso speciale in cui tutti i comandi base (CMD0-CMD2) possono essere accessibili con un singolo byte. Il Reset (interno od esterno) inizializza i bit del puntatore Do-D2 a puntare al registro WR0. I comandi base (CMD0-CMD2) ed i controlli CRC (CRC0, CRC1) sono contenuti nel primo byte di qualunque registro di scrittura reso accessibile. Questo fatto mantiene la massima flessibilità nel controllo del sistema.

REGISTRI DI LETTURAIl SIO contiene tre registri di lettura, (RR0-RR2), che possono essere letti per ottenere l’informazione di stato di ciascun canale (ad eccezione di RR2, valido solo per il canale B). L’informazione di stato comprende le condizioni di errore, il vettore d’interruzione ed i segnali dell’interfaccia di comunicazioni standard.Per leggere il contenuto di un registro di lettura selezionato, il software del sistema deve prima scrivere in WR0 il byte contenente l’informazione per il puntatore, esattamente nella stessa maniera delle operazioni con i registri di scrittura, quindi eseguendo un’istruzione d’ingresso, il contenuto del registro di lettura indirizzato può essere letto dalla CPU.I bit di stato dei registri RR0 e RR1 sono stati attentamente raggruppati per semplificarne il controllo. Per esempio, quando il vettore d’interruzione indica che è avvenuta un’interruzione dovuta ad una condizione speciale di ricezione, tutti i bit di errore appropriati possono essere da un singolo registro (RR1).

Fabio Grossi PIO SIO Z80 12/04/2023

20/19