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