View Single Post
Old 17-02-2004, 23:01  
Mistral PaolinuX
Senior Member
 
Iscritto dal: Oct 2000
Città: Bergamo
Messaggi: 5869
ERRORI E CORREZIONE D'ERRORE

Quando si ha a che fare con un flusso digitale di dati, la struttura binaria di questo flusso consente l'utilizzo di alcuni accorgimenti al fine di corregge gli inevitabili errori che inficiano la struttura stessa. Se poi si parla di scrittura su CD, la questione diviene ancor più interessante, soprattutto per quanto riguarda i CD-DA (Digital Audio), in cui gli errori vanno ad intaccare proprio l'esperienza dell'ascolto. Limitandosi all'ambito dei CD, si possono fare diverse considerazioni.

LE ORIGINI DI UN ERRORE
La causa più frequente di un errore è il cosiddetto "dropout", cioè un difetto nel supporto (non solo un difetto costruttivo) che causa una perdita di segnale durante la lettura del CD. Le cause del "dropout" possono essere un supporto che presenta difetti di fabbricazione oppure un difetto sopravvenuto a causa del normale utilizzo dei supporti (il più comune è il graffio sulla superficie del supporto)

I VARI TIPI DI ERRORE
E' utile distinguere immediatamente due macrocategorie di errori
  • i random bit errors, cioè errori che non sono correlati tra di loro
  • il burst error, un errore di ampiezza notevole (formato quindi da più errori consecutivi) che può anche rendere illeggibili molti bits.

LA RIDONDANZA
Com'è noto, i computers interpretano solo dati binari, cioè sequenze di 0 ed 1. Questo, di suo, consente di ricorrere ad un primo metodo di correzione d'errore, cioè la ridondanza. La tecnica è piuttosto semplice: oltre ai normali dati, vengono registrati sul CD anche dei dati ridondanti, cioè identici a quelli registrati in precedenza, in modo da poter eseguire controlli di validità del flusso digitale e di sostituire sequenze errate con le sequenze corrette ottenute con il semplice metodo del ricalcolo. Tuttavia la ridondanza non è sufficiente qualora si abbia un errore di vaste dimensioni o non vi siano dati sufficienti per il calcolo di ridondanza. Per questo motivo, si adottano altre tecniche, soprattutto nel
campo dell'audio.

Sulla base di questi concetti generali, è possibile approfondire vari argomenti.

IL RICONOSCIMENTO DEGLI ERRORI
Ci sono diversi metodi grazie ai quali si può riconoscere un errore
[list=A][*]Codice di Controllo di Ridondanza Ciclica (CCRC). Si tratta del metodo più usato in campo audio. Il funzionamento pratico è ben chiarito da un esempio: assumendo il numero binario 1011011010 (in cui ci sono 6 dati 1), gli viene aggiunto il numero binario 0110 (che in decimale è il numero 6, cioè la quantità di 1 presenti nel dato originale, e che si ottiene sommando in binario 1+1+1+1+1+1), quindi di usa il 0110 per verificare l'esattezza del dato ed eventualmente correggerlo.
[*]Codice di Correzione d'Errore (CCE). Tramite i dati ridondanti è possibile correggere gli errori generatisi in fase di registrazione o di lettura. Esistono molti codici di correzione d'errore, e l'analisi scende nel campo della matematica pura (che è ininfluente per questa trattazione, e per la quale non ho competenze specifiche, ergo mi astengo anche solo dal provarci). In generale, comunque, si usano o un metodo algebrico od un metodo probabilistico.
[*]Interleaving e Cross Interleaving. La bontà della correzione d'errore dipende dalla capacità dell'algoritmo di utilizzare i dati ridondanti o ricostruire i dati mancanti. Tuttavia nel caso di errori ampi, come il burst error, vengono persi sia i dati normali che quelli ridondanti. I dati, però, vengono "spalmati" su ampie porzioni del CD, in modo che siano dispersi lungo tutta la superficie del supporto. Questo, ovviamente, aumenta la possibilità di correggere errori ampi. Inoltre è possibile, sempre per aumentare la possibilità di correggere errori ampi, che vengano impiegati due codici di correzione d'errore, separati non solo dall'interleaving, ma anche da un ritardo, di modo che le anomalie trovate dal primo blocco vengano utilizzate come puntatori d'errore per il secondo blocco. Questo metodo, detto Cross Interleaving, è utilizzato proprio per la correzione d'errore nei CD. Quest'ultima considerazione permette di passare al CIRC [/list=A]

