- •Помехоустойчивое кодирование в системах телекоммуникаций
- •Пояснительная записка
- •Лабораторная работа 1 Исследование эффективных кодов на примере кода Хаффмена
- •1. Цель работы:
- •2. Литература:
- •3. Подготовка к работе:
- •4. Основное оборудование:
- •5. Задание:
- •6. Порядок выполнения работы:
- •7. Содержание отчета:
- •8. Контрольные вопросы:
- •9. Методические указания:
- •9.2. Основы эффективного кодирования
- •9.3. Методы эффективного кодирования при известной статистике сообщений
- •9.4. Методы эффективного кодирования при неизвестной статистике сообщений
- •9.5. Метод Хаффмена
- •9.6 Описание лабораторной работы
- •Лабораторная работа 2 Исследование эффективности линейных блоковых кодов
- •6.2. Исследование системы передачи данных с двоичным симметричным каналом связи при использовании кода Хэмминга.
- •7. Содержание отчета:
- •8. Контрольные вопросы:
- •Лабораторная работа 3 Исследование эффективности циклических кодов
- •7. Содержание отчета:
- •8. Контрольные вопросы:
- •9. Методические указания:
- •8.2 Инструкция по пользованию практической части программы
- •8.3 Инструкция по использованию тестирующей части программы
- •Лабораторная работа 4 Исследование алгоритма Витерби
- •6.2 Экспериментальной части программы
- •6.3 Инструкция по использованию тестирующей части программы
- •9.2 Представление сверточного кода порождающими многочленами
- •9.3. Кодовое дерево сверточного кода и решетчатая диаграмма
- •9.4 Свободное расстояние. Спектр.
- •9.5 Катастрофические кодеры
- •9.6 Декодирование сверточных кодов по максимуму правдоподобия. Алгоритм Витерби
- •9.7 Поиск кратчайшего пути на графе по принципу динамического программирования
- •9.8 Алгоритм Витерби
- •Лабораторные работы 5,6 Исследование схем кодеров и декодеров с обнаружением ошибок
- •6. Порядок выполнения работы:
- •6.2. Исследование системы передачи данных с кодами рс при использование канала с Гауссовскими помехами.
- •7. Содержание отчета:
- •8. Контрольные вопросы:
- •Лабораторные работы 7,8 Исследование схем кодеров и декодеров с исправлением ошибок
- •6. Порядок выполнения работы:
- •7. Содержание отчета:
- •8. Контрольные вопросы:
9.6 Описание лабораторной работы
9.6.1.Первая часть программы предназначена для самостоятельного построения кода Хаффмена для различных сообщений с разными вероятностями. Она включает построение кодовой таблицы, а затем и кодового дерева кода Хаффмена. Студент выполняет эти два этапа построения кода и, если при данном распределении вероятностей сообщений существует возможность построить кодовое дерево по-разному, он может увидеть эти варианты. Затем имеется возможность повторить всю работу заново при других вариантах распределения вероятностей сообщений.
В обеих частях программы работа выполняется в основном манипулятором типа «мышь». В первой части широко используется перетаскивание некоторых объектов из одного места в другое. Программа постоянно ведет контроль за выполненной работой и дает разрешение на переход к следующему этапу или к другим действиям.
Вторая часть программы предназначена для эмуляции системы связи, использующей код Хаффмена и один из равномерных кодов – МТК-2.
Программным путем эмулируются такие устройства как:
-
блок ввода сообщения:
-
блок равномерного кодирования:
-
кодер Хаффмена:
-
блок определения длины кодовой комбинации;
-
блок ввода ошибки;
-
декодер Хаффмена;
-
блок определения ошибочных сообщений,
-
блок отображения.
Функциональная схема моделируемой системы связи представлена на рисунке 4.
Рисунок 4 – Функциональная схема моделируемой системы связи
При помощи данной программы возможно наблюдение закодированной исходной последовательности сообщений кодером Хаффмена и блоком равномерного кодирования, внесение ошибки в закодированную последовательность сообщений, наблюдение явления размножения ошибок.
В блоке ввода сообщений обеспечивается ввод исходной последовательности сообщений. Вводимая последовательность может состоять из сообщений одного из семи вариантов алфавита (вариант указывается в начале работы) или из букв русского алфавита (набираемых на клавиатуре).
В блоке равномерного кодирования можно наблюдать исходную последовательность сообщений, закодированную равномерным кодом.
В блоке кодера Хаффмена можно наблюдать исходную последовательность сообщений, закодированную с использованием неравномерного префиксного кода Хаффмена.
В блоке определения длины кодовой комбинации производится отображение длины закодированного сообщения и средней длины кодовой комбинации для случаев равномерного кодирования и кодирования кодом Хаффмена.
Блок ввода ошибки позволяет вносить одиночную или групповую ошибку в поток данных, что имитирует ошибки в реальных дискретных каналах и демонстрирует эффект размножения ошибок.
Блок декодера Хаффмена производит декодирование закодированного сообщения, при этом отображается восстановленное сообщение на выходе декодера.
В блоке определения ошибочных сообщений происходит сравнение последовательности двоичных элементов, переданных в линию связи, с принятой последовательностью. Ошибочные элементы отображаются красным цветом.
В блоке отображения происходит отображение принятого сообщения, а также выводятся характеристики качества передачи: количество ошибочно принятых двоичных элементов и сообщений.
9.6.2. Разработанная программа состоит фактически из двух частей:
-
программа для построения кода Хаффмена в соответствии с заданными вероятностями сообщений;
-
программа, эмулирующая работу системы связи, использующей равномерный код и неравномерный код Хаффмена;
Кроме того, имеется тестирующая система;
В каждой из разработанных программ имеется главное окно, с которым непосредственно работает пользователь. В нем расположены элементы управления программой. В состав главного окна входят процедуры, обрабатывающие действия пользователя при работе с программой и процедуры, позволяющие пользователю вывести другие окна приложения.
В главном окне первой программы расположены следующие элементы управления:
-
главное меню, при использовании которого можно активизировать любое прикладное окно программы;
-
кнопки управления, одни из которых дублируют команды главного меню, другие служат для выполнения определенного действия, связанного с этой кнопкой (переход к другому действию, получение справки);
Все окна первой программы по составу можно разделить на три части:
-
окно запроса сообщений и их вероятностей или выбора их заранее заданных вариантов;
-
окно, в котором студент создает кодовую таблицу кода Хаффмена;
-
окно, в котором создается двоичное кодовое дерево кода Хаффмена.
В процессе создания таблицы и кодового дерева кода Хаффмена студент главным образом пользуется мышью, перетаскивая некоторые объекты из одного поля окна в другое. Программа следит за действиями пользователя и при необходимости дает указания по правильности выполнения тех или иных операций. В начале каждого этапа работы программа проводит обучение и рассказывает о назначении тех или иных элементов окна в данный момент.
В главном окне второй программы расположены следующие элементы управления:
-
кнопки управления, которые служат для выполнения определенных действий в ходе работы, а также активизации окна инструкции пользователя и окна сведений о программе;
-
несколько функциональных блоков в соответствии со схемой, приведенной на рисунке 6, с которыми и работает пользователь;
-
окна с описанием порядка выполнения работы.
В ходе работы студент вводит необходимые данные (последовательность сообщений) и может видеть закодированную последовательность, закодированную равномерным кодом и кодом Хаффмена, а также может внести ошибку в последовательность, закодированную кодом Хаффмена и посмотреть результаты декодирования, а также информацию о кодовой последовательности и ошибках в ней.
Тестовая система содержит сорок вопросов, а также выдает результат тестирования в виде оценки.
Кроме того, имеется краткая теория, активизировать которую пользователь может, нажав соответствующую кнопку в окне программы.
Краткая теория содержит описание метода Хаффмена, а также пример построения кодовых комбинаций, параметры, оценивающие эффективность неравномерных кодов. Материал снабжен необходимыми рисунками и таблицами.