Codifica di canale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m wikilink
 
(123 versioni intermedie di 51 utenti non mostrate)
Riga 1:
{{S|telecomunicazioni}}
Nelle telecomunicazioni è il processo atto a strutturare il messaggio per il controllo degli errori.
{{C|La voce mescola in modo confuso gli aspetti relativi agli scopi della codifica di canale propriamente detta con la gestione della comunicazione corretta in genere|telecomunicazioni|marzo 2022}}
 
In [[telecomunicazioni]] il termine '''codifica di canale''' designa, in una [[trasmissione digitale]], l'insieme di tecniche di elaborazione del segnale [[informazione|informativo]], a monte della trasmissione, volte a garantire il più possibile la [[trasmissione (telecomunicazioni)|trasmissione]] ottimale di un [[messaggio]], ossia l'[[integrità dei dati]] attraverso un [[Canale (telecomunicazioni)|canale]] [[Rumore (elettronica)|rumoroso]] che introduce errori nella [[trasmissione (telecomunicazioni)|trasmissione]] dei dati.<ref name=Britannica>{{cita web|lingua=en|url=https://www.britannica.com/technology/telecommunication/Channel-encoding|titolo=Channel encoding}}</ref> 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.<ref name=Britannica /> Nelle telecomunicazioni la codifica di canale, assieme alla [[codifica di sorgente]], rappresenta dunque uno dei vantaggi delle trasmissioni digitali rispetto a quelle [[trasmissione analogica|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''.<ref>{{Cita web|lingua=en|url=http://homepage.ntu.edu.tw/~ihwang/Teaching/Sp17/Scribe/CommLab_Sp17_Lecture_1_v0.pdf|titolo=Lecture 1: Introduction to Digital Communication Systems|editore=National Taiwan University}}</ref> La tecnica, a parità di [[Bit error ratio|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.<ref>{{Cita web|lingua=en|url=https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-451-principles-of-digital-communication-ii-spring-2005/video-lectures/chap4.pdf|titolo=Chapter 4 - The gap between uncoded performance and the Shannon limit|editore=M.I.T.}}</ref> 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 (informatica)|banda]] maggiore per la nuova trasmissione a parità di [[velocità di trasmissione]].<ref>{{Cita pubblicazione|lingua=en|url=https://www.comsoc.org/publications/ctn/coding-network-next-generation-coding-flexible-network-operation|titolo=Coding the Network: Next Generation Coding for Flexible Network Operation|autore=Kerim Fouli|autore2=Muriel Médard|autore3=Kavim Shroff|editore=IEEE Communications Society|data=6 agosto 2018}}</ref> L'operazione di codifica di canale fa uso di conoscenze proprie della [[teoria dei codici]].
== Modalità di scambio delle informazioni e dialogo dei protocolli==
 
== Descrizione ==
Le informazioni vengono scambiate in modalità '''Simplex''', il messaggio viaggia in una sola direzione, '''Half-Duplex''', i messaggi viaggiano in entrambe le direzioni ma in tempi diversi, o '''Duplex''', in cui i messaggi vengono scambiati in entrambe le direzioni anche contemporaneamente.
=== Tipologie di Codicicodici ===
Esistono varie tipologie di codici, principalmente divisibili in codici a blocchi (o ''lineari'', come quello di [[Codice di Hamming|Hamming]]) e [[Codice convoluzionale|codici convoluzionali]].<ref>{{cita web|lingua=en|url=https://www.eit.lth.se/fileadmin/eit/courses/etin15/slides2017/Lecture07_ChannelCoding2017.pdf|titolo=Channel Coding|autore=Ove Edfors|editore=Faculty of Engineering Lund University|data=18 aprile 2016}}</ref>
 
Nel primocaso caso,dei ''codici a blocchi'', tutti i blocchi-dati sono legati tra loro da sequenze aggiunte ai pacchetti e distinguibili tra loro; nelnei secondocodici caso,convoluzionali invece, ai pacchetti viene raggiuntaaggiunta una certa ridondanza Q e i pacchetti, sebbene non distinguibili, sono comunque tra loro legati.
I protocolli comunicano tra loro usando le discipline '''One Way''', '''Two Way Alternate''' o '''Two Way Simultaneous'''
 
Un caso particolare è costituito invece dall'uso di sistemi di codifica di canale concatenata ovvero l'utilizzo di più ''codici concatenati'' in cascata tra loro, per aumentare l'efficacia della correzione di errore (''outer code'' e ''inner code'').<ref>{{cita web|lingua=en|url=https://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.125/staff/mueelich/GCC_Example_Handout.pdf|titolo=Generalized Code Concatenation: Recapitulation and Examples|data=28 gennaio 2015|editore=Università di Ulma|autore=Sven Müelich}}</ref>
== Codici di Controllo e Correzione ==
 
=== Codici di Controllocontrollo e Correzionecorrezione ===
A seconda del tipo di messaggio da trasmettere si sceglierà il tipo di controllo degli errori e, eventualmente, di correzione. Per (infattiesempio, nell'invio es.: di fotogrammi video in [[videoconferenza]] non saràè richiesto che arrivino integri tutti i dati; alin contrarioaltri casi, es.:come ad esempio nella trasmissione [[File Transfer Protocol|FTP]], saràè imperativo garantire l'arrivo corretto di tutti i dati.
Di seguito sono brevemente introdotte le due modalità di [[codifica]] più usate.
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.<ref>{{cita pubblicazione|lingua=en|url=https://ieeexplore.ieee.org/document/6772729|titolo=Error detecting and error correcting codes|autore=R. W. Hamming|rivista=The Bell System Technical Journal|volume=29|numero=2|data=aprile 1950|doi=10.1002/j.1538-7305.1950.tb00463.x|issn=0005-8580|editore=Nokia Bell Las}}</ref>
 
=== Valutazione di un Codicecodice ===
== ARQ (Automatic Repeat-reQuest) ==
Le prestazioni di un codice vengono misurate in:<ref name=bitt>{{cita web|lingua=en|url=http://bittpolytechnic.com/images/pdf2/ECE_DCN%20error%20detection.pdf|titolo=Error detection and correction|editore=BITT Polytechnic}}</ref>
Modalità a sua volta divisa in te politiche: ''Stop and Wait'', ''Selective Repeat'' e ''Go Back N''.
* ''Capacitàcapacità di Rilevazionerivelazione'': numero massimo di errori che essosi riesceriescono a rilevarerivelare in una parola di codice.
* ''capacità di correzione'': numero massimo di errori che si riescono 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 [[Bit Error Ratio|BER]] fino a valori dell'ordine di 10<sup>-6</sup>.
* ''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''), <math>R_c =\frac{k}{n}</math>, con <math>n-k</math> pari alla ridondanza introdotta. Rappresenta una misura in termini di efficienza del codice: tanto più tale rapporto è basso (cioè tanto più <math>n-k</math> è 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'' <math>R_c</math> è 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.<ref>{{Cita web|url=https://didattica-2000.archived.uniroma2.it//infocod/deposito/Informazione_e_Codifica_09.pdf|titolo=Codifica di canale|autore=Mauro De Sanctis|editore=Università di Roma Tor Vergata}}</ref>
'''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 per uno di questi tre, il mittente provvederà a rispedire il pacchetto e il destinatario si incaricherà di scartare eventuali repliche.
 
'''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/danneggiati e scartati avviene il re-invio del/dei pacchetti interessati. I Pacchetti ricevuti dal destinatario dopo quello scartato vengono eliminati.
[[Immagine:go_back_n.gif]]
 
'''Selective Repeat''': in questo caso anche il destinatario dispone di un buffer dove memorizzare i pacchetti ricevuti dopo quello/quelli scartati. Quando il pacchetto/i interessatti vengono correttamente ricevuto entrambi i buffer vengono svuotati(mittente) o i pacchetti contenuti salvati (destinatario)
[[Immagine:image5.gif]]
 
== FEC (Forward Error Correction) ==
{{vedi anche|Forward Error Correction}}
Codice autocorrettivo più veloce dell'ARQ, in quanto non divide i dati, ma li spedisce così come sono
 
== Valutazione di un Codice ==
Le prestazioni di un codice vengono misurate in:
 
Il FEC (acronimo di ''[[Forward Error Correction]]'') è un meccanismo di codifica che consente di mantenere la qualità di un segnale digitale rilevando ed entro certi limiti correggendo gli errori introdotti dal canale, trasmettendo insieme al segnale codificato utile una serie di dati di controllo aggiuntivi, ricavati dal segnale stesso applicando diversi tipi di algoritmi (es. [[Reed-Solomon]]). In ricezione, i dati di controllo vengono ricalcolati sul segnale utile ricevuto e confrontati con quelli trasmessi.<ref>{{cita pubblicazione|lingua=en|url=https://www.signalintegrityjournal.com/articles/1284-what-is-fec-and-how-do-i-use-it|titolo=What is FEC, and How Do I Use It?|rivista=Signal Integrity Journal|autore=Cathy Liu|data=1 luglio 2019}}</ref> Questo consente di rilevare dove sono presenti errori e di conseguenza correggere in tutto o in parte i dati ricevuti, a seconda dell'algoritmo e della quantità di errori introdotti dal canale. La tecnica si applica per ridurre gli effetti degli errori indotti per esempio dai disturbi atmosferici nel caso delle trasmissioni in aria libera o dall'attenuazione e da altri effetti fisici nelle trasmissioni su fibra ottica, aumentando di fatto sia la robustezza che la portata utile ottenibile a spese di un piccolo aumento di banda per l'aggiunta dei dati di verifica.<ref>{{Cita pubblicazione|lingua=en|url=https://ieeexplore.ieee.org/document/4099521|titolo=FEC in optical communications - A tutorial overview on the evolution of architectures and the future prospects of outband and inband FEC for optical communications|autore=Afxendios Tychopoulos|autore2=Odysseas Koufopavlou|autore3=Ioannis Tomkos|rivista=IEEE Circuits and Devices Magazine|volume=22|numero=6, Nov-Dic|anno=2006|pp=79-86|doi=10.1109/MCD.2006.307281|editore=IEEE}}</ref>
''Capacità di Rilevazione'': numero massimo di errori che esso riesce a rilevare in una parola di codice.
 
== Note ==
''Capacità di Correzione'': analogalmente è il numero massimo di errori che esso riesce a correggere in una parola di codice calcolata con Rc = <math>\frac{K}{N}</math>, dove K rappresenta il numero di bit del messaggio e N il numero di bit ''informativi'' della parola di un codice.
<references />
 
== Voci correlate ==
''Complessità Realizzativa''
* [[Codice a blocchi]]
* [[Codifica convoluzionale]]
 
{{portale|telecomunicazioni}}
== Tipologie di Codici ==
Esistono vaire tipologie di codici, principalmente divisibili in '''Codice a Blocci'''(a sua volta divisibile in ''Lineari'', come Hamming/Ripetizione/CRC/Parità, e ''Non Lineari'') e '''Convoluzionali'''.
 
[[Categoria:Teoria dei codici]]
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 raggiunta una certa ridondanza Q e i pacchetti, sebbene non distinguibili, sono comunque tra loro legati.
[[Categoria:Teoria dell'informazione]]