Codifica di canale

Da Wikipedia, l'enciclopedia libera.

In telecomunicazioni il termine codifica di canale designa, in una trasmissione digitale, l'insieme di tecniche di elaborazione del segnale informativo volte a garantire il più possibile la trasmissione ottimale di un messaggio, ossia l'integrità dei dati attraverso un canale rumoroso che introduce errori nella trasmissione dei dati. In particolare si tratta di tecniche che introducono ridondanza in un flusso informativo digitale utilizzata poi per la rilevazione e/o la correzione dell'errore a valle in ricezione.

Nelle telecomunicazioni la codifica di canale, assieme alla codifica di sorgente, rappresenta dunque uno dei vantaggi delle trasmissioni digitali rispetto a quelle analogiche essendo una prerogativa della rappresentazione in formato digitale dell'informazione.

L'elemento in trasmissione deputato alla codifica di canale è detto codificatore di canale, quello complementare in ricezione è detto decodificatore di canale. La tecnica, a parità di BER, in virtù della rilevazione e correzione degli errori, consente eventualmente anche la riduzione del rapporto segnale/rumore, che è un parametro direttamente legato alla probabilità di errore, ovvero quindi della potenza del segnale utile consentendo così un risparmio di potenza in trasmissione. Il prezzo che si paga per l'uso queste tecniche è la riduzione di efficienza di trasmissione di dati utili (Goodput) ovvero la riduzione di efficienza spettrale, data l'introduzione di ridondanza e la necessità di una banda maggiore per la nuova trasmissione a parità di velocità di trasmissione. L'operazione di codifica di canale fa uso di conoscenze proprie della Teoria dei codici.

Modalità di scambio delle informazioni e dialogo dei protocolli[modifica | modifica wikitesto]

Le informazioni vengono scambiate in modalità:

  • simplex, il messaggio viaggia in una sola direzione
  • half-duplex, i messaggi viaggiano in entrambe le direzioni, ma alternativamente
  • full-duplex, i messaggi vengono scambiati in entrambe le direzioni anche contemporaneamente.

I protocolli comunicano tra loro usando le discipline One Way,Two Way Alternate o Two Way Simultaneous.

Codici di controllo e correzione[modifica | modifica wikitesto]

A seconda del tipo di messaggio da trasmettere si sceglierà il tipo di controllo degli errori e, eventualmente, di correzione (infatti, nell'invio es.: di fotogrammi video in videoconferenza non sarà richiesto che arrivino integri tutti i dati; al contrario, es.: trasmissione FTP, sarà imperativo garantire l'arrivo corretto di tutti i dati). Di seguito sono brevemente introdotte le due modalità di codifica più usate: si distinguono codici a rilevazione d'errore e codici a rilevazione e correzione d'errore.

Valutazione di un Codice[modifica | modifica wikitesto]