CIRC - CROSS INTERLEAVED REED-SOLOMON CODE
Tutti i dati (sia per l'audio che per i CD-ROM) scritti su CD usano il sistema di codifica CIRC. Rispettando il CIRC, per tutti i dati scritti su ogni CD vengono aggiunti, in fase di premastering, alcuni bytes, al fine di ottenere una lettura perfetta anche in caso di una scrittura non perfetta o di alterazioni fisiche che possono inficiare la lettura. Tanto per dare qualche dato numerico, per i CD-DA la codifica CIRC fa in modo che vi sia 1 bit incorreggibile su 10^9 bits; per i CD-ROM, la frequenza di bits incorreggibili è aumentata a 1 bit ogni 10^12 bits (grazie al fatto che per i CD-ROM viene riservato spazio per i CCE). Il CIRC permette la correzione di burst errors con ampiezza fino a 3500 bits (2,4 mm di lunghezza) e la compensazione per burst errors di ampiezza fino a 12000 bits (ben 8,5 mm di
lunghezza).Il CIRC utilizza 2 tecniche per trovare e correggere i bytes errati, e cioè sia la ridondanza che l'interleaving.
  • Ridondanza -> il CIRC prevede l'aggiunta di dati di ridondanza pari al 25% dei dati normali".
  • Interleaving -> il CIRC distribuisce un blocco, formato da 24 bytes in 109 blocchi adiacenti, di modo che per distruggere completamente un byte sarebbe necessario distruggere tutti e 109 i blocchi, ma, in caso di dropouts comuni (graffi, impronte, polvere) rimangono sempre abbastanza dati per ricostruire i bytes danneggiati.

