Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы_5.doc
Скачиваний:
41
Добавлен:
25.09.2019
Размер:
4.72 Mб
Скачать
  1. Обнаружение и исправление ошибок в двоичных комбинациях с помощью матричного кода.

При большой длине кодовой комбинации эффективность кодов с контролем по четности или нечетности низкая, т.к. один контрольный раз­ряд не обеспечивает защиту длинной комбинации.

Для увеличения числа контрольных разрядов можно разделить кодо­вую комбинацию на несколько блоков. В конце каждого блока можно вве­сти контрольный разряд по четности. Если записать эти блоки в виде мат­рицы, то можно ввести дополнительные контрольные разряды по столб­цам. В результате получится матричный код, относящийся к самокоррек­тирующимся кодам.

Самокорректирующиеся коды характерны тем, что в них закладыва­ется информация о том, как можно восстановить код, если случайные по­мехи изменят его.

Предположим, что код состоит из отдельных блоков, и в каждом блоке содержится k двоичных символов: а1, а2, ..., ак.

Для работы в канале с переспросом этот код дополняется одним символом - четностью b, выражаемым через символ блока так:

b=

При этом новый блок записывается так: а1, а2, ..., ак,b

Контроль по четности позволяет обнаружить нечетное число ошибок в блоке. Для ответа на вопрос, в каком разряде расположена ошибка, необ­ходимо остановить передачу сообщения и сделать переспрос. Однако, об­наружить и исправить ошибку можно без операции переспроса. Для созда­ния кода с возможностью исправления без переспроса по каналу обратной связи рассмотрим, например, блок с k = 12: а 1, а2, ..., а 12.

Расположим этот основной блок в виде матрицы:


Теперь определим четность всех строк и всех столбцов этой матри­цы, приписав по ее краям символы четности b:

Здесь b1=

b2=

b7=

Считывая последовательно все строки образованной матрицы, мож­но получить блоке избыточностью: a1a2a3a4b1a5a6a7a8b2a9a1oana12b3b4 b5b6b7. Например, блок 101101000111 можно записать в матричной форме так:

Эту матрицу можно дополнить символами по четности. Полученный блок с избыточностью будет следующим: 1011101001011111000.

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

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

Для построения кода с исправлением двух, трех и более ошибок не­обходимо сделать дополнительную проверку на четность, например, по диагоналям. Вводя такую проверку на четность, можно построить само­корректирующийся код с любой надежностью.

Полученный двумерный итеративный код обладает минимальным кодовым расстоянием, равным длине строки 1. Поэтому он позволяет обна­ружить пакет ошибок длиной 1 + 1.

Однако при этом увеличивается число проверочных символов в коде. Так, для k = 12 нужно 7 избыточных символов, т.е. избыточность составит 7/12 = 60%. Однако, с увеличением числа символов в основном блоке этот процент избыточности уменьшается. Так, для k = 100 (матрица 10 х 10) по­требуется лишь 20 дополнительных символов для проверки на четность. С ростом & число дополнительных символов уменьшается.

Таким образом, с точки зрения экономности кода удобнее передавать информацию большими блоками.

По сравнению с циклическими кодами избыточность итеративных кодов выше. Но кодирование и декодирование итеративных кодов с помо­щью ЭВМ проще, чем циклических. Поэтому простые итеративные коды целесообразно применять в системах передачи данных, работающих по принципу коммутации сообщений. Их использование обеспечивает про­граммным путем снижение не обнаруживаемых ошибок в 106раз по срав­нению с простым без избыточным кодом. Применение же итеративного ко­да с кодом Хэмминга позволяет снизить количество не обнаруживаемых ошибок в 10 -10 раз.