Введение

В теории кодирования код повторения является одним из самых простых линейных кодов, исправляющих ошибки. Чтобы передать сообщение по зашумленному каналу, который может исказить передачу в нескольких местах, идея кода повторения заключается в многократном повторении сообщения. Предполагается, что канал исказит лишь небольшое количество этих повторений. Таким образом, приемник обнаружит ошибку передачи, поскольку полученный поток данных не будет представлять собой повторение одного и того же сообщения, и, более того, приемник сможет восстановить исходное сообщение, определив, какое сообщение встречается в потоке данных наиболее часто. Из-за невысокой эффективности исправления ошибок в сочетании с низким коэффициентом кодирования (отношением между полезными информационными символами и общим количеством переданных символов) в большинстве случаев предпочтение отдается другим кодам коррекции ошибок. Основное преимущество кода повторения – простота реализации.

Параметры кода

В случае двоичного кода повторения существуют два кодовых слова – все единицы и все нули – имеющие длину. Следовательно, минимальное расстояние Хэмминга кода равно его длине. Это обеспечивает коду повторения способность исправлять ошибок (то есть он будет исправлять до ошибок в любом кодовом слове). Если длина двоичного кода повторения нечетная, то это совершенный код. Двоичный код повторения длины n эквивалентен коду Хэмминга (n, 1). Код BCH (n, 1) также является кодом повторения.

Пример

Рассмотрим двоичный повторный код длины 3. Пользователь хочет передать информационные биты 101. Тогда кодирование отображает каждый бит либо в кодовое слово, состоящее из одних единиц, либо из одних нулей, так что мы получаем 111 000 111, которое будет передано. Предположим, что три ошибки исказили переданные биты, и полученная последовательность – 111 010 100. Декодирование обычно выполняется простым решением на основе большинства для каждого кодового слова. Это приводит к 100 как к декодированным информационным битам, поскольку в первом и втором кодовых словах произошло менее двух ошибок, поэтому большинство битов верны. Однако в третьем кодовом слове два бита были искажены, что приводит к ошибочному информационному биту, так как число ошибок превышает возможность коррекции ошибок.

Приложения

Несмотря на их низкую производительность при использовании как самостоятельные коды, применение в Turbo-кодах, в частности в итеративно декодируемых каскадных схемах кодирования, таких как коды повторного накопления (RA) и накопления повторного накопления (ARA), обеспечивает удивительно хорошую эффективность исправления ошибок. Коды повторения – одни из немногих известных кодов, скорость которых может автоматически подстраиваться под изменяющуюся пропускную способность канала путем передачи большего или меньшего количества информации о четности, необходимой для преодоления помех, и это единственный известный код с таким свойством для каналов без потерь. Практические адаптивные коды для каналов с потерями были изобретены совсем недавно и известны как фонтанные коды. Некоторые UART, например, используемые в протоколе FlexRay, применяют фильтр голосования большинства для игнорирования кратковременных импульсов шума. Этот фильтр подавления импульсов можно рассматривать как разновидность декодера повторения.