Cyfrowy rytm

Szykując się do imprezy lub wybierając się w długą podróż samochodem, często przygotowujemy składanki z ulubionych utworów na płytach CD-R. Zdarza się, i to wcale nie tak rzadko, że z cyfrowych kopii oprócz muzyki wydobywają się “piski oraz trzaski”. Powyższy fakt często przytaczany jest przez wielu użytkowników na dowód tego, że nie da się idealnie skopiować płyt CD-Audio. Czy aby na pewno? Zobaczmy więc, jak zbudowane są tego typu krążki.

Informacja o dźwięku zapisana jest na krążku CD w postaci cyfrowej, jednak dane nie są bezpośrednio odwzorowane na nośniku – są one odpowiednio zakodowane i zabezpieczone specjalnymi algorytmami przed przekłamaniami. Brak takiego mechanizmu spowodowałby ogromną stratę jakości odtwarzanej muzyki. Co więcej, kompakt jest podatny na uszkodzenia wynikające z samego faktu jego użytkowania – zarysowania i tłuste odciski palców na powierzchni są niemal normą. Wszystko to utrudnia odczyt danych, jednak poprawne odtworzenie informacji nadal jest możliwe.

Świat korekcji

Aby zrozumieć, dlaczego nawet z mocno poturbowanej płyty wciąż płyną prawidłowe bity, trzeba się przyjrzeć metodom zapisu informacji na krążku CD (patrz: rysunek “Organizacja danych na płycie audio”).

Pierwszym sposobem zabezpieczenia danych na płycie CD jest użycie algorytmu kodowania nadmiarowego. Jest on bezpośrednio związany z fizyczną modulacją wiązki laserowej, która odczytuje dane z powierzchni krążka CD – tzw. modulacja EFM (Eight to Fourteen Modulation, czyli modulacja 8 do 14). Modulacja EFM polega na tym, że każda sekwencja bitów tworzących 256 możliwych wartości bajtu ma jednoznacznie przypisany kod, dobrany w taki sposób, aby łatwo go było odróżnić od paczki bitów odpowiadającej innej wartości. Wspomniany kod składa się z ciągu czternastu bitów fizycznie zapisanych na płycie oraz dodatkowych trzech “pustych” bitów rozdzielających czternastobitowe sekwencje. Algorytm EFM ma kluczowe znaczenie w sytuacjach, gdy nie da się jednoznacznie zinterpretować przychodzących z detektora do elektroniki napędu CD danych. Przyjmuje się, że już zaledwie cztery powtarzające się zera (tzw. sygnał niski) lub jedynki (sygnał wysoki) mogą być błędnie zinterpretowane. Niemniej stosując odpowiednie wzorce, łatwo daje się rozróżnić dwa podobne przekazy, a co za tym idzie – prawidłowo odtworzyć niekompletną czy błędnie odczytaną informację.

Podstawowym sposobem na uchronienie danych zapisanych na krążku CD przed ich bezpowrotną utratą jest zastosowanie algorytmu korekcji błędów CIRC (Cross Interleaved Reed-Solomon Code). Jest on rodzajem tzw. kodowania BNC (Binary Natural Code), wykorzystującego informacje nadmiarowe przygotowywane przed tłoczeniem płyty CD (audio i CD-ROM) lub nagrywania krążków CD-R/RW. Co ważne, dodatkowe bity widoczne są jedynie dla elektroniki napędu, z tym że te redundantne (nadmiarowe) informacje znajdują się już “piętro wyżej” niż kod EFM, czyli wewnątrz 36-bajtowej fizycznej ramki z danymi.

Za każdym razem co innego

W tym miejscu warto podkreślić jeden istotny, lecz mało znany fakt dotyczący płyt CD. Otóż w przypadku odczytywania z krążka kilkakrotnie tego samego ciągu bitów może się zdarzyć, że za każdym razem otrzymamy różne dane. Dopiero elektronika napędu na podstawie kodów EFM oraz CIRC koryguje nieprawidłowe informacje. Niemniej algorytm CIRC wciąż dopuszcza istnienie jednego błędu na 109 odczytanych bitów. Dla płyt CD-ROM ten poziom zabezpieczenia danych jest zbyt niski, dlatego też wprowadzano dodatkowe informacje, chroniące zapisane bajty – kody ECC (Error Correction Code) oraz EDC (Error Detection and Correction) – sprawiające, że jedno przekłamanie może się pojawić nie częściej niż na 1012 przeczytanych bitów (patrz: CHIP 1/96, str. 46).

Algorytm CIRC używa dwóch różnych sposobów do wykrywania i korekcji błędów. Pierwszym z nich jest zapis około 25% dodatkowych, nadmiarowych bitów, które są w odpowiedni sposób przeplecione wraz z właściwymi danymi. Drugą metodą jest rozprzestrzenienie tych redundantnych bitów na stosunkowo dużym fizycznym obszarze dysku CD. Gdyby informacje były nagrywane w sposób ciągły, nawet mały defekt mógłby łatwo zniszczyć całe słowo (bajt). Dzięki temu, że w algorytmie CIRC bity są przeplatane (ang. interleaved) w czasie nagrywania oraz zespalane (ang. de-interleaved) podczas odczytu, jedna ramka składająca się z 24 bajtów z użytecznymi danymi jest rozprzestrzeniana w 109 wybranych przez algorytm blokach. Dlatego pomimo zarysowań, kurzu czy odcisków palców w rejonie uszkodzenia i tak jest dość informacji nadmiarowych, żeby odtworzyć bezbłędnie wszystkie dane. O sile algorytmu CIRC świadczy fakt, że dopiero wywiercenie w dysku otworu o średnicy ok. 2 mm całkowicie zniszczy całą “rozproszoną” ramkę z danymi.

Więcej:bezcatnews