Помехоустойчивое кодирование. Линейные коды

advertisement
Помехоустойчивое
кодирование
Линейные коды
(продолжение)
Введение
• Коды контролирующие ошибки
– В данные при передаче добавляются
дополнительные разряды (избыточность)
для обнаружения и/или исправления
ошибок на приемном конце
– Цель введения избыточности – защита
данных от воздействий шума в канале
передачи
– Модель передачи:
Модель передачи данных
Error
Digital
Source
Source
Encode
r
Control
Coding
Line
Coding
Modulator
X(w)
(Transmit
Filter, etc)
Hc(w)
Transmitter
N(w)
Channe
l
Noise
+
Digital
Source
Sink
Decode
r
Receiver
Error
Control
Demod
Line
Decodin
Decoding g
(Receive
Filter,
etc)
Y(w)
Линейный код
• Порождающая матрица - кодирование
•
  G 
1
с0  
с   0
 1  0
с2  
  0
с3    1
с4  
  1
с5  
с   0
 6 

0
1
0
0
0
1
1
0
0
1
0
1
1
1
0

0
0   a0 
  
1   a1 


1   a2 
 
0   a3 

1


Линейные коды
• Сумма кодовых слов – кодовое слово
• Умножение кодового слова на константу
– снова кодовое слово
• Код – подпространство векторного
пространства двоичных слов длины n
Расстояние и вес Хэмминга
• Вес Хэмминга двоичного кодового слова число единичных разрядов в слове.
Обозначим w( )
• Заметим, что в силу линейности кода
d ( 1 ,  2 )  w( 1   2 )  w( 3 )
•
• Поэтому
min d ( 1 ,  2 )  min w( 1   2 )  min w( 3 )
• Таким образом нахождение минимального
расстояния среди 2k кодовых слов сводится к
задаче нахождения слова минимального
веса, что проще попарного сравнения всех
слов
Декодирование линейных кодов
• Одна из возможностей – просмотр таблицы,
записанной в памяти (ПЗУ-ROM)
• В этом случае принятое кодовое слово является
адресом
• Пример – Код с проверкой на четность
Address
Data Dataword
00000000
0
0000000
00000001
1
error
00000010
1
error
00000011
0
0000001
………
.
• Столбец Data есть индикатор ошибки, т.е. 0 –
правильное кодовое слово, тогда информационное
слово – k информационных разрядов принятого слова
Декодирование
• Другая возможность – алгебраическое
декодирование, когда индикатор
ошибки вычисляется, используя
принятое слово
Проверочная матрица
H  0
с0 
с 
 1
 1 0 1 1 1 0 0  с2 

 
 1 1 1 0 0 1 0  с3   0
 0 1 1 1 0 0 1  с 

 4
 
с5 
с 
 6
G H 0
T
Модель ошибки (пример)
• Пусть
•
  10101
   10110
Тогда вектор ошибки
       00011
Синдромное декодирование
линейного кода

• Пусть
- переданное по каналу слово,
а     - полученное ошибочное слово,
отличное от кодового, тогда       ошибка
H
H
H
s
   H  (   ) 
  H   
   s  H   s
 синдром ошибки
Стандартное расположение
• Из стандартной таблицы можно найти
наиболее правдоподобное переданное
слово для данного полученного слова
Синдромное декодирование
линейного кода
Все
нули
1  2
1 
2 

1
2

2
2
 2  12

1
1
2
1
n k
nk
2 nk
2
2







k
Все
нули
1
2k
s1
2
2k
s2
2 n k
2k
s2 nk
Стандартное расположение
• Стандартная таблица строится
следующим образом: перебираются
– все ошибки веса 1
– Все ошибки веса 2
– ……
• Проверяем, дает ли новая ошибка
новый синдром. Останавливаемся,
когда все синдромы использованы
Синдромное декодирование кода с
повторением
C  {000, 111}
t  (3  1) / 2  1
d 3
1
 
  G    1  a
1
 
 1 1
s  H  
 1 0
000
000
111
00
100
100
011
11
010
010
101
10
001
001
110
01
C исправляет ошибки100,010,001
0
  
1
Синдромное декодирование
линейного кода
• Столбцы не должны пересекаться
• Декодирование линейного кода –
труднорешаемая задача
Download