Код постоянного веса
Код постоянного веса, равновесный код или код m-из-n — это код контроля и исправления ошибок, где все кодовые слова имеют один и тот же вес Хэмминга. Унитарный код и сбалансированный код являются двумя широко используемыми видами кодов постоянной ширины.
Теория тесно связана с теорией схем (таких как t-схемы и системы Штейнера). Большинство работ в этой области дискретной математики рассматривают бинарные коды постоянного веса.
Двоичные равновесные коды имеют некоторые приложения, включая псевдослучайную перестройку рабочей частоты в GSM сетях[1]. Большинство штриховых кодов используют двоичный равновесный код для упрощения автоматической настройки порога яркости, при котором различаются чёрные и белые полосы. Большинство линейных кодов используют либо равновесный код, либо почти равновесный попарно-сбалансированный код. Помимо использования в качестве кодов коррекции ошибок, большое расстояние между кодовыми словами может быть использовано при проектировании асинхронных схем, таких как схемы, нечувствительные к задержкам.
Коды с постоянным весом, такие как код Бергера, могут обнаруживать все однонаправленные ошибки[2].
A(n, d, w)
Основная проблема, касающаяся кодов постоянного веса следующая: каково максимальное количество кодовых слов в двоичном коде постоянного веса с длиной , расстоянием Хэмминга и весом ? Это число обозначается .
За исключением некоторых незначительных наблюдений, вычислить эти числа напрямую, как правило, невозможно. Верхние границы определяются несколькими важными теоремами, такими как теоремы Джонсона[3], а иногда лучшие верхние границы можно найти другими способами. Нижние границы чаще всего определяются путем демонстрации конкретных кодов, либо с использованием различных методов дискретной математики, либо путем интенсивного компьютерного поиска. Большая таблица таких рекордных кодов была опубликована в 1990 году[4], а расширение для более длинных кодов (но только для тех значений и , которые имеют отношение к применению GSM) было опубликовано в 2006 году[1].
Коды 1-из-N
Специальным случаем кодов с постоянным весом являются коды один-из-N, которые кодируют бит в кодовое слово из бит. Код один-из-двух использует кодовые слова 01 и 10 для кодировки битов '0' и '1'. Код один-из-четырёх может использовать слова 0001, 0010, 0100, 1000 для кодировки двух бит 00, 01, 10 и 11. Примером является двойное канальное кодирование[a] и цепочечное соединение[5], используемые в схемах, нечувствительных к задержкам. Для этих кодов и .
Среди наиболее заметных применений кодов один-из-N можно отметить
- Двухфазный код использует 1-из-2 кодировку;
- Фазово-импульсная модуляция использует 1-из-n кодировку;
- Дешифратор адреса,
- и т.д.
Сбалансированный код
В теории кодирования сбалансированный код — это двоичный код с прямым исправлением ошибок в котором каждое кодовое слово содержит равное количество нулей и единиц. Сбалансированные коды были введены Дональдом Кнутот[6]. Они являются подмножеством так называемых неупорядоченных кодов, которые обладают свойством, что позиции единиц в одном кодовом слове никогда не являются подмножеством позиций единиц в другом кодовом слове. Как и все неупорядоченные коды, сбалансированные коды подходят для обнаружения всех однонаправленных ошибок в закодированном сообщении. Сбалансированные коды обеспечивают особенно эффективное декодирование, которое может выполняться параллельно[6][7][8].
Среди наиболее заметных применений кодов сбалансированного веса можно выделить:
- Двухфазный код использует 1-из-2 кодировку;
- 6b/8b кодирование использует 4-из-8 кодировку;
- Код Адамара представляет собой -из- кодировку (за исключением нулевого кодового слова),
- три-из-шести кодировка;
- и т.д.
«3-wire lane» кодирование, используемое в MIPI C-PHY[9] можно считать обобщением равновесного кода на троичный случай — каждый провод передаёт троичный сигнал и в любой момент времени один из трёх проводов передаёт низкий сигнал, один — средний, а один — высокий[10].
m-из-n кодировки
Код m-из-n — это разделимый код обнаружения ошибок с длиной слова в n бит, в котором каждое кодовое слово содержит ровно m единиц. Одиночная битовая ошибка приведёт к тому, что в кодовом слове будет либо m + 1, либо m − 1 единиц. Примером кода m-из-n является код 2-из-5, используемый почтовой службой США.
Простейшая реализация заключается в добавлении к исходным данным строки из единиц до тех пор, пока в них не появится m единиц, затем добавляются нули до получения длины n.
Пример:
| Исходные 3-битные данные | Добавленные биты |
|---|---|
| 000 | 111 |
| 001 | 110 |
| 010 | 110 |
| 011 | 100 |
| 100 | 110 |
| 101 | 100 |
| 110 | 100 |
| 111 | 000 |
Наиболее заметные применения кодов с постоянным весом, помимо уже упомянутых выше:
- Code 39 использует 3-из-9 кодировку
- Двоично-десятичный код использует 2-из-7 кодировку
- 2-из-5 кодировка,
- и другие
Примечания
- ↑ Перевод «dual rail encoding» на русский язык не стабилизировался. Встречаются разные переводы, такие как «двойное канальное кодирование», «двухрельсовое кодирование», «двухпроводное кодирование»…
- ↑ 1 2 Smith, Hughes, Perkins, 2006.
- ↑ Сапожников, Сапожников, Ефанов, 2018.
- ↑ MacWilliams, Sloane, 1979, с. 526–527.
- ↑ Brouwer, Shearer, Sloane, Smith, 1990, с. 1334-1380.
- ↑ W.J. Bainbridge; A. Bardsley; R.W. McGuffin. System-on-Chip Design using Self-timed Networks-on-Chip.
- ↑ 1 2 Knuth, 1986, с. 51–53.
- ↑ Al-Bassam, Bose, 1990, с. 406–408.
- ↑ Immink, Weber, 2010, с. 188–192.
- ↑ ESD защита модуля высокого разрешения MIPI C-PHY (22 июня 2023). Дата обращения: 18 декабря 2025.
Цитата: «MIPI C-PHY - совершенно новый интерфейс передачи данных для дисплеев высокого разрешения» - ↑ Demystifying MIPI C-PHY / DPHY Subsystem - Tradeoffs, Challenges, and Adoption" (mirror)
Литература
- D. H. Smith, L. A. Hughes, S. Perkins. A New Table of Constant Weight Codes of Length Greater than 28. — The Electronic Journal of Combinatorics. — 2006.
- MacWilliams F. J., Sloane N. J. A. The Theory of Error-Correcting Codes. — Amsterdam: North-Holland, 1979.
- Мак-Вильямс Ф., Слоэн Н. Теория кодов, исправляющих ошибки. — М.: Связь, 1979.
- A. E. Brouwer, James B. Shearer, N. J. A. Sloane, Warren D. Smith. A New Table of Constant Weight Codes // IEEE Transactions of Information Theory. — 1990. — Т. 36, № 3.
- D.E. Knuth. Efficient balanced codes // IEEE Transactions on Information Theory. — 1986. — Январь (т. 32, вып. 1). — doi:10.1109/TIT.1986.1057136.
- Sulaiman Al-Bassam, Bella Bose. On Balanced Codes // IEEE Transactions on Information Theory. — 1990. — Март (т. 36, вып. 2). — doi:10.1109/18.52490.
- K. Schouhamer Immink, J. Weber. Very efficient balanced codes // IEEE Journal on Selected Areas in Communications. — 2010. — Т. 28, вып. 2. — doi:10.1109/jsac.2010.100207.
- Вал. В. Сапожников, Вл. В. Сапожников, Д. В. Ефанов. КОДЫ С СУММИРОВАНИЕМ ЕДИНИЧНЫХ ИНФОРМАЦИОННЫХ РАЗРЯДОВ С ПРОИЗВОЛЬНЫМИ МОДУЛЯМИ СЧЁТА // Автоматика на транспорте. — 2018. — Март (т. 4, № 1).
Ссылки
- Table of lower bounds on maintained by Andries Brouwer
- Table of upper bounds on maintained by Erik Agrell