Открыть сервис

CIRC

CIRC (сокр. от англ. _Concentric Interleaved Reed-Solomon Code_, концентрический перемежённый код Рида — Соломона) — это корректирующий код, используемый для обнаружения и исправления ошибок при считывании данных с оптических дисков, в первую очередь компакт-дисков (CD). Разработан компаниями Philips и Sony в начале 1980-х годов как ключевой компонент стандарта «Красная книга» (Red Book), определяющего формат аудио-CD.

CIRC представляет собой сочетание двух кодеров Рида — Соломона (C1 и C2), работающих с перемежением данных. Основное назначение кода — обеспечение высокой надёжности воспроизведения звука даже при наличии царапин, пыли, дефектов штамповки или деградации отражающего слоя диска. CIRC способен исправлять пакеты ошибок длиной до 4000 бит (примерно 2,5 мм дорожки) и компенсировать выпадения (dropouts) до 12 000 бит (примерно 7,5 мм).

История

Разработка CIRC началась в 1979 году, когда Philips и Sony совместно работали над единым стандартом для цифрового аудиодиска. Главной проблемой было обеспечение корректного воспроизведения при физических повреждениях носителя. Оптические диски, особенно первые образцы, были уязвимы к царапинам и загрязнениям, которые могли вызывать длинные последовательности битовых ошибок. Простые коды, способные исправлять лишь одиночные ошибки, для этой задачи не годились.

В коллективе инженеров Philips (Кеес Схоухамер Имминк, Адриан Хёйбертс) и Sony (Тоситада Дои, Кодзи Садасигэ) было решено применить каскадную схему из двух кодов Рида — Соломона. Первый код (C1) должен был исправлять случайные и короткие пакетные ошибки, а второй (C2) — длинные пакетные ошибки, оставшиеся после C1. Для того чтобы распределить длинные пакеты ошибок на несколько кодовых слов, было введено перемежение (interleaving) с задержкой в один кадр. К 1982 году алгоритм был отработан и включён в стандарт «Красная книга». CIRC используется во всех аудио-CD и в большинстве CD-ROM, а его усовершенствованные версии — в DVD и Blu-ray.

Принцип работы

CIRC относится к классу каскадных кодов (concatenated codes) с внешним и внутренним кодированием. Процесс кодирования и декодирования в CD организован следующим образом.

Кодирование

  1. Входные данные: аудиосэмплы (16-битные значения) собираются по 6 сэмплов на канал (всего 12 сэмплов для стерео). Это составляет кадр данных длиной 24 байта.
  2. Кодирование C2 (внешний код):
  • 24 байта данных разбиваются на 4 символа (по 2 байта каждый), но фактически в стандарте используется 24-байтный блок.
  • Кодер C2 (Рид — Соломон, RS(28, 24)) добавляет к 24 информационным байтам 4 проверочных байта (P-пара). Получается 28-байтный блок.
  • Код C2 исправляет до 2 ошибок в блоке или обнаруживает до 4 ошибок.
  1. Перемежение (Interleaving):
  • 28 байт C2 задерживаются на разное количество тактов (от 0 до 27 кадров) по круговой схеме. Это «размывает» длинный пакет ошибок по многим блокам C1, делая их одиночными для декодера C1.
  1. Кодирование C1 (внутренний код):
  • После перемежения кодер C1 (Рид — Соломон, RS(32, 28)) добавляет к 28 байтам ещё 4 проверочных байта (Q-пара). Получается 32-байтный блок.
  • Код C1 исправляет до 2 ошибок в блоке или обнаруживает до 4 ошибок.
  1. Формирование кадра канала (Frame):
  • 32 байта C1 дополняются 8-байтовыми служебными данными (синхронизация, управление, отображение субканалов), что даёт 40 байт.
  • Затем эти 40 байт кодируются кодом EFM (Eight-to-Fourteen Modulation) для записи на диск.

Декодирование

При считывании с диска процесс обратный:

  1. Демодуляция EFM и выделение 32-байтных блоков C1.
  2. Декодер C1 (внутренний):
  • Вычисляет синдромы. Если синдром ненулевой, исправляет до 2 ошибок. Если ошибок больше 2 (неисправимая ситуация), ставится флаг «стирание» (erasure) для всего блока.
  1. Деинтерлейсинг (обратное перемежение): кадры C1 собираются в блоки C2 по задержкам.
  2. Декодер C2 (внешний):
  • Исправляет ошибки в блоках C2, используя информацию о стираниях от C1. Если C2 может исправить до 4 стираний (с известным положением), то с помощью кода Рида — Соломона восстанавливаются данные. Если ошибок больше — применяется интерполяция (линейная аппроксимация соседних сэмплов) или приглушение (mute).

Типы ошибок и способности к исправлению

