Курсовая работа: Проектирование системы передачи цифровых данных
Получили код БЧХ (31,16). Как видно, этот код ещё менее эффективен, чем соответствующий код Хемминга.
Построение кода
Построим свой код. Забегая вперёд, отметим, что для синхронного приёма кода требуется либо отдельно посылать синхроимпульсы, либо использовать самосинхронизирующийся код. В качестве такового можно использовать манчестерский код. Для лучшего использования возможностей витой пары (именно её мы будем использовать) можно передавать сигнал не по одной паре проводов, а по всем четырём. Причём по одной паре проводов будет передаваться манчестерский код, что обеспечит синхронизацию источника и приёмника, а по трём другим парам проводов пойдёт сигнал, синхронный с сигналом первой линии. По этим трём линиям будем передавать трёхуровневый сигнал. Поскольку манчестерское кодирование увеличит вдвое частоту, будем передавать трёхуровневый сигнал также с удвоенной частотой.
Итак, по одной паре проводов за один такт возможна передача одного из двух видов импульсов (рис. 1), что значит 1 бит за такт. По трём другим парам возможна передача одного из девяти видов импульсов (рис. 2). Из этих импульсов будем использовать только 8, т.е. за такт можно передать 3 бита.
Рис. 1
Рис. 2
За один такт по четырём парам проводов возможна передача 1+3+3+3=10 бит. Будем рассматривать передаваемые 10 бит за такт как один символ. Это значит, при кодировании будем оперировать 10-битными символами, т.е. двоично-1024-ричным кодом.
Для передачи информационного кода по ЛС требуется:
1. Преобразовать исходный двоичный код в двоично-1024-ричный. Для этого достаточно разбить код на группы по 10 бит.
2. Найти контрольные (проверочные) символы (операция кодирования).
3. Добавить контрольные разряды к информационным и смодулировать сигнал для отправления по ЛС (операция модуляции).
4. После прохождения сигнала через ЛС, он должен быть демодулирован.
5. Полученный код проверяется на наличие ошибок.
6. При отсутствии ошибок код преобразуется в двоичный для последующего использования.
Если задан двоичный 88-разрядный код (11 байт), то при записи его в двоично-1024-ричном виде, получится 9 символов (8 символов по 10 бит и 1 символ из 8 бит). Т.е. исходные 88 двоичных разряда разбиваются на 9 групп по 10 разрядов. Каждую группу назовём 1024-ричным символом.
Код будет обнаруживать 3 ошибки (на 9 двоично-1024-ричных разрядов), т.е. кодовое расстояние .
Сначала определим правило нахождения контрольных символов. Если записать в виде таблицы информационные разряды, то можно заметить, что три контрольных символа рассчитываются по соответствующим строкам (суммируются символы по модулю 32), три других – по строкам и один – по первым шести контрольным.
Рис. 2
Иначе говоря, , , ,(9)
, , , .
Построим матрицу кодирования (образующую матрицу). Матрица кодирования будет содержать 9 строк (по количеству разрядов), левая часть матрицы содержит единичную матрицу [2]. Правая часть задаёт контрольные разряды:
.(10)
Перемножая вектор информационного кода на эту матрицу, можно получить вектор, в котором информационные и контрольные разряды разделены, число контрольных разрядов равно 7:
.
Естественно, все операции должны выполняться по модулю 1024. Для проверки принятого кода на отсутствие ошибок требуется вектор умножить на проверочную матрицу. Проверочная матрица будет иметь следующий вид: