
- •Введение
- •1 Основы теории
- •1.1 Математический аппарат исследования дискретных сигналов и цифровых фильтров
- •1.2 Двоичные дискретные сигналы и фильтры
- •1.3 Двоичные последовательности Хаффмена
- •1.4 Формирование блоковых разделимых кодовых сигналов
- •1.5 Рекуррентные формирователи кодовых сигналов
- •1.6 Схемы и алгоритмы исправления ошибок в разделимых блоковых кодовых сигналах
- •1.7 Схемы и алгоритмы исправления ошибок в систематических кодовых сигналах
- •1.8 Схемы и алгоритмы исправления ошибок в несистематических кодовых сигналах
- •1.9 Декодирование сообщений
- •2 Задания на самостоятельную работу
- •3.1 Лабораторная работа №1: формирование и исследование последовательностей Хаффмена и неразделимых кодовых комбинаций.
- •3.6 Лабораторная работа №6: формирование и исследование рекуррентных несистематических кодовых последовательностей
- •3.7 Лабораторная работа №7: исследование схем оценки помеховых сигналов и восстановления начальных кодовых комбинаций несистематического кода
- •3.8 Лабораторная работа №8: исследование помехоустойчивости канала связи на основе разделимых кодовых сигналов
- •3.9 Лабораторная работа №9: исследование помехоустойчивости каналов связи на основе рекуррентных систематических кодов
- •3.10 Лабораторная работа №10: исследование помехоустойчивости каналов связи на основе рекуррентных несистематических кодов
- •3.11 Лабораторная работа №11: исследование эффективности декодирования сообщений по каналам связи с помехами
- •4 Исходные данные для проведения исследований
- •4.1 Лабораторная работа 1
- •4.2 Лабораторная работа 2
- •4.3 Лабораторная работа 3
- •4.4 Лабораторная работа 4
- •4.9 Лабораторная работа 9
- •4.10 Лабораторная работа 10
- •4.11 Лабораторная работа 11
- •5 Программное обеспечение компьютерных лабораторных исследований
- •Словарь терминов
- •5.1 Лабораторная работа № 1
- •5.2 Лабораторная работа № 2
- •5.3 Лабораторная работа № 3
- •5.4 Лабораторная работа № 4
- •5.5 Лабораторная работа № 5
- •5.6 Лабораторная работа № 6
- •5.7 Лабораторная работа № 7
- •5.8 Лабораторная работа № 8
- •5.9 Лабораторная работа № 9
- •5.10 Лабораторная работа № 10
- •5.11 Лабораторная работа № 11
1.5 Рекуррентные формирователи кодовых сигналов
Помехоустойчивость линий связи можно повысить, если в кодовых сигналах за каждым информационным символом будет следовать проверочный. Для формирования проверочных символов используются рекуррентные алгоритмы. Известны два типа рекуррентных формирователей: 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 – Кодер с двумя формирующими фильтрами
Эффективность кодирования характеризуется кодовым расстоянием. Найдены оптимальные рекуррентные кодеры с формирующими фильтрами:
Q1(k)=111; Q2(k)=101;
Q1(k)=1111; Q2(k)=1101;
Q1(k)=11101; Q2(k)=10011;
Q1(k)=111011; Q2(k)=110001;
Q1(k)=1111001; Q2(k)=1011011;
Q1(k)=11111001; Q2(k)=10100111.
При их использовании минимальное кодовое расстояние будет наибольшим (максимальным)
Повышение помехоустойчивости при рекуррентном формировании кодовых сигналов достигается за счет увеличения длительности сообщения в два раза (или уменьшения в 2 раза скорости передачи информации).
1.6 Схемы и алгоритмы исправления ошибок в разделимых блоковых кодовых сигналах
Блоковые кодовые сигналы сформированы таким образом, что при искажении символов принятый сигнал X(k) не будет делится без остатка на формирующий сигнал Q(k). При делении X(k)=S(k)(k) будет остаток, который можно определить, разделив (k) на Q(k). Рассмотрим семизначный кодовый сигнал, в котором искажен один из семи символов. Перенумеруем их, начиная со старшего разряда: 1(k)=1000000; 2(k)=0100000; 3(k)=0010000; 4(k)=0001000; 5(k)=0000100; 6(k)=0000010; 7(k)=0000001. Их зет-преобразования равны: 1(z)=1; 2(z)=z-1;3(z)=z-2;4(z)=z-3;5(z)=z-4; 6(z)=z-5;7(z)=z-6. Если Q(z)=1+z-2+z-3 (Q(k)=1011), то можно определить остаток от деления 1(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) в оценку сигнала помехи *(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)= (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 |
*(k) |
= |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Предположим теперь, что (k)=0001000 и исследуем процесс формирования оценки *(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 |
*(k) |
= |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Как в первом ((k)=1000000), так и во втором случае ((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 |
*(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 |