Сверточное кодирование

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



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

3. Разработка программного обеспечения системы кодирования сверточным кодом

сверточный кодирование програамный

3.1 Описание программы

Разрабатываемая программа представляет собой реализацию метода сверточного кодирования. Основные требования, предъявляемые к программе, сводятся к следующим:

1)Наглядность и понятность интерфейса, т.к. разрабатываемое ПО ориентировано на обычного пользователя ЭВМ;

2)Надёжность, т.е. полнота, точность, достоверность и своевременность получаемой результирующей информации.

Т.о. основной упор при разработке ПО был сделан на проектирование наглядного интерфейса, а, следовательно, все основные функции программы привязаны к элементам формы.

В качестве среды разработки было выбрано выпущенное компанией Borland средство быстрой разработки приложений, позволяющее создавать приложения на языке object pascal - Delphi 6. Обоснование такого выбора приведено в последующем пункте.

В ходе создания данного дипломного проекта был написан кодер и декодер. Описание алгоритмов их функционирования приведено ниже.

3.2 Описание блок схем алгоритмов программы

На рисунке 3.1 представлены этапы преобразования данных в разработанной программе.

Рисунок 3.1 - Этапы преобразования исходных данных в программе

Ниже представлены блок схемы алгоритмов каждого этапа.

Рисунок 3.2 - Блок схема для алгоритма преобразования текстового сообщения в двоичный код

Как видно из рисунка 3.2 исходное текстовое сообщение преобразуется в набор бит посимвольно. Каждый символ имеет свое двоичное представление (ASCII код (См. Приложение Б)). На очередной итерации применяя операцию побитового маскирования (1 shl j > 0) алгоритм определяет является ли текущий бит символом 1 или 0 и конкатенирует результат в итоговую строку str. Стандартный набор символов ASCII состоит из 128 десятичных чисел в пределах от 0 до 127, назначенных буквам, цифрам, знакам препинания и самым употребляемым специальным символам. Расширенный набор символов ASCII дополнительно содержит 128 десятичных чисел в пределах от 128 до 255, представляющих дополнительные специальные, математические, графические и иностранные символы. На рисунке 3.3 приведена блок схема для алгоритма функционирования сверточного кодера.

Рисунок 3.3 - Блок схема для алгоритма функционирования сверточного кодера

На очередном этапе преобразования сообщения вызывается функция coding класса MealyAutomaton, которая осуществляет преобразование согласно формуле приведенной на рисунке 3.3

На рисунке 3.4 приведена блок схема алгоритма имитации передачи через канал связи.

Рисунок 3.4 - Блок схема для алгоритма имитации передачи через канал связи

Как видно из приведенного выше алгоритма максимальное количество генерируемых ошибок вычисляется по формуле:

Max = Nсообщ * Pош / 100 (3.1)

где Мax - максимальное количество ошибок

Nсообщ - длина сообщения

Рош - вероятность ошибки (%)

Т.е. если длина сообщения равна 100 бит, а вероятность ошибки - 10 % то генератор сгенерирует от 0 до 10 ошибок. Схема генерации ошибок такова: функция на очередной итерации генерирует случайную величину X, используя стандартную функцию rand следующим образом:(99) + 1

затем данное если данное значение меньше вероятности ошибки:(random(99) + 1 <= errorProbability)

то происходит генерации ошибочных бит (нули заменяются на единицы и наоборот) в зависимости от параметра длина пачки ошибок начиная с позиции i (переменная цикла обработки). Затем происходит инкремент переменной цикла i и все повторяется сначала до тех пор, пока не закончится сообщение или число сгенерированных ошибок не превысит число допустимых ошибок.

На рисунках ниже приведена статистика по тестированию генератора ошибок при длине тестового сообщения 100 бит.

Рисунок 3.5 - Тестирование генератора ошибок:

Длина тестового сообщения - 100 бит; Вероятность ошибок: 0,02; Длина пачки ошибок: 1

Рисунок 3.6 - Тестирование генератора ошибок:

Длина тестового сообщения - 100 бит; Вероятность ошибок: 0,1; Длина пачки ошибок: 1

Рисунок 3.7 - Тестирование генератора ошибок:

Длина тестового сообщения - 100 бит; Вероятность ошибок: 0,02; Длина пачки ошибок: 2

Рисунок 3.8 - Тестирование генератора ошибок:

Длина тестового сообщения - 100 бит; Вероятность ошибок: 0,1; Длина пачки ошибок: 2

На рисунке 3.9 приведена блок схема алгоритма функционирования декодера.

На каждой итерации декодер (TTreeHandler) вызывает процедуру createLevel которая исходя из входящего кода (2 декодируемых бита) строит очередной уровень сети (который может иметь 1, 2 или 4 узла) и рассчитывает метрики путей. Согласно структуре TListElemPtr все уровни сети связаны указателями pnext и pprev. После полного построения сети декодер выбирает узел на последнем уровне с минимальной метрикой пути, а затем, возвращаясь по указат