I codici di Reed

Transcript

I codici di Reed
I codici di Reed-Solomon
Carmelo Dimotta
Marzo 2005
Questo documento è una introduzione ai codici di Reed-Solomon. E’
rivolto a chi ha familiarità con i codici e la teoria dell’informazione. Sono
descritti i principi e le proprietà dei codici di Reed-Solomon. In seguito c’è
un riferimento alla decodifica di simboli errati e al guadagno di codifica.
1
Introduzione
I codici di Reed-Solomon sono codici a correzione d’errore basati sui codici a
blocco. Hanno una grande applicazione nei sistemi di trasmissione (figura 1),
nelle comunicazioni satellitari, modem xDSL e in molti dispositivi digitali1 .
Figura 1: Schema di trasmissione.
Un codificatore Reed-Solomon prende un blocco di dati e aggiunge bit di
ridondanza. La trasmissione introduce errori, percui in ricezione si cerca di
rivelare l’errore e correggerlo. Il decodificatore, infatti, processa ogni blocco
e cerca di correggere gli eventuali errori. Il numero di errori che il codice
riesce a corregere dipende dalle caratteristiche del codice.
1
CD, DVD, codici a barre, etc.
2
Le proprietà dei codici di
Reed-Solomon
Come specificato nell’introduzione, i codici di Reed-Solomon sono codici a
blocco lineri e appartengono ai gruppi BCH.
Consideriamo simboli di s bit. Un codificatore di Reed-Solomon suddivide i
dati in gruppi di k bit e ad ogni blocco aggiunge 2t simboli per formare una
parola di codice di n bit. Dato un simbolo di dimensione s, la parola di codice
può essere al massimo lunga n = 2s − 1. Un decodificatore Reed-Solomon
può correggere fino a t simboli2 che contengono errori.
Esempio. RS(255,223) con s=8, significa n=255 e k=223. Il numero di
bit/simbolo è pari a 8. In tale caso un decodificatore riesce a correggere fino
a t=16 simboli errati, cioè 16 byte ovunque allocati nella parola di codice
vengono automaticamente corretti. In figura 2 è rappresentata una tipica
Figura 2: Tipica parola di codice.
parola di codice.
2
2t=n-k
3
Errori di simbolo
Un simbolo è errato se un suo bit è errato o tutti i bit sono errati. Percui un
RS(255,223) che è in grado di correggere 16 simboli3 ricevuti errati, in realtà
è capace di correggere 16 bit (caso in cui ogni simbolo errato corrisponde a
un bit errato per simbolo) o anche 16 simboli (16 byte, che corrisponde al
caso in cui tutti i bit dei simboli sono errati).
La decodifica
In decodifica un codice di Reed-Solomon riesce a correggere fino a t errori e
2t cancellature.
Quando una parola viene decodificata si possono verificare tre situazioni:
• se 2s + r < 2t (s errori e t cancellature) allora la parola di codice viene
decodificata correttamente
• il decodificatore riconosce che non può decodificare la parola e lo segnala
• il decodificatore decodifica la parola in modo errato.
I tre casi accadono dipendentemente dal codice di Reed-Solomon utilizzato.
Il guadagno di codifica
Il guadagno di codifica quantifica la probabilità che un errore rimane nella
parola decodificata quando si usa un codice di Reed-Solomon e quando non
si usa alcun codice. Si dimostra che la probabilità di errore quando si usa un
codice di Reed-Solomon è molto più bassa di quella che si ha in assenza di
codice.
In termini di potenza questo può essere spiegato considerando un tipico sistema di comunicazione digitale. Supponiamo che in un sistema si vuole una
3
Ogni simbolo è composto da 8 bit.
4
BER4 di 10−9 , il che significa 1 bit errato su 109 bit. Per raggiungere una
BER del genere il trasmettitore senza codifica deve inviare i dati con una
certa potenza. Le stesse performance si raggiungono con un codice di ReedSolomon e una potenza di trasmissione che è minore della precedente. La
differenza (in dB) che c’è tra i due casi (senza e con codifica) si chiama
guadagno di codifica.
4
Bit Error Rate.
5