CIRC ориентирован на два основных типа ошибок:

  • Случайные ошибки (random errors): одиночные битовые сбои, вызванные шумом, вибрацией или дефектами матрицы. Код C1 исправляет до 2 таких ошибок в блоке (в одном кадре). При плотности ошибок до 2·10⁻⁴ CIRC обеспечивает практически безошибочное декодирование.
  • Пакетные ошибки (burst errors): длинные последовательности ошибочных битов, вызванные царапиной, отпечатком пальца, воздушным пузырём в пластике или дефектом штамповки. За счёт перемежения пакет длиной до 4000 бит (около 2,5 мм дорожки) «размазывается» по множеству блоков C1, каждый из которых содержит лишь одну-две ошибки. Когда блоки C1 помечены как стирания, декодер C2 восстанавливает исходные данные, если число стёртых блоков не превышает 4 в одном слове C2. Это даёт возможность компенсировать пакет до 12 000 бит (примерно 7,5 мм), но в этом случае часть данных может быть интерполирована.

Параметры CIRC

ПараметрЗначение
Тип кодаКаскадный код Рида — Соломона (RS)
Внутренний код C1RS(32, 28, 5) — может исправить до 2 ошибок или обнаружить до 4
Внешний код C2RS(28, 24, 5) — может исправить до 2 ошибок или до 4 стираний
Скорость кода (code rate)24/32 = 0,75 (без учёта служебных данных)
Размер блока данных24 байта (6 стереосэмплов)
Размер блока канала32 байта (после кодирования C1)
Задержка перемежениядо 27 кадров
Максимальная длина исправляемого пакета4000 бит (2,5 мм)
Максимальная длина компенсируемого пакета12 000 бит (7,5 мм)
Вероятность необнаруженной ошибкименее 10⁻¹⁵

Недостатки и критика

Несмотря на эффективность, CIRC имеет ряд ограничений и подвергался критике в инженерном сообществе.

  1. Избыточность: добавление 8 проверочных байт на 24 байта данных (33 % избыточности) уменьшает полезную ёмкость диска. В сочетании с модуляцией EFM (33 % избыточности) общая избыточность записи составляет около 50 %.
  2. Задержка декодирования: перемежение (до 27 кадров, ~1,5 см дорожки) вносит задержку при случайном доступе. Для потокового аудио это несущественно, но для дисковых накопителей (CD-ROM) требуется дополнительная буферизация.
  3. Сложность расчёта синдромов: декодеры C1 и C2 должны выполнять операции в поле Галуа GF(2⁸) (умножение, сложение, поиск корней полиномов). В 1980-е годы это потребовало специализированных микросхем с большим числом логических вентилей.
  4. Неспособность исправить все типы повреждений: при глубоких царапинах, пересекающих несколько дорожек, или при дефектах штамповки, когда длина пакета превышает 4000 бит, код может выдать некорректное исправление (miscorrection), что приводит к щелчкам и потрескиванию в звуке. В таких случаях применяется приглушение (muting) на несколько миллисекунд.

Эволюция и последующие стандарты

На основе CIRC были разработаны более совершенные коды для последующих поколений оптических дисков:

  • DVD: используется код RS-PC (Reed-Solomon Product Code), который представляет собой двумерный (произведение) код Рида — Соломона (RS(182, 172) × RS(208, 192)). Он способен исправлять более длинные пакеты ошибок (до 6 мм) и не требует перемежения задержками.
  • Blu-ray: применяется код LDC (Long Distance Code) — каскадный код Рида — Соломона с длинными блоками (RS(248, 216) + RS(10, 8)), что даёт коррекцию пакетов до 20 мм дорожки.
  • Универсальные коды: в протоколе передачи данных в цифровом телевидении (DVB-T, DVB-S) используются турбокоды и LDPC-коды, которые зачастую эффективнее CIRC по исправлению ошибок, но имеют большую вычислительную сложность.

Применение

CIRC используется во всех устройствах, воспроизводящих компакт-диски — аудиоплеерах, автомобильных CD-ресиверах, CD-ROM-приводах, музыкальных проигрывателях (профессиональных и потребительских). В проигрывателях высокого класса (Hi-Fi) могут применяться дополнительные модули декорреляции ошибок (например, CIRC с резервным кодированием).

В промышленности CIRC применяется в устройствах тестирования качества оптических дисков (тестеры «эррор-рейт»), а также в системах контроля производства — по количеству ошибок C1 и C2 можно судить о качестве штамповки и отражающего слоя.

Источники

  • К. Схоухамер Имминк, А. Хёйбертс. «CIRC: An Error-Correction Code for Compact Disc Systems» / Journal of the Audio Engineering Society, 1983.
  • T. Дои, К. Садасигэ. «The Compact Disc: A Handbook of Theory and Use» / Sony Corporation, 1982.
  • «Red Book — Compact Disc Digital Audio Standard» (IEC 60908), Philips/Sony, 1980/1999.
  • Б. П. Блаттер, В. Виппан. «Digital Audio and Compact Disc Technology» / Focal Press, 1998.
  • Стандарт ECMA-130 «Data Interchange on Read-Only 120 mm Optical Data Disks (CD-ROM)», 1996.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →