
- •Глава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. Распределение весов
- •Глоссарий
- •Литература
4.3. Декодирование кодов pc
Алгоритмы
декодирования кодов PC
весьма близки к алгоритмам
для двоичных БЧХ кодов. Существенное
различие относится только к вычислению
v
< td
значений ошибок ,
1 < ℓ
<
v.
В
общем случае это делается с помощью
алгоритма
Форни [For2].
Ниже представлено выражение, справедливое
для кодов
PC
с произвольным множеством 2td
последовательных
нулей {ab,ab+l,…,аb+δ},δ
= 2td-
1,
(4.4)
где σ’(х) есть формальная производная по х многочлена локаторов ошибок σ(х) Многочлен Λ(х) в (4.4) это многочлен значений ошибок, определяемый как
(4.5)
Перед изучением первого примера декодирования кода PC мы рассмотрим другой вариант алгоритма БМ, известный как алгоритм Мэсси (или МА). Этот алгоритм был предложен Дж. Мэсси в [Mas2].
Алгоритм Мэсси синтеза ЛРОС
-
Начальные условия: многочлен обратной связи ЛРОС σ(х) = 1, корректор ρ(х) = х, счетчик i = 1, длина регистра ℓ = 0.
-
Взять следующий синдром и вычислить различие:
-
Проверить различие d: если d=0, то перейти к п. 8.
-
Модифицировать многочлен обратной связи:
-
Проверить длину регистра: если ℓ > i, то перейти к п. 7.
-
Исправить длину регистра и заменить корректор: положить ℓ=i- ℓ и ρ(х)= σ(х)/d.
-
Обновить многочлен обратной связи: σ(х)= σnew(х).
-
Обновить корректор: ρ(х) = х ρ(х).
9. Обновить счетчик: i = i + 1.
10. Условие остановки: если i < d, то перейти к п. 2, иначе Стоп.
Пример 41. Пусть С код PC (7,3,5) из Примера 40. Положим, что многочлен
получен из канала связи. Тогда S1 =r(1) = α + α 5 = α 6, S2 = r(α) = α 3 + α 2 = α 5, S3 = r(α 2) = α 5 + α 6 = α и S4 = r(α 3) = 1 + α 3 = α. Уравнение (3.16) получаем в виде:
Ниже рассмотрены три способа решения последнего уравнения.
Прямое решение (PGZ алгоритм)
Предположим, что произошли две ошибки. Тогда ∆2 = α 7 + α 10 = 1 + α 3 = α≠0. Следовательно, должны были произойти две ошибки и
откуда следует, что
Алгоритм Мэсси
S1 = α6, S2 = α5, S3 = α, S4 = α
i = 0: σ(x)=1, ℓ=0, ρ(x)=x
i = 1: σ(x)=1, ℓ=0, ρ(x)=x
σnew(x)=σ(x) +dρ(x)=1+α6x, 2l=0<i, ℓ= i - ℓ=1,
ρ(x)= σ(x)/d= α-6= α,
ρ(x)= x ρ(x)= αx, σ(x) = σnew(x).
i=2:
d=S2
+,
ρ(x)= x ρ(x)= αx2
=
Евклидов алгоритм
• Начальные условия:
Алгоритм останавливается, так как deg[r3(x)] = 2 = td. Следовательно, σ(х) = α3 + α4х +α2х2 = α3(1 + αх + α6х2).
Все рассмотренные алгоритмы дали одинаковое, с точностью до константного множителя, решение для многочлена локаторов ошибок:
Таким образом, ошибки произошли на позициях j1 = 2 и j2 = 4. Координаты ошибок находятся с помощью процедуры Ченя как обратные величины корней многочлена локаторов ошибок σ(х). Заметим, что σ’(х) = 0, так как в поле GF(2m) характеристики 2 справедливо равенство 2а = а+а=0.
Для вычисления значений ошибок (любым из рассмотренных алгоритмов) необходим многочлен значений ошибок (4.5),
Важно отметить, что алгоритм Евклида вычисляет σ(х) и Λ(х) одновременно, как σ(х) = blast (x) и Λ(х) = rlast(x) (см. раздел 3.5.4, ЕА). Для проверки этого утверждения заметим, что
Если локаторы ошибок известны, то значения ошибок, найденные из уравнения (4.4). равны
Таким образом, е(х) = αх2 + α5x4 и декодированное слово равно
Исправлены две ошибки.
Заметим, что оба
полинома, найденные алгоритмом Евклида,
имеют одинаковый константный множитель
β,
т.е. алгоритм находит βσ(х)
и βΛ(х) с некоторым множителем β
GF(2m).
Тем не менее, оба полинома имеют те
же самые корни,
что
и
полиномы,
вычисленные алгоритмами БМА или PGZ.
В результате и значения ошибок совпадают.
В большинстве программ, моделирующих процедуры кодирования и декодирования PC кодов, используется следующий эквивалентный способ определения значений ошибок [LC]. Пусть
(4.6)
Тогда значения ошибок равны [Вег]
(4.7)
где 1
.
Еще одна альтернатива
алгоритму Форни, для малых значений td
, состоит в
следующем способе вычисления значений
ошибок. Значения ошибок
связаны с синдромами Si
системой
линейных уравнений:
(4.8)
где 1
.
Каждая vv
подматрица, образованная (известными)
членами α(b+i-1)
jℓ
образуют матрицу Вандермонда. Если
известно
положение всех v
ошибок,
то любое подмножество v
уравнений
(4.8) может быть использовано для определения
значений ошибок. Например, используя
первые v
синдромов, получаем следующую систему
линейных уравнений,
(4.9)
решение которой может быть найдено над полем GF(2m).
Пример 42. Рассмотрим тот же код PC и принятый многочлен из Примеров 40 и 41. Из (4.9) получаем
Определитель 2x2 матрицы равен ∆ = α4 + α 2 = α. Отсюда следует, что
и
Полученные значения ошибок совпадают с теми, которые вычислены по алгоритму Форни. Подчеркнем еще раз, что этот способ может быть применен при исправлении только очень небольшого числа ошибок.