Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СДЭС_Уч_метод_пос_кодирование2.doc
Скачиваний:
115
Добавлен:
03.12.2018
Размер:
1.89 Mб
Скачать

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. Начальные условия: многочлен обратной связи ЛРОС σ(х) = 1, корректор ρ(х) = х, счетчик i = 1, длина регистра ℓ = 0.

  2. Взять следующий синдром и вычислить различие:

  1. Проверить различие d: если d=0, то перейти к п. 8.

  2. Модифицировать многочлен обратной связи:

  1. Проверить длину регистра: если > i, то перейти к п. 7.

  2. Исправить длину регистра и заменить корректор: положить ℓ=i- ℓ и ρ(х)= σ(х)/d.

  3. Обновить многочлен обратной связи: σ(х)= σnew(х).

  4. Обновить корректор: ρ(х) = х ρ(х).

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 = α. Отсюда следует, что

и

Полученные значения ошибок совпадают с теми, которые вычислены по алгоритму Форни. Подчеркнем еще раз, что этот способ может быть применен при исправлении только очень небольшого числа ошибок.