Diit.cz - Novinky a informace o hardware, software a internetu

CIRC a vrstvená korekce chyb

diit.cz logo na CD-R serveru 1. dubna 2009
Dnes tu máme další pokračování našeho nepravidelného seriálu o optických technologiích. Tentokrát je na řadě vysvětlení záhady, jak je možné, že i z celkem poškozeného CD-ROMu mechaniky čtou data.

Kapitoly článků

CD-ROM sektor obsahuje data, ale také sekundární korekční schéma nazývané vrstvená EDC/ECC (Error Detection Code/Error Correction Code), jež je silnější verzí CIRC kódu. Výskyt chybného bitu se díky tomuto schématu zvyšuje na jeden na 10 000 000 000 000 (1013). Znamená to jeden chybný bit na zhruba 2 000 kompaktních disků.

Oba kódy (CIRC a EDC/ECC) přidávají další (redundantní) informaci k originálním datům, která jsou nahrávána (premastering). Tato data jsou organizována tak, aby dekodér v CD-ROM přehrávači byl schopen určit, nalézt a opravit chyby, jež analyzuje pomocí přidané informace.

Předpokládejme, že máme tato data:

23, 2, 9, 27

Když jsou tato data jako originál kódována pro CD-ROM, můžeme je umístit do dvou řad se dvěma sloupci. Na konci každého sloupce a řádku provedeme součet. Do pravého dolního rohu zapíšeme součet součtů sloupců a řádků. Tento přidaný sloupec a řádek se nazývají kontrolní součty a jsou onou přidanou informací k originálním datům.

Zde jsou tedy zapsané informace:


S

 

23


2

25

 


9


27


36

S

32


29

61

Při přehrávání CD dochází k novému sčítání a porovnávání vypočtených hodnot s kontrolními součty zapsanými na CD. Pokud dojde ke změně jednoho čísla, okamžitě se to projeví v nesouhlasu vypočtených a zapsaných kontrol, přičemž stačí kontrolovat pouze součet v pravém dolním rohu (součet součtů). Zjistí se tak, že došlo k chybě. Předpokládejme, že se změnilo druhé číslo v prvním řádku 2 na 8. Kontrolní součet součtů má pak hodnotu 67 a ne 61. Zjistili jsme, že někde vznikla chyba.

Přečtená data:

S

 

23


8

31

 


9


27


36

S

32


29

67

Dekodér zjistí porovnáním kontrolních součtů řádků a sloupců, že nesouhlasí součet prvního řádku a druhého sloupce. Došlo k chybě ve druhém sloupci prvního řádku. Zbývá tedy opravit chybnou hodnotu na správnou. Chybný součet součtů byl 67. Originál 61. 67-61 je tedy 6. Správné číslo je tedy 8-6=2.

Nyní tedy dekodér vyšle opravená data:

23, 2, 9, 27

Je ale možné, že i kontrolní součet je postižen chybou a výsledek je i přes chybu dat správný. Pak ovšem dekodér tuto chybu ignoruje.

Tato technika se dá přirozeně použít i na binární čísla:

paritní bit
2 = 0010 1
7 = 0111 1
9 = 1001 0
paritní slovo 1101 0

Kontrolní součet prvního řádku a čtvrtého sloupce nesouhlasí. Dojde tedy ke změně čtvrtého bitu v prvním řádku z 1 na 0.

Kapitoly článků

Diskuse ke článku Jak se na CD najdou a odstraní chybná data

Žádné komentáře.