0.1. I DISPOSITIVI SERIALI
0.1 I dispositivi seriali
La comunicazione seriale tra due dispositivi può essere caratterizzata da diverse mo-
dalità operative:
simplex, che prevede che i dispositivi siano collegati da una linea mono-direzionale,
poiché i ruoli di ricevitore e trasmettitore sono sempre svolti dagli stessi dispositivi;
half-duplex che prevede che i dispositivi siano collegati da una linea bi-direzionale
che non consente la comunicazione contemporanea nelle due direzioni, poiché il ruolo
di ricevitore o trasmettitore può essere svolto a turno da uno dei due dispositi;
full-duplex prevede che i dispositivi siano collegati da una linea bi-direzionale che
consente la comunicazione contemporanea nelle due direzioni, poiché il ruolo di rice-
vitore o trasmettitore può essere svolto contemporaneamente da entrambi i dispositi.
Nella comunicazione seriale orientata ai caratteri, le informazioni da trasmettere
sono organizzate in una sequenza ordinata di caratteri, ognuno dei quali codificato da
una parola di 7 o 8 bit. Inoltre, i caratteri coinvolti nella trasmissione seriale devono
essere strutturati sotto forma di un messaggio composto da tre campi:
• l’intestazione (header) comprende tutti i caratteri necessari per inizializzare
una comuncazione seriale, includendo i caratteri di sincronismo e di inizio testo;
• corpo
il (body) include i caratteri che rappresentano le vere e proprie informa-
zioni da trasmettere;
• coda
la (trailer) contiene i caratteri necessari per terminare una comuncazione
seriale, includendo il carattere di fine testo, gli eventuali caratteri di ridondanza,
e il carattere di fine turno per i canali half-duplex.
Il messaggio viene trasmesso un carattere alla volta, a partire dal primo carattere
dell’intestazione, e ciascun carattere viene trasmesso dal bit meno significativo al più
significativo, generando un segnale logico corrispondente al valore del bit inviato in
quell’istante, secondo una cadenza temporale prefissata. L’informazione così trasmessa
può venire ricostruita nella sequenzaa dei bit da un sistema ricevente che sia in grado
di campionare il segnale ricevuto con un clock locale con la medesima frequenza di
trasmissione e sincronizzato anche in fase.
La trasmissione seriale dei singoli caratteri di un messaggio richiede implica la seria-
lizzazione dei bit che compongono il dato trasmesso nel dispositivo trasmettitore e la
parallelizzazione nel dispositivo ricevitore. In una trasmissione orientata al carattere,
ogni carattere è convertito dalla sua forma parallela in cui è presente in un registro
di buffer alla forma seriale da immettere sulla linea di trasmissione e viceversa. Per
operare questa conversione parallelo-serie e serie-parallelo, è necessario disporre di par-
ticolari dispositivi basati su shift register a 8 bit di tipo parallel-in/serial-out (per il
trasmettitore) e di tipo serial-in/parallel-out (per il ricevitore).
Il trasferimento di un carattere può essere realizzato collegando l’uscita serial-out del
trasmettitore con l’ingresso serial-in del ricevitore e sincronizzando la parallelizzazione
dei bit campionati dal ricevitore con la serializzazione dei bit inviati dal trasmettitore.
Una semplice soluzione consiste nel dotare il trasmettitore e il ricevitore di un unico
clock comune, in modo da sincronizzare la serializzazione dei bit in trasmissione sul
1
0.1. I DISPOSITIVI SERIALI (b) tempificazione dei caratteri tra-
(a) modello logico della trasmissione seriale smessi a partire da clock Tx
Figura 0.1
fronte di salita del clock e il campionamento dei bit in ricezione sul fronte di discesa
del clock, così come mostrato in figura 0.1.
Per consentire un corretto trasferimento dei dati, i clock di trasmissione e quello di
ricezione devono avere la stessa frequenza e fase. In generale, nella trasmissione seriale
i singoli apparati sono dotati di clock autonomo, stabile in frequenza e sincronizzato in
fase ad ogni trasmissione di carattere, in grado di realizzare lo stesso campionamento
in trasmissione e ricezione .
In fig.0.1 è mostrato un campionamento con riferimento al dato binario “01001101”
effettuato sul fronte di discesa del clock.
I meccanismi di sincronizzazione dei flussi dati e di sincronizzazione dei clock è
legato alla tipologia di trasmissione sincrona o asincrona utilizzata. Nella trasmissione
sincrona la sincronizzazione avviene con riferimento a blocchi di caratteri mentre per
quella asincrona avviene carattere per carattere secondo la modalità Start-Stop di
seguito discussa.
0.1.1 Comunicazione asincrona
Nella comunicazione asincrona di tipo Start-Stop la trasmissione dei dati è effettuata
carattere per carattere. Ciascuno di essi è codificato su 5, 6, 7, 8 bit (il tipo di codifica
adottato è indipendente dal meccanismo di trasmissione; una codifica ampiamente
adottata è, ad esempio, quella ASCII per dati su 7 bit) ed è trasmesso all’interno di
k
un frame di bit, in cui sono presenti ulteriori bit adibiti alla sincronizzazione e al
controllo della parità.
Il campionamento della cella da inviare è effettuato alla frequenza del clock di
trasmissione Clk_Tx così come quello di ricezione Clk_Rx.
In assenza di trasmissione la linea è posta nello stato di “idle” caratterizzato dalla
presenza di un livello “1” logico continuo. All’atto della trasmissione di un carattere
τ
si esce da tale stato e si pone la linea a “0” logico per la durata di una cella bit.
→
1 0
Tale bit è detto di “Start” e la variazione del fronte del livello logico della linea
k
genera l’evento che avvia, nella corretta fase, il treno di impulsi di clock usati per
campionare il frame di dati da trasmettere.
Alla cella del bit di “Start” seguono le celle (5, 6, 7 o 8) del carattere, un’eventuale
τ 1, 5τ
cella dedicata ad un bit di parità e, per ultima una cella di durata di , o
2τ , posta al valore logico “1” e detta di “Stop” che chiude la trasmissione del frame
riposizionando la linea nello stato di idle. Si evidenzia che tra la trasmissione di un
2
0.1. I DISPOSITIVI SERIALI
Figura 0.2: Cella di trasmissione asincrona campionata
carattere e il successivo la linea deve permanere in stato di idle almeno per la durata
di una cella di stop. f
Onde garantire un’adeguata stabilità nella frequenza di campionamento , questa è
c
16f 64f
effettuata mediante un clock operante ad una frequenza superiore, o .
c c
16f
In fig. 0.3è mostrato il campionamento di un frame in ricezione con un clock per
c
una trasmissione caratterizzata da un frame composto da 9 bit: 1 start+7dato+1stop.
→
1 0
Riconosciuta la transizione dello start bit, punto (A) in figura, il ricevitore
16x9 = 144
abilita il clock locale a trasmettere un treno di impulsi. Tali impulsi sono
[8, (8 +
contati da un contatore che abilita il campionamento secondo la sequenza
16), ..., (8 + 7x16), 8 + 8x16)] riportata in figura. In tal modo la linea è campionata
al centro di ognuna delle 9 celle bit e ciò garantisce la corretta lettura dei valori della
linea anche in presenza di un piccolo errore di fase. Al termine del campionamento del
frame, il ricevitore ne verifica la correttezza strutturale (presenza di 8 bit e dello stop
bit, che chiude il frame) e riprende il riconoscimento della variazione del fronte dello
stato di idle verso il successivo start bit. In caso di mancato riscronto dello stop bit,
il circuito provvede a generare un segnale di errore di frame. Altri errori monitorati e
segnalati sono quello di parità (se adottata nel frame) e quello detto di “overrun” che
consiste nella mancata lettura di un carattere presente sul registro a scorrimento che
lo parallelizza bufferizzandolo prima che sia arrivato il primo bit di start del successivo
carattere.
0.1.2 Comunicazione sincrona
La comunicazione seriale sincrona presenta dei fattori di efficienza migliori rispetto a
quella asincrona a scapito di una maggiore complicazione circuitale dei sistemi tra-
smittenti e riceventi. Essa migliora l’efficienza di trasmissione riducendo il numero di
bit di controllo necessari a gestire la trasmissione stessa. Ciò è ottenuto trasmettendo
blocchi di dati fissi (trasmissione a blocchi) o variabili (trasmissione bit-oriented, si
ammette cioè la possibilità di trasmettere dati rappresentati da stringhe binarie anche
di lunghezza variabile) in un unico frame, realizzando un flusso di dati continuo “sin-
crono”, cioè la cui sincronizzazione è garantita da meccanismi che mantengono in fase
3
0.1. I DISPOSITIVI SERIALI
Figura 0.3: Campionamento di un frame
il clock per tutta la durata del blocco trasmesso. Si provvede, inoltre, a eliminare la
trasmissione di start e stop bit e il bit di parità per ogni carattere sostituendolo con
un controllo di errore legato al blocco ottenuto mediante codici a ridondanza ciclici
(CRC).
Nella comunicazione seriale sincrona, l’intero messaggio è trasmesso come un flusso
continuo destrutturato di bit, senza alcun delimitatore di caratteri. La discriminazione
fra i vari caratteri (se necessaria) è ottenuta successivamente alla ricezione dando
struttura al flusso di bit ricevuto mediante azioni di conteggio e selezione in hardware
dei bit utili che codificano i vari caratteri.
Non disponendo più dei bit di start e stop per la rifasatura del clock di ricezione, la
sincronizzazione di bit può essere ottenuta o con un clock esterno fornito al ricevitore
dal trasmettitore oppure con un clock interno stabile in frequenza e tale da garantire
l’aggancio di fase per tutta la durata di un messaggio e dotato di un meccansimo di
rifasatura.
L’impossibilità di eliminare completamente i fenomeni di deriva nel tempo sugli oscil-
latori implica che la sincronizzazione con aggancio di fase sia basata sulla capacità del
ricevitore di “autosincronizzare” il proprio clock di campionamento con le transizioni
→
1 0 presenti nel messaggio stesso. In particolare, l’aggancio di fase può essere ot-
tenuto prevedendo all’inizio, e periodicamente all’interno del messaggio, l’inserimento
di speciali caratteri di sincronismo, codificati in modo da asicurare una presenza suffi-
cientemente elevata di transizioni di livello. Una volta che il carattere di sincronismo
viene riconosciuto, il clock di campionamento del ricevitore viene abilitato fino ad una
nuova fase di sincronizzazione attivata dal ricevimento di un opportuno carattere di
sincronizzazione (tale carattere, in uno dei protocolli sincroni più diffusi, il BSC della
IBM, è il 16 esadecimale che corrisponde alla stringa binaria 00010110 e ad un segnale
nella linea della forma di quello riportato in figura:
La tabella di seguito mostra la codifica dei caratteri di controllo presenti nel codice
ASCII ove sono anche indicati taluni caratteri utilizzati nella trasmissione sincrona di
tipo BSC fra cui il Sync prima indicato.
Quando è necessario inserire il carattere di sincronismo all’interno del messagio,
esso viene posto in posizioni prefissate