webstat GSMWORLD.it

Introduzione alle reti di calcolatori

Trasmissione dei dati. Sincronizzazione

 


La trasmissione tra i nodi avviene tramite l'invio di segnali elettrici attraverso un canale di trasmissione.Un elemento molto importante nella scelta e nella valutazione dei sistemi trasmissivi è la velocità di trasmissione.Risulta comodo definire anche la velocità massima di trasmissione lungo il canale (max. data rate), detta anche capacità di canale, che dipende dal sistema di codifica utilizzato e dalle caratteristiche del canale stesso, in particolare dalla sua larghezza di banda.Poiché durante la trasmissione i segnali subiscono inevitabilmente distorsioni di ampiezza e fase e sono inquinati da rumore di varia natura, vengono spesso applicati metodi anche sofisticati per la rilevazione e l'eventuale correzione degli errori.

A questo scopo viene aggiunto al messaggio un campo di ridondanza. Al momento della trasmissione, il trasmettitore calcola il valore da porre nel campo di ridondanza applicando un certo algoritmo alle informazioni che compongono il messaggio. Il ricevitore applica lo stesso algoritmo alle informazioni che riceve, l'uguaglianza fra la ridondanza inviata e quella adesso calcolata asserisce la correttezza della trasmissione.

La necessità fondamentale di riconoscere, in ricezione, la sequenza di bit che compongono ciascun carattere trasmesso e di individuare esattamente il livello logico di ciascun bit impone che il trasmettitore comunichi al terminale ricevente qual è il primo bit di ogni carattere e con quale cadenza si presenteranno i bit successivi. Ciò può essere attuato in due modalità differenti: asincrona e sincrona. Si illustrano ora in maggior dettaglio tutti questi aspetti.

 

Velocità di trasmissione

Un elemento molto importante nella scelta e nella valutazione dei sistemi trasmissivi è la velocità di trasmissione. Per misurare la quantità di informazione trasmessa nel tempo vengono utilizzate due unità di misura:

Con la tecniche di modulazione, in particolare la tecnica QAM (Quadrature Amplitude Modulation) tipica dei protocolli V.22bis e successivi (inclusi V.32bis e V.34), è possibile associare più di un bit a una singola variazione del segnale. In pratica ogni oscillazione dell'onda portante che corrisponde a una variazione di segnale può essere ulteriormente modificata in ampiezza e in fase. Combinando tutte le possibili variazioni di ampiezza e di fase, si hanno 2, 4, 6, 8 o 16 valori binari che possono essere inviati ad ogni singolo ciclo del segnale.

Sapendo che sulle linee telefoniche non è possibile superare i 3.000 Hz, i modem modulano sempre a 2.400 baud (2.400 variazioni di segnale al secondo, corrispondenti grosso modo a 2.400 Hz). Però usando la tecnica QAM si riescono ad abbinare più bit a ogni variazione: 2 (4.800 bps), 4 (9.600 bps), 6 (14.400 bps), 8 (19.200 bps) oppure 12 (28.800 bps).Quindi soltanto nel caso in cui si trasmetta un solo bit per ogni oscillazione del segnale e non vi siano bit di servizio trasmessi (bit che non vengono conteggiati nel bps rate), si ha che il baud rate coincide con il bps rate (bit per secondo).Un'altra tecnica di modulazione, usata solo nei modem a bassa velocità, è la FSK (Frequency Shift Keying) che, come dice il nome, modifica la frequenza della portante per indicare la presenza del valore digitale 0 (aumento della frequenza) o 1 (diminuzione della frequenza).

