Sezione 15.6: Gestione degli errori di trasmissione Su Capitolo 15: Trasmissione dati in banda base Sezione 15.8: Appendici 

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[800]  [800] In alternativa al recupero del sincronismo da parte del ricevitore, l’informazione di temporizzazione può essere trasmessa su di una diversa linea, come avviene nel caso di dispositivi ospitati su di una stessa motherboard.. 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[801]  [801] Una sintassi definisce un linguaggio, prescrivendo le regole con cui possono essere costruite sequenze di simboli noti (l’alfabeto), e l’analisi delle sequenze eseguita nei termini degli elementi definiti dalla sintassi, ne permette una interpretazione semantica. Il parallelismo linguistico porta spontaneamente ad indicare i simboli trasmessi come alfabeto, gruppi di simboli come parole, e gruppi di parole come frasi, od in alternativa, trame (frame, ovvero telaio). 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[802]  [802] In appendice 15.8.4 è riportata la codifica in termini di sequenze binarie dei caratteri stampabili, definita dallo standard ascii; al § 24.3.1 si mostra la struttura della trama pcm, che trasporta i campioni di più sorgenti analogiche campionate., 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[803]  [803] Un dumb terminal non ha capacità di calcolo, e provvede solo alla visualizzazione di informazioni testuali. Fino agli anni ’70, è stato l’unico meccanismo di interazione (comunque migliore delle schede perforate !!!) con un computer. Per lungo tempo ogni computer disponeva di interfacce seriali rs-232 che possono funzionare sia in modalità asincrona che sincrona, oggi soppiantate dalle prese usb. 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[804]  [804] In tal caso la linea “.. is marking time” (sta marcando il tempo)..
figure f4.20.png
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[805]  [805] Ovviamente, occorre stabilire un accordo a priori a riguardo la velocità, ossia della frequenza, sia pure approssimata, della trasmissione., 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).
figure f4.20b.png
Figure 15.52 Trasmissione asincrona
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 = NTxC, che decrementa un contatore, il quale viene inizializzato con il valore N ⁄ 2 in corrispondenza del fronte di discesa del bit di start.[806]  [806] Per accorgersi di questa e delle altre transizioni, il ricevitore può ad esempio sfruttare un circuito che approssimi l’operazione di derivata, di cui constatare il superamento di una soglia.. Il contatore quindi si azzera dopo NRxC2 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[807]  [807] Una parola di M bit descrive uno spazio di 2M diversi elementi. Se le parole trasmissibili non sono tutte le 2M possibili, alcune di queste (che non compariranno mai all’interno del messaggio) possono essere usate per la sua delimitazione., 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),
figure f4.20c.png
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[808]  [808] Cioè, i dati trasmessi, che ora riempiono tutto lo spazio delle configurazioni possibili, contengono al loro interno la configurazione che è propria del carattere etx., 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.
figure f4.20e.png
Figure 15.54 Funzionamento del DPLL: (a) schema circuitale; (b) condizione di sincronismo; (c) correzione di fase
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[809]  [809] In termini generali, questo circuito è assimilabile ad un circuito di controllo, in quanto il suo principio di funzionamento si basa sul tentativo di azzerare una grandezza di errore. Infatti, la sincronizzazione dell’orologio del decisore di ricezione con il periodo di simbolo del segnale ricevuto avviene effettuando un confronto tra la velocità dell’orologio locale ed un ritmo presente nel segnale in arrivo: questo segnale di errore alimenta quindi un circuito di controreazione, che mantiene il clock locale al passo con quello dei dati in arrivo. Un diverso caso particolare di questo stesso principio è analizzato al § 16.11.1, ed anche ai § 12.2.2.2 e 12.3.2.1 a proposito del pll..
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.
figure f4.20f.png
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.
figure f4.20g.png
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.
 Sezione 15.6: Gestione degli errori di trasmissione Su Capitolo 15: Trasmissione dati in banda base Sezione 15.8: Appendici