Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
76
В.П. Малайчук, В.Ф. Рожковский
Основы теории кодирования и декодирования.
Учебное пособие
Днепропетровск 2000
Настоящее учебное пособие содержит математические основы теории кодирования и декодирования и компьютерных исследований помехоустойчивости двоичных закодированных сигналов. В первом разделе рассматривается математический аппарат дискретных сигналов и цифровых фильтров (зет-преобразования, разностные уравнения, дискретные передаточные функции) и их использование в задачах анализа и синтеза двоичных кодов. Изучаются алгоритмы формирования двоичных последовательностей Хаффмена и построение на их основе помехоустойчивых неразделимых кодовых комбинаций. Разделимые блоковые кодовые сигналы, систематические и несистематические коды изучаются на основе нерекурсивных и рекурсивных двоичных формирующих фильтров. Синтезированы разностные уравнения, описывающие процессы обнаружения и исправления ошибок и декодирования сообщений по критерию минимума кодового расстояния.
Второй раздел содержит задания на самостоятельную работу, выполнение которой имеет своей целью закрепление теоретических знаний и приобретение навыков решения задач анализа и синтеза кодированных сигналов.
В третьем и четвертом разделах сформулированы задания на выполнение лабораторных работ и описаны исходные данные для проведения компьютерных исследований.
В пятом разделе описано программное обеспечение компьютерных исследований и вычислительных экспериментов.
Настоящее учебное пособие является не только источником знаний. Оно издано в таком виде, чтобы при работе с ним превратиться в индивидуальный конспект лекций студента, в его личный рукописный отчет о выполнении учебных заданий, о результатах компьютерных исследований и вычислительных экспериментов.
Дискретные сигналы результат аналогово-цифрового преобразования непрерывных сигналов как функций времени S(t). Если задан непрерывный сигнал S(t), то после преобразования получим последовательность значений непрерывного сигнала S(tk)=S(k), где tk=kDt, Dt- интервал дискретизации, k=1, 2, …, n. Для описания дискретных сигналов используется решетчатые функции
(1.1.1)
где d(t) - дельта-функция Дирака.
Ее основные свойства характеризуются соотношениями
(1.1.2)
Преобразуем решетчатую функцию по Лапласу и найдем ее изображение
Используя (1.1.2), получим
(1.1.3)
Введем новую комплексную переменную z=exp(pDt). Тогда вместо S(p) как преобразование Лапласа получим преобразование вида
(1.1.4)
Формулу (1.1.4) называют z-преобразованием. Зет-преобразование, как и преобразование Лапласа, используется для анализа и синтеза дискретных сигналов и цифровых фильтров.
Преобразование (1.1.4) обладает замечательным свойством. Зет-преобразование дискретных запаздывающих физически реализуемых сигналов (S(t)=0, t<0)
может быть получено по формуле
(1.1.5)
Дискретные, как и непрерывные, сигналы при формировании, передаче и приеме преобразуются различными электронными устройствами, в частности, цифровыми фильтрами. Рассмотрим математические методы преобразования дискретных сигналов цифровыми фильтрами. Связь между непрерывным входным U(t) и выходным S(t) сигналами устанавливает интеграл свертки (интеграл Дюамеля)
(1.1.6)
где h(t) импульсная характеристика фильтра, однозначно определяемая его передаточной функцией
(1.1.7)
где S(p) и U(p) преобразования Лапласа выходного и входного сигналов.
Заменим интеграл (1.1.6) его интегральной суммой
(1.1.8)
Определим зет-преобразование выражения (1.1.8), полагая, что u(t)=0 при t<0
В результате получим
(1.1.9)
где H(i)=Dth(i).
По аналогии с преобразованием непрерывных сигналов фильтрами отношение S(z)/U(z) будем называть дискретной передаточной функцией цифрового фильтра. Тогда
Для непрерывных сигналов соответствующие формулы имеют вид
Определим дискретные передаточные функции цифровых фильтров, аналогами которых являются фильтры непрерывных сигналов 1-го и 2-го порядков с импульсными характеристиками
Для определения дискретной передаточной функции первого фильтра необходимо вычислить сумму
Используя формулу для бесконечной геометрической прогрессии, получим
Аналогично определяется дискретная передаточная функция фильтра 2-го порядка. В результате будем иметь
Фильтр n-го порядка описывается выражением
(1.1.10)
Из (1.1.10) следует зет-преобразование связи выходного сигнала S(k) с входным сигналом U(k)
(1.1.11)
Обратное преобразование позволяет записать формулу для определения сигнала на выходе фильтра
(1.1.12)
Здесь H0 выбрано равным единице.
Фильтры, преобразующие входные сигналы в соответствии с алгоритмом (1.12), называются рекурсивными цифровыми фильтрами.
Если в выражении (1.1.8) h(i)=ai и число суммируемых членов конечно, то связь между входом и выходом запишется в виде
(1.1.13)
Фильтры этого типа называются нерекурсивными.
Формулы (1.1.9), (1.1.11), (1.1.12) и (1.1.13) позволяют решать задачи аналитического исследования процессов преобразования дискретных сигналов рекурсивными и нерекурсивными цифровыми фильтрами.
Двоичные дискретные сигналы могут принимать только два значения 1 и 0, например, 1011011100101001. Такие сигналы называются кодовыми комбинациями. Число символов в сигнале определяет его размер (значность). Кодовая комбинация 1011011 называется семизначной, а символы характеризуются разрядностью справа налево, от младшего разряда к старшему. Запишем зет-преобразование рассмотренной семизначной кодовой комбинации
S(z)=1+z-2+ z-3+ z-4+ z-5+ z-6.
В общем случае зет-преобразование двоичных сигналов ничем не отличается от преобразования обычных дискретных сигналов. Однако при описании процессов фильтрации операция суммирования двоичных сигналов имеет свои особенности. Правило суммирования двоичных сигналов базируется на законе сложения символов 0 и 1 по модулю 2: 00=0; 11=0; 10=1; 01=1. Закон умножения символов 0 и 1 такой же, как и для обычных чисел. Здесь знак означает сложение по модулю 2. Например, сумма символов рассмотренного семизначного двоичного сигнала
а сигнала 1111011 равна
Преобразование двоичных сигналов нерекурсивными и рекурсивными двоичными фильтрами описываются формулами
(1.2.1)
(1.2.2)
где ai и ai двоичные коэффициенты, принимающие только два значения 0 и 1.
Заметим, что операции сложения и вычитания двоичных символов не отличаются между собой, т. е. 11=0; 00=0; 10=1; 01=1.
Рассмотрим последовательные соединения нерекурсивного и рекурсивного фильтров
Преобразуем второе выражение к виду
и сравним с первым. В результате получим
(1.2.3)
Если коэффициенты нерекурсивного и рекурсивного фильтров выбрать равными друг другу (т.е. ai=ai), то из (1.2.3) следует, что S1(k)=U(k): кодовая комбинация на выходе рекурсивного фильтра равна кодовой комбинации на входе нерекурсивного фильтра. Такие фильтры называются взаимными. Их дискретные передаточные функции равны
(1.2.4)
Полином называется формирующим. Из (1.2.4) следует
Таким образом, если дискретный двоичный сигнал U(k) преобразовать нерекурсивным фильтром
(1.2.5)
то его можно восстановить путем преобразования сигнала S(k) рекурсивным фильтром
(1.2.6)
Функции преобразования H(z) соответствует дискретный двоичный сигнал H(k) . Так как S1(z)=H(z)U1(z) и U2(z)=S2(z)/H(z), то нерекурсивный фильтр решает задачу перемножения двоичного сигнала U(k) на двоичный сигнал H(k), а рекурсивный фильтр задачу деления S(k) сигнала на сигнал H(k). Если при этом S2(z)=S1(z)=S(z), то сигнал S(k) будет делиться на H(k) без остатка и U2(z)=U1(z)=U(z). Рекурсивные и нерекурсивные двоичные фильтры используются для формирования кодовых сигналов и схем оценки помех и восстановления кодовых комбинаций.
Двоичные цифровые фильтры можно использовать для формирования кодовых сигналов. Среди них особое место занимают фильтры Хаффмена, которые используются для получения двоичных последовательностей максимальной длины. Формирующие фильтры Хаффмена описываются уравнением
(1.3.1)
где суммирование выполняется по правилу сложения символов 1 и 0 (по модулю 2).
Фильтр (3.1) обладает следующим свойством: через определенное число символов они начинают повторяться. Длина последовательности до 1-го повторения зависит от выбора коэффициентов формирующего фильтра a1, a2, …, am. Значения коэффициентов формирующих приведены в таблице 3.1. При использовании этих фильтров последовательности S(k) имеют максимальную длину (до начала повторения).
Таблица 1.3.1
m |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
a9 |
a10 |
a11 |
a12 |
a13 |
4 |
1 |
1 |
0 |
0 |
1 |
|||||||||
5 |
1 |
0 |
1 |
0 |
0 |
1 |
||||||||
1 |
0 |
1 |
1 |
1 |
1 |
|||||||||
1 |
1 |
1 |
0 |
1 |
1 |
|||||||||
6 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
|||||||
1 |
1 |
1 |
0 |
0 |
1 |
1 |
||||||||
1 |
0 |
1 |
1 |
0 |
1 |
1 |
||||||||
7 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
||||||
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|||||||
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
|||||||
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
|||||||
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
|||||||
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Продолжение таблицы 1.3.1
m |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
a9 |
a10 |
a11 |
a12 |
a13 |
7 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
||||||
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
|||||||
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|||||||
8 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
|||||
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
||||||
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
||||||
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
||||||
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
||||||
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
||||||
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
||||||
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
||||||
9 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
||||
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
|||||
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|||||
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|||||
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
|||||
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|||||
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
|||||
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|||||
10 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|||
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
||||
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
||||
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
||||
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
Окончание таблицы 1.3.1
m |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
a9 |
a10 |
a11 |
a12 |
a13 |
10 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
|||
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
||||
11 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
||
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|||
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|||
12 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
|
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
||
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
||
13 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
|
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
В последовательности Хаффмена символы начинают повторяться через Nm значений, где Nm =2m-1.
Приведем несколько примеров:
S(k)=S(k-1)S(k-4)
1000111101011001001000…
S(k)=S(k-2)S(k-5)
1111100110100100001010111011000111…
Изменяя начальные последовательность и коэффициенты формирующего фильтра, можно формировать различные последовательности Хаффмена.
Последовательности Хаффмена используются для формирования неразделимых блоковых кодовых комбинаций (кодовых слов). Различия между блоками численно характеризуются кодовым расстоянием
(1.3.2)
Отбираются такие кодовые комбинации, у которых d(i, j)>d, где d задано.
Среди различных способов формирования неразделимых блоковых комбинаций наиболее простым является способ циклической перестановки некоторой исходной n-разрядной кодовой комбинации, взятой из последовательностей Хаффмена. Рассмотрим формирование циклических кодовых слов на примере 15-значной последовательности Хаффмена
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
Различение двух кодовых комбинаций зависит от кодового расстояния между ними: чем больше кодовое расстояние, тем выше помехоустойчивость системы связи. При передаче под воздействием помех двоичные сигналы подвергаются искажениям, в результате которых символы инвертируются. Воздействие помех можно описать математически
где S(k) сигнал на входе системы связи,
x(k) искажающий двоичный сигнал помехи,
S(k) сигнал на выходе системы связи (на входе приемника кодовых двоичных последовательностей).
Воздействие помех приводит к уменьшению кодового расстояния между различными сигналами, т. е. ухудшаются возможности их распознавания.
Если сигнал S(k) сформирован таким образом, что он делится на формирующий сигнал H(k) без остатка, то помеховый сигнал x(k) может быть обнаружен и распознан по виду остатка от деления X(k)на H(k). Такие сигналы формируются следующим образом.
Рассмотрим n-значный кодовый сигнал S(k), зет-преобразование которого равно
Значения коэффициентов m младших разрядов сигнала выберем равными нулю. Тогда его преобразование запишется в виде
Символы b0, b1, … bn-m-1 называются информационными.
Выберем формирующий рекурсивный фильтр с коэффициентами из таблицы 1.3.1 и запишем его дискретную формирующую функцию
Разделим сигнал S0(k) на Q(k) и полученный остаток R(k) прибавим к начальному сигналу S0(k). Символы остатка R(k) называются проверочными. Полученная кодовая комбинация S(k) будет делится без остатка на двоичный сигнал Q(k). Действительно,
(1.4.1)
где D(z) результат S0(z) деления на Q(z).
Так как S0(z)R(z)=D(z)Q(z), то S(z) делится без остатка на Q(z). Рассмотрим пример формирования кода (7,4), где 7 значность кода, 4 число информационных символов, с формирующей функцией Q(z)=1+z -2+z -3 (Q(k)=1011). Выберем S0(k)=1010000, S0(z)=1+z-2. Представим частное в виде
(1.4.2)
Разделив z6+z4 на , получим и остаток . Таким образом, . Выражение (1.4.2) запишется в виде
(1.4.3)
Из (1.4.3) следует, что зет-преобразование остатка равно
В результате получим
Для формирования кодового сигнала используем рекурсивный фильтр с переменной структурой: фильтр делит начальный сигнал S0(k) на формирующий сигнал Q(k), вычисляет остаток R(k), который затем суммируется с начальным сигналом S0(k). Схема формирователя семизначного кодового сигнала показана на рис. 1.4.1.
Рисунок 1.4.1 Формирователь 1011 семизначного кода
Запишем разностные уравнения процесса формирования кодового сигнала, полагая S0(k)=1010000. Для первых четырех тактов ключ Кл находится в положении 1, затем в положении 2, если k=5,6,7. Из схемы 4.1 следует система уравнений:
(1.4.4)
Процесс формирования кодовой комбинации представлен как результат вычислений значений всех промежуточных сигналов на каждом шаге.
k |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
… |
Кл |
= |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
1 |
1 |
1 |
|
S0(k) |
= |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
|
U(k) |
= |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
|
S1(k) |
= |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
S2(k) |
= |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
|
U2(k) |
= |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
|
S3(k) |
= |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
|
U1(k) |
= |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
R(k) |
= |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
S (k) |
= |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
После седьмого такта процесс формирования следующей кодовой комбинации повторяется.
Рассмотрим схему формирователя кодовых сигналов на базе формирующей функции (Q(k)=1011, рис. 1.4.2).
Рисунок 1.4.2 Формирователь 1101 семизначного кода
Определим остаток от деления S0(k)=1001000 на Q(k)=1101.
Разделив z6+z3 на , получим остаток . Следовательно, R(z)=z -5+z -6, R(k) = 0000011, S(k)=1001011.
Рассмотрим формирователь семизначного кода, у которого 3 информационных символа и 4 проверочных (код 7,3). Формирующий рекурсивный фильтр описывается функцией Q(z)=1+z-2+z-3+z-4 (Q(k)=10111). Его структурная схема представлена на рис. 1.4.3.
Рисунок 1.4.3 Формирователь кода (7,3)
Ключ должен находится в состоянии 1 при k=1,2,3 и в состоянии 2, если k=4, 5, 6, 7.
Рассмотрим формирователь 15-значного кода, у которого 11 информационных символов и 4 проверочных, если Q(z)=1+z-3+z-4 (Q(k)=10011). Его схема представлена на рис. 1.4.4.
Рисунок 1.4.4 Формирователь кода (15,11)
Помехоустойчивость линий связи можно повысить, если в кодовых сигналах за каждым информационным символом будет следовать проверочный. Для формирования проверочных символов используются рекуррентные алгоритмы. Известны два типа рекуррентных формирователей: 1) формирователи систематических кодов; 2) формирователи несистематических кодов.
На рис. 1.5.1 представлена блок-схема формирователя 1-го типа
ПР/ПС преобразователь параллельных сигналов в последовательные;
ФФ формирующий фильтр.
Рисунок 1.5.1 Формирователь систематических кодов
Начальное двоичное сообщение U(k) преобразуется нерекурсивным фильтром и полученный выходной сигнал S2(k) и сигнал S1(k) = U(k) две параллельные последовательности, преобразуются в одну S(i). Математически этот процесс описывается следующим образом:
(1.5.1)
Так как номер k может быть только целым числом, то последовательность S(i) будет представлять собой ряд
S1(1) S2(2) S1(3) S2(4) S1(5) S2(6) …
Рассмотрим рекуррентный формирователь на основе нерекурсивного фильтра с дискретной передаточной функцией Q(z)=z-2+z-4 (кодер Д. В. Хагельбаргера). Его схема представлена на рис. 1.5.2. Сигнал S2(k) равен U(k-2)S2(k-4).
Рисунок 1.5.2 Кодер Д. В. Хагельбергера
Формирователь несистематических кодовых сигналов содержит два нерекурсивных фильтра (рис. 1.5.3)
(1.5.2)
Рисунок 1.5.3 Формирователь несистематических кодов
Рассмотрим формирователь с двумя нерекурсивными фильтрами
Схема формирователя показана на рис 1.5.4.
Рисунок 1.5.4 Кодер с двумя формирующими фильтрами
Эффективность кодирования характеризуется кодовым расстоянием. Найдены оптимальные рекуррентные кодеры с формирующими фильтрами:
При их использовании минимальное кодовое расстояние будет наибольшим (максимальным)
Повышение помехоустойчивости при рекуррентном формировании кодовых сигналов достигается за счет увеличения длительности сообщения в два раза (или уменьшения в 2 раза скорости передачи информации).
Блоковые кодовые сигналы сформированы таким образом, что при искажении символов принятый сигнал X(k) не будет делится без остатка на формирующий сигнал Q(k). При делении X(k)=S(k)x(k) будет остаток, который можно определить, разделив x(k) на Q(k). Рассмотрим семизначный кодовый сигнал, в котором искажен один из семи символов. Перенумеруем их, начиная со старшего разряда: x1(k)=1000000; x2(k)=0100000; x3(k)=0010000; x4(k)=0001000; x5(k)=0000100; x6(k)=0000010; x7(k)=0000001. Их зет-преобразования равны: x1(z)=1; x2(z)=z-1; x3(z)=z-2; x4(z)=z-3; x5(z)=z-4; x6(z)=z-5; x7(z)=z-6. Если Q(z)=1+z-2+z-3 (Q(k)=1011), то можно определить остаток от деления x1(k) на Q(k):
В результате деления получим: R1(z)=z-4+z-6; R2(z)=z-4+z-5+z-6; R3(z)=z-4+z-5; R4(z)=z-5+z-6; R5(z)=z-4; R6(z)=z-5; R7(z)=z-6. Таким образом, можно записать коды-опознаватели ошибок: 0000101; 0000111; 0000110; 0000011; 0000100; 0000010; 0000001. На рис. 1.6.1 представлена схема алгоритма формирования оценки сигнала помехи: 1) деление сигнала X(k) на формирующую функцию Q(k) и определения остатка R(k); 2) преобразование остатка R(k) в оценку сигнала помехи x*(k).
ДО детектор ошибок
Рис 1.6.1 Схема формирования оценки помехи и исправления ошибок сигнала
Задача определения остатка решается за 7 тактов (k=1,2,3,4,5,6,7). Этот процесс описывается разностными уравнениями
(1.6.1)
На восьмом шаге (k=8) ключ принимает положение 1 и определяются D1(8), D2(8) и D3(8):
D1(8)= S3(7) X(7), D1(8) = S1(7) S3(7), D1(8)= S2(7).
После этого ключ возвращается в положение 2 и S1(8)=0, S2(8)=0 и S3(8)=0.
При k=8,9,10,11,12,13,14 на вход делителя поступает следующая кодовая комбинация, а в схеме преобразования остатка (второй делитель) процесс описывается уравнениями
(1.6.2)
Рассмотрим формирование оценки помехи, полагая X(k)= x(k)=1000000
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
X(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
S3(k) |
= |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
S2(k) |
= |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
S1(k) |
= |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
K |
= |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
D3(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
D2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
D1(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x*(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Предположим теперь, что x(k)=0001000 и исследуем процесс формирования оценки x*(k)
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
X(k) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
S3(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
S2(k) |
= |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
S1(k) |
= |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
K |
= |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
D3(k) |
= |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
D2(k) |
= |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
D1(k) |
= |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
x*(k) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Как в первом (x(k)=1000000), так и во втором случае (x(k)=0001000) ошибка описывается одним и тем же остатком второго делителя: D3(k)=1; D2(k)=0; D1(k)=1. Путем непосредственной проверки легко убедится, что сочетание 101 не зависит от номера разряда искаженного символа. Поэтому детектор ошибки для рассмотренного случая можно описать уравнением
(1.6.3)
Функция это функция, противоположная функции D2(k). Например, если D2(k)=101, то . Операция инвертирования описывается выражением
(1.6.4)
где sgn(x) функция единичного скачка: sgn(x)=1, если x0, sgn(x)=0, если x<0.
Таким образом, уравнения (1.6.1) и (1.6.2), описывающие процесс определения и исправления ошибки, должны быть дополнены формулами (1.6.3) и (1.6.4). Оценку сигнала получим по формуле
(1.6.5)
Уравнение детектора ошибки зависит от вида формирующей функции Q(k). Например, если Q(k)=1101, то
(1.6.6)
Процесс исправления ошибки в четвертом разряде кодовой комбинации S(k)=10100011 представлен ниже.
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
114 |
X(k) |
= |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
S3(k) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
S2(k) |
= |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
S1(k) |
= |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
D3(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
D2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
D1(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
x*(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
X(k-7) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
S*(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
Принимаемый сигнал X(i), представляющий собой сумму двух сигналов S(i) и x(i), устройством преобразования ПС/ПР разделяется на два параллельных сигнала
(1.7.1)
В соответствии с правилом кодирования можно записать
причем в рассматриваемом случае S1(k)=U(k). Преобразуем сигнал Y1(k) нерекурсивным фильтром H(k)=Q(k):
(1.7.2)
Их зет-преобразования равны
(1.7.3)
В свою очередь
Сумма содержит информацию о сигналах x1(k) и x2(k). Действительно,
Сумма называется синдромом
(1.7.4)
Оценку можно получить, обработав определенным образом синдром C(k). Структурная схема алгоритма определения синдрома для формирующего фильтра Q(z)=z-2+z-4 (Q(k)=00101 кодер Хагельбаргера) показана на рис. 1.7.1.
Рисунок 1.7.1 Определитель синдрома Хагельбаргера
Запишем разностные уравнения, описывающие процесс определения синдрома
(1.7.5)
Исследуем процесс формирования синдромов. Рассмотрим одиночные ошибки, разделенные промежутком в 4 символа x(k)=100001000. Получим
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Y1(k) |
= |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
= |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
|
C(k) |
= |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
Следовательно, код одиночной ошибки равен 101. Для формирования оценки помехового сигнала используем соотношение
(1.7.6)
где .
Рассмотрим помеху вида
x(k)=1100000001100000
В этом случае
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Y1(k) |
= |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
C(k) |
= |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
Процесс формирования оценки сигнала помехи имеет вид:
k |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
C(k) |
= |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
= |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
|
C(k-2) |
= |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
C(k-4) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
x*(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
В общем случае можно показать, что алгоритм Д. В. Хагельбаргера способен оценивать пачки мешающих символов, если их длина меньше или равна l при условии, что две соседние пачки разделены промежутком из 3l+1 символов.
Принимаемый сигнал X(i) представляет собой сумму S(i)x(i) и после преобразования разделяется на два параллельных сигнала
В соответствии с правилом кодирования
Преобразуем принятые сигналы Y1(k) и Y2(k) нерекурсивными фильтрами с передаточными функциями H1(z) и H2(z). Получим
(1.8.1)
Сумма L1(z)L2(z) равна синдрому C(z)
(1.8.2)
Сумма сигналов Y1(z)Y2(z) равна
(1.8.3)
Запишем разностные уравнения
(1.8.4)
(1.8.5)
Исследуем схему (рис. 1.8.1) алгоритма исправления сигнала при использовании фильтров
H1(z)=1+z-1+z-2, H2(z)=1+z-2.
Рисунок 1.8.1 Схема исправления ошибок
Рассмотрим сигналы Y1(k) и Y2(k) с ошибками, если Y1(k)=x1(k), а второй сигнал Y2(k)=x2(k), где x1(k)=0100… , x2(k)=000000100… . Процесс выделения оценки и исправления ошибок для этого случая показан ниже (U(k)=0, k=1,2,…).
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Y1(k) |
= |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
L1(k) |
= |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
L2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
C(k) |
= |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
C(k-2) |
= |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
x*(k) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Q(k) |
= |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
Q(k-2) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
U*(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Для рассмотренной схемы кодами единичных ошибок являются 101 и 111. Поэтому детектор ошибок описывается выражением
(1.8.6)
Таким образом, процесс исправления ошибок рассмотренного несистематического кодового сигнала описывается выражениями (1.8.4), (1.8.5) и (1.8.6).
Рассмотрим еще один пример формирования несистематической кодовой последовательности и исправления ошибок для формирующих фильтров 7-го порядка H1(k)=1111001 и H2(k)=1011011 с дискретными передаточными функциями фильтров
(1.8.7)
Структурная схема формирования показана на рис. 1.8.2.
Рисунок 1.8.2 Структурная схема формирователя
Разностные уравнения, описывающие процесс формирования сигналов S1(k) и S2(k), запишутся в виде
(1.8.8)
Сигналы на входе определителя синдрома равны
Синдром C(k) содержит информацию о сигналах помехи x1(k) и x2(k). Схема формирования синдрома представлена на рис. 1.8.3.
Рисунок 1.8.3 Схема формирования синдрома
Запишем уравнения, описывающие процесс формирования синдрома
(1.8.9)
Их зет-преобразования равны
(1.8.10)
(1.8.11)
(1.8.12)
(1.8.13)
Если теперь оценить сумму ошибок x1(z)+x2(z) и вычесть ее из Q(z), то получим уравнение
(1.8.14)
Из (1.8.14) следует
(1.8.15)
Оценки ошибок x*1(z) и x*2(z) вычислим путем деления синдрома C(z) на формирующие полиномы H1(z) и H2(z)
(1.8.16)
Для рассматриваемых формирующих фильтров (H1(k)=1111001, H2(k)= =1011011) процесс деления описывается разностными уравнениями
(1.8.17)
Рассмотрим процесс деления, если x*1(z)=1.
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
x1(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y1(k) |
= |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
C(k) |
= |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x*1(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x*2(k) |
= |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
Сумму ошибок x1(z)+x2(z) можно получить по формуле
(1.8.18)
Если рассмотреть ошибку x2(z)=z-8, то процесс деления имеет вид:
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
x1(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y1(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
C(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
x*1(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
x*2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Сумму ошибок снова можно получить по формуле
Структурную схему детектора ошибки представим в виде (рис. 1.8.4)
Рисунок 1.8.4 Структурная схема детектора ошибок
Процесс оценки ошибки описывается разностными уравнениями
(1.8.18)
где
Процесс формирования сигнала ошибки x*(k) имеет вид:
K |
= |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
x1(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
Y1(k) |
= |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Y2(k) |
= |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
C(k) |
= |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
x*1(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
x*2(k) |
= |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
x*(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
Из (1.8.14) и (1.8.15) следует: H1(z)+H2(z)=H0(z)=z-1+z-5, Q*(k)=Q(k)+x*(z) и
U*(k-1)=U*(k-5)Q*(k).
Любое начальное сообщение представляет собой последовательность знаков (букв, цифр и т. д.) Zi(j), где i номер знака в алфавите (i=1,2, …, M), j номер этого знака в сообщении. Каждому знаку Zi(j) ставится в соответствие двоичная кодовая комбинация Si(r), где r номер символа в кодовом сигнале, r=1,2, …, n, n значность кода. Обработка кодовых комбинаций в канале связи может быть выполнена следующими способами:
(1.9.1)
(1.9.2)
(1.9.3)
где m - число проверочных символов в разделимых блоковых кодах.
При принятии решений по минимуму кодового расстояния возможны следующие случаи:
В последнем случае в сообщении в последовательности знаков Z1, Z2, …, Zi , … может присутствовать знак "О" как признак искажения переданного знака.
Результаты декодирования сообщений характеризуют эффективность канала связи. При этом возможны: 1) правильные решения; 2) ошибочные решения; 3) отказы от принятия решений. Эти события являются случайными и их вероятности используются для количественной оценки и сравнения различных способов кодирования сообщений.
Кроме этих показателей для оценки каналов связи используются:
Задание 1. Доказать, что z-преобразование линейно-наростающего сигнала l(k)=aDtk, k0 равно
Задание 2. Доказать, что экспоненциальный сигнал э(k)=exp(-aDtk) имеет z-преобразование вида
Задание 3. Доказать, что z-преобразование гармонических сигналов s(k)=sin(0Dtk) и с(k)=cos(0Dtk) равны
Задание 4. Доказать, что затухающие гармонические сигналы s1(k)=exp(-aDtk) sin(0Dtk) и с1(k)=exp(-aDtk)cos(0Dtk) имеют следующие z-преобразования
Задание 5. Доказать, что импульсные дискретные сигналы
s2(k)=Dtkexp(-aDtk)sin(0Dtk), с2(k)=Dtkexp(-aDtk)cos(0Dtk)
описываются следующими z-преобразованиями
где A=exp(-aDt), B=0Dt.
Задание 6. Записать разностные уравнения для цифровых фильтров, дискретные передаточные функции и параметры которых равны: 1) H1(z)=C1(z); 2) H2(z)=S2(z); 3) aDt=0,1; 4) 0Dt=3 (по заданию преподавателя). Определить импульсные характеристики цифровых фильтров h1(k) и h2(k) построить их графики.
Задание 7. Определить частотные характеристики фильтров с дискретными передаточными функциями H1(z) и H2(z) (задание 6) и построить графики квадратов их модулей.
Задание 8. Нерекурсивный цифровой фильтр описывается разностным уравнением
Определить его дискретную передаточную функцию и частотную характеристику, построить график модуля частотной характеристики (nDt выбрать самостоятельно, m задается преподавателем).
Задание 9. Нерекурсивный цифровой фильтр описывается разностным уравнением
Определить его дискретную передаточную функцию, модуль частотной характеристики и график. Сравнить частотную характеристику с характеристикой задания 8.
Задание 10. Для формирующего кода Q(k)=101101 записать разностные уравнения нерекурсивного и рекурсивного цифровых фильтров. Определить сигналы на выходе фильтров, если на их входы подается сигнал, например, U(k)=1011011011101. (Входной сигнал задается преподавателем).
Задание 11. На вход нерекурсивного фильтра с импульсной характеристикой h1(i)=101101 подается сигнал, например, U(k)=110011101101. Определить сигнал на выходе S1(k) нерекурсивного фильтра и подать его на вход рекурсивного фильтра с передаточной функцией H2(z). Определить сигнал на выходе рекурсивного фильтра. Сигнал задается преподавателем.
Задание 12. Сформировать шесть 20-разрядных последовательностей Хаффмена, используя следующие формирующие функции H1(i)=01001; H2(i)=01111; H3(i)=11011; H4(i)=100001; H5(i)=110011; H6(i)=011011. Определить матрицу кодовых расстояний dij для полученных последовательностей.
Задание 13. Для формирующей функции Q(z)=1+z-2+z-3+z-4 кода (7.3) определить коды опознания одиночных и двойных смежных ошибок.
Задание 14. Для формирующей функции Q(z)=1+z-1+z-2+z-4 кода (7.3) определить коды опознания одиночных и двойных смежных ошибок.
Задание 15. Для формирующей функции Q(k)=10011 кода (15.11) определить коды опознания одиночных ошибок.
Задание 16. Для формирующей функции Q(k)=11001 кода (15.11) определить коды опознания одиночных ошибок.
Задание 17. Сформировать 6 комбинаций кода (15.11) с формирующей функцией Q(k)=10011. Показать процесс деления одной из кодовых комбинаций, искаженных одиночной и двойной помехами, на код формирующей функции. Коды ошибок задаются преподавателем.
Задание 18. Сформировать 6 комбинаций кода (15.11) с формирующей функцией Q(z)=1+z-1+z-4. Показать процесс деления одной из кодовых комбинаций, искаженной одиночной и двойной помехами, на код формирующей функции. Коды ошибок задаются преподавателем.
Задание 19. Сформировать систематический код Хагельбаргера для 10-значной кодовой комбинации, задаваемой преподавателем.
Задание 20. Сформировать систематический код с формирующей функцией Q(z)=1+z-2+z-4 для 16-значной кодовой комбинации, задаваемой преподавателем.
Задание 21. Сформировать несистематический код с формирующими функциями Q1(z)=1+z-1+z-2+z-3 и Q2(z)=1+z-1+z-3 для десятизначной кодовой комбинации задания 19.
Задание 22. Сформировать несистематический код с формирующими функциями Q1(k)=111011 и Q2(k)=110001 для 16-значной кодовой комбинации задания 20.
Задание 23. Показать процесс исправления искаженной единичной помехой кодовой комбинации задания 19. Код ошибки задается преподавателем.
Задание 24. Показать процесс исправления искаженной одиночной помехой кодовой комбинации задания 20. Код ошибки задается преподавателем.
Задание 25. Показать процесс исправления искаженной одиночной помехой кодовой комбинации задания 21. Код ошибки задается преподавателем.
Задание 26. Показать процесс исправления искаженной одиночной помехой кодовой комбинации задания 22. Код ошибки задается преподавателем.
3 Задания на проведение лабораторных работ
Сформировать M-последовательность Хаффмена, если задана формирующая функция Q(z) и начальные значения S(k). Используя M-последовательность, образовать 15 n-значных кодовых комбинаций (кодовых сигналов) циклического кода. Вычислить их кодовые расстояния и проанализировать матрицу расстояний. Определить кодовые комбинации с максимальным кодовым расстоянием. Определить число ошибок, при которых будет иметь место правильное распознавание кодовых комбинаций. Записать разностные уравнения формирующего фильтра.
Сформировать 15 разделимых кодовых комбинаций, если заданы формирующая функция Q(z), значность кода n и подготовлены коды информационных символов. Разработать схему формирования кодовых комбинаций и разностные уравнения, описывающие процесс формирования кодовых сигналов. Определить матрицу кодовых расстояний и провести ее анализ. Рассмотреть процесс формирования на одном из символов.
Разработать схему восстановления кодовых комбинаций, если заданы формирующая функция Q(z) и значность кода n. Описать процесс восстановления разностными уравнениями. Исследовать процесс преобразования одиночных и двойных смежных ошибок схемой их оценки. Рассмотреть процесс восстановления искаженных кодовых комбинаций при наличии одиночной и двойных смежной и несмежной ошибок.
Сформировать 15 систематических кодовых комбинаций, если заданы формирующая функция Q(z), и 15 семиразрядных безызбыточных кодовых сигналов. Разработать схему формирования кодовых комбинаций и разностные уравнения, описывающие процесс их формирования. Определить матрицу кодовых расстояний и провести ее анализ. Рассмотреть процесс формирования на одном из сигналов.
Разработать схему восстановления кодовых комбинаций систематического кода, если задана формирующая функция Q(z). Описать процесс восстановления разностными уравнениями. Исследовать процесс преобразования одиночных и двойных смежных ошибок. Определить длину защитного интервала. Определить коды ошибок. Рассмотреть процесс восстановления искаженных кодовых комбинаций при наличии одиночной и двойных смежных ошибок.
Сформировать 15 несистематических кодовых последовательностей, если заданы формирующие функции Q1(z) и Q2(z) и 15 семиразрядных безызбыточных кодовых сигналов. Разработать схему формирования кодовых комбинаций и разностные уравнения, описывающие процесс их формирования. Определить матрицу кодовых расстояний и провести ее анализ. Рассмотреть процесс формирования на одном из сигналов.
Разработать схему восстановления кодовых комбинаций несистематического кода, если задана формирующие функции Q1(z) и Q2(z) .Описать процесс восстановления разностными уравнениями. Исследовать процесс преобразования одиночных и двойных смежных ошибок. Определить длину защитного интервала. Определить коды ошибок. Рассмотреть процесс восстановления искаженных кодовых комбинаций при наличии одиночной и двойных смежных ошибок.
Исследовать на компьютерной модели эффективность работы канала связи при наличии помех, если используется семизначный код (7.4), способный исправлять одиночные ошибки, и семизначный код (7.3), способный исправлять одиночные и двойные ошибки. Сформировать сообщение из N символов (N=7L, где L число кодовых комбинаций) при различных значениях вероятности ошибки p. Определить числа искаженных символов на входе схемы их обнаружений и исправления и на ее выходе. Сравнить эти результаты для двух рассматриваемых кодов (7.4) и (7.3).
Исследовать на компьютерной модели эффективность работы двух каналов связи при наличии помех. Заданы их формирующие фильтры. В качестве закодированного сообщения используется M-последовательность максимальной длины, содержащая N символов, которая искажается помехами с различными вероятностями ошибок p. Определить число искаженных символов на входе и выходе схемы их обнаружения и исправления ошибок. Сравнить эти результаты для двух каналов связи.
Исследовать на компьютерной модели эффективность работы двух каналов связи при наличии помех. Заданы их формирующие функции. В качестве закодированного сообщения используется M-последовательность максимальной длины, содержащая N символов, которая искажается помехами с различными вероятностями ошибок p. Определить число искаженных символов на входе и выходе схемы обнаружения и исправления ошибок. Сравнить эти результаты для двух каналов связи.
Исследовать эффективность декодирования сообщений при передаче их по четырем различным каналам связи с помехами, в которых используются: 1)неразделимые блоковые коды; 2)разделимые блоковые коды; 3)рекуррентные систематические коды; 4)рекуррентные несистематические коды. Закодированное сообщение, сформированное из 15 знакового алфавита, декодируется по методу максимума правдоподобия (минимуму кодового расстояния). Закодировать 15 знаков:
Определить зависимость правильно декодированных знаков, числа отказов от декодирования и числа неправильно декодированных знаков от интенсивности помех (вероятности ошибки p).
Для формирования последовательностей максимальной длины используется формирующий фильтр
с начальными условиями S(k)=h(k), k=1,2,…,m и импульсными характеристиками: h1(i)=00101; h2(i)=01001; h3(i)=01111; h4(i)=11101; h5(i)=10111; h6(i)=11011; h7(i)=000011; h8(i)=100001; h9(i)=100111; h10(i)=110011; h11(i)=101101; h12(i)=0011011.
По этим данным можно сформировать 12 начальных комбинаций для 15-значного циклического кода при m=5 и 24 комбинации при m=6. Для формирования начальной кодовой комбинации циклического кода необходимо: а) сформировать M-последовательность; б) из 15 значений этой последовательности образовать начальную кодовую комбинацию (при m=5 таких последовательностей две: с 1 по 15 вариант "а" и с 16 по 30 вариант "б"; при m=6 таких последовательностей четыре: с 1 по 15 вариант "а", с 16 по 30 вариант "б"; с 31 по 45 вариант "в"; с 46 по 60 вариант "г").
Для формирования блоковых разделимых кодовых комбинаций выбраны 4 вида формирующих фильтров:
Для формирования 15 кодовых комбинаций должны использоваться следующие последовательности информационных символов:
При k=5,6,7,8,9,10 информационные последовательности формируются из начальных путем добавления единиц со стороны младших разрядов. Например, 10001; 01001; 00101; 00011; 11001; 10101; 10011; 00111; 01011; 01101; 01111; 10111; 11011; 11101; 11111.
Для заданной импульсной характеристики формирующего фильтра Hj(i), j=1,2,3,4 определить таблицу кодов одиночных и двойных смежных ошибок для 15-значных кодовых комбинаций, если H1(i)=10011; H2(i)=11001; H3(i)=100101; H4(i)=101001;
Для формирования рекуррентных кодовых последовательностей систематического кода используются 3 варианта семиразрядных безызбыточных кодовых последовательностей:
Импульсные характеристики формирующих фильтров равны: H1(i)=0111; H2(i)=11001; H3(i)=1011; H4(i)=10011; H5(i)=10101; H6(i)=01101; H7(i)=01011; H8(i)=11011; H9(i)=01111.
Для схем оценки и восстановления сигналов с формирующими фильтрами лабораторной работы 4 исследовать синдромы для помех, z-преобразования которых имеют вид:
Для формирования рекуррентных кодовых последовательностей несистематического кода используются семиразрядные безызбыточные кодовые последовательности лабораторной работы №4. Импульсные характеристики формирующих фильтров равны:
Для схем оценки и восстановления сигналов с формирующими фильтрами лабораторной работы №6 исследовать синдромы для помех, z-преобразования которых приведены в лабораторной работе №5.
Импульсные характеристики формирующих фильтров семизначного кода (7.4) H1(i)=1011 и кода (7.3) H2(i)=10111. Для формирования кодовых сигналов используются следующие семь безызбыточных кодовых комбинаций: 1) код (7.4): U1(k)=1000; U2(k)=0100; U3(k)=0010; U4(k)=0001; U5(k)=1100; U6(k)=1010; U7(k)=1001; 2) код (7.3): U1(k)=111; U2(k)=110; U3(k)=101; U4(k)=011; U5(k)=001; U6(k)=010; U7(k)=100. Кодовые комбинации предназначены для передачи 7 знаков цифр: "1", "2", "3", "4", "5", "6", "7", из которых формируется сообщение. Интенсивность помех характеризуется вероятностью ошибки p=0,05; 0,1; 0,15; 0,2.
Для формирования начальных закодированных сообщений используются фильтры с импульсными функциями: h1(i)=00011011; h2(i)=00011101; h3(i)=00101011; h4(i)=00101101; h5(i)=00111001; h6(i)=00111111; h7(i)=01001101; h8(i)=01011111; h9(i)=01100011; h10(i)=01100101; h11(i)=01101001; h12(i)=01110001; h13(i)=01110111; h14(i)=01111011; h15(i)=10000111; h16(i)=10001011; h17(i)=10001101; h18(i)=10011111; h19(i)=10100011; h20(i)=10101001; h21(i)=10110001; h22(i)=10111101; h23(i)=11000011; h24(i)=11001111; h25(i)=11010111. Формирующие фильтры систематических кодов двух каналов связи равны: H1(i)=01011; H2(i)=00101. Помехи характеризуются вероятностями ошибок p=0,05; 0,1; 0,15; 0,2. Начальные сигналы U(k)=h(k).
Для формирования начальных закодированных сообщений используются фильтры, описанные в лабораторной работе №9. Формирующие фильтры каналов связи равны: а) первого канала H1(i)=111; H2(i)=101; б) второго канала H1(i)=1111; H2(i)=1101. Помехи характеризуются вероятностями ошибок p=0,05; 0,1; 0,15; 0,2.
Для формирования сообщений используются следующие виды кодовых комбинаций:
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1000101, |
0100111, |
0010110, |
0001011, |
1100010, |
1010011, |
1001110, |
0011101, |
0101100, |
0110001, |
0111010, |
1011000, |
1101001, |
1110100, |
1111111 |
Вероятности ошибок p=0,05; 0,1; 0,15; 0,2.
Программное обеспечение предназначено для проведения вычислительных экспериментов в задачах исследования процессов формирования кодовых комбинаций, искажения сообщений помехами, процессов обнаружения искаженных символов и исправления ошибок, эффективности кодирования и декодирования сообщений в условиях воздействия помех различной интенсивности. Программное обеспечение представляет собой пакет программ; каждая программа из пакета предназначена для выполнения определенных действий над кодовыми комбинациями. Пакет программ имеет название Kodlab и выполняется в операционной среде Windows. После запуска на выполнение файла Kodlab.exe на экране появляется окно пакета с главным меню, состоящим из пунктов "Операции", "Исходные данные", "Помощь". В пункте меню "Операции" перечислены все программы, входящие в состав данного пакета. Окна для этих программ можно вызвать на экран монитора для выполнения необходимых действий. С помощью пункта меню "Исходные данные" вызываются окна с исходными данными для проведения лабораторных работ. Пункт меню "Помощь" предназначен для вызова на экран описаний программ пакета, требований и указаний к лабораторным работам.
Для тех, кто не знаком с операционной системой Windows, ниже приведен небольшой словарик терминов этой операционной системы.
Окно, окно программы, окно операции прямоугольная область экрана монитора, которая организована по правилам операционной системы Windows и служит для ведения диалога между пользователем и компьютером при выполнении конкретной программы. Windows многозадачная среда, то есть операционная система, в которой могут одновременно выполняться несколько программ одновременно, поэтому и окон на экране в любой момент может быть несколько. Пример окна приведен на рис. 5.1. Положение и размеры каждого окна, как правило, могут быть изменены. Применяя метод "drag and drop" к области заголовка окна, можно перенести окно в любое место экрана. При подведении курсора мыши к границе окна он превращается в стрелку. Если в этот момент нажать на левую кнопку мыши, выделятся границы окна. Перемещая мышь с нажатой кнопкой, можно изменить границу окна.
Рис 5.1 Пример окна программы
Окошко, информационное окошко часть окна программы, служащая для ввода или вывода одного определенного данного (см. рис. 5.1).
Метод "drag and drop" широко применяемый в Windows способ перемещения или копирования объектов. Переводится как "ухватил и тащи". Для его осуществления необходимо навести курсор мыши на копируемый или перемещаемый объект и нажать на левую клавишу мыши. Затем, не отпуская клавиши, следует перевести курсор на то место, куда необходимо переместить или скопировать объект. При этом вид курсора может измениться, указывая, возможна ли данная операция и к чему она приведет. Отпуск в этот момент клавиши означает согласие пользователя на данную операцию.
Кнопка область в окне программы, содержащая значок или надпись, окаймленная постоянно или при наведении на нее курсора особой границей, создающей иллюзию приподнятости при отпущенной левой кнопке мыши и иллюзию углубленности при нажатии на эту кнопку мыши. "Нажатие на кнопку" означает подвод на соответствующую область курсора и нажатие на левую кнопку мыши.
Для выполнения лабораторной работы прежде всего необходимо уяснить ее смысл и содержание. Цели и задачи данной лабораторной работы приведены в пункте 3.1, а исходные данные в пункте 4.1 данного пособия. Теоретические основы содержатся в пункте 1.3.
Начальные данные, соответствующие заданному преподавателем варианту, можно получить, нажав на кнопку главного меню "Исходные данные". После нажатия на экране возникнет список всех лабораторных работ. Из этого списка необходимо выбрать пункт "Лабораторная работа № 1". Для этого на соответствующую надпись наводится курсор мыши и нажимается ее левая кнопка. При этом на экране возникнет окно, в котором необходимо задать номер варианта. Задание номера варианта осуществляется путем набора с клавиатуры в соответствующее окошко или изменением с помощью кнопки "вверх-вниз" значения номера варианта, заданного по умолчанию. После задания номера варианта необходимо нажать на кнопку "Ok". Появившееся после этого окно (рис. 5.2) будет содержать окошки с двоичным и шестнадцатеричным представлением кодов с именем Q для формирующего фильтра и с именем S для начальных членов последовательности Хаффмена.
Идентификатор кода, его двоичное и шестнадцатеричное представления образуют кодовое информационное поле. Шестнадцатеричное представление удобно при сравнении двух кодов.
Рис 5.2 Окно для исходных данных лабораторной работы № 1
Данная лабораторная работа выполняется с помощью операций "Построение последовательности Хаффмена", "Получение множества кодов путем циклического сдвига", "Вычисление кодовых расстояний". Окна для этих операций необходимо вызвать на экран. Список всех операций появляется на экране при нажатии на кнопку "Операции" главного меню. При нажатии на левую кнопку мыши, когда ее курсор находится на поле с названием любой операции, окно этой операции появляется на экране.
Окно для операции "Построение последовательности Хаффмена" (рис. 5.3) содержит два кодовых информационных поля с именами Q и S. Поле Q содержит образующий код, а поле S результат операции. Значение кода в поле Q может быть задано путем прямого набора с клавиатуры в окошки для двоичного или шестнадцатеричного представления. Кроме того, оно может быть скопировано по частям из другого кодового информационного окошка подходящего формата методом "drag and drop" или целиком путем применения метода "drag and drop" к окошку с идентификатором кода. Любое изменение содержимого окна Q приводит к немедленному соответствующему изменению окна S. Первые m значений кодового окна S, где m длина кода Q, могут быть также изменены описанными способами.
Кодовое информационное поле S, вообще говоря, должно содержать n=2m-1 двоичных символов. Однако, существует ограничение на длину кода в двоичном представлении, которая не должна превышать 219500 000 знаков. Кроме того, уже при m>12 время работы программы становится ощутимым. Поэтому, больших значений m следует избегать.
Вычисления осуществляются по формуле
где - сложение по модулю 2.
Окно для операции "Получение множества кодов путем циклического сдвига" (рис. 5.4) содержит входное кодовое информационное поле A для задания исходного кода и входное числовое информационное поле n для задания числа максимального сдвига. В результате работы программы образуется множество из n кодовых информационных полей, объединенное общим заголовком B и располагающееся в поле с бегунками прокрутки, позволяющими при необходимости увидеть любое из полей данного множества B. Первое кодовое информационное поле B(1) из множества B содержит код, сдвинутый на единицу по сравнению с кодом в окошке A, поле B(2) код окошка A, сдвинутый на 2 и т.д. В общем случае код в кодовом информационном окне B(i)
вычисляется по формулам
B(i)(k)=A(i+k), k=1,2,...,m-i;
B(i)(k)=A(i+k-m), i=m-i+1,...,m;
где m длина кода A.
Задание кода в информационном поле A осуществляется методом прямого набора с клавиатуры или методом " drag and drop" через окошки с аналогичным форматом представления данных. Таким же образом может быть задано число n.
Окно для операции "Вычисление кодовых расстояний" (рис. 5.5) содержит входное множество кодовых информационных полей B, аналогичное описанному для предыдущей операции. Операция производится по формуле
где dij кодовое расстояние между кодами с номерами i и j;
n максимум из длин кодов i и j;
обычное суммирование;
m количество элементов-кодов во множестве B.
Результирующая матрица с элементами dij помещается на поле с горизонтальным и вертикальным бегунками прокрутки.
Начальные данные для программы можно задавать путем набора с клавиатуры, при этом клавиши "new" и "delete" служат для создания новых кодовых информационных полей и удаления существующих. Кроме того, любая часть кода может быть методом " drag and drop" скопирована из другого аналогичного кодового информационного поля. Кодовое информационное поле может быть скопировано целиком через его заголовок, а все множество кодов может быть скопировано как целое из другой программы, имеющей аналогичное множество
Для выполнения лабораторной работы необходимо вызвать на экран монитора окно с исходными данными и три окна с необходимыми программами. Размеры вызванных окон, их положение на экране можно изменять по правилам работы с окнами операционной системы Windows. Начальные данные необходимо, используя метод "drag and drop" и набор с клавиатуры, пропустить через все вызванные программы. Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) исходные коды;
3) формулы для вычислений;
4) последовательность Хаффмена;
5) матрицу кодовых расстояний между полученными кодами;
6) коды с минимальным кодовым расстоянием между ними;
7) число ошибок, при которых будет иметь место правильное распознавание кодовых комбинаций;
8) разностные уравнения формирующего фильтра.
Задача данной лабораторной работы описана в пункте 3.2, исходные данные приведены в пункте 4.2, теоретические основы в пункте 1.4 данного пособия.
Окно с начальными данными, а именно с множеством из 15 элементов информационных кодов и с кодом формирующего фильтра Q, можно вызвать на экран через главное меню, последовательно нажимая на кнопки "Исходные данные", "Лабораторная работа №2". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Кроме того, для выполнения лабораторной работы требуются операции "Деление", "Сложение по модулю 2", "Вычисление кодовых расстояний".
Окно для операции "Деление" содержит четыре кодовых информационных поля с именами U, Q, S и r. Входные кодовые информационные поля U и Q содержат делимое и делитель, а выходные кодовые информационные поля S и r частное и остаток от деления. Вычисления осуществляются по формулам
где m длина кода U;
n длина кода Q;
- суммирование по модулю 2;
S(j)=0 при j<0 или j>m.
Окно операции "Сложение по модулю 2" содержит два входных кодовых информационное поля с именами A и B с кодами-слагаемыми и выходное кодовое информационное поле C для кода-результата. Результат вычисляется по формуле
C(i)=A(i)B(i), i=1,2,...,max(n,m),
где n длина кода A,
m длина кода B.
Окно для операции "Вычисление кодовых расстояний" описано в п. 5.1 настоящего пособия.
Выполнение лабораторной работы заключается в том, что для каждого из 15 начальных элементов множества информационных кодов необходимо произвести следующие операции:
После завершения указанных операций над всеми начальными информационными кодами матрица d в окне операции "Вычисление кодовых расстояний" будет являться матрицей кодовых расстояний между разделимыми кодовыми комбинациями.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные информационные коды и код формирующего фильтра;
3) формулы для вычислений;
4) полученные разделимые кодовые комбинации;
5) схему формирования кодовых комбинаций и соответствующие разностные уравнения;
6) матрицу кодовых расстояний между полученными кодами;
7) выводы из анализа матрицы кодовых расстояний;
8) процесс формирования одного из элементов.
Задача данной лабораторной работы описана в пункте 3.3, исходные данные приведены в пункте 4.3, теоретические основы в пункте 1.6 данного пособия.
Импульсная характеристика формирующего фильтра задана в окне с начальными данными, которое вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа №3". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Для выполнения лабораторной работы требуется операция "Деление", которая описана в п. 5.2. В поле Q окна этой операции следует поместить заданную импульсную характеристику формирующего фильтра, а в поле U окна последовательно коды, соответствующие одиночным и двойным ошибкам, стоящим на разных местах 15-значного кода. Остаток от деления кода U на код Q, находящийся в поле r, будет искомым кодом ошибки.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальную импульсную характеристику;
3) формулы для вычислений;
4) таблицы для преобразований одиночных и двойных смежных и несмежных ошибок;
5) схему восстановления;
6) разностные уравнения для восстановления.
Задача данной лабораторной работы описана в пункте 3.4, исходные данные приведены в пункте 4.4, теоретические основы в пункте 1.5 данного пособия.
Окно с начальными данными, а именно с множеством из 15 элементов информационных кодов и с кодом формирующего фильтра Q, можно вызвать на экран через главное меню программы, последовательно нажимая на кнопки "Исходные данные", "Лабораторная работа №4". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Кроме начальных данных, для выполнения лабораторной работы требуются операции "Умножение", "ПР/ПС преобразователь", "Вычисление кодовых расстояний".
Окно для операции "Умножение" содержит три кодовых информационных поля с именами U, Q, S. Входные кодовые информационные поля U и Q содержат коды-сомножители, а выходное кодовое информационное поле S произведение. Вычисления осуществляются по формуле
где m длина кода U;
n длина кода Q;
- суммирование по модулю 2;
U(i)=0 при i<0 или i>m.
Окно операции "ПР/ПС преобразователь" содержит два входных кодовых информационное поля с именами A и B и выходное кодовое информационное поле C для кода-результата. Результат вычисляется по формуле
Окно для операции "Вычисление кодовых расстояний" описано в п. 5.1 настоящего пособия.
Выполнение лабораторной работы заключается в том, что для каждого из 15 начальных элементов множества информационных кодов необходимо произвести следующие операции:
После завершения указанных операций над всеми начальными информационными кодами матрица d в окне операции "Вычисление кодовых расстояний" будет являться матрицей кодовых расстояний между рекуррентными кодовыми комбинациями систематического кода.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные информационные коды и код формирующего фильтра;
3) формулы для вычислений;
4) полученные рекуррентные кодовые комбинации систематического кода;
5) схему формирования кодовых комбинаций и соответствующие разностные уравнения;
6) матрицу кодовых расстояний между полученными кодами;
7) выводы из анализа матрицы кодовых расстояний;
8) процесс формирования одного из элементов.
Задача данной лабораторной работы описана в пункте 3.5, исходные данные приведены в пункте 4.5, теоретические основы в пункте 1.7 данного пособия.
Импульсная характеристика формирующего фильтра и коды помех заданы в окне с начальными данными, которое вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 5". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Для выполнения лабораторной работы требуются операции "ПС/ПР преобразователь", "Умножение", "Сложение по модулю 2".
Окно операции "ПС/ПР преобразователь" содержит одно входное кодовое информационное поле с именем C и выходные кодовые информационные поля A и B для кодов-результатов. Результат вычисляется по формуле
где n длина кода C;
[ ] целая часть числа.
Операции "Умножение", "Сложение по модулю 2" описаны ранее.
Выполняемая на ЭВМ часть лабораторной работы заключается в том, что для каждого из 15 начальных элементов множества помеховых кодов необходимо вычислить синдром. Для этого необходимо произвести следующие операции:
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальную импульсную характеристику;
3) формулы для вычислений;
4) таблицы для синдромов ошибок;
5) схему восстановления;
6) разностные уравнения для восстановления;
7) длину защитного интервала.
Задача данной лабораторной работы описана в пункте 3.6, исходные данные приведены в пункте 4.6, теоретические основы в пункте 1.5 данного пособия.
Окно с начальными данными, а именно с множеством из 15 элементов информационных кодов и с кодами формирующих фильтров Q1 и Q2, можно вызвать на экран через главное меню программы, последовательно нажимая на кнопки "Исходные данные", "Лабораторная работа №6". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Кроме начальных данных, для выполнения лабораторной работы требуются операции "Умножение" (2 экземпляра), "ПР/ПС преобразователь", "Вычисление кодовых расстояний". Все эти операции описаны ранее.
Выполнение лабораторной работы заключается в том, что для каждого из 15 начальных элементов множества информационных кодов необходимо произвести следующие операции:
После завершения указанных операций над всеми начальными информационными кодами матрица d в окне операции "Вычисление кодовых расстояний" будет являться матрицей кодовых расстояний между рекуррентными кодовыми комбинациями несистематического кода.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные информационные коды и коды формирующих фильтров;
3) формулы для вычислений;
4) полученные рекуррентные кодовые комбинации несистематического кода;
5) схему формирования кодовых комбинаций и соответствующие разностные уравнения;
6) матрицу кодовых расстояний между полученными кодами;
7) выводы из анализа матрицы кодовых расстояний;
8) процесс формирования одного из элементов.
Задача данной лабораторной работы описана в пункте 3.7, исходные данные приведены в пункте 4.7, теоретические основы в пункте 1.8 данного пособия.
Импульсная характеристика формирующего фильтра и коды помех заданы в окне с начальными данными, которое вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 7". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Для выполнения лабораторной работы требуются операции "ПС/ПР преобразователь", "Умножение" (2 экземпляра), "Сложение по модулю 2".
Все операции описаны ранее.
Выполняемая на ЭВМ часть лабораторной работы состоит в том, что для каждого из 15 начальных элементов множества помеховых кодов необходимо вычислить синдром. Для этого необходимо произвести следующие операции:
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальную импульсную характеристику;
3) формулы для вычислений;
4) таблицы для синдромов ошибок;
5) схему восстановления;
6) разностные уравнения для восстановления;
7) длину защитного интервала.
Задача данной лабораторной работы описана в пункте 3.8, исходные данные приведены в пункте 4.8, теоретические основы в пунктах 1.4, 1.6, 1.9 данного пособия.
Окно с начальными данными вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 8". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Окно с начальными данными содержит числовое информационное поле с передаваемой последовательностью символов, числовое информационное поле с вероятностью ошибки p, кодовые информационные поля с кодами формирующих фильтров, множество кодов, состоящее из двух наборов, элементы которых используются для формирования кодовых сигналов. Для выполнения лабораторной работы требуются операции "Получение разделимой кодовой комбинации", "Искажение кодовой комбинации", "Восстановление разделимой кодовой комбинации".
Окно операции "Получение разделимой кодовой комбинации" содержит два входных кодовых информационных поля с именами S и Q для задания информационной части сигнала и формирующего фильтра соответственно и выходное кодовое информационное поле U для разделимой кодовой комбинации. Операция выполняется по алгоритму, аналогичному предложенному для выполнения лабораторной работы №2 (см. п. 5.2).
Окно операции "Искажение кодовой комбинации" содержит одно входное кодовое информационное поле с именем S для задания исходного сигнала и числовое информационное поле p с вероятностью ошибки. Выходное кодовое информационное поле U содержит искаженный сигнал.
Окно операции "Исправление разделимой кодовой комбинации" содержит два входных кодовых информационных поля с именами U и Q для задания искаженного сигнала и формирующего фильтра соответственно и выходное кодовое информационное поле S для исправленной разделимой кодовой комбинации. Исправление кода происходит по такому алгоритму. Если остаток от деления U на Q равен нулю, то считается, что искажений нет и S=U. В противном случае предполагается, что код содержит искаженный участок, длина которого не превосходит n-1, где n количество символов в формирующем фильтре. В этом случае частное от деления кода помехи на Q при неограниченном продолжении процесса деления будет иметь такую структуру
(5.1)
где m количество символов в коде помехи до начала искаженного участка.
Первые k символов в последовательности (5.1), где k длина информационной части, соответствуют обычному частному от деления U на Q. Члены циклической последовательности, начиная с k+1, могут быть найдены путем продолжения деления U на Q. Число m заранее неизвестно. Продолжая циклическую последовательность вперед, для всех возможных значений m от k до нуля, мы получим различные варианты частного от деления U на Q. Число таких вариантов будет на единицу больше количества ненулевых членов циклической последовательности, имеющих возможность попасть в частное. Для всех этих вариантов частного, умножая частное на Q и прибавляя известный остаток, можно получить варианты кода помехи. Среди этих вариантов выбирается тот, который имеет наибольшую вероятность, который и принимается за код помехи. При этом считается, что вероятность понижается с увеличением кратности ошибки, а среди ошибок с одинаковой кратностью вероятность больше у ошибки с меньшей длиной искаженного участка. Если две ошибки имеют одинаковую вероятность, то выбирается любая из них.
Выполнение лабораторной работы состоит в том, что через модель линии связи, состоящей из окон упомянутых операций, пропускают последовательно информационные коды, соответствующие заданным элементам начальной последовательности символов и результат на выходе сравнивают с заданным на входе.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные данные;
3) числа искаженных символов на входе системы исправления и на ее выходе для двух рассмотренных кодов.
Задача данной лабораторной работы описана в пункте 3.9, исходные данные приведены в пункте 4.9, теоретические основы в пунктах 1.3, 1.5, 1.7, 1.9 данного пособия.
Окно с начальными данными вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 9". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Окно с начальными данными содержит числовое информационное поле с вероятностью ошибки p, числовое информационное поле с длиной N закодированного сообщения, множество из трех кодовых информационных полей с кодом формирующего фильтра для построения последовательности Хаффмена и с кодами формирующих фильтров для двух каналов связи. Для выполнения лабораторной работы требуются операции "Построение последовательности Хаффмена" (описана в п. 5.1), "Разбиение кода на два", "Кодирование сигнала систематическим кодом", "Искажение кодовой комбинации" (описана в п. 5.6), "Исправление рекуррентного сигнала".
Операция "Разбиение кода на два" используется для выделения из последовательности Хаффмена, полученной в окне операции "Построение последовательности Хаффмена", кода длиной N символов. Окно этой операции содержит входное кодовое информационное поле с именем S для задания начальной последовательности и входное числовое информационное поле N для задания числа символов в первой части разбиения. Два выходных кодовых информационных поля U и V содержат первые N символов кода S и остальные его символы соответственно.
Окно операции "Кодирование сигнала систематическим кодом" содержит два входных кодовых информационных поля с именами S и Q для задания информационного сигнала и формирующего фильтра соответственно и выходное кодовое информационное поле U для систематического кода. Операция является объединением операций "Умножение", "ПР/ПС преобразователь", описанных ранее.
Окно операции "Исправление рекуррентного сигнала" содержит три входных кодовых информационных поля с именами U, H и Q для задания искаженного сигнала и формирующих фильтров соответственно. В случае систематического кода H или Q следует задать равным единице. Выходное кодовое информационное поле S содержит исправленный сигнал. Программа работает по следующему алгоритму. Вначале вычисляется синдром, и если он равен нулю, то S принимается равным U. В противном случае программа начинает изменять отдельные символы исходного кода, добиваясь равенства нулю синдрома. Вначале проверяется каждый одиночный символ, затем каждая пара символов, затем каждая тройка и т.д. Если при проверке n символов обнаруживаются исправляющие комбинации, то из них берется та, которая имеет наименьшую длину искаженного участка, и процесс останавливается.
Выполнение лабораторной работы состоит в том, что через модель линии связи, состоящей из окон операций "Кодирование сигнала систематическим кодом", "Искажение кодовой комбинации", "Исправление рекуррентного сигнала", пропускают информационный код, представляющий собой усеченную последовательность Хаффмена и результат на выходе сравнивают с заданным на входе.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные данные;
3) числа искаженных символов на входе системы исправления и на ее выходе для двух рассмотренных кодов.
Задача данной лабораторной работы описана в пункте 3.10, исходные данные приведены в пункте 4.10, теоретические основы в пунктах 1.3, 1.5, 1.8, 1.9 данного пособия.
Окно с начальными данными вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 10". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Окно с начальными данными содержит числовое информационное поле с вероятностью ошибки p, числовое информационное поле с длиной N закодированного сообщения, множество из пяти кодовых информационных полей с кодом формирующего фильтра для построения последовательности Хаффмена и с кодами обоих формирующих фильтров для первого и второго каналов связи. Выполнение лабораторной работы № 10 осуществляется аналогично выполнение лабораторной работы № 9. Отличие состоит в том, что вместо операций для систематического кода используются аналогичные операции для несистематического кода.
Окно операции "Кодирование сигнала несистематическим кодом" содержит три входных кодовых информационных поля с именами S, Q1 и Q2 для задания информационного сигнала и формирующих фильтров соответственно и выходное кодовое информационное поле U для несистематического кода. Операция является объединением операций "Умножение", "ПР/ПС преобразователь".
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные данные;
3) числа искаженных символов на входе системы исправления и на ее выходе для двух рассмотренных кодов .
Задача данной лабораторной работы описана в пункте 3.11, исходные данные приведены в пункте 4.11, теоретические основы в пунктах 1.3 1.9 данного пособия.
Окно с начальными данными вызывается на экран последовательным нажатием на кнопки "Исходные данные", "Лабораторная работа № 11". В появившемся окне необходимо задать номер своего варианта и нажать на кнопку "Ok". Окно с начальными данными содержит числовое информационное поле с вероятностями ошибок pi, числовое информационное поле с последовательностью из чисел из промежутка от 1 до 15 передаваемое сообщение, множество из 49 кодовых информационных полей, содержащее последовательно: формирующий фильтр для разделимой кодовой комбинации, формирующий фильтр для систематического кода, два формирующих фильтра для несистематического кода, 15 кодовых комбинаций неразделимого кода Хафмена, 15 кодовых комбинаций разделимого кода (15,11), 15 семизначных комбинаций кода (7,4).
Для выполнения лабораторной работы необходимо построить модели четырех каналов связи и пропустить через них последовательно коды заданного сообщения при заданных уровнях искажений. Модель канал связи на основе кода Хаффмена строится с помощью операций "Искажение кодовой комбинации" (описана в п. 5.6), "Вычисление кодовых расстояний" (описана в п. 5.1). Во входное окошко операции "Вычисление кодовых расстояний", следует поместить искаженную кодовую комбинацию, соответствующую передаваемому коду и все 15 неискаженных кодовых комбинаций. За принятый код следует взять тот, которому соответствует минимальное кодовое расстояние. Ситуацию, когда минимум достигается более чем для одной комбинации, следует считать отказом от декодирования. Построение моделей других каналов связи описано в п. 5.8, 5.9, 5.10.
Отчет о выполнении лабораторной работы должен содержать:
1) постановку задачи;
2) начальные данные;
3) таблицу, отражающую зависимость чисел правильно и неправильно декодированных знаков, чисел отказов от декодирования от вероятности ошибки для всех моделей каналов связи.
Список литературы