L'ultima possibilità per incrementare ulteriormente le prestazioni è comprimere i dati da trasmettere prima della trasmissione stessa usando particolari algoritmi e quindi decomprimerli alla ricezione. In questo caso l'effettivo miglioramento dipende sensibilmente dalla possibilità di compressione offerta dal particolare tipo di dati da trasferire (ad esempio un file di testo Ascii è comprimibile fino all'80%, mentre un file già compattato non lo è per nulla).

E' chiaro che in condizioni di disturbo sulla linea bisogna ridurre il numero di bit per segnale trasmessi, altrimenti molte delle informazioni che giungono a destinazione non saranno corrette e dovranno essere rispedite in continuazione. In questo senso risultano molto importanti le funzioni fall back e fall forward, che consistono nella capacità di adattare la velocità di trasmissione, riducendola e incrementandola, in base alle condizioni della linea telefonica. Altrettanto importante è la presenza e l'efficienza dei protocolli di controllo e correzione degli errori.

 

Modulazione di ampiezza

Viene ora presentata velocemente una tecnica di modulazione basata sulla modificazione dell'ampiezza del segnale. Precedentemente è stato illustrato che, a causa della ridotta ampiezza di banda del segnale vocale (circa 3.000 Hz), le linee telefoniche che sono basate su di esso non permettono di superare i 2.400 baud, così per migliorare le prestazioni si è cercato di associare più di un bit a una singola variazione del segnale.

Se per trasferire un bit per oscillazione sono necessarie due livelli di ampiezza del segnale (basso per il bit 0 e alto per il bit 1), per trasferire N bit per oscillazione sono necessari 2N livelli di ampiezza (ad ogni livello viene associata una delle 2N possibili sequenze di bit).

Chiaramente, maggiore è il numero dei livelli di tensione (e conseguentemente minore il gap che li separa), maggiore è la difficoltà di riconoscere il corretto livello in ricezione.Un modem che lavora a 14.400 bps su una linea a 2.400 baud significa che trasmette sequenze di 6 bit per oscillazione (14.400/2.400=6), utilizzando 26=64 livelli differenti.

Rappresentazione di un segnale digitale che codifica più bit contemporaneamente

 

Cenni di modulazione digitale

La modulazione modifica un parametro della portante in modo che al bit 1 e al bit 0 corrispondano rispettivamente due diverse ampiezze, frequenze o fase della portante.

Modulazione di Ampiezza

ON/OFF Keying

bit 1 -> A× cos(2p ft+q )
bit 0 ->
0

  Phase Reversal bit 1 -> A× cos(2p ft+q )
  Keying (PRK) bit 0 -> -A× cos(2p ft+q )

 

 

Modulazione di Frequenza

Frequency Shift Keying (FSK)

bit 1 -> A× cos(2p f1t+q )
bit 0 ->
A× cos(2p f2t+q )

   
Modulazione di Fase
Phase Shift Keying (PSK)
bit 1 -> A× cos(2p ft+q 1)
bit 0 ->
-A× cos(2p ft+q 2)

 

Differential Shift Keying (DPSK)

bit 1 -> A× cos(2p ft+D q 1)
bit 0 ->
-A× cos(2p ft+D q 2)

 

Esempi di modulazioni digitali

 

Maximum Data Rate (Teorema di Nyquist)

Il teorema di Nyquist definisce il maximum data rate per un segnale consistente di N livelli discreti su un canale di semibanda B come:

(bps)

Ad esempio per un segnale su linea telefonica (2× B=3.000 Hz) a 2 livelli si ottiene 3.000 bps (ed in questo caso anche 3.000 baud dato che con due livelli si trasmette un bit per baud). Questo valore è superiore al limite pratico di 2.400 baud imposto dalle attuali linee telefoniche.

 

Rilevazione degli errori

Per rilevare eventuali errori durante la trasmissione, dovuti alle inevitabili distorsioni di varia natura presenti sulla linea, vengono utilizzati diversi metodi.Si illustrano brevemente gli algoritmi più diffusi.

Controllo di ridondanza verticale

Il controllo di ridondanza verticale (Vertical Redundancy Check, VRC) è utilizzato nei protocolli orientati al carattere. Il suo nome ha origine dal fatto che era inizialmente utilizzato sulla codifica dei caratteri su nastro perforato; caratteri che erano rappresentati verticalmente rispetto al nastro stesso.

Ai bit che rappresentano un carattere viene aggiunto un altro bit detto bit di parità. Il controllo di parità può essere pari o dispari. Nel controllo di tipo pari viene aggiunto un bit con valore tale da rendere pari il numero totale (carattere più bit di parità) di bit uguale a 1. In modo analogo viene effettuato il controllo di tipo dispari: il numero totale dei bit uguali a 1 deve essere dispari.

Con questa tecnica non si può comunque rilevare se nella trasmissione di un carattere ci sono stati due bit errati.

Controllo di ridondanza longitudinale

Il controllo di ridondanza longitudinale (Longitudinal Redundancy Check, LRC) è anch'esso orientato al carattere. Viene eseguita una operazione di OR esclusivo fra tutti i caratteri che formano il messaggio. Se nel valore risultante il bit in prima posizione è 1 vuol dire che globalmente (considerando tutta la sequenza di caratteri più il carattere di parità LRC) c'è un numero dispari di bit uguali a 1 in prima posizione. Analogamente per gli altri bit.Anche questo tipo di controllo non rileva errori verificatisi su un numero pari di bit nella stessa posizione. I controlli VRC e LRC vengono usualmente utilizzati insieme in modo da diminuire i margini di fallimento di rilevazione degli errori.

Controllo di ridondanza ciclica

Il controllo di ridondanza ciclica (Cyclic Redundancy Code, CRC) è orientato al bit.I codici ciclici associano stringhe di bit a polinomi con coefficienti 0 e 1. Una sequenza di K bit viene interpretata come un polinomio di K coefficienti di grado minore o uguale a K-1. Ad esempio:

110001 -> x5+x4+x0

L'aritmetica su cui è basato il calcolo è modulo 2, senza riporti né prestiti.Innanzitutto trasmettitore e ricevitore devono scegliere su un polinomio G(x) comune, detto polinomio generatore. L'idea è quella di giustapporre alla sequenza un checksum tale che il polinomio corrispondente sia divisibile per G(x).Si illustra brevemente un algoritmo per il calcolo del checksum:

  1. si giustappongono r bit 0 al frame ottenendo un sequenza di m+r bit che corrisponde al polinomio xM(x), dove r è il grado di G(x), M(x) è il polinomio corrispondente al frame e m il numero di bit di quest'ultimo.
  2. si divide xM(x) per G(x) usando la divisione modulo 2:

    xM(x)=G(x)× Q(x)+R(x)la sequenza dei coefficienti di R(x) è la sequenza dei bit che costituisce il checksum.

  3. si somma, modulo 2, il resto R(x) della divisione precedente a xM(x) e si ottiene il nuovo frame da trasmettere completo di checksum.

Il polinomio generatore di codici ciclici non può essere un polinomio qualunque. Infatti possiamo ottenere lo stesso polinomio R(x) a partire da polinomi dividendi M(x) diversi.Tutti i polinomi che danno lo stesso resto R(x) una volta divisi per il polinomio generatore G(x) si dicono congrui modulo G(x). Questa tecnica non rileva gli errori che trasformano la sequenza dei bit trasmessi (come coefficienti) in un'altra che dà i coefficienti di un polinomio ad essa congruo.Restano comunque un metodo molto efficiente per la rilevazione degli errori.

 

Trasmissione asincrona

Nel sistema asincrono i caratteri vengono trasmessi con cadenza non necessariamente regolare; durante i tempi di inattività la linea viene mantenuta in stato di riposo o idle (viene costantemente trasmesso il segnale corrispondente al bit 1); il trasmettitore, prima di inviare il primo bit di ciascun carattere, deve portare la linea in stato di lavoro; questa commutazione costituisce lo start-bit e ha l'obiettivo di "rifasare" ricevitore e trasmettitore.

Il ricevitore, all'arrivo del bit di start, si predispone alla ricezione della sequenza di bit associato ad un carattere attivando un suo clock interno (che necessariamente deve avere una frequenza di oscillazione nominale uguale a quella del segnale trasmesso). E' sufficiente che il clock del ricevitore mantenga il sincronismo solo per la durata del carattere. Trasmesso l'ultimo bit, il trasmettitore riporta la linea in stato di riposo e così la mantiene per un tempo pari alla durata di uno o due bit (stop-bit), a seconda della convenzione adottata. Dopo la segnalazione di stop, se non vi sono altri caratteri da trasmettere, la linea rimane in stato di riposo, altrimenti viene emesso un nuovo start-bit e così di seguito.

La trasmissione asincrona è possibile se la lunghezza dei blocchi di bit in ricezione e la differenza (parassita) delle frequenze di oscillazione dei due clock sono tali da non consentire né la perdita di un bit né la doppia ricezione di uno stesso bit. Questi due inconvenienti derivano da un errore nella scelta da parte del ricevitore dell'istante in cui campionare il segnale in ingresso. Per ovviare a questo inconveniente si può ricorrere ad un semplice artifizio: si fa lavorare il clock in ricezione ad una frequenza multipla di quella del clock in trasmissione (ad esempio una frequenza 16 volte maggiore), in questo modo si hanno a disposizione più istanti di campionamento per poter leggere lo stesso bit trasmesso (nel caso proposto 16 istanti). Dopo la ricezione dello start-bit il ricevitore calcola il numero di cicli di attesa trascorsi i quali potrà campionare il segnale e con ottima approssimazione trovarsi proprio al centro dell'impulso del primo bit trasmesso (16+16/2 cicli). Per evitare che l'errore di diffonda, si procede ad effettuare una nuova sincronizzazione ogni tot bit trasmessi (generalmente dopo 8 bit, cioè dopo ogni carattere ricevuto).

La trasmissione asincrona è conveniente quando l'emissione dei caratteri è irregolare come ad esempio nel caso dei terminali a tastiera; lo svantaggio principale sta nello scarso rendimento della trasmissione a causa della ridondanza dovuta all'aggiunta dei bit di start e stop, che incide per un 30% sui bit realmente trasmessi.

 


Schema di trasmissione asincrona

 

Trasmissione sincrona

Nella trasmissione sincrona i caratteri costituenti un messaggio vengono trasmessi back-to-back, dopo essere stati raggruppati in blocchi, con cadenza continua in sincronismo con un clock condiviso dal trasmettitore (master) e dal ricevitore (slave). Ciascun blocco di caratteri inizia con una serie di caratteri di sincronizzazione per permettere al ricevitore di sincronizzarsi e mettersi al passo con il trasmettitore.

La temporizzazione può essere fornita: attraverso una linea separata di clock (questa soluzione è scarsamente utilizzata poiché non è realizzabile su lunghe distanze e su normali linee telefoniche e presenta una alta probabilità di perdere la sincronizzazione), regolando finemente un clock esistente nel ricevitore in base al clock ricavato dal segnale in ingresso oppure ricavando il clock direttamente dal segnale in arrivo mediante un circuito di aggancio di fase. Quest'ultima è la soluzione più comunemente utilizzata dato che richiede una circuiteria piuttosto semplice e offre un buon grado di affidabilità.

 


Schema di trasmissione sincrona

 

Una tecnica utilizzata comunemente per ottenere l'aggancio è il codice bipolare alternato (Alternate Mark Inversion, AMI). E' il tipo più semplice di codice di linea e ricorre alla codifica del bit 1 nel segnale trasmesso alternativamente con impulsi uguali in modulo, ma di polarità opposta. Il codice alternato presenta essenzialmente due inconvenienti:

Per ovviare a questi inconvenienti si sono introdotti altri codici che si possono classificare in: codici a lunghezza fissa (detti codici MB-NT) e codici a lunghezza variabile.Fra questi ultimi si collocano il sistema europeo HDB3 e l'americano B8ZS. Il primo deriva dal bipolare alternato con la variante di sostituire le sequenze con quattro bit 0 consecutivi con la sequenza B00V dove VÎ {0,1} e BÎ {-,0,+} secondo le regole:

Il secondo invece trasmette una sequenza di otto bit 0 consecutivi come 000+-0-+, sequenza che contiene una violazione dell'alternanza (...-0-...) per poter essere identificata con certezza.Con il sistema sincrono si ha una minore ridondanza, e quindi una migliore efficienza di trasmissione, a spese di una maggiore complessità circuitale, che però trova piena giustificazione per le alte velocità di trasmissione consentite.

Codifica di canale (Encoding)

Vengono ora brevemente analizzate alcune delle codifiche di canale utilizzate per la trasmissione dei bit. Nel seguito si presupporrà che il valore alto del segnale sia associato al bit 1, mentre quello basso al bit 0; in pratica la situazione può benissimo essere rovesciata (valore alto -> bit 0 e valore basso -> bit 1).


Esempi di codifica di una sequenza di bit