Структура записываемого сигнала и система защиты от ошибок

При создании компакт-диска используется исходная фонограмма (мастер-лента), записанная в цифровом виде, с частотой выборки 44,1 кГц при 16 разрядах линейного квантования. Данные двух каналов стереосигнала записываются в общем потоке попеременно.

Подготовленная информация записывается на диск. Компакт-диск разделен на секторы размером по 3234 байта (рис. 153). Каждый сектор состоит из 98 фреймов (кадров) по 33 байта. Из них 24 байта содержат пользовательские данные и 1 байт – субкод с таблицей содержания; 8 байт зарезервированы для кодов коррекции ошибок. Применяются два метода коррекции ошибок – байты четности (паритета) и перемежение (интерливинг).

Рис. 153. Структура данных сектора CD

Байты четности позволяют производить реконструкцию разрушенных пользовательских данных на битовом уровне. Простой пример: два байта – 00001111 и 11110000 – контролируются одним байтом четности. Байт четности в нашем случае будет выглядеть так: 11111111. Если один байт пользовательских данных поврежден, его можно восстановить на основе сохранившегося байта и байта четности.

Поскольку царапины и другие повреждения могут разрушить целые фреймы, включающие в себя и байты четности, отдельные байты разделяются и по определенному алгоритму перемешиваются с байтами из других фреймов. В результате все байты одного фрейма распределяются на 108 фреймов, что соответствует длине дорожки – 17,3 мм. Царапина таким образом разрушает только отдельные байты из разных фреймов, которые после деинтерливинга (производится при чтении информации) можно восстановить с помощью байтов четности.

Рассмотрим механизм перемежения на простом примере. Допустим, имеется фрагмент исходных, последовательно пронумерованных байтов:

1–2–3–4–5–6–7–8–9–10–11–12–13–14–15–16.

При записи на диск порядок следования байтов изменяется, например, следующим образом:

4–8–12–16–3–7–11–15–2–6–10–14–1–5–9–13.

Предположим, что при воспроизведении, например из-за пылинки или царапины на диске, блок последовательно размещенных на диске данных был считан неправильно (данные, считанные с ошибками, выделены цветом):

4–8–12–16–3–7–11–15–2–6–10–14–1–5–9–13.

После считывания с диска в декодирующем устройстве проигрывателя происходит восстановление нормального порядка следования данных. В результате этой операции сплошной блок ошибочных данных распределяется на отдельные ошибочные биты, перемежающиеся с правильно считанными данными:

1–2–3–4–5–6–7–8–9–10–11–12–13–14–15–16.

Для предотвращения потерь информации при считывании используется корректирующий код Рида-Соломона с перемежением (CIRC). Кодирование заключается в группировке исходных данных по определенному алгоритму и добавлении к ним проверочных данных. В коде CIRC используют две ступени кодирования C1 и C2. На первом этапе к исходной информации добавляются проверочные данные, рассчитывается так называемый Q-паритет (байты четности), так что фреймы содержат теперь 24 байта пользовательских данных и 4 байта кодов коррекции ошибок, затем полученная информация кодируется еще раз. Новая последовательность бит вновь соединяется в 28-байтовые блоки. Теперь для новых блоков рассчитывается Р-паритет, и в результате получаются 32-байтовые фреймы. Такое решение позволяет значительно повысить надежность считывания информации. При воспроизведении весь процесс повторяется в обратном порядке.