- •Глава3 4
- •Часть 1 введение 4
- •Часть 2 коды хемминга, голея и рида-маллера 39
- •Часть 3 двоичные циклические коды и коды бчх 54
- •Часть 4 недвоичные бчх коды -коды рида-соломона 105
- •Глава3 часть 1 введение
- •1.1. Кодирование для исправления ошибок: Основные положения
- •1.1.1. Блоковые и сверточные коды
- •1.1.2. Хеммингово расстояние, Хемминговы сферы и корректирующая способность
- •1.2. Линейные блоковые коды
- •1.2.1. Порождающая и проверочная матрицы
- •1.2.2. Вес как расстояние
- •1.3. Кодирование и декодирование линейных блоковых кодов
- •1.3.1. Кодирование с помощью матриц g и н
- •1.3.2. Декодирование по стандартной таблице
- •1.3.3. Хемминговы сферы, области декодирования и стандартная таблица
- •1.4. Распределение весов и вероятность ошибки
- •1.4.1. Распределение весов и вероятность необнаруженной ошибки в дск.
- •1.4.2. Границы вероятности ошибки в дск, каналах с абгш и с замираниями
- •1.5 Общая структура жесткого декодера для линейных кодов
- •Часть 2 коды хемминга, голея и рида-маллера
- •2.1. Коды Хемминга
- •2.1.1. Процедуры кодирования и декодирования
- •2.2. Двоичный код Голея
- •2.2.1 Кодирование
- •2.2.2. Декодирование
- •2.2.3. Арифметическое декодирование расширенного (24,12,8) кода Голея.
- •2.3. Двоичные коды Рида-Маллера
- •2.3.1. Булевы полиномы и рм коды
- •2.3.2. Конечные геометрии и мажоритарное декодирование.
- •Часть 3 двоичные циклические коды и коды бчх
- •3.1. Двоичные циклические коды.
- •3.1.1. Порождающий и проверочный полиномы.
- •3.1.2. Порождающий многочлен
- •3.1.3. Кодирование и декодирование двоичных циклических кодов.
- •3.1.4. Проверочный полином.
- •3.1.5. Укороченные циклические коды и crc коды
- •3.2. Общий алгоритм декодирования циклических кодов
- •3.1.5 Пакеты ошибок
- •3.2.1. Арифметика gf(q)
- •3.3. Двоичные коды бчх
- •3.4. Полиномиальные коды
- •3.5. Декодирование двоичных бчх кодов
- •2. Евклидов алгоритм (еа)
- •3.5.1. Общий метод декодирования для бчх кодов
- •3.5.2. Алгоритм Берлекемпа-Мэсси (вма)
- •3.5.3. Декодер pgz
- •3.5.4. Евклидов алгоритм (еа)
- •3.5.5. Метод Ченя и исправление ошибок
- •3.5.6. Исправление стираний и ошибок
- •3.6. Распределение весов и границы вероятности ошибки
- •3.6.1. Оценка вероятности ошибки
- •Часть 4 недвоичные бчх коды -коды рида-соломона
- •4.1. Коды pc как полиномиальные коды
- •4.2. От двоичных кодов бчх к pc кодам
- •4.3. Декодирование кодов pc
- •4.3.1. Комментарий к алгоритмам декодирования
- •4.3.2. Исправление ошибок и стираний
- •4.4. Распределение весов
- •Глоссарий
- •Литература
Часть 3 двоичные циклические коды и коды бчх
Цель этой части состоит в том, чтобы дать минимальный набор понятий, необходимых для понимания конструкции циклических кодов и эффективной реализации их алгоритмов кодирования и декодирования. Кроме того, в этой части дается введение в двоичные коды БЧХ. Коды Боуза-Чоудхури-Хок-Вингема (БЧХ) относятся к семейству циклических кодов, обладающих четкой алгебраической структурой, которая существенно упрощает процедуры кодирования и декодирования. Двоичные БЧХ коды с минимальным расстоянием 3, известные также как коды Хемминга, имели широкое применение в компьютерных сетях и устройствах памяти из-за простого и быстрого кодирования и декодирования. Кроме того, укороченные (48, 36, 5) БЧХ коды использованы в Американской сотовой системе с временным разделением каналов (TDMA, стандарт IS-54).
3.1. Двоичные циклические коды.
Циклические коды составляют класс кодов, исправляющих ошибки, кодирование и декодирование которых основано на полиномиальном представлении. Простая реализация этих кодов использует регистры сдвига и логические схемы. В этом разделе обсуждаются фундаментальные понятия в области Циклических кодов.
3.1.1. Порождающий и проверочный полиномы.
Обозначим С линейный блоковый (n, k) код. Пусть u сообщение и v соответствующее ему кодовое слово кода С. Циклические
Рис. 16 Циклический регистр сдвига
коды обладают свойствами, которые делают их удобными для аппаратурной (микросхемной) реализации. Сопоставим каждому кодовому слову v полином v(x):
Переменная х служит индикатором относительного положения элемента vi в кодовом слове в виде терма (монома) vixi полинома v(x).
Линейный блоковый код С является циклическим тогда и только тогда, когда любой циклический сдвиг любого кодового слова оказывается другим (или тем же самым) кодовым словом, т.е.
В полиномиальном представлении циклический сдвиг на одну позицию, обозначенный v1(x), соответствует умножению на x по модулю (хп — 1),
Операция циклического сдвига реализуется на регистре сдвига, показанном на Рисунке 16.
Пример 19. Рассмотрим случай п = 7. Циклический сдвиг на одну позицию вектора v = (0101011) равен v(1) = (1010101). В полиномиальном представлении и двоичной арифметике получаем:
3.1.2. Порождающий многочлен
Важным свойством циклических кодов является то, что все кодовые слова-полиномы кратны одному фиксированному полиному g(x), который называется порождающим полиномом кода. Этот полином (многочлен), как и всякий другой, задается своими корнями, которые обычно называют нулями кода. Легко показать, что порождающий полином g(x) является делителем бинома (хп - 1). (По аналогии с целыми числами «а(х) делит b(х)» (иначе b(х)/a(х)), если b(x) = a(x) q(x).) Таким образом, для того, чтобы найти некоторый порождающий многочлен, надо знать разложение бинома (хп - 1) на неприводимые множители φj(x) ,j = 1, 2, ..., s
(3.1)
Заметим, что в двоичной арифметике операции а + b и а — b (по модулю 2) дают одинаковый результат. Так как ниже рассматриваются только двоичные коды или коды над конечными полями характеристики два, т.е. использующие двоичную арифметику, то в дальнейшем мы не будем различать эти операции (т.е. знаки «+» и «-»).
Из вышесказанного следует, что
(3.2)
Пример 20. На множестве двоичных многочленов, т.е. полиномов с коэффициентами из Z2={0,1}, бином х7 - 1 имеет следующее разложение,
Приведем примеры циклических кодов длины 7.
-
Двоичный циклический (7,4,3) код Хемминга с порождающим полиномом g(x) = х3 + х + 1.
-
Двоичный циклический (7,6,2) код с проверкой на четность порождается полиномом g(x) = (х + 1).
-
Дуальный коду Хемминга двоичный (7,3,4) код (код максимальной длины) имеет порождающий многочлен g(x) = (х + 1)(х3 + х + 1).