Основы теории передачи информации

  35790931     

Синдромное декодирование линейных блочных кодов


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

Пусть U = ( U0 , U1 , …, Un-1 ),  = ( е0 , е1, …, еn-1

) и  =  ( r0 , r1, r2 , …, rn-1) являются передаваемым кодовым словом, вектором-ошибкой и принятым вектором  соответственно. Тогда

r   =  U  + e                                                      (1.25)

и синдром

   S = r×HT = (U + e )× HT = U× HT + e× HT = 0 + e× HT =  e× HT ,                     (1.26)

поскольку для любого кодового слова  U × HT  = 0.

Таким образом, синдром принятой последовательности  r  зависит только от ошибки, имеющей место в этой последовательности, и совершенно не зависит от переданного кодового слова.  Задача декодера,  используя эту зависимость,  определить элементы (координаты) вектора ошибок.  Найдя вектор ошибки можно восстановить кодовое слово как

                                            U*  =  r  + e .                                                        (1.27)

На примере одиночных ошибок при кодировании с использованием линейного блочного (7,4)-кода покажем, как вектор ошибки связан с синдромом, и как, имея синдром, локализовать и устранить ошибки, возникшие при передаче.

Найдем значения синдрома для всех возможных одиночных ошибок в последовательности из семи символов:

e_ = ( 0000000

),



1011100

T

 e_ × HT  =  ( 0000000 ) ×

1110010

= (000);

 

0111001

 

e0 = ( 1000000 ),

 

1011100

T

 e0× HT  =  ( 1000000 ) ×

1110010

= (110);

 

0111001

 

e1 = ( 0100000 ),

 

1011100

T

 e1× HT  =  ( 0100000 ) ×

1110010

= (011);

 

0111001

e2 = ( 0010000 ),

 

1011100

T

 e2× HT  =  ( 0010000 ) ×

1110010

= (111);

 

0111001

 

 

e3 = ( 0001000


),

 

1011100

T

 e3× HT  =  ( 0001000 ) ×

1110010

= (101);

 

0111001

 

e4 = ( 0000100

),

 

1011100

T

 e4× HT  =  ( 0000100

) ×

1110010

= (100);

 

0111001

 

e5 = ( 0000010 ),



 

1011100

T

 e5× HT  =  ( 0000010

) ×

1110010

= (010);

 

0111001

 

e6 = ( 0000001

),

 

1011100

T

 e6× HT  =  ( 0000001

) ×

1110010

= (001).

 

0111001

 

 

Все возможные для (7,4)-кода одиночные ошибки и соответствующие им векторы  синдрома приведены в табл. 1.3.

Таблица 1.3

Вектор ошибки

Синдром ошибки

Десятичный код синдрома

1000000

110

6

0100000

011

3

0010000

111

7

0001000

101

5

0000100

100

                      4

0000010

010

2

0000001

001

1

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

Например,  если   синдром,   вычисленный   по принятому  вектору,   равен ( 111 ), это значит,  что  произошла одиночная ошибка  в  третьем символе,  если S

= ( 001 ) – то в последнем, и т.д. 

Если место ошибки определено, то устранить ее уже не представляет никакого труда.

Полная декодирующая схема для (7,4)-кода Хемминга, использующая синдром вектора не только для обнаружения, но и для исправления ошибок,  приведена на рис. 1.6.



Рис. 1.6

А теперь посмотрим, что произойдет, если в принятой последовательности будет не одна, а, например, две ошибки. Пусть ошибки возникли во второй и шестой позициях e = ( 0100010 ). Соответствующий синдром определится как

 S = ( 0100010 )
 = (001).

Однако синдром  S = ( 001 ) соответствует также и одиночной ошибке в седьмой позиции ( e6 ).Следовательно, наш декодер не только не исправит ошибок в позициях, в которых они произошли, но и внесет ошибку в ту позицию, где ее не было. Таким образом, видно, что (7,4)-код не обеспечивает исправления двойных ошибок, а также ошибок большей кратности.

Это, однако, обусловлено не тем, каким образом производится декодирование, а свойствами самого кода. Несколько позднее будет показано, от чего зависит исправляющая способность кода, то есть сколько ошибок он может исправить.


Содержание раздела