Помехоустойчивое кодирование Линейные коды (продолжение) Введение • Коды контролирующие ошибки – В данные при передаче добавляются дополнительные разряды (избыточность) для обнаружения и/или исправления ошибок на приемном конце – Цель введения избыточности – защита данных от воздействий шума в канале передачи – Модель передачи: Модель передачи данных 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 nk 2 nk 2 2 k Все нули 1 2k s1 2 2k s2 2 n k 2k s2 nk Стандартное расположение • Стандартная таблица строится следующим образом: перебираются – все ошибки веса 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 Синдромное декодирование линейного кода • Столбцы не должны пересекаться • Декодирование линейного кода – труднорешаемая задача