
Лекции по ТПС
.pdfИнформационн |
|
|
|
|
|
ая |
00 |
10 |
01 |
11 |
|
последовательн |
|||||
|
|
|
|
||
ость (k=2) |
|
|
|
|
|
|
|
|
|
|
|
Кодовые |
|
|
|
|
|
комбинации U |
0000 |
1011 |
0101 |
1110 |
|
(2k =4) |
|
|
|
|
|
|
|
|
|
|
|
U+e1 |
1000 |
0011 |
1101 |
0110 |
|
|
|
|
|
|
|
U+e2 |
0100 |
1111 |
0001 |
1010 |
|
|
|
|
|
|
|
U+e3 |
0010 |
1001 |
0111 |
1100 |
|
|
|
|
|
|
В первой строке таблицы приведены информационные последовательности (00,10,01,11), во второй строке – соответствующие им кодовые комбинации. В третьей строке приведены комбинации в виде суммы кодовой комбинации и вектора ошибки e1=1000 (ошибка в первом разряде кодовой комбинации), в четвертой - суммы кодовой комбинации и вектора ошибки e2=0100, пятой - суммы кодовой комбинации и вектора ошибки e3=0010. Число таких строк равно 2n-k-1. В первом столбце под нулевой комбинацией расположены векторы ошибки. Комбинации, расположенные в одной строке с вектором ошибки, содержат символ, искаженный этим вектором. Допустим, что в канал была передана комбинация 0101, из канала поступила комбинация 1101. Декодер находит принятую комбинацию в третьей строке и третьем столбце таблицы и принимает решение, что вектор ошибки e1=1000 и была передана комбинация 0101=1101+1000. Если проанализировать таблицу, то можно обнаружить, что при таком декодировании ошибки устраняются не всегда однозначно - это обусловлено тем, что код (4,2) позволяет однозначно исправлять ошибки первой кратности только в первом и третьем символах кодовых комбинаций как будет показано далее. Поэтому для однозначного исправления одиночных ошибок следует выбирать код с большей избыточностью.
Более экономичным, не требующим хранения таблицы стандартного размещения, является метод синдромного декодирования.
Исправляющим вектором синдромом, или синдромом ошибки, называется последовательность S, определяемая матричным равенством
151
~T |
H, |
(19.3 ) |
S= U |
где H проверочная матрица кода.
Учитывая, что U~T =(U+e)T транспонированная декодируемая кодовая комбинация, e вектор ошибок, и UT H = 0 вследствие ортогональности, тогда
S= U~T H =(U + e)T H = eT H.
Поясним это на примере кода (7,4). Допустим, что передавалась комбинация U=1000111, из-за воздействия помехи в ней возникла ошибка в первом разряде комбинации, что соответствует вектору ошибки e1=1000000. Из канала поступает
комбинация |
~ |
|
|
|
|
|
|
|||||
|
U =(U+e)=1000111+1000000=0000111. Определим скалярные про- |
|||||||||||
|
|
|
|
|
|
|
|
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
=1110100, U2 |
|
||
изведения |
|
|
|
вектора |
U =0000111 с векторами U1 |
=1101010, |
||||||
|
|
|
|
|
|
|
|
|
||||
U3 =1011001 – строками матрицы H: |
|
|
|
|||||||||
~ |
|
|
|
|
|
|
|
|
|
|
||
|
,U1 )=0∙1+0∙1+0∙1+0∙1+1∙1+1∙0+1∙0=1; |
|
|
|
||||||||
|
|
s11= (U |
|
|
|
|
||||||
~ |
|
|
|
|
|
|
|
|
|
|
||
,U2 )=0∙1+0∙1+0∙0+0∙1+1∙0+1∙∙1+1∙0=1; |
|
|
|
|||||||||
|
|
s12=(U |
|
|
|
|||||||
~ |
|
|
|
|
|
|
|
|
|
|
||
,U3 )=0∙1+0∙0+0∙1+0∙1+1∙0+1∙0+1∙1=1. |
|
|
|
|||||||||
|
|
s13=(U |
|
|
|
|||||||
|
|
s11 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S1= s12 |
|
1 . |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s13 |
|
|
|
1 |
|
|
|
|
|
Вычисленный вектор - синдром S1 соответсвует ошибке в первом разряде комбинации U (вектор ошибки e1=1000000). Допустим, что ошибка произошла во втором разряде кодовой комбинации U (вектор ошибки e2=0100000). Опреде-
лим скалярные произведения вектора |
~ |
=(U+e)=1000111+0100000=0100111 с |
|||||||||||
U |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||
векторами U1 =1110100, U2 =1101010, U3 =1011001. В результате получим |
|||||||||||||
~ |
|
|
|
|
|
|
|
|
|
|
|
||
,U1 )=1; |
|
|
|||||||||||
s21= (U |
|
|
|
||||||||||
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
,U2 )=1; |
|
|
||||||||||
s22=(U |
|
|
|||||||||||
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
,U3 )=0. |
|
|
||||||||||
s23=(U |
|
|
|||||||||||
s21 |
|
|
|
1 |
|
|
|
||||||
|
|
|
|
|
|
|
|
||||||
S2= s22 |
|
1 |
. |
|
|
||||||||
|
|
|
|
|
|
|
|
||||||
s23 |
|
|
|
0 |
|
|
|
Вектор - синдром S2 соответствует ошибке во втором разряде комбинации U (вектор ошибки e2=0100000). Для вектора ошибки e3=0010000 получим син-
152
|
s31 |
|
1 |
|
|
|
|
|
|
|
|
дром S3 |
s32 |
|
|
0 |
. Продолжая формировать ошибки в других разрядах кодовой |
|
|
|
|
|
|
|
s33 |
|
1 |
|
комбинации таким образом можно получить соответсвующие им векторы синдромы.
Сравним исправляющие векторы синдромы со столбцами проверочной матрицы H. Как видно, исправляющий вектор синдром S1 представляет собой первый столбец проверочной матрицы. Исправляющие векторы синдромы S2, S3 есть второй и третий столбцы матрицы H и так далее.
Таким образом, исправляющие векторы синдромы есть столбцы проверочной матрицы. Это обусловлено тем, что одиночная ошибка в i-м символе кодовой комбинации обнаруживается только теми проверками, в которые этот символ входит в соответствующих строках матрицы H. Поэтому, для однозначного исправления ошибок первой кратности в символах кодовой комбинации необходим код, в проверочной матрице которого все столбцы различны. Таким кодом является , например, код (7,4).
Еще раз обратимся к коду (4,2). Проверочная матрица кода имеет вид
1010
H .1101
Второй и четвертый столбцы матрицы – исправляющие векторы синдромы
– совпадают. Это означает, что при возникновении ошибки во втором или четвертом символах кодовой комбинации однозначно исправить ошибку нельзя, ее можно только обнаружить. Число исправляемых ошибок при условии, что все синдромы разные, равно числу строк таблицы стандартного размещения 2n-k-1. Для кодовой комбинации из n символов необходимо иметь n различных синдромов, чтобы различать n одиночных ошибок. Тогда между параметрами кода, исправляющего одиночные ошибки, должно выполняться условие 2n-k-1≥n.
Коды Хэмминга. Кодами Хэмминга обычно называют линейные (n,k) коды с кодовым расстоянием d=3, исправляющие одиночные ошибки, и с кодовым расстоянием d=4, исправляющие одиночные и обнаруживающие тройные ошибки. Последние получаются из кодов первого вида добавлением одного проверочного символа, равного сумме по модулю два всех остальных кодовых символов. Эти коды были предложены Р. Хэммингом в 1948г. и получили широкую популярность благодаря хорошей алгебраической структуре, простоте реализации кодирующих и декодирующих устройств. Коды Хэмминга относятся к совер-
153

шенным кодам, параметры которых n, k переводят неравенство 2n k 1 n в равенство. Это значит, что они обеспечивают исправление ошибки первой кратности при минимальном числе контрольных символов. Примерами кодов являются: коды (3,1), (7,4), (15,11), (31,26) и т.д. К совершенным кодам также относятся коды Голея: двоичный код (23, 12) и троичный код (11,6).
Выше, на примере кода Хэмминга (7,4), были рассмотрены способы описания и задания (n,k) кодов. Ими пользуются при разработке схем кодирования и декодирования. Схему кодирования удобно реализовывать на основе уравнений формирования контрольных символов кода. На рисунке 19.1 приведена структурная схема кодера Хэмминга (7,4), состоящая из регистра сдвига на семь символов и трех сумматоров по модулю 2.
|
|
|
|
От ИИ |
|
|
PC |
|
|
|
|
|
|
|
|
|
|
|
|
U в канал |
a7 |
a6 |
a5 |
a4 |
a3 |
a2 |
a1 |
|
|
|
|
+ |
|
|
|
|
|
|
+ |
|
|
|
|
|
|
+ |
|
|
|
|
|
Рис.19.1 |
|
|
Информационные символы a1,a2,a3,a4 подаются в регистр одновременно, что обеспечивает формирование контрольных символов из информационных за один такт. Структурная схема декодера показана на рисунке 19.2.
154

PC |
|
|
|
|
|
|
|
|
|
|
|
|
|
U, из канала |
|
|
|
|
|
|
И |
И |
И |
И |
И |
И |
И |
a7 |
a6 |
a5 |
a4 |
a3 |
a2 |
a1 |
111 |
110 |
101 |
011 |
100 |
010 |
001 |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
+ |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.19.2 |
|
|
|
|
|
|
Для ее составления удобно пользоваться проверочной матрицей. В схеме, для обнаружения ошибок, к выходам трех сумматоров по модулю 2, осуществляющих три проверки, подключен логический элемент ИЛИ. Для исправления одиночной ошибки в любом символе принятой комбинации используются опознаватели ошибок (логические элементы И), настроенные на определенный синдром ошибки – столбец проверочной матрицы H.
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1.Какой помехоустойчивый код называется (n,k) кодом?
2.Что понимается под кодовым расстоянием, минимальным кодовым расстоянием?
3.Назвать способы задания (n,k) кода
4.Что понимается под синдромом ошибки (n,k) кода?
5.Какие коды принято называть кодами Хэмминга?
ЛЕКЦИЯ 20. ЦИКЛИЧЕСКИЕ (n,к) КОДЫ
Свойства и способы представления. Циклические коды являются важным классом линейных (n,к) кодов благодаря своей алгебраической структуре, используемой для создания многих подклассов помехоустойчивых кодов, высокой
155
эффективности обнаружения и исправления независимых ошибок различной кратности и пакетов ошибок. Они характеризуются простотой кодирующих и декодирующих устройств и находят широкое применение в системах связи, автоматики и вычислительной техники.
Кодовые комбинации (n, к) кодов, представимые в виде векторов, в теории циклических кодов принято представлять в виде полиномов от формальной переменной х, степень которых меньше n.
|
Например, вектору U1 |
|
– (a0,a1,a2,…,an-1) соответствует полином U1(х)= |
||||||
a х0 |
a x1 a x2 ... а |
xn 2 a |
|
xn 1 . Вектору U2=(an-1,a0,a1,a2,…,an-2), полученному |
|||||
0 |
1 |
2 |
n 2 |
|
n 1 |
|
|
|
|
из |
U1 |
циклической |
перестановкой составляющих, соответствует полином |
||||||
U2(х)=хU1(х)= a х1 |
a x |
2 a |
x3 |
... а |
n 1 |
xn . Умножение на х увеличивает степень по- |
|||
|
|
0 |
1 |
2 |
|
|
|
|
линома, что вызывает удлинение вектора U2. Чтобы избежать удлинения, а следовательно превышения максимальной степени полинома n-1, хn заменяется на единицу: хn=1: U2(х)= аn 1 a0 х1 a1 x2 a2 x3 ... аn 2 xn 1 . Последующее умножение U1(х) на х2 приводит к замене хn+1 на х, умножение на х3 приводит к замене хn+2 на х2 и так далее, например:
х2U1 (х) х2 (a0 х0 a1 x1 a2 x2 ... аn 2 xn 2 an 1 xn 1 )
a0 х2 a1 x3 a2 x4 ... an 2 xn an 1 xn 1 аn 2 an 1 x1 a0 х2 a1 x3 a2 x4 ... an 3 xn 1
Из примера видно, что умножение U1(х) на хj равносильно сдвигу на j разрядов вправо исходного вектора U1.
Множество полиномов, при перемножении которых хn заменяется на единицу, называют кольцом полиномов по модулю хn – 1, а математический аппарат – алгеброй полиномов по модулю хn – 1. Поскольку векторы – комбинации двоичного кода образуют n-мерное векторное пространство над полем Галуа GF (2), также и полиномы им соответствующие образуют множество над полем Галуа, в котором действия сложения и вычитания по mod2 тождественны. Поэтому для двоичных кодов РАЗДЕЛ по умножению записывается в виде хn + 1.
Напомним, что кольцо – это множество математических объектов, на котором выполнимы две операции: сложение и умножение, и только одна из них – сложение – имеет обратную операцию – вычитание. Примером кольца является множество целых чисел - Z={…-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,…}. В этом множестве всегда выполнимы сложение и вычитание, в результате которых всегда получается целое число. Всегда выполнимо умножение и не всегда выполнима обратная операция – деление, так как в результате деления может получиться дробь, а дробных чисел в множестве целых чисел нет. Если в кольце це-
156

лых чисел, например, выбрать числа, образующие подмножество вида 4Z={…- 12.-8,-4, 0, 4, 8, 12,..}, где число 4 является наименьшим положительным числом, которому кратны все остальные числа, то такое подмножество называется идеалом.
Аналогично, если в кольце полиномов найдется полином степени меньше n- 1, обозначим его g(x), который будет делить без остатка РАЗДЕЛ хn+1 и которому будут кратны другие полиномы, то такое подмножество полиномов также является идеалом.
Для того, чтобы это подмножество - идеал образовывало циклический (n, к) код необходимо, чтобы g(x) удовлетворял следующим свойствам: степень полинома g(x) равна (n – к); РАЗДЕЛ хn+1 должен делиться на g(x) без остатка,
1 x n
частное от деления h( x) - проверочный полином; g(x) должен быть не- g( x)
приводимым (не раскладываться на множители), если требуется построить код, исправляющий ошибки первой кратности, для исправления кодом ошибок второй кратности g(x) должен раскладываться на два сомножителя, каждый из которых должен быть неприводимым, для исправления ошибок третьей кратности – на три сомножителя и так далее.
Некоторые неприводимые полиномы приведены в таблице 20.1.
Таблица 20.1
№ п/п |
Степень полинома |
Полином |
|
|
|
1 |
2 |
x2 + x +1 |
|
|
|
2 |
3 |
x3 + x +1 |
|
|
|
3 |
4 |
x4 + x +1 |
|
|
|
4 |
5 |
x5 + x2 +1 |
|
|
|
5 |
6 |
x6 + x +1 |
|
|
|
6 |
7 |
x7 + x3 +1 |
|
|
|
7 |
8 |
x8 + x4 + x3 + x2 +1 |
|
|
|
8 |
9 |
x9 + x4 +1 |
|
|
|
157
9 |
10 |
x10 + x3+ 1 |
|
|
|
10 |
11 |
x11 + x2 +1 |
|
|
|
11 |
12 |
x12 + x6 + x4 + x +1 |
|
|
|
12 |
13 |
x13 + x4 + x3 + x +1 |
|
|
|
13 |
14 |
x14 + x10 + x6 + x +1 |
|
|
|
14 |
15 |
x15 + x +1 |
|
|
|
При представлении кодовых комбинаций векторами код задается производящей матрицей G, а при представлении полиномами – производящим (или порождающим) полиномом g(х) степени (n – к).
Пусть требуется построить (n,k) код, например, (7,4), исправляющий однократные ошибки. Выберем g(х) =1+х+х3 , соответствующий вектору U0 1101000. Убедимся, что РАЗДЕЛ х7 + 1 делится на g(x) без остатка, учитывая, что операции сложения и вычитания по mod2 совпадают, получим
x7 1 |
|
x3 х 1 |
|
x7 х5 x 4 |
|
|
|
x 4 x 2 х 1 |
x5 x 4 1
x5 х3 x 2
x 4 х3 х 2 1
x4 х 2 х
х3 х 1
x3 х 1
Частное от деления – проверочный полином h(х)=1+х+х2+х4.
Для составления производящей матрицы G кода (7,4) необходимы четыре линейно-независимых кодовых вектора. Их можно получить циклическими перестановками, последовательно сдвигая разряды вектора 1101000 вправо на один, два, три разряда, что эквивалентно умножению производящего полинома g(х) =1+х+х3 на х,х2,х3. Полученные семимерные векторы сведем в матрицу
158
1101000
0110100 G= 0011010
0001101
Выше было отмечено, что dmin (n,k) кода можно определить по минимальному числу единиц в строке матрицы G. Для циклического кода это соответствует числу слагаемых в полиноме g(х). В рассматриваемом примере dmin=3. Строки матрицы содержат четыре линейно-независимых вектора, являющихся базисными векторами подпространства векторов кода.
Полином h(х) используется для построения проверочной матрицы (n,k) кода. В нашем примере h(х)=1+х+х2+х4. Проверочная матрица должна содержать три строки, образованные векторами, соответствующими полиномам h(х), х h(х),
х2 h(х)
1110100
H= 0111010
0011101
Сравнение полученных матриц с матрицами линейного кода (7,4) показывает, что они отличаются расположением столбцов, поэтому коды, им соответствующие, являются эквивалентными.
Кодирование циклических кодов. Наиболее просто осуществляется кодирование комбинаций несистематического циклического кода. Пусть l(х)- полином, соответствующий информационной последовательности l, то U(х)=l(х)g(х). Полином U(х) кратен полиному g(х), что делает его элементом подмножества кольца полиномов, называемого идеалом. Например, l = 1111, l(х)=1+х+х2+х3,
тогда U(х)=l(х)g(х) =(1+х+х2+х3) (1+х+х3)= =1+х+х3+х+х2+х4+х2+х3+х5+х3+х4+х6=1+х3+х5+х6; U=1001011.
Этот вектор соответствует сумме всех строк матрицы G. Видно, что комбинация U в явном виде не содержит исходной комбинации l.
При кодировании комбинаций систематического циклического кода необходимо, чтобы в кодовой комбинации первые k разрядов занимали информационные символы. Это требование легко выполнить умножением l(х) на хn-k. Полученный полином l(х) хn-k разделим на производящий полином g(х) и запишем эту операцию в виде уравнения
l(х)хn-k=l”(х)g(х)+r(х), |
(20.1) |
159

где l”(х) – частное, степень которого не выше (k-1), r(х)- остаток, степень которого не более чем (n-k). Перенеся остаток r(х) в левую часть уравнения (20.1) и помня, что действия сложения и вычитания по mod2 тождественны, получим уравнение
l(х) хn-k + r(х) =l”(х)g(х) |
(20.2) |
В уравнении (9.6) справа находится комбинация циклического кода и слева также комбинация циклического кода. Таким образом,
U(х)=l(х) хn-k + r(х)
и кодирование в систематический код осуществляется сдвигом символов комбинации l на (n-k) разрядов вправо и размещением на освободившихся местах контрольных символов, соответствующих полиному r(х). Например:
l = 1111, l(х)=1+х+х2+х3, l(х) хn-k=х3(1+х+х2+х3)= х3+х4+х5+х6. Тогда l(х) хn-k/ g(х)
x6 х5 х 4 х3 |
x3 х 1 |
|
x6 х 4 x3 |
|
|
x3 x 2 1 |
x5
x5 х3 x 2
х3 х 2
x3 х 1
х2 х 1 r(х)
Таким образом, U(х)=l(х)хn-k+r(х) =1+х+х2+х3+х4+х5+х6; U=1111111.
Схемы, реализующие рассм отренные алгоритмы кодирования, представляют собой регистры сдвига, построенные на основе прои з- водящего полинома g(х). Рассмотрим работу схем кодирования в несистематический (рис. 20.1) и систематический коды (рис. 20.2) построенных на основе полинома g(х)=1+х+х3.
L
S1 S2
S3
g3=1 |
g2=0 |
g1=1 |
g0=1 |
U
+
+
160