Che materia stai cercando?

Dispositivi seriali Appunti scolastici Premium

Appunti dei calcolatori elettronici sui dispositivi seriali del professor Pastore. Il file contiene una lunga trattazione sulla comunicazione seriale (i dispositivi, l'intestazione, il corpo e la coda), la comunicazione asincrona e la comunicazione sincrona.

Esame di Calcolatori Elettronici II docente Prof. S. Pastore

Anteprima

ESTRATTO DOCUMENTO

0.2. INTERFACCE SERIALI UNIVERSALI

Figura 0.6

0.2.1 Interfacce UART

Un’interfaccia UART gestisce la trasmissione dei caratteri con una precisa sequenza

di operazioni:

1. quando la CPU comanda l’attivazione della trasmissione, l’interfaccia seriale at-

tiva il bit Tx-ready del registro di stato e la corrispondente linea di interruzione.

La sezione Tx si pone in attesa del carattere da trasmettere mantenendo la linea

seriale nello stato di idle;

2. la CPU scrive nel buffer di trasmissione il carattere da inviare. Il bit Tx-ready e

la corrispondente linea di interruzione vengono disabilitate;

3. se il registro a scorrimento è ancora impegnato con la serializzazione del carattere

precedente, viene attesa la fine della trasmissione, dopodiché il contenuto del

buffer di trasmissione viene trasferito nel registro a scorrimento. Il clock di

trasmissione viene abilitato, avviando la serializzazione del nuovo carattere da

trasmettere;

4. una volta ultimata la serializzazione del carattere, se il buffer di trasmissione

e il registro a scorrimento sono vuoti, ma la trasmissione è ancora abilitata, la

sezione Tx dell’UART riporta la linea seriale nello stato di idle e riprende la

sequenza di operazioni dalla fase 1.

Viceversa, la ricezione dei caratteri è gestita da un’interfaccia UART nel seguente

modo:

1. la linea seriale viene campionata per ricercare lo start bit, in modo da ottenere

la sincronizzazione di carattere. Al riconoscimento dello start bit, il clock di

campionamento viene rifasato in modo da portarsi a “centro bit”. A questo punto,

la sezione Rx inizia la parallelizzazione dei bit ricevuti, attivando il registro a

scorrimento per un numero di volte pari alla lunghezza prevista del carattere;

2. quando la parallelizzazione del carattere è completata, la sezione Rx verifica gli

stop bit e i bit di ridondanza, riportando l’esito dei controlli sui bit parity error

e frame error del registro di stato; 9

0.2. INTERFACCE SERIALI UNIVERSALI

3. il contenuto del registro a scorrimento viene trasferito nel buffer di ricezione. Il

bit Rx-ready del registro di stato e la corrispondente linea di interruzione vengono

abilitate, per poi disattivarsi in corrispondenza di una successiva lettura della

CPU sul buffer di ricezione. Se il trasferimento dal registro a scorrimento verso

il buffer di ricezione avviene quando il bit Rx-ready è gia abilitato, ovvero se il

carattere precedente non è stato ancora letto dalla CPU, viene attivato il flag

overrun error del registro di stato, denunciando la perdita irreversibile di un

carattere;

4. dopo la scrittura del buffer di ricezione, la sezione Rx dell’UART riprende il

campionamento della linea seriale, riportandosi nella fase 1.

In caso di errori, è compito della CPU provvedere alle opportune procedure di recu-

pero in funzione del protocollo utilizzato. I flag interni al dispositivo possono essere

azzerati con un’opportuna parola di comando. Con una procedura analoga, è possibile

inizializzare il dispositivo, predisponendolo ad accettare una nuova configurazione del

registro di modo.

La gestione in polling della comunicazione seriale risulta estremantente semplice,

ma presenta il grave inconveniente di tenere bloccata la CPU nei cicli di campiona-

mento del registro di stato. Nel caso in cui il sistema debba operare in multitasking,

è opportuno prevedere una più efficiente gestione tramite interruzioni, richiamando

l’attenzione del programma solo negli istanti in cui bisogna trasferire un carattere. Il

software di gestione deva a questo punto prevedere la configurazione del dispositivo e

la preparazione in memoria di un’area destinata a contenere il messaggio da trasmet-

tere, di un’area destinata a contenere il messaggio da ricevere, e dei relativi puntatori

di carattere. Le routine di gestione delle interruzioni per Tx-ready e Rx-ready prov-

vederanno al trasferimento di ogni singolo carattere, all’incremento dei puntatori di

buffer, e al riconoscimento di eventuali errori. Al termine del messaggio, le ISR di

Tx-ready e Rx-ready provvederanno ad auto-disabilitarsi e a riattivare il programma

principale per le necessarie operazioni di analisi e interpretazione del messaggio, e per

la preparazione di risposte o di altri eventuali nuovi messaggi da trasmettere.

0.2.2 Esempio di scrittura di un driver di I/O per il dispositivo

seriale con specifico riferimento all’ USART I825A di INTEL

La funzionalità dei dispositivi USART è molto più complessa di quella degli UART, e

per questo concentremo la discussione sull’interfaccia Intel 8251A, la cui architettura

??.

è mostrata in figura

La CPU comunica con il dispositivo I8251A attraverso il registro di stato, il registro

di modo/comando, il buffer di ricezione, e il buffer di trasmissione. Il registro di stato

e il buffer Rx sono a sola lettura per la CPU, mentre il registro di modo/comando e il

buffer Tx sono a sola scrittura.

Sezione di controllo La sezione di controllo presenta le linee di controllo per sele-

zionare il dispositivo, indirizzare i registri interni, e riportare il dispositivo nella stato

iniziale di funzionamento: 10

0.2. INTERFACCE SERIALI UNIVERSALI

• RESET . Linea di controllo per azzerare i registri interni e forzare il dispositivo

nello stato di idle;

• CLK. Clock per temporizzazioni interne;

• CS. Linea di controllo per abilitare la selezione del dispositivo;

• W R. Strobe di scrittura della CPU;

• RD. Strobe di lettura della CPU.

• W R RD

C/D. Linea di controllo che insieme agli strobe e indirizza i quattro

??.

registri interni dell’USART secondo la tabella Solitamente, viene collagata

A

alla linea del bus indirizzi;

0

C/D WR RD Registro selezionato

0 1 0 Buffer Rx Indirizzamento dei registri interni

0 0 1 Buffer Tx

1 1 0 stato

modo/comando

1 0 1

dell’USART.

Sezione modem La sezione modem presenta delle linee di controllo che possono

essere utilizzate dalla CPU e dalla periferia per instaurare tra loro una qualunque

logica di protocollo:

• Data Set Ready. Linea di ingresso general-purpose controllata dalla periferia. Il

suo valore logico può essere letto dalla CPU nel registro di stato;

• Data Terminal Ready. Linea d’uscita programmabile dalla CPU tramite il regi-

stro di modo/comando;

• Request To Send. Linea di uscita programmabile dalla CPU attraverso il registro

di modo/comando;

• Clear To Send. Linea di ingresso che permette alla periferia di avviare la

trasmissione seriale dei dati, se la sezione Tx è abilitata.

11

0.2. INTERFACCE SERIALI UNIVERSALI

Registro di modo Prima di iniziare le operazioni di trasmissione e ricezione, l’USART

deve essere inizializzato mediante un insieme di parole di controllo da scrivere nel regi-

stro di modo/comando secondo una sequenza opportuna. Dopo un’operazione di reset

esterno o interno, la prima istruzione inviata al registro di modo/comando è consi-

derata dal dispositivo come una parola di modo, la quale definisce le caratteristiche

??.

operative di base del dispositivo secondo il formato mostrato in figura

Formato della parola di

modo.

I bit MD-0 e MD-1 determinano il modo di funzionamento della comunicazione e il

fattore moltiplicativo della frequenza di trasmissione. I bit MD-2 e MD-3 stabiliscono

la lunghezza del singolo carattere. I bit MD-4 e MD-5 servono ad abilitare il controllo

di parità e a scegliere il tipo di parità da utilizzare.

modo MD-3 MD-2 Carattere

MD-1 MD-0

0 0 sync 0 0 5 bit

0 1 0 1

async 6 bit

16×

1 0 1 0

async 7 bit

64×

1 1 async 1 1 8 bit

Parità

MD-5 MD-4

- 0 nessuna

0 1 dispari

1 1 pari

I bit MD-6 e MD-7 indicano nel modo asincrono il numero di stop bit da inserire alla

fine del carattere. Nella modalità sincrona, invece, il bit MD-6 seleziona la sincro-

nizzazione interna o esterna, mentre il bit MD-7 definisce il numero di caratteri di

sincronizzazione.

Registro di comando Una volta impartita la parola di modo, le successive istruzioni

inviate al registro di modo/comando vengono considerate dal dispositivo come parole

di comando. L’unica eccezione si verifica nel modo sincrono per la prima o le prime

12

0.2. INTERFACCE SERIALI UNIVERSALI

MD-7 MD-6 stop bit MD-6 Tipo di sync

0 0 non valido

0 1 1 bit 0 esterna

1 0 1 + 1/2 bit 1 interna

2 bit

1 1

Carattere di sync

MD-7

0 doppio

singolo

1

due istruzioni seguenti la parola di modo, le quali vengono considerate come caratteri

di sincronismo. In generale, le parole di comando codificano gli ordini operativi da

??.

impartire al dispositivo secondo il formato mostrato in figura

Formato della parola di comando.

Il bit CM-0 abilita la trasmissione, mentre il bit CM-2 abilita la ricezione. I bit CM-1

0 DT R RT S

e CM-5 portano al valore logico rispettivamente le linea di uscita e della

0.

sezione modem. Il bit CM-3 forza la linea seriale di trasmissione al valore logico Il

bit CM-4 resetta i flag di errore del registro di stato. Il bit CM-6 produce lo stesso

effetto della linea di controllo RESET. Il bit CM-7 funziona soltanto nel modo sincrono,

abilitando la ricerca del carattere di sincronismo sulla linea seriale di ricezione.

Registro di stato Il registro di stato permette alla CPU di accertare lo stato di

??.

funzionamento dell’USART secondo il formato mostrato in figura A differenza del

registro di modo/comando, il registro di stato può essere letto dalla CPU in qualunque

istante senza interferire con la normale attività del dispositivo.

Formato del registro di stato.

Il bit ST-0 indica che il buffer di trasmissione è vuoto, mentre il bit ST-1 indica che

il buffer di ricezione è pieno. Essi permettono alla CPU di gestire la comunicazione

13

0.2. INTERFACCE SERIALI UNIVERSALI

in polling, in alternativa alla gestione tramite interrupt. Il bit ST-2 avverte che il

registro serializzatore è vuoto. Il bit ST-3 indica che il controllo di parità del carattere

ricevuto è fallito. Il bit ST-4 denuncia la perdita irreversivile del carattere contenuto

nel buffer di ricezione. Il bit ST-5 segnala un errore di rilevamento degli stop bit

nel modo asincrono. Il bit ST-6 conferma l’avvenuto riconoscimento del carattere di

sincronismo nel modo sincrono, o del carattere di break nel modo asincrono. Il bit

DSR 0,

1 è posta a e viceversa.

ST-7 assume valore quando la linea

Sezione di trasmissione La sezione Tx si occupa della serializzazione dei caratteri,

prevedendo appositi segnali per il controllo della trasmissione:

• T xD. Linea di uscita per la trasmissione dei caratteri serializzati;

• T xC. Clock per temporizzare l’emissione dei bit da trasmettere. La sua frequen-

za dipende dal fattore moltiplicativo impostato nella parola di modo;

• T xRDY . Linea di interruzione che indica la disponibilità della sezione Tx a rice-

T xRDY =

vere un nuovo carattere da trasmettere, secondo l’espressione logica

·CM

·CT S

ST . Un’operazione di scrittura della CPU sul buffer di trasmissione

0

0

comporta l’azzeramento del segnale;

• T xE. Linea di uscita che avverte quando il registro serializzatore è vuoto. Solita-

mente, viene utilizzato dalla CPU nelle comunicazioni half-duplex come segnale

di fine trasmissione;

Subito dopo un’operazione di reset, il canale TxD viene continuamente mantenuta al

1.

livello logico La trasmissione seriale del primo carattere inizia quando il bit CM-

1 CT S 0

0 viene messo a dalla CPU e la linea di controllo viene portata al livello

CT S 1

dalla periferia. Se la linea viene riportata al livello dalla periferia, oppure se

0

il bit CM-0 viene rimesso a dalla CPU, l’interfaccia completa la trasmissione dei

1.

dati contenuti nella sezione Tx e subito dopo riporta la linea TxD al livello logico

Quando la trasmissione è abilitata, il funzionamento della sezione Tx dipende dal tipo

di comunicazione adottato:

modo asincrono.

1. In ogni carattere che la CPU invia all’interfaccia, la sezio-

ne Tx aggiunge lo start bit, l’eventuale bit di parità, e il numero programmato

di stop bit. Il primo bit del carattere viene trasmesso sull’uscita TxD in corri-

T xC,

spondenza del fronte di discesa del clock mentre i successivi bit vengono

1/16 1/64 T xC,

trasmessi a una frequenza pari a 1, o di a seconda di come

definito nella parola di modo. Nel caso in cui viene richiesto l’invio del carattere

0

di break, la linea TxD viene forzata al livello logico per un tempo pari alla

trasmissione di due caratteri. In mancanza di caratteri da trasmettere, se non

è stato richiesto l’invio del carattere di break, la linea TxD viene riportata al

1;

livello logico

modo sincrono.

2. La trasmissione seriale dei caratteri che la CPU invia all’in-

T xC.

terfaccia è sincronizzata sul fronte di discesa del clock La frequenza di

14

0.2. INTERFACCE SERIALI UNIVERSALI

T xC,

emissione coincide con quella di non essendo ammesso alcun fattore mol-

tiplicativo. Una volta avviata la trasmissione, il flusso di dati sulla linea TxD

deve procedere con continuità, non potendo in nessun caso sospendere il flusso di

bit. Se la CPU non provvede a inviare un nuovo carattere prima che il registro

trasmettitore si svuoti, la sezione Tx abilita la linea TxE e trasmette automati-

camente uno o due caratteri di sincronismo, in funzione di quanto programma-

to nella parola di modo. Un’operazione di scrittura sul buffer di trasmissione

comporta l’azzeramento del segnale TxE.

Sezione di ricezione La sezione Rx si occupa della parallelizzazione dei caratteri,

prevedendo appositi segnali per il controllo della ricezione:

• RxD. Linea di ingresso per la ricezione dei caratteri serializzati;

• RxC. Clock per temporizzare il campionamento dei bit da ricevere.

• RxRDY . Linea di interruzione che segnala la disponibilità di un nuovo carattere

nel buffer di ricezione. Una lettura della CPU sul buffer di ricezione comporta

l’azzeramento del segnale;

• SY N DET . Linea di controllo che assume un significato diverso a seconda del

modo di funzionamento dell’interfaccia. Nel modo sincrono a sincronizzazione

interna, SYNDET è una linea di uscita che segnala la ricezione del carattere di

sincronismo, e che viene azzerata da un’operazione di lettura sul registro di stato.

Nel modo sincrono a sincronizzazione esterna, SYNDET è una linea di ingresso

che forza la sezione Rx ad iniziare la normale parallelizzazione dei caratteri. Nel

modo asincrono, infine, SYNDET è una linea di uscita che segnala la ricezione

del carattere di break, e che viene azzerata non appena la linea RxD ritorna al

1.

valore

Quando la ricezione è abilitata dal bit CM-2 della parola di comando, la linea RxD

RxC,

viene campionata sul fronte di salita di e il funzionamento della sezione Rx

dipende dal tipo di comunicazione adottato: →

1 0

modo asincrono.

1. In corrispondenza di una transizione della linea RxD, la

sezione Rx rifasa il clock interno di campionamento per posizionarsi a centro bit.

0

Se il livello sulla linea RxD viene confermato, la sezione Rx riconosce lo start

bit, inizia il conteggio dei bit campionati, e in base alla lunghezza di carattere

programmata, identifica l’eventuale bit di parità e gli stop bit. Se il controllo di

1.

parità fallisce, il bit ST-3 viene messo a La sezione Rx controlla la presenza di

un solo stop bit, indipendentemente dal numero programmato, che riguarda solo

1.

la trasmissione. Se lo stop bit non viene rilevato, il bit ST-5 viene posto a Il

carattere ricevuto viene caricato nel buffer di ricezione, dopodiché viene attivato

il bit ST-1 e la linea d’interruzioine RxRDY. Se il carattere precedentemente

1

posto nel buffer di ricezione non è stato ancora letto, la sezione Rx pone a il

bit ST-4, rilevando un errore di overrun. Gli eventuali errori emersi in fase di

ricezione non interferiscono con il proseguio dell’attività del dispositivo, poichè

15

0.3. PROGRAMMAZIONE DEL DRIVER

essi si possono azzerare attraverso il bit CM-4 della parola di comando. Il dato

trasferito alla CPU non contiene il bit di parità, e i bit di un carattere non

0;

utilizzati vengono posti automaticamente al valore

modo sincrono.

2. La sincronizzazione di carattere viene gestita dalla sezione Tx

attraverso due stati di funzionamento: il modo hunt, che corrisponde allo stato

di “ricevitore non sincronizzato”, e il modo sync, che corrisponde allo stato di “ri-

cevitore sincronizzato”. Nella modalità hunt, ciascun bit acquisito dal registro a

scorrimento viene subito trasferito nel buffer di ricezione, in modo da permettere

una tempestiva sincronizzazione di carattere. In caso di sincronizzazione interna,

la ricerca del carattere di sincronismo è affidata direttamente all’interfaccia. La

modalità hunt deve essere attivata dalla prima parola di comando che segue l’in-

struzione di modo, per consentire alla sezione Rx di confrontare continuamente

il contenuto del buffer di ricezione con il pattern del carattere di sincronismo.

Quando si presenta una corrispondenza, lo stato di funzionamento della sezione

1

Rx transita dal modo hunt al modo sync, ponendo al valore la linea di controllo

SYNDET. In caso di sincronizzazione esterna, la ricerca del carattere di sincro-

nismo deve essere gestita esclusivamente dalla CPU. L’attivazione della modalità

hunt avviene attraverso il bit CM-7 della parola di comando, mentre la successiva

transizione al modo sync avviene abilitando la linea di controllo SYNDET, che

in questo caso funziona come ingresso. A prescindere dal tipo di sincronizzazio-

ne utilizzata, la CPU può in qualsiasi momento richiedere la riattivazione della

modalità hunt. In tal caso, tutti i bit contenuti nella sezione Rx vengono forzati

1

a per prevenire un erroneo riconoscimento del patter di sincronismo. Durante

la normale ricezione dei caratteri (modo sync), la funzione di riconoscimento del

carattere di sincronismo è ancora abilitata se configurata internamente, ma solo

in corrispondenza dei limiti di ogni carattere. Quando il carattere di sincronismo

viene rilevato all’interno del flusso di dati, la linea SYNDET viene attivata per

segnalare questo evento alla CPU, la quale può eventualmente filtrare tali carat-

teri dal testo. Nel caso di sincronizzazione esterna, invece, il segnale SYNDET

non è significativo nel modo sync.

0.3 Programmazione del driver

L’obiettivo di questa sezione è quello di illustrare una comunicazione seriale asincrona

tra due sistemi simmetrici, ciascuno dei quali composto da un processore M68000,

una memoria ROM, una memoria RAM, un terminale e un dispositivo USART. I

due sistemi sono collegati tra loro attraverso le rispettive interfacce seriali, secondo lo

??.

schema di interconnesione mostrato in figura

La connessione full-duplex dei dispositivi USART permette ai due sistemi di scambiar-

si i caratteri digitati sui rispettivi terminali. In particolare, una stringa immessa da

tastiera viene acquisita dalla CPU mediante un’interruzione. All’arrivo dell’interrupt,

l’ISR corrispondente invia un carattere della stringa alla sezione Tx del dispositivo

USART, in modo da trasmetterlo alla sezione Rx dell’USART dell’altro sistema. La

16

0.3. PROGRAMMAZIONE DEL DRIVER

Comunicazione seriale asincrona: connessione completa tra interfacce USART.

ricezione del carattere sulla sezione Rx dell’altra USART viene gestita tramite un’inter-

ruzione. All’arrivo dell’interrupt, l’ISR corrispondente acquisisce il carattere ricevuto

e lo invia al terminale per la visualizzazione. I due sistemi sono composti dai seguenti

dispositivi:

1. memoria ROM di 8 Kbyte, il cui spazio di indirizzamento va da 0000 a 1FFFF.

2. memoria RAM di 16 Kbyte, il cui spazio di indirizzamento va da 8000 a BFFFF;

3. motorola 68000 con stack utente inizializzato all’indirizzo 9000 e stack supervi-

sore inizializzato all’indirizzo 9200;

4. terminale associato agli indirizzi 2000 e 2001. La pressione del tasto ENTER

genera un’interruzione di livello 1, per cui il suo autovettore corrisponde all’in-

(24 + 1) 4 = 100 = 0064

dirizzo . Viceversa, l’evento “buffer pieno” genera

16

un’interruzione di livello 2, per cui il suo autovettore corrisponde all’indirizzo

·

24 + 2 4 = 104 = 0068 ;

16

5. dispositivo USART associato agli indirizzi 2004 e 2005. La linea RxRDY genera

un’interruzione di livello 3, per cui il suo autovettora corrisponde all’indirizzo

·

24 + 3 4 = 108 = 006C . Viceversa, la linea TxRDY genera un’interruzione di

16 ·

24 + 4 4 = 112 =

livello 4, per cui il suo autovettore corrisponde all’indirizzo

0070 .

16

La tabella dei vettori d’interruzione dei due sistemi è configurata nel seguente modo:

• l’ISR dell’autovettore di livello 1 inizia dall’indirizzo 8500;

• l’ISR dell’autovettore di livello 2 inizia dall’indirizzo 8600;

• l’ISR dell’autovettore di livello 3 inizia dall’indirizzo 8700;

17


PAGINE

20

PESO

356.81 KB

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2013-2014

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cecilialll di informazioni apprese con la frequenza delle lezioni di Calcolatori Elettronici II e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Napoli Federico II - Unina o del prof Pastore Stefano.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici ii

Programma di prova
Appunto
Priority interrupt controller
Appunto
Configurazione USART
Appunto
Trasmissione sincrona e asincrona
Appunto