- •Глава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.5.3. Декодер pgz
Впервые этот алгоритм был рассмотрен Питерсоном. Решение ключевого уравнения (3.16) может быть найдено с помощью стандартной техники решения системы линейных уравнений. Это решение дает коэффициенты σ(х). Применению этой техники мешает только то, что неизвестно действительное число ошибок в принятом слове. По этой причине приходится проверять гипотезу о том, что действительное количество ошибок в принятом слове равно v. Предположим, что не все синдромы Si, 1 ≤ i ≤2t равны нулю. Очевидно, что принятое слово совпадает с одним из кодовых, если все синдромы равны нулю. Тогда процедура декодирования на этом завершается!
Декодер начинает с предположения о том, что возникло максимальное число ошибокОн вычисляет определитель
(3.22)
и сравнивает его с нулем. Если определитель равен нулю, то действительное число ошибок меньше, чем предполагалось. Значение i уменьшается на единицу и снова проверяется определитель. Процедура повторяется, если это необходимо, пока i >1. Как только окажется, что определитель не равен нулю, вычисляется обратная матрица для матрицы синдромов и вычисляются значения σ1 , σ2 ,..., σ v, где v = i. В случае, когда ∆i = 0, для i = 1, 2,..., td, декодирование считается безуспешным и регистрируется обнаружение неисправляемой комбинации ошибок.
Пример 35. В этом примере полином локаторов ошибок для (15, 5, 7) БЧХ кода из Примера 34 находится с помощью PGZ алгоритма. Предположим для начала, что имеется i=td = 3 ошибки. Определитель ∆3 вычисляется (с использованием алгебраического дополнения) следующим образом:
Так как ∆3 ≠ 0, то подтверждается предположение о том, что в принятом слове три ошибки. Подставляя синдромы, найденные в Примере 34, в ключевое уравнение (3.16), получаем:
(3.23)
Напомним, что (∆3)-1 = a-14 = а. Решение уравнения (3.23) имеет вид:
Таким образом, получили что совпадает с результатом, полученным по алгоритму БМ в Примере 34.
3.5.4. Евклидов алгоритм (еа)
В основе этого алгоритма лежит хорошо известная процедура нахождения наибольшего общего делителя (НОД) двух полиномов (или целых чисел). Ниже рассматривается применение ее для декодирования БЧХ кодов.
Определим полином значений ошибок как Λ(х) = σ(x)S(x), где синдромный полином имеет вид
(3.24)
Из уравнения (3.16) следует, что
(3.25)
Задача декодирования может быть переформулирована как задача определения многочлена Λ(х), удовлетворяющего уравнению (3.25). Это решение может быть найдено применением расширенного алгоритма Евклида к многочленам r0(x) = xd, d = 2td+ 1 и r1(x) = S(x). Если нa j-ом шаге алгоритма получено решение
такое, что deg[rj(x)] ≤ td, то Λ(х) = rj(x) и σi(x) = bj(x). Заметим, что для задачи декодирования полином аi(х) не представляет интереса, так как решение (3.25) ищется по модулю хd.
Расширенный алгоритм Евклида вычисления НОД состоит в следующем.
Расширенный алгоритм Евклида: Вычисление НОД(r0(x), r1(x))
Вход: r0(x), r1(x), deg[r0(x)] > deg[r1(x)]
Начальные условия: а0(х) = 1, b0(х) = 0, а1(х) = 0, b1(х) = 1.
На шаге j (j ≥ 2) применить длинное деление к многочленам
•Вычислить
aj(x) = aj-2(x)-qj(x)aj-1(x), bj(x) = bj-2(x)-qj(x)bj-1(x)
•Остановить вычисления на итерации last = jlast, когда deg[rlast(x)]=0.
Выход: НОД(r0(х), r1(x)) = rk(x), где к наибольшее ненулевое целое такое, что rк(х) ≠ 0 и k <jlast.
Пример 36. В этом примере вычисляется полином локаторов ошибок о(х) для (15, 5, 7) кода БЧХ из примера 34 по алгоритму Евклида.
• Начальные условия:
Так как deg[r4(x)] = 1 ≤ 3, алгоритм останавливается.
Очевидно, что многочлен
имеет те же самые корни, что и многочлены, найденные алгоритмами ВМА и PGZ (см. Пример 37 ниже), и отличается только константным множителем.
Последний пример показывает, что в общем случае многочлен локаторов ошибок, полученный алгоритмом Евклида, может отличаться на константный множитель от решения, полученного алгоритмами ВМА и PGZ. Для декодирования представляют интерес только корни этих полиномов, а не их коэффициенты. Таким образом, все три метода находят требуемый многочлен локаторов ошибок.