Одной из ключевых особенностей кодов BCH является то, что во время разработки кода осуществляется точный контроль количества ошибок символов, исправляемых кодом. В частности, можно разработать двоичные коды BCH, которые смогут исправлять множественные битовые ошибки. Еще одним преимуществом кодов BCH является простота их декодирования, а именно, с помощью алгебраического метода, известного как синдромное декодирование . Это упрощает конструкцию декодера этих кодов за счет использования небольшого электронного оборудования малой мощности.
Пусть α — примитивный элемент группы GF( q м ) .
Для любого положительного целого числа i пусть m i ( x ) будет минимальным многочленом с коэффициентами из GF( q ) от α я .
Полином генератора кода BCH определяется как наименьшее общее кратное g ( x ) = lcm( m 1 ( x ),…, m d - 1 ( x )) .
Видно, что g ( x ) является многочленом с коэффициентами из GF( q ) и делит x н − 1 .
Следовательно, полиномиальный код , определенный g ( x ), является циклическим кодом.
Пусть q = 2 и m = 4 (следовательно, n = 15 ). Мы будем рассматривать различные значения d для GF(16) = GF(2 4 ) на основе приводящего полинома z 4 + z + 1 , используя примитивный элемент α ( z ) = z . Существует четырнадцать минимальных полиномов m i ( x ) с коэффициентами из GF(2), удовлетворяющими
Минимальные полиномы:
Код BCH с имеет порождающий полином
Он имеет минимальное расстояние Хэмминга не менее 3 и исправляет до одной ошибки. Поскольку полином генератора имеет степень 4, этот код имеет 11 бит данных и 4 бита контрольной суммы. Он также обозначается как: (15, 11) код BCH.
Код BCH с имеет порождающий полином
Он имеет минимальное расстояние Хэмминга не менее 5 и исправляет до двух ошибок. Поскольку полином генератора имеет степень 8, этот код имеет 7 бит данных и 8 бит контрольной суммы. Он также обозначается как: (15, 7) код BCH.
Код BCH с имеет порождающий полином
Он имеет минимальное расстояние Хэмминга не менее 7 и исправляет до трех ошибок. Поскольку полином генератора имеет степень 10, этот код имеет 5 бит данных и 10 бит контрольной суммы. Он также обозначается как: (15, 5) код BCH. (Этот конкретный полином-генератор имеет реальное применение в «информации о формате» QR-кода .)
Код BCH с и выше имеет генераторный полином
Этот код имеет минимальное расстояние Хэмминга 15 и исправляет 7 ошибок. Он имеет 1 бит данных и 14 бит контрольной суммы. Он также обозначается как: (15, 1) код BCH. На самом деле в этом коде всего два кодовых слова: 000000000000000 и 111111111111111 (тривиальный код повторения ).
Примечание: если как и в упрощенном определении, то равен 1, а порядок модуль является
Таким образом, упрощенное определение действительно является частным случаем общего.
Генераторный полином кода BCH имеет коэффициенты из
В общем случае циклический код над с поскольку порождающий полином называется кодом BCH над
Код BCH закончился и генераторный полином с последовательными полномочиями в качестве корней - это один тип кода Рида-Соломона , в котором алфавит декодера (синдромов) тот же, что и алфавит канала (данных и полинома генератора), все элементы . [6] Другой тип кода Рида-Соломона — это исходный код Рида-Соломона , который не является кодом BCH.
Генераторный полином кода BCH имеет степень не более . Более того, если и , образующий полином имеет степень не более .
Доказательство
Each minimal polynomial has degree at most . Therefore, the least common multiple of of them has degree at most . Moreover, if then for all . Therefore, is the least common multiple of at most minimal polynomials for odd indices each of degree at most .
Код BCH имеет минимальное расстояние Хэмминга, по крайней мере .
Доказательство
Suppose that is a code word with fewer than non-zero terms. Then
Recall that are roots of hence of . This implies that satisfy the following equations, for each :
which is non-zero. It therefore follows that hence
Код BCH является циклическим.
Доказательство
A polynomial code of length is cyclic if and only if its generator polynomial divides Since is the minimal polynomial with roots it suffices to check that each of is a root of This follows immediately from the fact that is, by definition, an th root of unity.
Поскольку любой полином, кратный полиному генератора, является допустимым кодовым словом BCH, кодирование BCH — это просто процесс поиска некоторого полинома, в котором генератор является фактором.
Сам код BCH не предписывает значение коэффициентов полинома; концептуально, единственной задачей алгоритма декодирования BCH является поиск допустимого кодового слова с минимальным расстоянием Хэмминга до полученного кодового слова. Следовательно, код BCH может быть реализован либо как систематический код , либо нет, в зависимости от того, как разработчик решит встроить сообщение в закодированный полином.
Несистематическое кодирование: сообщение как фактор
Самый простой способ найти многочлен, кратный генератору, — это вычислить произведение произвольного многочлена и генератора. В этом случае произвольный полином можно выбрать, используя в качестве коэффициентов символы сообщения.
В качестве примера рассмотрим генераторный полином , выбранный для использования в двоичном коде BCH (31, 21), используемом POCSAG и другими. Чтобы закодировать 21-битное сообщение {101101110111101111101}, мы сначала представляем его как полином по :
Затем вычислите (также более ):
Таким образом, передаваемое кодовое слово — {1100111010010111101011101110101}.
Приемник может использовать эти биты в качестве коэффициентов в и после исправления ошибок, чтобы гарантировать правильность кодового слова, может пересчитать
Систематическое кодирование: сообщение в виде префикса.
Систематический код — это код, в котором сообщение появляется дословно где-то внутри кодового слова. Таким образом, систематическое кодирование BCH включает в себя сначала встраивание полинома сообщения в полином кодового слова, а затем корректировку коэффициентов остальных (не-сообщений) терминов, чтобы гарантировать, что делится на .
Этот метод кодирования использует тот факт, что вычитание остатка из делимого приводит к кратному делителю. Следовательно, если мы возьмем наш полином сообщения как и раньше, и умножьте его на (чтобы «сдвинуть» сообщение с пути остатка), мы можем затем использовать евклидово деление полиномов, чтобы получить:
Здесь мы видим это является допустимым кодовым словом. Как всегда имеет степень меньше, чем (что является степенью ), мы можем смело вычесть его из без изменения каких-либо коэффициентов сообщения, следовательно, мы имеем как
Над (т. е. с двоичными кодами BCH), этот процесс неотличим от добавления проверки циклического избыточного кода , и если систематический двоичный код BCH используется только для целей обнаружения ошибок, мы видим, что коды BCH являются просто обобщением математики циклической избыточности. чеки .
Преимущество систематического кодирования состоит в том, что получатель может восстановить исходное сообщение, отбросив все после первого сообщения. коэффициенты после выполнения коррекции ошибок.
Существует множество алгоритмов декодирования кодов BCH. Наиболее распространенные из них следуют этой общей схеме:
Вычислить синдромы s j для полученного вектора
Определить количество ошибок t и полином локатора ошибок Λ(x) по синдромам
Вычислите корни полинома местоположения ошибки, чтобы найти места ошибок X i
Рассчитайте значения ошибок Y i в этих местах ошибок.
Исправьте ошибки
На некоторых из этих этапов алгоритм декодирования может определить, что полученный вектор содержит слишком много ошибок и не может быть исправлен. Например, если подходящее значение t не найдено, коррекция не удастся. В усеченном (не примитивном) коде местоположение ошибки может находиться за пределами допустимого диапазона. Если полученный вектор содержит больше ошибок, чем может исправить код, декодер может неосознанно создать явно допустимое сообщение, которое не является тем, которое было отправлено.
Полученный вектор представляет собой сумму правильного кодового слова и неизвестный вектор ошибки Значения синдрома формируются путем рассмотрения в виде многочлена и оценивая его в Таким образом, синдромы [7]
для к
С являются нулями из которых является кратным, Таким образом, изучение значений синдрома изолирует вектор ошибки, и можно приступить к его решению.
Если ошибки нет, для всех Если все синдромы равны нулю, то расшифровка завершена.
Алгоритм Петерсона — это второй шаг обобщенной процедуры декодирования BCH. Алгоритм Петерсона используется для расчета полиномиальных коэффициентов локатора ошибок. полинома
Теперь процедура алгоритма Петерсона-Горенштейна-Цирлера. [8] Ожидаем, что у нас есть как минимум 2 t синдромов s c , …, s c +2 t −1 . Пусть v = т .
Начните с создания матрица с элементами, которые являются значениями синдромов
Создать вектор с элементами
Позволять обозначают неизвестные полиномиальные коэффициенты, которые имеют вид
Составьте матричное уравнение
Если определитель матрицы не равно нулю, то мы действительно можем найти обратную эту матрицу и найти значения неизвестных ценности.
Если тогда следуй
if
then
declare an empty error locator polynomial
stop Peterson procedure.
end
set
продолжайте декодирование Петерсона с начала, уменьшая
После того, как у вас есть значения , у вас есть полином локатора ошибок.
Теперь, когда у вас есть многочлен, его корни можно найти в виде методом грубой силы, например, с использованием алгоритма поиска Чиена . Экспоненциальная
силы первобытного элемента выдаст позиции, где в полученном слове встречаются ошибки; отсюда и название полинома «локатор ошибок».
Как только места ошибок станут известны, следующим шагом будет определение значений ошибок в этих местах. Значения ошибок затем используются для исправления полученных значений в этих местах для восстановления исходного кодового слова.
В случае двоичного BCH (когда все символы читаемы) это тривиально; просто переверните биты полученного слова в этих позициях, и мы получим исправленное кодовое слово. В более общем случае веса ошибок можно определить, решив линейную систему
Учитывать и для простоты предположим, что для и для Затем
Мы хотим вычислить неизвестные и мы могли бы упростить контекст, удалив условия. Это приводит к полиному оценки ошибок
Благодаря у нас есть
Благодаря (прием интерполяции Лагранжа) сумма вырождается только до одного слагаемого для
Получить нам просто следует избавиться от продукта. Мы могли бы вычислить произведение непосредственно из уже вычисленных корней. из но мы могли бы использовать более простую форму.
Альтернативный процесс поиска как полинома Λ, так и полинома локатора ошибок основан на адаптации Ясуо Сугиямы расширенного алгоритма Евклида . [10] Исправление нечитаемых символов также можно легко включить в алгоритм.
Позволять быть позициями нечитаемых символов. Создается полином, локализующий эти позиции.
Установите значения в нечитаемых позициях на 0 и вычислите синдромы.
Как мы уже определили для формулы Форни, пусть
Давайте запустим расширенный алгоритм Евклида для поиска наименьшего общего делителя многочленов. и
Цель состоит не в том, чтобы найти наименьший общий делитель, а в том, чтобы найти полином степени максимум и полиномы такой, что
Низкая степень гарантирует, что удовлетворит расширенное (по ) определение условий для
Определение и используя на месте в формуле Фурни даст нам значения ошибок.
Основное преимущество алгоритма заключается в том, что он при этом вычисляет требуется в формуле Форни.
Цель состоит в том, чтобы найти кодовое слово, которое минимально отличается от полученного слова на читаемых позициях. Выражая полученное слово как сумму ближайшего кодового слова и слова ошибки, мы пытаемся найти слово ошибки с минимальным количеством ненулей на читаемых позициях. Синдром ограничивает слово ошибки по условию
Мы могли бы написать эти условия отдельно или создать полиномиальный
и сравнить коэффициенты вблизи степеней к
Предположим, на позиции есть нечитаемая буква. мы могли бы заменить набор синдромов по совокупности синдромов определяется уравнением Предположим, что для слова ошибки все ограничения по исходному набору синдромов держатся,
чем
Новый набор синдромов ограничивает вектор ошибок
точно так же, как исходный набор синдромов ограничивал вектор ошибок Кроме координаты где у нас есть а равен нулю, если Для поиска позиций ошибок мы могли бы аналогичным образом изменить набор синдромов, чтобы отразить все нечитаемые символы. Это сокращает набор синдромов на
В полиномиальной постановке замена множества синдромов по набору синдромов приводит к
Поэтому,
После замены к , потребуется уравнение для коэффициентов вблизи степеней
Можно было бы рассмотреть поиск ошибочных позиций с точки зрения устранения влияния заданных позиций аналогично тому, как это происходит с нечитаемыми символами. Если бы мы нашли позиции таковы, что устранение их влияния приводит к получению набора синдромов, состоящего из одних нулей, то существует вектор ошибок с ошибками только по этим координатам.
Если обозначает полином, исключающий влияние этих координат, получаем
В алгоритме Евклида мы пытаемся исправить не более ошибки (на читаемых позициях), поскольку при большем количестве ошибок на одинаковом расстоянии от полученного слова может оказаться больше кодовых слов. Поэтому для мы ищем, уравнение должно выполняться для коэффициентов вблизи степеней, начиная с
В формуле Форни можно умножить на скаляр, дающий тот же результат.
Может случиться так, что алгоритм Евклида найдет степени выше, чем имея количество различных корней, равное ее степени, где формула Фурни могла бы исправлять ошибки во всех своих корнях, в любом случае исправление такого количества ошибок могло быть рискованным (особенно при отсутствии других ограничений на полученное слово). Обычно после получения более высокой степени, мы принимаем решение не исправлять ошибки. Исправление может оказаться неудачным в случае имеет корни большей кратности или число корней меньше его степени. Ошибка также может быть обнаружена с помощью формулы Форни, возвращающей ошибку за пределами переданного алфавита.
Используя значения ошибок и местоположение ошибок, исправьте ошибки и сформируйте исправленный кодовый вектор, вычитая значения ошибок в местах ошибок.
Рассмотрим код BCH в GF(2 4 ) с и . (Это используется в QR-кодах .) Пусть передаваемое сообщение имеет вид [1 1 0 1 1] или в полиномиальной записи:
Символы «контрольной суммы» рассчитываются путем деления к и берем остаток, в результате чего или [ 1 0 0 0 0 1 0 1 0 0 ]. Они добавляются к сообщению, поэтому передаваемое кодовое слово имеет вид [ 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 ].
Теперь представьте, что в передаче есть две битовые ошибки, поэтому полученное кодовое слово [ 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0]. В полиномиальной записи:
Чтобы исправить ошибки, сначала рассчитайте синдромы. принимая у нас есть и
Затем примените процедуру Петерсона, сокращая строки следующей расширенной матрицы.
Из-за нулевой строки S 3×3 является сингулярным, что неудивительно, поскольку в кодовое слово было внесено всего две ошибки.
Однако верхний левый угол матрицы идентичен [ S 2×2 | C 2×1 ] , что приводит к решению
Результирующий полином локатора ошибок: который имеет нули в и
Экспоненты соответствуют местам ошибок.
В этом примере нет необходимости вычислять значения ошибок, поскольку единственное возможное значение — 1.
Предположим тот же сценарий, но полученное слово имеет два нечитаемых символа [ 1 0 0 ? 1 1 ? 0 0 1 1 0 1 0 0]. Заменяем нечитаемые символы нулями, создавая полином, отражающий их позиции. Вычисляем синдромы и (Используя логарифмическую запись, независимую от GF(2 4 ) изоморфизмы. Для проверки вычислений мы можем использовать то же представление для сложения, что и в предыдущем примере. Шестнадцатеричное описание полномочий являются последовательно 1,2,4,8,3,6,C,B,5,A,7,E,F,D,9 с добавлением на основе побитового исключающего ИЛИ.)
Сделаем синдром полиномом
вычислить
Запустите расширенный алгоритм Евклида:
Мы пришли к полиному степени не выше 3, и так как
мы получаем
Поэтому,
Позволять Не волнуйся, это Найти методом перебора корень Корни и (после нахождения, например, мы можем разделить соответствующим мономом и корень полученного монома можно было легко найти).
Позволять
Найдем значения ошибок по формуле
где являются корнями Мы получаем
Факт, что не должно вызывать удивления.
Таким образом, исправленный код [ 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].
Декодирование нечитаемых символов с небольшим количеством ошибок
^ Ясуо Сугияма, Масао Касахара, Сигейчи Хирасава и Тошихико Намекава. Метод решения ключевых уравнений для декодирования кодов Гоппы. Информация и контроль, 27:87–99, 1975.
Arc.Ask3.Ru Номер скриншота №: f6c7e20124a1c41ed71db2e3670d20e6__1713904200 URL1:https://arc.ask3.ru/arc/aa/f6/e6/f6c7e20124a1c41ed71db2e3670d20e6.html Заголовок, (Title) документа по адресу, URL1: BCH code - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)