
- •Глава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.2. Общий алгоритм декодирования циклических кодов
Пусть r(х) = v(x) + e(x), где е(х) полином ошибок, ассоциированный с вектором ошибок ДСК. Тогда синдром (синдромный полином) имеет вид
s(x)= r(x) mod g(x)= e(x) mod g(x) (3.8)
На Рисунке 18 показана обобщенная структура декодера циклического кода. Синдром s(x) используется для определения полинома ошибок е(х). Так как циклический код является, прежде всего, линейным кодом, то эта структура может рассматриваться как вариант «стандартной таблицы» для циклических кодов.
Проблема декодирования равноценна поиску (неизвестного) полинома ошибок е(х) по известному синдрому s(x). Эти полиномы связаны уравнением (3.8), которое составляет основу синдромного декодера (известного также как декодер Меггита) для циклического кода. Другой (но близкий) вариант декодера, реализующий алгоритм ловли ошибок, известный также как декодер Касами, проверяет совпадение синдрома с возможным вектором ошибок. Только очень немногие классы
Рис. 18. Обобщенная структура декодера циклического кода.
кодов имеют такое относительно простое декодирование, как циклические коды Хемминга и Голея. Однако с увеличением корректирующей способности кода t = |_(dmin - 1)/2_| сложность декодера, основанного на комбинаторном обнаружении ошибок, становится чрезвычайно большой.
Предположим, что ошибка возникла на первой принятой позиции, т.е. е(х) = хn-1 . Соответствующий синдром равен s(x) =xn-1mod g(x). Если ошибка, искажающая заданную позицию, обнаруживается данным циклическим кодом, то могут быть обнаружены и ошибки на других позициях за счет циклических сдвигов и соответствующей коррекции синдрома. Синдромный декодер проверяет синдром для каждой позиции принятого слова и, если обнаруживается полином хn-1 modg(x), то символ на этой позиции исправляется.
Пример 25. В этом примере рассматривается декодирование циклического (7,4,3) кода Хемминга с порождающим многочленом g(x) =x3+x+l. Схема вычисления синдрома показана на Рисунке 19. Принимаемые символы накапливаются в регистре сдвига и одновременно вводятся в схему деления на g(x). После приема седьмого бита содержимое этого регистра сдвигается на один разряд в каждом такте, а схема деления модифицирует синдром и проверяет совпадение с полиномом
Как только на выходе схемы проверки появится 1, будет исправлена ошибка в позиции х6. В тот же самый момент исправление вводится по обратной связи в схему деления и, тем самым, обнуляет остаток от деления. Нулевой остаток может рассматриваться как сигнал об успешном завершении декодирования. Проверка на нулевой остаток схемы деления позволяет обнаруживать некоторые аномалии по окончании процедуры декодирования.
-
Такт
s0
s1
s2
Ошибочная компонента
0
1
1
1
r5
1
1
0
1
r6
2
1
0
0
r0
3
0
1
0
r1
4
0
0
1
r2
5
1
1
0
r3
6
0
1
1
r4
Перейдем теперь к изучению циклических кодов, исправляющих многократные ошибки, для которых задача декодирования может рассматриваться как решение системы уравнений. По этой причине здесь необходимо знакомство с полем, в котором будут выполняться операции умножения, сложения
Рис. 19. Синдромный декодер двоичного циклического (7,4,3) кода Хемминга.
и деления. Циклические коды имеют хорошую алгебраическую структуру. Позднее будет показано, что эффективная реализация мощных алгоритмов декодирования достигается при использовании арифметики конечного поля, когда известно размещение корней порождающего многочлена кода.
Напомним, что порождающий полином всегда может быть представлен произведением двоичных неприводимых многочленов:
Алгебраическая
структура циклических кодов выражается,
в частности, в возможности определения
корней каждого из многочленов
в некотором поле
разложения
(которое является расширением поля,
которому принадлежат коэффициенты
многочлена). В интересующем нас случае
поле разложения неприводимого многочлена
является полем
Галуа. В
литературе поля Галуа называют также
конечными полями, имея в виду конечное
число принадлежащих ему элементов.
Стандартным обозначением является
GF(q),
где q число элементов поля.
В общем случае число элементов поля есть степень простого числа, однако ниже будут рассматриваться только поля характеристики 2, когда q = 2m.
Пример 26.
В этом примере мы напомним читателям,
что они хорошо знакомы с понятием «поле
разложения». Рассмотрим поле действительных
чисел. Известно, что в этом поле многочлен
х2
+ 1 неприводим. Однако в поле комплексных
чисел он раскладывается в произведение
(х + i)(x –i
), где i
=
.
Таким образом, комплексное поле является
полем разложения (т.е. расширением) поля
вещественных чисел.