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 организован следующим образом.
Кодирование
- Входные данные: аудиосэмплы (16-битные значения) собираются по 6 сэмплов на канал (всего 12 сэмплов для стерео). Это составляет кадр данных длиной 24 байта.
- Кодирование C2 (внешний код):
- 24 байта данных разбиваются на 4 символа (по 2 байта каждый), но фактически в стандарте используется 24-байтный блок.
- Кодер C2 (Рид — Соломон, RS(28, 24)) добавляет к 24 информационным байтам 4 проверочных байта (P-пара). Получается 28-байтный блок.
- Код C2 исправляет до 2 ошибок в блоке или обнаруживает до 4 ошибок.
- Перемежение (Interleaving):
- 28 байт C2 задерживаются на разное количество тактов (от 0 до 27 кадров) по круговой схеме. Это «размывает» длинный пакет ошибок по многим блокам C1, делая их одиночными для декодера C1.
- Кодирование C1 (внутренний код):
- После перемежения кодер C1 (Рид — Соломон, RS(32, 28)) добавляет к 28 байтам ещё 4 проверочных байта (Q-пара). Получается 32-байтный блок.
- Код C1 исправляет до 2 ошибок в блоке или обнаруживает до 4 ошибок.
- Формирование кадра канала (Frame):
- 32 байта C1 дополняются 8-байтовыми служебными данными (синхронизация, управление, отображение субканалов), что даёт 40 байт.
- Затем эти 40 байт кодируются кодом EFM (Eight-to-Fourteen Modulation) для записи на диск.
Декодирование
При считывании с диска процесс обратный:
- Демодуляция EFM и выделение 32-байтных блоков C1.
- Декодер C1 (внутренний):
- Вычисляет синдромы. Если синдром ненулевой, исправляет до 2 ошибок. Если ошибок больше 2 (неисправимая ситуация), ставится флаг «стирание» (erasure) для всего блока.
- Деинтерлейсинг (обратное перемежение): кадры C1 собираются в блоки C2 по задержкам.
- Декодер 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) |
| Внутренний код C1 | RS(32, 28, 5) — может исправить до 2 ошибок или обнаружить до 4 |
| Внешний код C2 | RS(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 имеет ряд ограничений и подвергался критике в инженерном сообществе.
- Избыточность: добавление 8 проверочных байт на 24 байта данных (33 % избыточности) уменьшает полезную ёмкость диска. В сочетании с модуляцией EFM (33 % избыточности) общая избыточность записи составляет около 50 %.
- Задержка декодирования: перемежение (до 27 кадров, ~1,5 см дорожки) вносит задержку при случайном доступе. Для потокового аудио это несущественно, но для дисковых накопителей (CD-ROM) требуется дополнительная буферизация.
- Сложность расчёта синдромов: декодеры C1 и C2 должны выполнять операции в поле Галуа GF(2⁸) (умножение, сложение, поиск корней полиномов). В 1980-е годы это потребовало специализированных микросхем с большим числом логических вентилей.
- Неспособность исправить все типы повреждений: при глубоких царапинах, пересекающих несколько дорожек, или при дефектах штамповки, когда длина пакета превышает 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 →