A questo si deve aggiungere che i due livelli di correzione usati dal CIRC (i famosi C1 e C2) sono stati studiati apposta per correggere i burst errors, e non solo gli errori casuali (che nel campo dell'audio generano solo rumore gaussiano, detto anche “rumore bianco”). A questo punto è necessario esaminare -a grandi linee- come funziona il sistema di decodifica di un CD. Il segnale RF (generato dal Photo Detector che misura la quantità di luce che viene riflessa dalla traccia su cui si trova il laser di lettura) è inviato all'encoder EFM (Eight to Fourteen Modulation, un metodo di codifica dei dati usato per fare in modo che la lunghezza di pits e lands sia sempre non meno di 3 e non più di 11 bits, il che peraltro riduce il jitter ed altre distorsioni) dove il flusso EFM viene decodificato e passa al vaglio del C1 (cioè il primo livello di correzione CIRC). Se il C1 viene passato con successo, si va al C2 (il secondo livello di correzione CIRC). Se i dati C2 posso essere decodificati, allora i dati sono corretti e non ci sono problemi: vengono raggruppati (o meglio, viene rimosso l'interleaving). Se invece il controllo C2 fallisce, bisogna distinguere se si ha a che fare con un CD-DA o con un CD-ROM:
  • CD-DA -> i dati, vengono fatti passare attraverso un sistema di mascheramento degli errori (dopodiché passano per il convertitore D/A e quindi arrivano -finalmente- alle casse). Da notare che è solo in casi rarissimi (si parla di 1 volta ogni 125 ore) il decoder CIRC non riesce ad trovare un errore e mandarlo al mascheramento errori; in questo caso, di solito, si sente un click. Il flusso digitale che è il dato dell'audio è considerato esatto a meno che il CIRC non trovi un errore C2 che non possa essere corretto. Nel caso che tutti i dati che rappresentano quel segmento audio errato siano corretti, allora l'audio errato viene interpolato, in modo da non sentire "artifacts" durante la riproduzione.
  • CD-ROM -> Il chipset del lettore CD usa la flag C2 per segnare i dati errati; questi dati verranno inviati al Layer3, cioè un ulteriore livello di correzione d'errore presente solo nei CD-ROM (che usano per i dati solo 2048 bytes, al contrario dei CD-DA, che usano per i dati tutti i 2352 bytes che formano un blocco).

ERRORI C1 E C2
Per la misurazione degli errori C1 e C2 si ricorre ad un metodo che considera la quantità e la severità degli errori sull'intero disco. Generalmente, per indicare gli errori, si ricorre alla terminologia Exy (da leggere E-ics-ipsilon), con x = numero di bytes contenenti un errore (in un intervallo compreso tra 1 e 3) e y = livello di decodifica (1 o 2). Inizialmente vengono letti i frames modulati secondo il metodo EFM. Quando il lettore legge il frame, quest'ultimo viene demodulato, per poi passare al vaglio del C1 e del C2.

Al livello C1 possono verificarsi i seguenti errori:
  • E11 -> 1 errore è presente ed è stato corretto a livello C1
  • E21 -> 2 errori sono presenti e sono stati corretti a livello C1
  • E31 -> Sono presenti 3 o più errori a livello C1. A questo livello la correzione è impossibile; il blocco passa al C2

Nel caso di un errore E31, si passa al livello C2 possono, in cui possono verificarsi errori:
  • E21 -> 1 errore è presente ed è stato corretto a livello C2
  • E22 -> 2 errori sono presenti e sono stati corretti a livello C2 (si tratta del peggior errore correggibile)
  • E32 -> Sono presenti 3 o più errori a livello C2. La correzione è impossibile.

Avendo come base gli errori Exy è stata inventata la misurazione BEGL (Burst Error Greater than Lenght), che indica un errore non correggibile, dovuto a 7 errori C1 consecutivi. Gli errori BEGL sono quelli che causano errori di tipo E32. Attenzione però: il fatto che ci siano errori incorreggibili non significa che il disco sia inutilizzabile! Bisogna però, ancora una volta, distinguere a seconda che si abbia un CD-DA od un CD-ROM
  • CD-DA -> I lettori audio hanno un circuito di interpolazione/mascheramento degli errori che nasconde questi errori (anche se il più delle volte si sentono degli artifacts)
  • CD-ROM -> Nel caso dei CD-ROM, vi è un ulteriore livello di correzione d'errore: il cosiddetto Layer3, formato da quei 304 bytes non utilizzati per i dati (ricordo infatti che i CD-DA utilizzano per i dati tutti i 2352 bytes presenti in un blocco, mentre i CD-ROM ne usano solo 2048).

Il problema è che in presenza di errori E32 non si può lasciare alcuna tolleranza per la degradazione naturale che il CD subirà a causa di graffi, ditate, polvere e simili.

IL JITTER
In conclusione è necessario puntualizzare che il miglior sistema di individuazione degli errori, sia per i CD-DA che per i CD-ROM è e resta il jitter. Tornando al livello della semplice lettura è importante aver presente che quel che conta sono le transizioni tra pits e lands: solo una transizione (sia essa tra pit e land o land e pit) equivale ad un 1. Quindi una deviazione (anticipo o ritardo) nel tempo di lettura della transizione può generare un errore, e lo genera sicuramente se il ritardo è di 115 nanosecondi. Inoltre qualsiasi tipo di difetto su un CD aumenta il jitter (è fisicamente impossibile ottenere un jitter pari a 0), il che significa che il jitter è a tutti gli effetti il miglior metodo di misurazione della bontà di un CD. Il solo problema è che la misurazione del jitter richiede l'impiego di un oscilloscopio. Infatti il jitter può essere misurato guardando il segnale HF (alta frequenza) generato dal pick-up del lettore CD, che rappresenta l'intensità della luce riflessa dalla superficie del CD. In pratica il jitter, essendo una questione di tempo, può essere rappresentato da una forma d'onda su un piano cartesiano, ma il solo modo di ottenere quella forma d'onda è di mettere tra il fotodiodo che capta la luce riflessa ed il demodulatore di segnale che "interpreta" quella quantità di luce uno strumento in grado di analizzare gli intervalli di tempo, e cioè proprio un oscilloscopio. Il che non significa che misurare gli errori C1 e C2 sia inutile, ma solo che si tratta di un metodo impreciso rispetto alla misurazione del jitter, che, in quest'ambito, è estrapolato dalla sua sede naturale (l'audio) per essere utilizzato come metodo di verifica di un CD.

LA CORREZIONE DEGLI ERRORI NEI DVD
La tecnologia DVD si basa su una maggiore densità dei dati rispetto alla tecnologia CD. Questo significa che la correzione d'errore deve essere più accurata di quella usata per i CD. La necessità principale è correggere, o meglio impedire, i burst errors.Per ottenere questo risultato, 16 settori vengono distribuiti (la procedura è quella dell'interleaving), e formano un blocco di 192 gruppi (16 settori X 12 gruppi a settore = 192 gruppi) ed i bytes per la correzione d'errore vengono concatenati ai blocchi di dati tramite la tecnica RSPC ("Reed-Solomon Product Codes"). Nella pratica, alla fine di ogni gruppo vengono aggiuti 10 bytes di dati Reed-Solomon per la correzione d'errore, ed alla fine di ogni blocco vengono aggiunti 16 gruppi di dati Reed-Solomon per la correzione d'errore.
Mistral PaolinuX è offline