Lo scopo della teoria della codifica dei canali è trovare codici che trasmettono rapidamente, contengono molte parole di codice valide e possono correggere o almeno rilevare molti errori. Anche se non si escludono a vicenda, le prestazioni in queste aree sono un compromesso. Quindi, codici diversi sono ottimali per diverse applicazioni. Le proprietà necessarie di questo codice dipendono principalmente dalla probabilità che si verifichino errori durante la trasmissione. In un CD tipico, la compromissione è principalmente polvere o graffi.
I CD utilizzano la codifica Reed-Solomon interleaved per diffondere i dati sul disco.
Anche se non è un codice molto buono, un semplice codice di ripetizione può servire come esempio comprensibile. Supponiamo di prendere un blocco di bit di dati (che rappresenta il suono) e inviarlo tre volte. Al ricevitore esamineremo le tre ripetizioni a poco a poco e prenderemo un voto a maggioranza. La torsione su questo è che non ci limitiamo a inviare i bit in ordine. Li intrecciamo. Il blocco di bit di dati viene prima diviso in 4 blocchi più piccoli. Quindi passiamo attraverso il blocco e inviamo un bit dal primo,poi dal secondo, ecc. Questo viene fatto tre volte per diffondere i dati sulla superficie del disco. Nel contesto del codice di ripetizione semplice, questo potrebbe non apparire efficace. Tuttavia, ci sono codici più potenti noti che sono molto efficaci nel correggere l’errore” burst ” di un graffio o di un punto di polvere quando viene utilizzata questa tecnica di interleaving.
Altri codici sono più appropriati per diverse applicazioni. Le comunicazioni nello spazio profondo sono limitate dal rumore termico del ricevitore che è più di natura continua che di natura bursty. Allo stesso modo, modem a banda stretta sono limitati dal rumore, presente nella rete telefonica e anche modellato meglio come un disturbo continuo. I telefoni cellulari sono soggetti a rapida dissolvenza. Le alte frequenze utilizzate possono causare un rapido sbiadimento del segnale anche se il ricevitore viene spostato di qualche centimetro. Ancora una volta ci sono una classe di codici di canale che sono progettati per combattere lo sbiadimento.
Codici linearimodifica
Il termine teoria della codifica algebrica denota il sotto-campo della teoria della codifica in cui le proprietà dei codici sono espresse in termini algebrici e quindi ulteriormente ricercate.
La teoria della codifica algebrica è fondamentalmente divisa in due tipi principali di codici:
- Codici a blocchi lineari
- Codici convoluzionali
Analizza le seguenti tre proprietà di un codice – principalmente:
- lunghezza della parola di Codice
- numero Totale di validità, in parole di codice
- La distanza minima tra due validi parole di codice, utilizzando principalmente la distanza di Hamming, a volte anche altre distanze come Lee distanza
Lineare blocco codesEdit
Lineare blocco codici hanno la proprietà di linearità, cioè la somma di due codewords è anche una parola di codice, e la loro applicazione alla bit di origine in blocchi, da qui il nome lineare blocco codici. Ci sono codici di blocco che non sono lineari, ma è difficile dimostrare che un codice è buono senza questa proprietà.
I codici a blocchi lineari sono riassunti dai loro alfabeti simbolici (ad esempio,binari o ternari) e parametri (n,m, dmin) dove
- n è la lunghezza del codice, in simboli,
- m è il numero di simboli sorgente che verranno utilizzati per la codifica contemporaneamente,
- dmin è la distanza minima di hamming per il codice.
Esistono molti tipi di codici a blocchi lineari, come
- Codici ciclici (ad es., Codici Hamming)
- Ripetizione codici
- Parità codici
- il Polinomio di codici (ad esempio, codici BCH)
- codici Reed–Solomon
- Algebrica dei codici geometrici
- Reed–Muller codici
- Perfetto codici
Blocco codici sono legati alla sfera imballaggio problema, che ha ricevuto una certa attenzione nel corso degli anni. In due dimensioni, è facile da visualizzare. Prendi un mucchio di penny sul tavolo e spingili insieme. Il risultato è un modello esagonale come un nido d’ape. Ma i codici di blocco si basano su più dimensioni che non possono essere facilmente visualizzate. Il potente codice Golay (24,12) utilizzato nelle comunicazioni spaziali profonde utilizza le dimensioni 24. Se usato come codice binario (che di solito è) le dimensioni si riferiscono alla lunghezza del codice come definito sopra.
La teoria della codifica utilizza il modello di sfera N-dimensionale. Ad esempio, quanti centesimi possono essere imballati in un cerchio su un tavolo, o in 3 dimensioni, quanti marmi possono essere imballati in un globo. Altre considerazioni inserire la scelta di un codice. Ad esempio, l’imballaggio esagonale nel vincolo di una scatola rettangolare lascerà spazio vuoto agli angoli. Man mano che le dimensioni diventano più grandi, la percentuale di spazio vuoto si riduce. Ma a certe dimensioni, l’imballaggio utilizza tutto lo spazio e questi codici sono i cosiddetti codici “perfetti”. Gli unici codici perfetti non banali e utili sono i codici Hamming distance-3 con parametri soddisfacenti (2r-1, 2r-1-r, 3) e i codici Golay binari e ternari.
Un’altra proprietà del codice è il numero di vicini che una singola parola in codice può avere.Ancora una volta, considera i penny come esempio. Per prima cosa imballiamo i penny in una griglia rettangolare. Ogni centesimo avrà 4 vicini vicini (e 4 agli angoli che sono più lontani). In un esagono, ogni centesimo avrà 6 vicini vicini. Quando aumentiamo le dimensioni, il numero di vicini vicini aumenta molto rapidamente. Il risultato è che il numero di modi in cui il rumore fa sì che il ricevitore scelga un vicino (quindi un errore) cresce. Questa è una limitazione fondamentale dei codici a blocchi, e in effetti tutti i codici. Potrebbe essere più difficile causare un errore a un singolo vicino, ma il numero di vicini può essere abbastanza grande in modo che la probabilità di errore totale soffra effettivamente.
Le proprietà dei codici a blocchi lineari sono utilizzate in molte applicazioni. Ad esempio, la proprietà di unicità syndrome-coset dei codici a blocchi lineari viene utilizzata nella modellatura a traliccio, uno dei codici di modellatura più noti.
Codici convoluzionalimodifica
L’idea alla base di un codice convoluzionale è di rendere ogni simbolo codeword la somma ponderata dei vari simboli dei messaggi di input. Questo è come la convoluzione utilizzata nei sistemi LTI per trovare l’output di un sistema, quando si conosce l’input e la risposta all’impulso.
Quindi generalmente troviamo l’output dell’encoder convoluzionale di sistema, che è la convoluzione del bit di ingresso, contro gli stati dell’encoder di convoluzione, i registri.
Fondamentalmente, i codici convoluzionali non offrono più protezione contro il rumore di un codice a blocchi equivalente. In molti casi, offrono generalmente una maggiore semplicità di implementazione su un codice a blocchi di uguale potenza. L’encoder è di solito un circuito semplice che ha memoria di stato e una logica di feedback, normalmente porte XOR. Il decoder può essere implementato in software o firmware.
L’algoritmo di Viterbi è l’algoritmo ottimale utilizzato per decodificare i codici convoluzionali. Ci sono semplificazioni per ridurre il carico computazionale. Si basano sulla ricerca solo dei percorsi più probabili. Sebbene non ottimali, sono stati generalmente trovati per dare buoni risultati in ambienti a basso rumore.
I codici convoluzionali sono utilizzati nei modem voiceband (V. 32, V. 17, V. 34) e nei telefoni cellulari GSM, nonché nei dispositivi di comunicazione satellitari e militari.