Le prestazioni di un codice vengono misurate in:

  • capacità di rivelazione: numero massimo di errori che esso riesce a rivelare in una parola di codice.
  • capacità di correzione: numero massimo di errori che esso riesce a correggere in una parola di codice. Questa è sempre minore della capacità di rilevazione; di conseguenza in un codice a rilevazione/correzione non tutti gli errori vengono eliminati: tipicamente si riesce a ridurre il BER fino a valori dell'ordine di 10^-6.
  • code rate: è il rapporto (minore di 1) fra i bit di messaggio (cioè l'informazione k) e la lunghezza totale della parola di codice (n), R_c =\frac{k}{n}, con n-k pari alla ridondanza introdotta. Rappresenta una misura in termini di efficienza del codice: tanto più tale rapporto è basso (cioè tanto più n-k è alto) e tanto più si introduce ridondanza ed il codice di canale è efficiente, ma diminuisce l'efficienza di trasmissione dei dati utili ed aumenta la necessità di banda per la trasmissione (l'inverso del code rate R_c è il fattore d'espansione di banda, spesso indicato con β).

In particolare se il codificatore di canale riceverà in ingresso un flusso di bit con tasso pari a Rs, esso dovrà garantire in uscita un ritmo di emissione almeno pari a quello di ingresso per evitare perdita di informazione; poiché di fatto esso introduce della ridondanza di bit il flusso in uscita dovrà avere un bit-rate complessivo Rc più alto di quello di ingresso per garantire la suddetta condizione.

ARQ (Automatic Repeat-reQuest)[modifica | modifica wikitesto]

Exquisite-kfind.png Lo stesso argomento in dettaglio: Automatic repeat request.

È un'entità alla pari del ricevitore, che svolge solo il compito di rivelare un errore (ma non di correggerlo). I pacchetti corrotti vengono scartati e viene richiesta la loro ritrasmissione. Questa può essere richiesta attraverso 3 diversi protocolli:

  • Stop and wait: il mittente invia un messaggio e attende dal destinatario una conferma positiva (ACK), negativa (NACK) o un comando; se scade il tempo di attesa (time-out) per uno di questi tre, il mittente provvederà a rispedire il pacchetto e il destinatario si incaricherà di scartare eventuali repliche. Nel caso in cui si verificasse un errore nella trasmissione del segnale di conferma (ACK), il mittente provvederà a rinviare il pacchetto; il destinatario riceverà in questo modo una copia del pacchetto già ricevuto, credendo che gli sia pervenuto un nuovo pacchetto. Per ovviare a questo problema si può procedere numerando i pacchetti trasmessi, ovvero inserendo un bit di conteggio.
  • Go Back N: il mittente dispone di un buffer dove immagazzina N pacchetti da spedire, man mano che riceve la conferma ACK svuota il buffer e lo riempie con nuovi pacchetti; nell'eventualità di pacchetti persi o danneggiati e scartati avviene il reinvio del blocco di pacchetti interessati. I pacchetti ricevuti dal destinatario dopo quello scartato vengono eliminati.
  • Selective Repeat: in questo caso anche il destinatario dispone di un buffer dove memorizzare i pacchetti ricevuti dopo quello/quelli scartati; quando i pacchetti interessati vengono correttamente ricevuti, entrambi i buffer vengono svuotati (mittente) o i pacchetti contenuti salvati (destinatario).

Questi protocolli si utilizzano quando non si è in presenza di una comunicazione real-time che non può permettersi i tempi di latenza di una ritrasmissione necessitando quindi di codici a rilevazione e correzione.

FEC (Forward Error Correction)[modifica | modifica wikitesto]

FEC (acronimo di Forward Error Correction) è un sistema di correzione d'errore attraverso il quale si protegge l'immagine, in caso di momentaneo abbassamento di segnale, in modo da mantenere una buona qualità. Viene aggiunta ridondanza ai dati relativi alle immagini tv per permettere di effettuare in ricezione una efficace correzione degli errori ricevuti. Senza questo sistema ogni informazione persa avrebbe un riscontro sui singoli elementi di una immagine tv. Grazie al FEC si possono tollerare bene anche errori di grande entità. Solitamente un ricevitore digitale chiede l'impostazione del FEC in accordo con quello trasmesso dall'emittente. Vi sono anche ricevitori che invece non richiedono di impostare il FEC in quanto sono in grado di individuare automaticamente quale rapporto utilizzare. I FEC maggiormente utilizzati sono 2/3 e 3/4. Più il FEC si avvicina all'unità, e minore è la protezione del segnale, ma maggiore è il symbol rate, e quindi la capacità di trasporto di segnali complessiva. Il rapporto numerico (ad esempio 2/3 o 7/8) indica che da due simboli originari, ne sono generati tre (o da 7 ne vengono generati 8); il simbolo aggiuntivo serve per la protezione. È teoricamente possibile (e sarebbe conveniente per ottenere una maggior protezione) aggiungere simboli a volontà (ad esempio usare un FEC di 2/6), ma si perderebbe l'incremento di efficienza ottenuto cambiando il metodo di modulazione.

Tipologie di codici[modifica | modifica wikitesto]

Esistono varie tipologie di codici, principalmente divisibili in codici a blocchi (o lineari, come quello di Hamming) e codici convoluzionali.

Nel primo caso, codici a blocchi, tutti i blocchi-dati sono legati tra loro da sequenze aggiunte ai pacchetti e distinguibili tra loro; nel secondo caso, invece, ai pacchetti viene aggiunta una certa ridondanza Q e i pacchetti, sebbene non distinguibili, sono comunque tra loro legati.

Un caso particolare è costituito invece dall'uso di sistemi di codifica di canale concatenata ovvero l'utilizzo di più codici concatenati, ovvero in cascata tra loro, per aumentare l'efficacia della correzione di errore (outer code e inner code).

Voci correlate[modifica | modifica wikitesto]