Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура ЭВМ и принцип ее работы.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.25 Mб
Скачать

Линейные блоковые коды

Важное семейство кодов образуют линейные двоичные блоковые коды. Эти коды замечательны тем, что, представляя информационные и кодовые слова в форме двоичных векторов, мы можем описать процессы кодирования и декодирования с помощью аппарата линейной алгебры. При этом компонентами вводимых векторов и матриц являются символы 0 и 1. Операции над двоичными компонентами производятся по правилам арифметики по модулю 2.

Сложение

Умножение

0

1

×

0

1

0

0

1

0

0

0

1

1

0

1

0

1

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

Кодер двоичного блокового (n,k)-кода отображает множество 2k возможных двоичных информационных слов в множество 2k n-мерных кодовых слов. В теории кодирования между этими множествами всегда существует взаимно однозначное соответствие.

Вместо k бит информационного вектора в канал передается n бит кодового вектора. В этом случае говорят об избыточном кодировании со скоростью: R = n ⁄ k.

Чем ниже скорость, тем больше избыточность кода, и тем большими возможностями для защиты от ошибок он обладает. Однако, следует учитывать, что с увеличением избыточности затраты на передачу информацию также возрастают.

Описание процессов кодирования и декодирования Структура кодовых векторных пространств

Исходным материалом для построения кодовых конструкций служит n-мерное двоичное векторное пространство, в котором заданы операции арифметики по модулю 2. В него вложено k-мерное линейное пространство, содержащее 2k кодовых слов. Код С образуется с помощью 2k комбинаций k линейно независимых базисных векторов {g1,…,gk}.

Эти векторы образуют строки порождающей матрицы кода С.

Для кода C существует дуальный код Cd такой, что скалярное произведение любой пары векторов, один из которых принадлежит пространству С, а другой — пространству Cd, всегда равно нулю. Это значит, что векторы кода Сd ортогональны векторам кода С. С другой стороны, если некоторый вектор ортогонален всем векторам кода С, то он принадлежит коду Сd и наоборот. Дуальное векторное подпространство «натянуто» на nk линейно независимые базисные векторы {h1,…,hnk}. Эти векторы образуют строки проверочной матрицы.

Рассмотрим пример порождающей и проверочной матриц (4,7)-кода Хэмминга:

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

Кодирование

Кодовое слово v и информационное слово u связаны соотношением:

v = u × G,

где Gпорождающая матрица, структура которой была описана выше.

Например, информационный вектор u = (1010) отобразится в кодовый вектор следующим образом:

Легко заметить, что последние четыре разряда кодового вектора совпадают с информационным вектором. Это свойство называется систематичностью кода.

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

Gk×n = (Pk×(nk) Ik),

где Ik — единичная матрица размерности k×k.

Таким образом, в кодовом векторе систематического кода всегда можно выделить информационные и проверочные символы.

v = (

v0 … vnk−1

vnk … vn−1

).

 

n − k проверочных символов

k информационных символов

 

Роль проверочных символов и их использование будут подробно разъяснены ниже.