
- •Санкт-Петербургский государственный технический университет
- •Способы задания кодов, классификация и характеристики кодов.
- •Задание сверточного кода решеткой.
- •Матричное описание сверточных кодов.
- •Код Вайнера-Эша
- •Коды Хэмминга (недвоичные)
- •Коды Хэмминга как цикличные коды
- •Проблематика исправления ошибок.
- •Алгоритм декодирования сверточных кодов.
- •Синдромное декодирование сверточных кодов.
- •Исправление пакетов.
- •Алгоритм декодирования Витерби.
- •Оценка характеристик декодирования по алгоритму Витерби.
Код Вайнера-Эша
Этот класс кодов
аналогичен классу кодов Хэмминга. Он
существует для любого m³2.
приq>2
n=(m+1)
,k=(m+1)
,k=(m+1)(2m-1),
если код двоичный. Строится В-Э код на
базе проверочной матрицы кода Хэмминга
((2m-1),m).
H
содержит m-разрядные
столбцы, все, кроме нулевого.
Код В-Э задается проверочной матрицей, структура которой следующая:
-
строка из (2m-1)
единиц (
)
- строки «равные»
строкам (соответствующие) проверочной
матрице кода Хэмминга.
«матрица» 1х1 равная 1
0 - «матрица» 1х1 равная 0
d* - минимальное расстояние у кода В-Э = 3, значит это код, исправляющий одну ошибку (систематический, логично и Хэмминга брать в систематическом виде, но отнюдь не обязательно)
Коды Хэмминга (недвоичные)
d³3, n= 2m-1; k=2m-1-m, если код двоичный.
Задается проверочной матрицей все столбцы которой все ненулевые m-разрядные числа.
Когда мы распространяем
коды Хэмминга на недвоичные алфавиты,
и для построения линейная независимость
пар столбцов сохраняется. Но просто
различные столбцы уже не гарантируют
линейную независимость. Различных
линейно независимых будет уже при
алфавите q
всего
.
Следовательно, получаются коды Хэмминга
с длинамиn
=
иk=
.
Код Хэмминга существует для любого q, для которого существует поле из q элементов GF(q) и любого m>0.
При выборе столбцов, чтобы линейная независимость гарантировалась договоримся брать различные столбцы (m), у которых первая ненулевая компонента =1.
GF(2) |
GF(4) |
GF(8) |
GF(16) |
GF(27) |
7.4 |
5.3 |
9.7 |
17.15 |
28.26 |
15.11 |
21.18 |
73.70 |
273.270 |
757.754 |
31.26 |
85.81 |
585.581 |
|
|
63.57 |
341.336 |
|
|
|
127.120 |
|
|
|
|
Примеры: Задайте коды Хэмминга при q=3, m=2,3,...
а) m=2
,
k=4-2
(4,2)
d=3
b) m=3
,
(13,10)
d=3
Задайте коды Хэмминга при q=4, m=2,3,4...
а) m=2
,
k=3
(5,3)
b) m=3
,
k=18 (21,18)
Пусть передается
информационная последовательность
10000000000000000. Результат кодирования через
Принято
совпадает
со столбцом 1. Принято
ошибка =1.
ошибка
в3
m=2
q=16
,
(17,15)
Принято из канала
( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1)
Что передавалось?
значение ошибки. Ошибка в i1
В этом разряде
передавалось +4=1.
Итого:
Коды Хэмминга как цикличные коды
Первый код из таблиц БЧХ кодов есть код Хэмминга. В качестве g(x) берется многочлен (примитив) по модулю которого строится поле.
Равенство c(x)= m(x) g(x) при x= дает c()=0 это эквивалентно cHT=0, где H=[1 2... -n-1 ]
Это двоичные коды Хэмминга (n=2m-1, k=n-m, d3). Ошибочная позиция маркируется элементом поля i. Условие, когда существует циклический код Хэмминга недвоичный дается теоремой:
Минимальное
расстояние кода с проверочной матрицей
H=[0,
1,...
,-n-1
], где =q-1
и n=,
равно 3 или более, только тогда, когдаn
и q-1
взаимно просты, что равносильно m
и q-1взаимно
просты. Получается что из рассмотренных
ранее кодов не все могут быть заданы
как циклические. Не циклические, например,
код (21,18) поля GF(4).
Задача: Получите порождающий многочлен для кода (85,81) над GF(4). За исходное надо взять поле GF(256) и элемент =3.
Элементы GF(256), которые составляют подполе из 4-х элементов, это {0,1, 85, 170}. Сопряженные относительно поля GF(2) элементы:
,2, 4, 8, 16, 32, 128.
Сопряженные относительно поля GF(4) элементы, которые нас интересуют:
, 4,16,64.
Следовательно,
g(x)=(x-)(x-4) (x-16) (x-64)= (x-3) (x-12) (x-48) (x-192)
Раскрыв скобки гарантируем, что получим многочлен с коэффициентами из GF(4). Вычисления естественно длинные. Ответ
g(x) =x4 + x3 + 170 x+1 или g(x)= x4 + x3 +3x+1, или (85,81) код Хэмминга над GF(4).
Аналогичный подход можно применить для построения сверточных кодов, способных исправлять двойные ошибки. Для этого используется двоичный код БЧХ примитивной длины с d=6. Для произвольного m3. Это код (n,k) (2m-1, 2m-2-2m). Его проверочная матрица
H
- двоичная матрица размерности mx(2m-1),
1 - вектор строка из 1 длины 2m-1.
Сверточный код (n,k)будет задаваться проверочной матрицей:
0 - строка из 2m-1
нулей.
Задача.
Построить проверочную матрицу систематического восьмиричного (9, 7) – кода Хэмминга.
Основываясь на этом коде найти проверочную матрицу (30, 27) – кода Вайнера-Эша над GF(8).
Построить кодер и синдромный декодер.
Чему равно скорость этого кода?