ЛК — линейный код¶
ЛК (линейный код) — способ кодирования цифровых сигналов, при котором передаваемые данные преобразуются в последовательность импульсов, несущих информацию о значениях битов. Термин «ЛК» в русскоязычной технической литературе чаще всего обозначает линейный код (linear code) — метод представления цифровых сигналов, применяемый в системах передачи данных, телекоммуникации, компьютерных сетях и устройствах хранения информации. Линейные коды также являются важным разделом теории кодирования, где «ЛК» может означать линейный код в математическом смысле — подпространство векторного пространства над конечным полем.
¶Линейный код как метод кодирования сигналов
В теории передачи данных линейный код — это правило преобразования последовательности информационных битов в последовательность сигналов (символов) для передачи по каналу связи. Основная цель такого преобразования — обеспечить надёжное распознавание символов приёмником, устранить постоянную составляющую сигнала, синхронизацию приёмника и выявление ошибок.
Ключевые свойства линейного кодирования:
- Отсутствие постоянной составляющей — среднее значение сигнала стремится к нулю, что позволяет использовать трансформаторную связь и упрощает схемы приёмопередатчиков.
- Самосинхронизация — в коде присутствует достаточно частотных переходов, позволяющих приёмнику восстановить тактовую частоту.
- Высокая плотность переходов — устойчивость к искажениям и помехам.
- Ограниченная полоса передаваемых частот — снижение межсимвольных интерференций.
¶Основные виды линейных кодов
| Код | Число уровней | Пример применения |
|---|---|---|
| NRZ (Non-Return-to-Zero) | 2 | Внутренние шины компьютеров |
| RZ (Return-to-Zero) | 3 | Ранние системы передачи |
| Manchester | 2 | Ethernet (10BASE-T) |
| Differential Manchester | 2 | Token Ring, ARCnet |
| AMI (Alternate Mark Inversion) | 3 | Телефонные линии E1/T1 |
| 4B/5B | — | Fast Ethernet, FDDI |
| 8B/10B | — | Gigabit Ethernet, SATA, PCIe |
| 64B/66B | — | 10 Gigabit Ethernet |
¶Manchester-кодирование
Manchester-код — один из наиболее распространённых линейных кодов. В нём каждый бит передаётся как переход уровня: с высокого на низкий обозначает «1», с низкого на высокий — «0» (или наоборот, в зависимости от стандарта). Переход всегда происходит в середине битового интервала, что гарантирует самосинхронизацию. Недостаток — удвоение полосы по сравнению с NRZ, поэтому Manchester применяется в сетях с относительно невысокой скоростью (до 10 Мбит/с в классическом Ethernet).
¶Коды с блочным преобразованием
Для высокоскоростных интерфейсов применяются коды с блочным преобразованием — 4B/5B, 8B/10B, 64B/66B. При передаче группы битов (например, 8 бит) они заменяются более длинной комбинацией (10 бит), подобранной так, чтобы обеспечить достаточное число переходов и отсутствие длинных серий одинаковых символов. Код 8B/10B, предложенный Альбертом Уидмером и Джозефом Уидмером из IBM в 1983 году, стал стандартом для Gigabit Ethernet, Fibre Channel, SATA и PCI Express.
¶Линейный код в теории кодирования
В алгебраической теории кодирования линейный код — это подпространство векторного пространства $(\mathbb{F}_q)^n$ над конечным полем $\mathbb{F}_q$ размерности $k$. Такой код обозначается как $[n, k, d]$, где $n$ — длина кодового слова, $k$ — размерность (число информационных символов), $d$ — минимальное расстояние Хэмминга между кодовыми словами.
Линейные коды обладают важным свойством: сумма (по модулю $q$) двух кодовых слов также является кодовым словом. Это упрощает кодирование и декодирование — достаточно задать порождающую матрицу $G$ размера $k \times n$ или проверочную матрицу $H$ размера $(n-k) \times n$.
К важнейшим классам линейных кодов относятся:
- Коды Хэмминга — исправляющие одиночные ошибки, построенные в 1950 году Ричардом Хэммингом.
- Рид—Соломоновы коды — широкополосные коды, применяемые в CD, DVD, QR-кодах, космических миссиях.
- Свёрточные коды — с кодированием с памятью, активно использовавшиеся в сотовых сетях.
- Турбо-коды — предложены в 1993 году, обеспечившие приближение к пределу Шеннона.
- LDPC-коды — разреженные проверочные коды, применяемые в DVB-S2, Wi-Fi (802.11n/ac/ax), 5G NR.
¶Применение
Линейное кодирование находит применение в самых разных областях:
- Компьютерные сети — Ethernet, Wi-Fi, InfiniBand используют различные линейные коды для физического уровня.
- Телекоммуникации — стандарты E1/T1 применяют код AMI и B8ZS.
- Накопители данных — жёсткие диски и SSD используют коды Рид—Соломона и LDPC для коррекции ошибок при чтении.
- Космические системы связи — турбо-коды и LDPC применяются в межпланетных миссиях и спутниковых системах (DVB-S2).
- Штриховое кодирование — UPC, EAN, Code 128 основаны на принципах линейного кодирования с самосинхронизацией.
¶См. также
- Кодирование сигнала
- Код Хэмминга
- Код Рида — Соломона
- LDPC-код
- Турбо-код
- Предел Шеннона
¶Источники
- Скляр Б. Цифровая связь. Теоретические основы и практическое применение. — М.: Вильямс, 2007.
- Прокис Дж. Цифровая связь. — М.: Вильямс, 2000.
- Хэмминг Р. Кодирование и теория информации. — М.: Мир, 1978.
- Lin S., Costello D. Error Control Coding: Fundamentals and Applications. — Prentice Hall, 2004.
