Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бчх.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
174.96 Кб
Скачать

Коди Боуза - Чоудхурі - Хоквінгема (БЧХ-коди, англ. BCH code) - в теорії кодування це широкий клас циклічних кодів, що застосовуються для захисту інформації від помилок (див. Попередня корекція помилок). Відрізняється можливістю побудови коду із заздалегідь визначеними коригувальними властивостями, а саме, мінімальною кодовою відстанню. Окремим випадком БЧХ-кодів є Код Ріда-Соломона. Код винайшов в 1959 році А.Хоквінгем (Hocquenghem), і незалежно в 1960 році Р.Боуз (Bose) і Д.Рой-Чоудхурі (Ray-Chaudhuri). Код отримав свою назву (BCH code) від прізвищ їх авторів. Коди БЧХ є узагальненням кодів Хеммінга і дозволяють виправляти кратні помилки.

Зміст

  [сховати

  • 1 Методи декодування

  • 2 Декодування

  • 3 Обчислення синдрому помилки

  • 4 Побудова полінома помилки

  • 5 Знаходження коренів

  • 6 Визначення характеру помилки і її виправлення

  • 7 Див. також

  • 8 Посилання

Методи декодування[ред. • ред. код]

Коди БЧХ є циклічними кодами, тому до них застосовні всі методи, використовувані для декодування циклічних кодів. Однак існують набагато кращі алгоритми, розроблені саме для БЧХ-кодів.

Головною ідеєю в декодуванні БЧХ кодів є використання елементів кінцевого поля для нумерації позицій кодового слова (або, еквівалентно, в порядку коефіцієнтів асоційованого многочлена).

Декодування[ред. • ред. код]

Декодер, що працює по авторегресивному спектральному методу декодування, послідовно виконує наступні дії:

  • Обчислює синдром помилки

  • Будує поліном помилки

  • Знаходить корені даного полінома

  • Визначає характер помилки

  • Виправляє помилки

Обчислення синдрому помилки[ред. • ред. код]

Обчислення синдрому помилки виконується синдромним декодером, який ділить кодове слово на породжувальний многочлен. Якщо виникає залишок, то у слові є помилка. Залишок від ділення є синдромом помилки.

Побудова полінома помилки[ред. • ред. код]

Обчислений синдром помилки не вказує на становище помилок. Ступінь полінома синдрому дорівнює 2t, що багато менше ступеня кодового слова n. Для отримання відповідності між помилкою і її положенням у повідомленні будується поліном помилок. Поліном помилок реалізується за допомогою алгоритму Берлекемпа - Мессі, або за допомогою алгоритму Евкліда. Алгоритм Евкліда має просту реалізацію, але вимагає великих витрат ресурсів. Тому частіше застосовується більш складний, але менш затратний алгоритм Берлекемпа - Мессі. Коефіцієнти знайденого полінома безпосередньо відповідають коефіцієнтам помилкових символів у кодовому слові.

Знаходження коренів[ред. • ред. код]

На цьому етапі шукаються корені полінома помилки, що визначають положення спотворених символів в кодовому слові. Реалізується за допомогою процедури Ченя, повним перебором. У поліном помилок послідовно підставляються всі можливі значення, коли поліном звертається в нуль - корені знайдені.

Визначення характеру помилки і її виправлення[ред. • ред. код]

По синдрому помилки і знайденим кореням полінома за допомогою алгоритму Форні визначається характер помилки і будується маска спотворених символів. Після того як маска знайдена, вона накладається на кодове слово за допомогою операції XOR і спотворені символи відновлюються. Після цього відкидаються перевірочні символи і виходить відновлене інформаційне слово.

Формальное описание[править | править вики-текст]

БЧХ-код является циклическим кодом, который можно задать порождающим полиномом. Для его нахождения в случае БЧХ-кода необходимо заранее определить длину кода   (она не может быть произвольной) и требуемое минимальное расстояние  . Найти порождающий полином можно следующим образом.

Пусть   — примитивный элемент поля   (то есть  ), пусть  , — элемент поля   порядка  . Тогда нормированный полином   минимальной степени над полем корнями которого являются   подряд идущих степеней  элемента   для некоторого целого   (в том числе 0 и 1), является порождающим полиномом БЧХ-кода над полем   с длиной   и минимальный расстоянием  . Поясним почему у получившегося кода будут именно такие характеристики (длина кода   , минимальное расстояние  ). Действительно, как показано в [1] , длина БЧХ кода равна порядку элемента  , если   и равна порядку элемента  , если  , тогда, так как случай   нам не интересен (такой код не может исправлять ошибки, только обнаруживать), то длина кода будет равна порядку элемента   ,то есть равна  . Минимальное расстояние   может быть больше  , когда корнями минимальных функций(стр.83[2]) от элементов   будут элементы расширяющие последовательность, то есть элементы  .

Число проверочных символов   равно степени  , число информационных символов  , величина   называется конструктивным расстоянием БЧХ-кода. Если  , то код называется примитивным, иначе непримитивным.

Так же, как и для циклического кода, кодовый полином   может быть получен из информационного полинома  , степени не больше  , путём перемножения   и  :

.

Построение[править | править вики-текст]

Для нахождения порождающего полинома необходимо выполнить несколько этапов:

  • выбрать  , то есть поле  , над которым будет построен код;

  • выбрать длину   кода из условия  , где   — целые положительные числа;

  • задать величину   конструктивного расстояния;

1) построить циклотомические классы элемента   поля   над полем  , где   — примитивный элемент  ;

2) поскольку каждому такому циклотомическому классу соответствует неприводимый полином над  , корнями которого являются элементы этого и только этого класса, со степенью равной количеству элементов в классе, то выбрать   таким образом, чтобы суммарная длина циклотомических классов была минимальна; это делается для того, чтобы при заданных характеристиках кода   и   минимизировать количество проверочных символов  ;

3) вычислить порождающий полином  , где   — полином, соответствующий  -ому циклотомическому классу; или вычислить  , как НОК минимальных функций от элементов   (стр.168[1]).

Примеры кодов[править | править вики-текст] Примитивный двоичный (15,7,5) код[править | править вики-текст]

Пусть  , требуемая длина кода   и минимальное расстояние  . Возьмем   — примитивный элемент поля  , и   — четыре подряд идущих степеней элемента  . Они принадлежат двум циклотомическим классам над полем  , которым соответствуют неприводимые полиномы   и  . Тогда полином

имеет в качестве корней элементы   и является порождающим полиномом БЧХ-кода с параметрами  .

16-ричный (15,11,5) код (код Рида — Соломона)[править | править вики-текст]

Пусть   и   — примитивный элемент  . Тогда

.

Каждый элемент поля   можно сопоставить 4 битам, поэтому одно кодовое слово эквивалентно 60=15*4 битам, таким образом набору из 44 бит ставится в соответствие набор из 60 бит. Можно сказать, что такой код работает с полубайтами информации.