15.7 Sincronizzazione dati
Come mostrato al §
15.1.1 il segnale dati deve essere campionato al ricevitore con cadenza pari alla frequenza di simbolo
fs il più possibile in prossimità del centro dell’intervallo di simbolo, in modo da contrastare gli effetti della limitazione di banda (vedi fig.
15.7) e dell’
isi (§
15.2.2.2); per questo motivo occorre che il temporizzatore mostrato in fig.
15.1 determini gli istanti di campionamento più idonei, effettuando la
sincronizzazione di simbolo. Le diverse scelte per l’onda elementare
g(t) discusse al §
15.2.1, determinano differenti gradi di “difficoltà” nel conseguimento di tale obiettivo.
Un diverso aspetto della sincronizzazione riguarda il problema di ricostruire la struttura
sintattica del segnale binario, in primo luogo per permettere il corretto svolgimento delle operazioni di decodifica
fec e di controllo di errore. Inoltre, la sequenza di bit al ricevitore è spesso il risultato della serializzazione (al lato del trasmettitore) di informazioni
a carattere (o
parola, o
word), come nel caso di un
file di testo oppure dei campioni di un segnale, oltre alle quali possono essere state introdotte ulteriori strutture sintattiche legate ai protocolli di multiplazione sia a circuito (§
24.3.4 e §
24.4) che a pacchetto (§
22.5.1). Lo
strato di collegamento, il secondo della pila
iso-osi, si occupa appunto di segmentare il flusso di bit ricevuto in accordo a tali strutture, coinvolgendo essenzialmente il sotto-strato
mac (§
23.1.4), che deve quindi essere in grado di conseguire la sincronizzazione di
simbolo, di
parola e di
trama.
Nel seguito analizziamo le esigenze e le soluzioni di sincronizzazione che emergono nell’ambito di due diverse tecniche di trasmissione, indicate come asincrona e sincrona, che si differenziano per il fatto che mentre nella prima le parole sono separate tra loro, nella seconda fluiscono senza interruzione.
15.7.1 Trasmissione asincrona
Viene adottata, ad esempio, nel caso di un terminale
stupido collegato ad un computer
centrale: la trasmissione in questo caso avviene in modo discontinuo, ossia quando l’operatore
digita sui tasti del terminale, e per questo la modalità di trasmissione è indicata come
asincrona. In tal caso, la linea di comunicazione permane abitualmente in uno stato di libero (
idle), contraddistinta da uno stato di tensione positiva, indicato anche come stato
mark.
Quando è pronto un carattere da trasmettere, il segnale viene portato nello stato
zero (detto
space) per la durata di
1 simbolo, che prende il nome di
bit di start: la transizione
in discesa viene rilevata dal ricevitore, che si predispone a contare un numero fisso di simboli (
7 in figura, indicati con una croce a significare la loro variabilità) basandosi su di un suo orologio indipendente. Segue poi un bit di
parità (se prevista, vedi §
15.6.3.1) ed uno o due di
stop (realizzati come
mark), presenti per assicurare una durata minima dello stato di
idle, prima della trasmissione del carattere successivo.
Il vantaggio di una simile modalità operativa è che il ricevitore non ha bisogno di generare con estrema esattezza la temporizzazione del segnale entrante; si basa infatti su di un proprio orologio locale, di precisione non elevata, che viene risvegliato in corrispondenza del bit di start. Tale semplicità operativa causa una inefficienza, in quanto oltre ai dati ed al bit di parità, si introduce anche lo start e lo stop, utili solo ai fini della sincronizzazione ma privi di contenuto informativo.
In fig.
15.52 è mostrato uno schema di funzionamento per trasmettitore e ricevitore, in cui le parole
entrano in modo parallelo nel trasmettitore, che le
incapsula tra un bit di start e due di stop, disponendo la parola dal
less al
most significant bit. Il risultato viene quindi prelevato in modalità seriale e da questo generato il segnale dati a velocità
fs = TxC, in cui
TxC = TXClock è la frequenza (
clock) di
trasmissione (
Tx).
Sincronizzazione di bit e di parola
Il ricevitore dispone di un orologio interno operante ad un ritmo RxC (RxClock) multiplo di quello di trasmissione ovvero RxC = N ⋅ TxC, che decrementa un contatore, il quale viene inizializzato con il valore N ⁄ 2 in corrispondenza del fronte di discesa del bit di start.. Il contatore quindi si azzera dopo NRxC⁄2 periodi di RxC, ovvero a metà del bit di start, determinando l’istante in cui campionare il segnale da parte del decisore, l’esito della cui decisione viene accodato in un registro di ricezione.
Da quel punto in poi il contatore viene inizializzato con il valore N, in modo che le successive letture del segnale di ingresso cadano sempre a metà del periodo di bit, fino alla ricezione di una intera parola. Al suo termine (segnalato dall’arrivo in prima posizione del bit di start a zero), il registro di ricezione è letto in modo parallelo, recuperando una intera parola.
Sincronizzazione di trama
I caratteri trasmessi possono far parte di messaggi più estesi, come ad esempio i paragrafi di un
file di testo. Per questo motivo, può essere necessario inserire dei caratteri speciali tra quelli trasmessi, con lo scopo di delimitare i gruppi di caratteri che appartengono ad uno stesso messaggio. Se le diverse parole da trasmettere non sono tutte quelle possibili in base alla lunghezza di parola adottata, la delimitazione può essere attuata mediante l’uso di caratteri speciali (di controllo) che non compaiono nel messaggio, come ad esempio i caratteri
stx (
Start of Text) e
etx (
End of Text) dell’insieme
ascii (pag.
1),
come mostrato in figura.
Se invece le parole trasmissibili sono qualsiasi, come nel caso della trasmissione di campioni di segnale, allora il carattere speciale etx potrebbe essere simulato dai dati trasmessi, causando un troncamento prematuro del messaggio. In tal caso, sia stx che etx vengono fatti precedere da un terzo carattere speciale, il dle (Data Link Escape). Il trasmettitore, dopo aver inserito la coppia dle-stx iniziale, ispeziona ogni carattere da inviare, e se questo simula un dle, inserisce un secondo dle, attuando una procedura detta character (o byte) stuffing. Il ricevitore a sua volta, per ogni dle ricevuto, controlla se la parola successiva è un etx, nel qual caso considera terminata la trasmissione; altrimenti, controlla se è un secondo dle, che è stato inserito dal trasmettitore, e lo rimuove. Altri casi non sono possibili, e se si verificano, rivelano la presenza di un errore di trasmissione.
15.7.2 Trasmissione sincrona
La trasmissione dei bit di start e di stop necessaria per effettuare una trasmissione asincrona è fonte di inefficienza, e per questo a velocità più elevate si preferisce non inframmezzare i dati da trasmettere con delimitatori aggiuntivi. Ciò comporta l’esigenza di adottare in ricezione soluzioni apposite per individuare gli istanti di decisione corretti, e quindi conseguire il sincronismo di simbolo. Il successivo sincronismo di parola si basa in generale sull’uso di parole di lunghezza costante, mentre quello di trama prevede due possibili soluzioni, l’una orientata al carattere, e l’altra al bit.
15.7.2.1 Sincronizzazione di simbolo
La figura
15.54-a mostra uno schema idoneo ad estrarre la temporizzazione
RxC dal segnale ricevuto, basata sull’uso di un circuito
dpll (
Digital Phase Locked Loop), il cui funzionamento richiede la presenza di
transizioni nel segnale ricevuto. Analogamente allo schema già analizzato nel caso di trasmissione asincrona, un orologio locale opera ad una frequenza
N volte più elevata di quella nominale, e il
dpll (fig.
15.54-b) ne divide l’orologio per
N, fornendo il segnale
RxC necessario al decisore per individuare gli istanti posti al centro di un intervallo di simbolo.
La divisione per
N è realizzata all’interno del
dpll mediante un contatore
all’indietro, che al suo azzeramento produce il segnale
RxC di sincronismo, e la ricarica del contatore con la costante
N. Nel caso in cui si verifichi uno
slittamento di fase tra il segnale ricevuto e l’orologio locale, questo può essere rilevato osservando che la transizione (quando presente) nel segnale non ricorre nella posizione presunta, ossia a metà del conteggio, ma in anticipo od in ritardo (fig.
15.54-c). In tal caso, il contatore che realizza la divisione viene inizializzato con un numero rispettivamente minore o maggiore di
N, in modo che il successivo impulso di sincronismo
RxC risulti spostato verso il centro del periodo di simbolo.
Nel caso di una differenza di velocità tra l’orologio di ricezione ed il ritmo di segnalazione le correzioni avvengono di rado, e sono di entità ridotta. Al contrario all’inizio di una trasmissione la differenza di fase può essere qualsiasi: per questo motivo prima dei dati veri e propri viene trasmessa una sequenza di dati fittizi o trailer, allo scopo di permettere l’acquisizione del sincronismo di simbolo. La durata del trailer dipende dalla velocità di convergenza della procedura, in cui sono imposte correzioni di maggiori entità per errori di fase più elevati.
15.7.2.2 Sincronizzazione di parola e di trama
Distinguiamo due casi.
Trasmissione orientata al carattere
La trasmissione orientata al carattere è usata principalmente nel caso di contenuti testuali, come per i file
ascii. In assenza dei bit di start e di stop, la sincronizzazione di carattere è ottenuta per mezzo della trasmissione, prima dei dati veri e propri, di una sequenza di caratteri
syn (
Synchronous Idle), che permette sia di conseguire (o mantenere) il sincronismo di bit, che di consentire l’individuazione dei confini di carattere, e quindi il sincronismo di carattere
.
La figura a lato mostra
(a) che la sincronizzazione di trama è ottenuta come per il caso asincrono, racchiudendo il blocco da trasmettere entro una coppia di caratteri
stx-
etx. Una volta che il ricevitore ha conseguito il sincronismo di bit, passa in una modalità di ricerca, verificando
(b) se l’allineamento di 8 bit consecutivi corrisponde al carattere
syn, ed in caso negativo, ripete il tentativo bit a bit.
Dopo aver individuato il syn, il ricevitore consegue l’allineamento sul carattere, ed inizia ad attendere il carattere stx, che indica l’inizio della trama, la quale è terminata da un etx. Nel caso in cui la trasmissione contenga caratteri qualunque, e dunque l’etx possa essere simulato dai dati, si ricorre alla stessa soluzione del caso asincrono, e cioè sia l’stx che l’etx vengono fatti precedere da un dle, ed all’interno dei dati si esegue il byte stuffing, sostituendo gli eventuali dle simulati con una coppia di dle.
Trasmissione orientata al bit
Questa tecnica viene preferita sia nel caso in cui i dati da trasmettere non siano organizzati in caratteri, sia per ridurre l’inefficienza legata all’uso di caratteri di controllo aggiuntivi, nonché per evitare la dipendenza da quei particolari caratteri, così da trasportare l’informazione in modo più universale e
trasparente. Nella trasmissione orientata al bit, la sincronizzazione di bit e di trama non impiega i caratteri
syn e
stx, bensì degli
idle bytes 01111111 nei periodi di inattività, e dei flag byte 01111110 per indicare sia l’inizio che la fine di una trama.
La figura a lato mostra in
(a) un esempio di trama, ed in
(b) la soluzione del
bit stuffing, necessaria ad evitare che il
flag byte possa essere simulato dal contenuto della trasmissione. Ora i dati trasmessi non devono essere necessariamente in numero multiplo della lunghezza di carattere, ed ogni qualvolta sono presenti
5 bit pari ad uno consecutivi, il trasmettitore inserisce forzatamente un bit pari a zero. Viceversa, quando il ricevitore osserva un bit pari a
0 preceduto da
5 bit pari ad uno consecutivi, lo rimuove, conseguendo così la
trasparenza dai dati, e permettendo il corretto rilevamento del flag byte di fine trama. Ovviamente, la procedura di bit stuffing/destuffing è applicata solamente al
contenuto della trama.
La procedura ora descritta può fallire qualora applicata ad un flusso binario affetto da errori, ed in tal caso occorre attendere la successiva opportunità di sincronizzazione. Tale problematica può essere risolta evitando la necessità del
flag byte finale grazie alla presenza di un campo
lunghezza nella intestazione di pacchetto, come avviene ad es. per la trama
ethernet, vedi §
23.1.4.2.