Разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,68 Mb
  • Опубликовано:
    2011-09-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования

РЕФЕРАТ

Пояснительная записка состоит из 130 страниц, включает в себя 35 рисунков, 7 таблиц, 1 приложение. При работе были использованы 14 источников.

АНАЛОГО-ЦИФРОВОЕ ПРЕОБРАЗОВАНИЕ, КОДИРОВАНИЕ, ПОМЕХОУСТОЙЧИВОСТЬ, ИНТЕРФЕЙС, МОДУЛЯЦИЯ, КАНАЛ СВЯЗИ, ДЕТЕКТИРОВАНИЕ, ДЕКОДИРОВАНИЕ, ЦИФРО-АНАЛОГОВОЕ ПРЕОБРАЗОВАНИЕ, АУТЕНТИФИКАЦИЯ, АВТОРИЗАЦИЯ, МОДЕЛИРОВАНИЕ, ПРОГРАММИРОВАНИЕ.

Цель работы - разработка программного пакета, позволяющего имитировать работу цифрового канала связи, задавать различные параметры и снимать характеристики.

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

СОДЕРЖАНИЕ

ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ

ВВЕДЕНИЕ

. РАСЧЁТНО-ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ

.1      АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

.2      ОПИСАНИЕ ПРИНЦИПОВ РАБОТЫ БЛОКОВ ИНТЕРФЕЙСА

.2.1   ФОРМАТИРОВАНИЕ

.2.2   ДИСКРЕТИЗАЦИЯ

.2.3   КВАНТОВАНИЕ ПО УРОВНЮ И КОДИРОВАНИЕ

.2.4   ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ

.2.5   МОДУЛЯЦИЯ

.2.6   ДЕТЕКТИРОВАНИЕ

.2.7   ДЕКОДИРОВАНИЕ

.2.8   ЦИФРО-АНАЛОГОВОЕ ПРЕОБРАЗОВАНИЕ

.3      РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.4      РАЗРАБОТКА ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ

.5      ДИАГРАММА ПРЕЦЕДЕНТОВ

.6      РАЗРАБОТКА ГРАФИЧЕСКОЙ ОБОЛОЧКИ

.7      РАЗРАБОТКА МЕТОДИКИ РАБОТЫ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ

.7.1   УСТАНОВКА И УДАЛЕНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.7.2   РАБОТА С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ

.8      ПРИМЕРЫ РАБОТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИМИТАТОРА

. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ

.1      ИНФОРМАЦИОННЫЙ ПОИСК

.2      ВЫБОР И ОБОСНОВАНИЕ ВИДА ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ

.3      ВЫБОР И ОБОСНОВАНИЕ СРЕДЫ ПРОГРАММИРОВАНИЯ

.4      РАЗРАБОТКА МЕТОДИКИ ОТЛАДКИ И ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРИ РАЗРАБОТКЕ И В ПРОЦЕССЕ ЭКСПЛУАТАЦИИ

. ТЕХНИКО-ЭКОНОМИЧЕСКИЙ РАЗДЕЛ

.1      РАСЧЁТ ЗАТРАТ НА МАТЕРИАЛЫ И КОМПЛЕКТУЮЩИЕ ИЗДЕЛИЯ

.2      РАСЧЁТ ЗАРАБОТНОЙ ПЛАТЫ НА СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.2.1   РАСЧЁТ ОБЩЕЙ ТРУДОЁМКОСТИ

.3      РАСЧЁТ ЕДИНОГО СОЦИАЛЬНОГО НАЛОГА

.4      РАСЧЁТ НАКЛАДНЫХ РАСХОДОВ

.5      РАСЧЁТ ЗАТРАТ НА СОДЕРЖАНИЕ И ЭКСПЛУАТАЦИЮ ВЫЧИСЛИТЕЛЬНЫХ СРЕДСТВ

. РАЗДЕЛ ОХРАНЫ ТРУДА, ОКРУЖАЮЩЕЙ СРЕДЫ И БЖД

.1      АНАЛИЗ ОПАСНЫХ И ВРЕДНЫХ ПРОИЗВОДСТВЕННЫХ ФАКТОРОВ ПРИ РАБОТЕ НА ЭВМ

.2      МЕРОПРИЯТИЯ ПО НОРМИРОВАНИЮ ОПАСНЫХ И ВРЕДНЫХ ПРОИЗВОДСТВЕННЫХ ФАКТОРОВ

.3      РАСЧЁТ ВЕНТИЛЯЦИИ

.3.1   РАСЧЁТ ВОЗДУХООБМЕНА

.3.2   РАСЧЁТ ГИДРАВЛИЧЕСКОГО СОПРОТИВЛЕНИЯ ВЕНТИЛЯЦИОННОЙ СЕТИ

.3.3   ВЫБОР ВЕНТИЛЯТОРА И ЭЛЕКТРОДВИГАТЕЛЯ

.4      ПОЖАРНАЯ ПРОФИЛАКТИКА

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ

ОПРЕДЕЛЕНИЯ, ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ

API - application programming interface- international electro technical commission- international organization for standardization- message digest 5&V - verification and validation

АМ - амплитудная модуляция

АЦП - аналого-цифровой преобразователь

БИС - большая интегральная схема

ВЦ - вычислительный центр

ГПИ - графический пользовательский интерфейс

ЕСН - единый социальный налог

ЖЦ - жизненный цикл

КПД - коэффициент полезного действия

МЗР - младший значащий разряд

ОВПФ - опасные и вредные производственные факторы

ПО - программное обеспечение

ПС - программная система

ПЭВМ - персональная электронная вычислительная машина

СЗР - старший значащий разряд

ТПИ - текстовый пользовательский интерфейс

ФНЧ - фильтр нижних частот

ЦАП - цифро-аналоговый преобразователь

ЧМ - частотная модуляция

ЭВМ - электронная вычислительная машина

ЭЛТ - электронно-лучевая трубка

ЭМП - электромагнитные поля

ВВЕДЕНИЕ

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

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

Целью дипломного проекта является разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования.

Для достижения поставленной цели необходимо решить следующие задачи:

·  формирование требования к программному обеспечению;

·        изучение теоретических материалов по работе цифрового интерфейса, помехоустойчивому кодированию;

·        выбор среды программирования;

·        разработка структуры и алгоритма работы ПО

·        создание интерфейса для отображения результатов работы и взаимодействия с пользователем.

1.      РАСЧЁТНО-ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ


1.1  Анализ технического задания


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

Рисунок 1. - Структурная схема ПЧИ

Источник аналогового сигнала представляет собой генератор аналоговых периодических сигналов трех видов: прямоугольный, гармонический и треугольный. Параметры сигналов - амплитуда и частота. Для прямоугольного сигнала доступен ещё один параметр - скважность.

Источник некодированного сообщения представляет собой АЦП набора стандартных сигналов с генератора. Основные параметры АЦП это число бит на число (разрядность) и частота дискретизации. Объем сообщения (число дискретов) ограничен и задаётся пользователем. Динамический диапазон зависит от максимального и минимального значения сигнала.

Кодер получает с АЦП первичный код и кодирует его в соответствии с заданным алгоритмом помехоустойчивого кодирования. Этих алгоритмов предусмотрено три: проверка на четность, код Хэмминга для исправления однократных ошибок и циклический код для исправления однократных ошибок. Для циклического кода возможна установка задающего полинома. Также предусматривается отсутствие помехоустойчивого кодирования.

Модулятор осуществляет модуляцию битов кода, полученного с кодера. Возможны два вида модуляции: амплитудная и частотная. Так же возможна передача в канал связи немодулированного, потенциального кода. При амплитудной модуляции возможно установка двух параметров: несущей частоты и амплитуды. При частотной модуляции - трёх: частоты колебания модулирующего ноль, частоты колебания моделирующего единицу и амплитуды этих колебаний. Для передачи сигнала в канал связи потенциального кода возможна установка только амплитуды.

Канал связи представляет собой канал передачи данных с источником аддитивных помех. Скорость поступления данных сообщения в канал связи задается пользователем.

Аддитивная помеха представляет собой Гауссовский белый шум с двумя параметрами: математическое ожидание и дисперсия.

Усилитель-детектор осуществляет детектирование и усиление модулированного сигнала, поступившего из канала связи. Возможно задание коэффициента усиления и уровня детектирования модулированного сигнала. Для фильтра нижних частот [1], стоящего после детектора возможна установка частоты среза. При отсутствии ошибок код, полученный после детектирования, эквивалентен коду после помехоустойчивого кодирования.

Декодер осуществляет декодирование детектированного сигнала, в соответствии с алгоритмом помехоустойчивого кодирования. При отсутствии ошибок код, полученный после декодирования, эквивалентен коду после аналого-цифрового преобразования.

Код, полученный после декодера, поступает на цифро-аналоговый преобразователь, который преобразует получаемый код в соответствующий уровень аналогового напряжения. Параметры цифро-аналогового преобразования соответствуют параметрам АЦП. Для фильтра нижних частот, стоящего после ЦАП, возможна установка частоты среза.

Все обозначенные выше параметры должны задаваться пользователем. Для контроля работы имитатора необходимо отображать получаемые после каждого модуля результаты. Для источника сигнала можно отображать заданный сигнал, а также его спектр. Для АЦП можно отобразить дискретизированный сигнал, а также код, полученный после оцифровывания. Помехоустойчивый кодер выдаёт цифровой код, который также можно отобразить. Модулятор передаёт в канал связи с помехами модулированный сигнал, необходимо отобразить сигнал и воздействующие помехи. Для детектора можно отобразить вид детектированного сигнала, и соответствующий этому сигналу код. После декодирования получается исходный код, соответствующий оцифрованному исходному сигналу. Из-за возможности возникновения ошибок, этот код может отличать от кода после АЦП, поэтому его также необходимо отобразить. Для ЦАП можно отобразить восстановленный после декодирования сигнал.

Кроме моделирования работы самого интерфейса и отображения результатов работы необходимо предусмотреть протоколирование результатов, сбор статистики и аутентификацию пользователей.

1.2  Описание принципов работы блоков интерфейса


1.2.1 Форматирование

Задачей первого необходимого этапа обработки сигнала, форматирования, является обеспечение совместимости сообщения (или исходного сигнала) со средствами цифровой обработки. Форматирование с целью передачи - это преобразование исходной информации в цифровые символы. Если помимо форматирования применяется сжатие данных, процесс называется кодированием источника. Источник сигнала - это, в общем случае, случайный процесс некоторой случайной переменной. Считается, что эта случайная переменная - время, так что рассматриваемый сигнал - это изменяющийся во времени сигнал. Важными примерами изменяющихся во времени сигналов являются выходы датчиков, используемых для контроля процессов и описывающих такие физические величины, как температура, давление, скорость и сила ветра. Значительный интерес представляют такие примеры, как речь и музыка. Форматирование аналоговой информации осуществляет аналого-цифровой преобразователь. Форматирование осуществляется с использованием трех отдельных процессов: дискретизации, квантования и кодирования. После форматирования получается последовательность двоичных цифр [2].

1.2.2 Дискретизация

Аналоговый сигнал и его дискретная версия связаны процессом, который называется дискретизацией. Этот процесс можно реализовывать по-разному, а наиболее популярной является операция выборки-хранения. В этом случае коммутирующе-запоминающий механизм формирует из поступающего непрерывного сигнала последовательность выборок. Результатом процесса дискретизации является сигнал в амплитудно-импульсной модуляции. Такое название возникло потому, что выходящий сигнал можно описать как последовательность импульсов с амплитудами, определяемыми выборками входного сигнала. Аналоговый сигнал можно восстановить (с определенной степенью точности) из модулированного сигнала, пропустив последний через фильтр нижних частот. Ответ на вопрос, насколько точно отфильтрованный модулированный сигнал совпадает с исходным аналоговым сигналом, дает теорема о выборках. Теорема формулируется следующим образом: сигнал с ограниченной полосой, не имеющий спектральных компонентов с частотами, которые превышают  Гц, однозначно определяется значениями, выбранными через равные промежутки времени . Это утверждение также известно как теорема о равномерном дискретном представлении. При другой формулировке верхний предел  можно выразить через частоту дискретизации, ,. В этом случае получаем ограничение, именуемое критерием Найквиста . Критерий Найквиста - это теоретическое достаточное условие, которое делает возможным полное восстановление аналогового сигнала из последовательности равномерно распределенных дискретных выборок [2], [3].

1.2.3 Квантование по уровню и кодирование

Квантование по уровню - это задача отображения выборок сигнала непрерывной амплитуды в конечное множество амплитуд. Простейшее устройство квантования, которое можно изобразить, выполняет мгновенное отображение с каждого непрерывного входного уровня выборки в один из предопределенных, равномерно расположенных выходных уровней. Квантующие устройства, которые характеризуются равномерно расположенными приращениями между возможными выходными уровнями, называются равномерными устройствами квантования, или линейными квантующими устройствами. Возможные мгновенные характеристики входа/выхода легко изображаются с помощью простого ступенчатого графика, подобного изображенному на рисунке 2. На рисунке 2, а, б и г представлены устройства с равномерными шагами квантования, а на рисунке 2, в - устройство с неравномерным шагом квантования. На рисунке 2, а характеристика устройства имеет нуль в центре шага квантования, а на рисунке 2, б и г - на границе шага квантования. Отличительная особенность устройств, имеющих характеристики с нулем в центре шага квантования и характеристики с нулем на границе шага квантования, связана, соответственно, с наличием или отсутствием выходных изменений уровня, если входом квантующего устройства является шум низкого уровня. На рисунке 2, г представлено смещенное (т.е. усекающее) устройство квантования, а другие устройства, изображенные на этом рисунке, являются несмещенными и называются округляющими. Такие несмещенные устройства квантования представляют собой идеальные модели, но в аналого-цифровых преобразователях округление не реализуется никогда. Как правило, устройства квантования реализуются как усекающие преобразователи. Термины "характеристика с нулем в центре шага квантования" или "характеристика с нулем на границе шага квантования" относятся к ступенчатым функциям и используются для описания того, имеются ли в начале координат горизонтальная или вертикальная составляющая ступенчатой функции. Пунктирная линия единичного наклона, проходящая через начало координат, представляет собой неквантованную характеристику входа/выхода, которую пытаются аппроксимировать ступенчатой функцией. Разность между ступенчатой функцией и отрезком линии единичного наклона представляет собой ошибку аппроксимации, допускаемую устройством квантования на каждом входном уровне. На рисунке 3 показана ошибка аппроксимации амплитуды в сравнении с входной амплитудой функции для каждой из характеристик квантующего устройства, изображенных на рисунке 2. Часто эта ошибка моделируется как шум квантования, поскольку последовательность ошибок, полученная при преобразовании широкополосного случайного процесса, напоминает аддитивную последовательность шума. Однако, в отличие от действительно аддитивных источников шума, ошибки преобразования являются сигнально зависимыми и высоко структурированными. Линейное устройство квантования легко реализовать и очень легко понять. Оно представляет собой универсальную форму квантующего устройства, поскольку не предполагает никаких знаний о статистике амплитуд и корреляционных свойствах входного сигнала[2][3].

Устройства квантования, которые используют указанные преимущества, являются более эффективными как кодеры источника и предназначены для более специфических задач, чем общие линейные устройства квантования.

Рисунок 2. - Различные передаточные функции устройства квантования

Эти квантующие устройства являются более сложными и более дорогими, но они оправдывают себя с точки зрения улучшения производительности системы. Существуют приложения, для которых равномерные устройства квантования являются наиболее желаемыми преобразователями амплитуды. Это - приложения обработки сигналов, графические приложения, приложения отображения изображений и контроля процессов. Для некоторых иных приложений более приемлемыми преобразователями амплитуды являются неравномерные адаптивные квантующие устройства. Эти устройства включают в себя кодеры сигнала для эффективного запоминания и эффективной связи, контурные кодеры для изображений, векторные кодеры для речи и аналитические/синтетические кодеры (такие, как вокодер) для речи.

Полученный номер уровня кодируется, например, в двоичном коде. В этой работе для квантования применен принцип последовательного приближения или поразрядного уравновешивания. Такой АЦП преобразует аналоговый сигнал в цифровой за N шагов, где N - разрядность АЦП. Количество же уровней определяется по формуле . На каждом шаге определяется по одному биту искомого цифрового значения, начиная от СЗР и заканчивая МЗР. Последовательность действий по определению очередного бита заключается в следующем. Бит, который должен быть определён на этом шаге, выставляется в 1, более младшие биты установлены в 0. Полученное значение сравнивается с входным аналоговым значением. Если значение входного сигнала больше этого значения, то определяемый бит получает значение 1, в противном случае 0. Таким образом, определение итогового цифрового значения напоминает двоичный поиск. АЦП этого типа обладают одновременно высокой скоростью и хорошим разрешением. Однако при отсутствии устройства выборки хранения погрешность будет значительно больше.

Рисунок 3. - Различные передаточные функции устройства квантования

1.2.4 Помехоустойчивое кодирование

Кодер, представленный на рисунке 1, осуществляет канальное кодирование. Канальное кодирование представляет собой класс преобразований сигнала, выполняемых для повышения качества связи. В результате этого, сигнал становится менее уязвим к таким эффектам ухудшения качества передачи как шум, помехи и замирание. Канальное кодирование можно считать способом приведения параметров системы к желаемому компромиссу (т.е. соотношению между достоверностью передачи и шириной полосы пропускания или мощностью и шириной полосы пропускания). Канальное кодирование так распространено благодаря использованию больших интегральных схем (БИС) и применению высокоскоростной цифровой обработки сигналов. Данный метод позволил более чем на 10 дБ повысить производительность при значительно меньших затратах по сравнению с другими методами, например методами увеличения мощности передатчика или размера антенны[3].

Канальное кодирования можно условно разделить на два типа: кодирование (или обработка) сигнала и структурированные последовательности (или структурированная избыточность). Кодирование сигнала означает преобразование сигнала в некий "улучшенный сигнал", позволяющий сделать процесс детектирования менее подверженным ошибкам. Метод структурированных последовательностей - это преобразование последовательности данных в новую, "улучшенную последовательность", обладающую структурной избыточностью (которая вмещает избыточные биты). Эти избыточные разряды служат для определения и исправления ошибок. На выходе процедуры кодирования получается закодированный (формой сигнала или структурированной последовательностью) сигнал, имеющий лучшие пространственные характеристики, чем некодированный. В нашей задаче применяется кодирование структурированной последовательностью. Структурированные последовательности делятся на три подкатегории: блочные, свёрточные и турбокоды. Коды, применяемые в нашей задаче, относятся к блочным[2].

При использовании блочных кодов исходные данные делятся на блоки из k бит, которые иногда называют информационными битами, или битами сообщения; каждый блок может представлять любое из  отдельных сообщений. В процессе кодирования каждый k-битовый блок данных преобразуется в больший блок из n бит, который называется кодовым битом, или канальным символом. К каждому блоку данных кодирующее устройство прибавляет  бит, которые называются избыточными битами, битами четности, или контрольными битами; новой информации они не несут. Для обозначения описанного кода используется запись . Отношение числа избыточных бит к числу информационных бит, , называется избыточностью кода; отношение числа бит данных к общему числу бит, , именуется степенью кодирования. Под степенью кодирования подразумевается доля кода, которая приходится на полезную информацию. Например, в коде со степенью , каждый кодовый бит несет  бит информации.

Первый используемый в задаче код это проверка на четность. Коды с контролем четности для обнаружения или исправления ошибок используют линейные суммы информационных битов, которые называются символами, или битами четности. Код с одним контрольным битом - это прибавление к блоку информационных битов одного контрольного бита. Этот бит (бит четности) может быть равен нулю или единице, причем его значение выбирается так, чтобы сумма всех битов в кодовом слове была четной или нечетной. В операции суммирования используется арифметика по модулю 2 (операция исключающего ИЛИ). Если бит чётности выбран так, что результат чётный, то говорят, что схема имеет положительную чётность; если при добавлении бита чётности результирующий блок данных является нечётным, то говорят, что он имеет отрицательную чётность. В нашей задаче используется код с положительной чётностью. Этот код не может исправить ошибку. С его помощью можно только обнаружить, что в кодовом символе присутствует нечетное количество ошибок. Если ошибка была внесена в четное количество бит, то проверка четности покажет отсутствие ошибок.

Линейные блочные коды - это класс кодов с контролем четности, которые можно описать парой чисел . В процессе кодирования блок из  символов сообщения (вектор сообщения) преобразуется в больший блок из  символов кодового слова (кодовый вектор), образованного с использованием элементов данного алфавита. Если алфавит состоит только из двух элементов (0 и 1), код является двоичным и включает двоичные разряды (биты).

-битовые сообщения формируют набор из  последовательностей сообщения, называемых -кортежами (последовательностями  цифр), -битовые блоки могут формировать  последовательности, также именуемые -кортежами. Процедура кодирования сопоставляет с каждым из  -кортежей сообщения один из  -кортежей. Блочные коды представляют взаимно однозначное соответствие. Для линейных кодов преобразование отображения является, конечно же, линейным. Операции над двоичными компонентами производятся по правилам арифметики по модулю 2.

Возможности кода для исправления ошибок в первую очередь определяются его структурой. Весовой коэффициент Хэмминга  кодового слова  определяется как число ненулевых элементов в . Для двоичного вектора это эквивалентно числу единиц в векторе. Расстояние Хэмминга между двумя кодовыми словами  и , обозначаемое как , определяется как количество элементов, в которых они отличаются. Согласно свойствам сложения по модулю 2, можно отметить, что сумма двух двоичных векторов является другим двоичным вектором, двоичные единицы которого расположены на тех позициях, которыми эти векторы отличаются. Таким образом, можно видеть, что расстояние Хэмминга между двумя векторами равно весовому коэффициенту Хэмминга их суммы, то есть,

.

Также видно, что весовой коэффициент Хэмминга кодового слова равен его расстоянию Хэмминга до нулевого вектора.

В блочном коде, прежде чем исправлять ошибки, необходимо их обнаружить. (Или же код может использоваться только для определения наличия ошибок.) Возможность определения наличия ошибки дается следующим выражением . Блочный код с минимальным расстоянием гарантирует обнаружение всех моделей ошибок, содержащих  или меньшее число ошибочных бит. Способность кода к исправлению ошибок  определяется, как максимальное число гарантированно исправимых ошибок на кодовое слово, и записывается следующим образом

.

Возможность исправления ошибок следует из гарантированного максимума . Код можно использовать для одновременного исправления  и обнаружения  ошибок, причем , а минимальное расстояние кода дается следующим выражением

.

Наиболее известным линейным систематическим кодом является блоковый код Хэмминга. Коды Хэмминга - это простой класс блочных кодов. Систематический линейный блочный код  - это такое отображение -мерного вектора сообщения в -мерное кодовое слово, в котором часть генерируемой последовательности совмещается с  символами сообщения. Остальные  бит - это биты четности.

Количество контрольных разрядов  должно быть выбрано так, чтобы удовлетворялось неравенство . При строгом равенстве код называется оптимальным, иначе - неоптимальным.

Если в кодовой комбинации ошибки нет, то проверочное число содержит только нули. Если в низшем разряде числа стоит 1, это означает, что в результате первой проверки обнаружена ошибка. При первой проверке проверяются те номера позиции, двоичные представления которых имеют в младшем разряде единицы. Таким образом, первая проверка охватывает позиции 1, 3, 5, 7, 9, 11, 13 и т.д. Для второй проверки выбираются такие позиции, двоичные представления которых имеют единицу во втором разряде. Следовательно, вторая проверка будет охватывать позиции 2, 3, 6, 7, 10, 11, 14 и т.д. И так далее. Остается решить, какие позиции в коде целесообразно использовать для передачи информации, а какие - для проверки. Выбор для проверки позиций 1, 2, 4, 8 и т.д. имеет преимущество, состоящее в том, что каждая из этих позиций встречается только в одной проверяемой группе символов. Каждый контрольный бит является битом чётности для своей проверочной группы.

В имитаторе реализован код Хэмминга для исправления однократных ошибок. Для кодирования номера исходный байт с АЦП расширяется на количество проверочных бит. Номера позиций с единичными битами суммируются по модулю два и биты из полученного числа расставляются в позиции контрольных бит в кодируемом байте.

Важным подклассом линейных блочных кодов являются двоичные циклические коды[4]. Линейный код  называется циклическим, если он обладает следующим свойством. Если -кортеж  является кодовым словом в подпространстве S, тогда , полученный из с помощью циклического сдвига, также является кодовым словом в S. Или, вообще, , полученный  циклическими сдвигами, является кодовым словом в S.

Компоненты кодового слова  можно рассматривать как коэффициенты полинома :


Полиномиальную функцию  можно рассматривать как "заполнитель" разрядов кодового слова , т.е. вектор -кортежа описывается полиномом степени  или меньше. Наличие или отсутствие каких-либо членов в полиноме означает наличие 1 или 0 в соответствующем месте -кортежа. Если  компонент отличен от нуля, порядок полинома равен . В кодовых словах, выраженных в полиномиальной форме, циклическая природа кода проявляется следующим образом. Если  является кодовым словом, представленным полиномом порядка , то  - остаток от деления  на  - также является кодовым словом. Иными словами,


или, умножая обе части уравнения на ,

,

что в модульной арифметике можно описать следующим образом

.

Вектор сообщения можно записать в полиномиальной форме следующим образом . В систематической форме символы сообщения используются как часть кодового слова. Можно сдвинуть символы сообщения в  старших разряда кодового слова, а затем прибавить биты четности, разместив их в младшие  разряды. Таким образом, осуществляется алгебраическая манипуляция полинома сообщения, и он оказывается сдвинутым влево на  позиций. Если теперь умножить  на , мы получим сдвинутый влево полином сообщения

. (1)

Если далее разделить уравнение (1) на , результат можно представить в следующем виде

 (2)

Здесь остаток  записывается следующим образом

.

Также можно записать следующее

.

Прибавляя  к обеим частям уравнения (2) и используя сложение по модулю 2, получаем следующее

. (3)

Левая часть уравнения (3) является действительным полиномом кодового слова, так как это полином степени  или менее, который при делении на g(X) дает нулевой остаток. Это кодовое слово можно записать через все члены полинома

. (4)

В имитаторе реализован циклический код для исправления однократных ошибок. Кодирование осуществляется в соответствии с приведённым выше описанием. Для этого реализована функция деления полиномов по модулю два.

Также в имитаторе реализован код проверки чётности, который является специальным случаем циклического кода при полиноме . Алгоритм получения бита чётности состоит в суммировании по модулю два всех битов и записи полученного бита в конец к кодируемому байту.

1.2.5 Модуляция

Модуляция - это процесс, посредством которого символы сообщений или канальные символы (если используется канальное кодирование) преобразуются в сигналы, совместимые с требованиями, налагаемыми каналом передачи данных. Полосовая модуляция - это процесс преобразования информационного сигнала в синусоидальный сигнал. Синусоиды могут отличаться по амплитуде, частоте и фазе. Таким образом, полосовую модуляцию можно определить как процесс варьирования амплитуды, частоты или фазы (или их комбинаций) радиочастотной несущей согласно передаваемой информации. В общем виде несущая записывается следующим образом . Здесь  - переменная во времени амплитуда, а,  - переменный во времени угол. Угол удобно записывать в виде  так что

,

где  - угловая частота несущей, а  - ее фаза. Частота может записываться как переменная  или как переменная . В первом случае частота измеряется в герцах (Гц), во втором - в радианах в секунду (рад/с). Эти параметры связаны следующим соотношением . В нашей задаче реализуется частотная и амплитудная манипуляции.

Общее аналитическое выражение для частотно-манипулированного сигнала имеет следующий вид

.

Здесь частота  может принимать  дискретных значений (в нашем случае 2), а фаза  является произвольной константой. Схематическое изображение частотно-модулированного сигнала дано на рисунке 4, a. Здесь  и частоты манипулирования соответственно для нулевого и единичного бита. Амплитудно-манипулированный сигнал, изображенный на рисунке 4, б описывается выражением

,

где амплитудный член  может принимать М (в нашем случае 2) дискретных значений, а фазовый член  является произвольной константой. На рисунке 4, б  - это частота несущей.

Потенциальный сигнал, без применения модуляции изображён на рисунке 4, в.

На рисунке 4 приведена модулированная последовательность 101,  - это амплитуда модулированного сигнала, а  - скорость передачи бит[2][5].

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

,

где  и  - независимые случайные величины, равномерно распределённые на интервале (0, 1]. Плотность распределения вероятностей и выборка распределенных по нормальному закону величин представлены на рисунке 5.



1.2.6 Детектирование

Детектирование (демодуляция) - это процесс, обратный модуляции. Для цифрового сигнала вначале производится то, что можно назвать демодуляцией - восстановление сигнала в исходный сигнал, а потом в процессе детектирования осуществляется принятие решения относительно цифрового значения этого сигнала.

Для демодуляции АМ принятый полосовой сигнал преобразовывается в низкочастотный сигнал. Для этого в имитаторе реализована модель двухполупериодного детектора. Вначале модулированный сигнал проходит через нелинейный элемент, имеющий вольтамперную характеристику, представленную на рисунке 6.


Далее ФНЧ, стоящим после демодулятора отфильтровываются высокие частоты, а полученный сигнал оцифровывается. Принятие решения о цифровом значении сигнала, полученного после демодуляции, осуществляется путём сравнения элементов выборки демодулированного сигнала с некоторым пороговым значением.

Для фильтрации реализован цифровой фильтр, определяющийся следующим уравнением

, (5)

где  - отсчёты отфильтрованного сигнала,  - отсчёты нефильтрованного сигнала,  - период дискретизации, а , где  - постоянная времени фильтра.

Для демодуляции ЧМ принятый полосовой сигнал сначала преобразуется в АМ сигнал, а затем осуществляется АМ демодуляция. Для преобразования в АМ сигнал ЧМ сигнал пропускается через фильтр нижних частот, чтобы подавить более высокую частоту из двух частот присутствующих в ЧМ. В случае, когда большей частотой модулировался единичный бит после детектирования необходимо инвертировать оцифрованный сигнал.

1.2.7 Декодирование

Декодирование - это процесс, обратный помехоустойчивому кодированию.

Декодирование кода Хэмминга для исправления одиночных ошибок осуществляется аналогично тому, как получаются контрольные биты. Номера позиций единичных бит в закодированном байте суммируются по модулю два, полученное число указывает на номер ошибки в байте. Если имели место многократные ошибки, то декодирование может привнести в код дополнительные ошибки. В случае отсутствия ошибки после суммирования получается ноль.

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

Код проверки чётности позволяет лишь проверить, не присутствует ли в байте нечётное количество ошибок. При декодировании все биты вместе с контрольным битом суммируются по модулю два, если результат отличен от нуля, то в байте присутствует нечётное количество ошибок.

При всех видах декодирования после обнаружения и исправления ошибок контрольные биты удаляются из байта.

1.2.8 Цифро-аналоговое преобразование

Цифро-аналоговое преобразование позволяет преобразовать цифровой код в аналоговый сигнал. Полученные после декодирования байты представляют собой номер уровня квантования. Цифро-аналоговый преобразователь, в соответствии с динамическим диапазоном выдаёт на выход значение аналогового напряжения для данного дискрета. Значение берется посередине интервала для данного уровня. Полученный дискретизированный сигнал подаётся на ФНЧ (цифровой фильтр, соответствующий формуле (5)), стоящий после АЦП. После фильтра получается восстановленный сигнал.

1.3  Разработка структуры программного обеспечения


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

Основной модуль является главным в структуре программного имитатора. Модуль обрабатывает осведомительные сигналы и данные от одних модулей, вырабатывает управляющие сигналы для других модулей и руководит работой программного комплекса в целом.

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

Блок моделирования работы ПЧИ предназначен для моделирования работы ПЧИ на основе данных, введенных пользователем. Работа блоков моделирования основана на приведенных в разделе 1.2 принципах работы блоков интерфейса.

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

Модуль настройки окружения осуществляет настройки программного обеспечения при первом его запуске. Осуществляется выбор места хранения данных пользователей и установка привилегированного пароля.

При аутентификации происходит сравнение полученных идентификаторов с хранящейся в системе информацией. Эта информация формируется на основе полученных идентификаторов, используя .  - это односторонний алгоритм хеширования, предназначенный для создания 32-разрядных контрольных сумм. Восстановление данных по  строке возможно только методом перебора. Для затруднения взлома применяется алгоритм усложнения пароля - накладывание соли. Для каждого пользователя хранится хеш-сумма. и при аутентификации сравнивается с вновь полученной. Привилегированный пароль, протоколы работы защищается этим же способом.

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

Рисунок 7. - Структура ПО

1.4  Разработка интерфейса пользователя


Интерфейс пользователя служит для спецификации параметров элементов системы, которые видимы извне (пользователю), без указания их внутренней структуры.

Для элементов, модулирующих работу отдельных блоков системы в интерфейс включены параметры, настраиваемые пользователем, тип входных и выходных данных.

Для генератора аналогового сигнала в интерфейс входят: вид сигнала, амплитуда, частота, скважность (для прямоугольного сигнала). Выходными данными является аналоговый сигнал.

Для цифро-аналогового преобразователя в интерфейс входят: разрядность, частота дискретизации и объём сообщения, выраженный в отсчётах. Входными данными является аналоговый сигнал. Выходными данными являются оцифрованные значения сигнала.

Для помехоустойчивого кодера в интерфейс входят: вид кодирования, порождающий полином (для циклического кодирования). Входными данными является цифровой код полученный с АЦП. Выходными данными является цифровой код с АЦП, расширенный проверочными битами.

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

Для канала связи в интерфейс входят скорость передачи и параметры помехи (математическое ожидание, среднеквадратическое отклонение) в канале связи. Входными данными является моделированный сигнал. Выходными данными является моделированный сигнал, подвергшийся помехам.

Для детектора в интерфейс входят: уровень детектирования, коэффициент усиления и частота среза фильтра. Входными данными является зашумлённый моделированный сигнал. Выходными данными является детектированный сигнал в виде цифровых данных.

Для декодера в интерфейс входят параметры кодирования. Входными данными является детектированный код. Выходными данными является декодированный код, соответствующий оцифрованной версии принятого сигнала.

Для цифро-аналогового преобразования в интерфейс входят параметры ЦАП и частота среза фильтра. Входными данными является оцифрованный сигнал. Выходными данными является принятый аналоговый сигнал.

При аутентификации и авторизации в интерфейс входят два идентификатора - логин (регистрационное имя пользователя) и пароль (некая конфиденциальная информация).

Для модуля настройки окружения в интерфейс входит путь к директории с пользовательскими настройками и привилегированный пароль.

Для модуля загрузки и сохранения тестовых параметров в интерфейс входит пароль на привилегированный режим.

Для модуля загрузки и сохранения параметров системы в интерфейс входит имя, под которым сохраняются параметры системы.

Для модуля сохранения результатов работы в интерфейс входит имя, под которым сохраняются результаты работы и тип приёмника сохраняемой информации (файл или буфер обмена).

Для модуля ведения протокола работы в интерфейс входит имя протокола работы.

1.5  Диаграмма прецедентов


Диаграммы прецедентов описывают функциональное назначение системы или то, что система должна делать. Разработка диаграммы прецедентов[6] преследует следующие цели:

·  определить общие границы и контекст моделируемой предметной области;

·        сформулировать общие требования к функциональному поведению проектируемой системы;

·        разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей;

·        подготовить исходную документацию для взаимодействия разработчиков системы с ее заказчиками и пользователями.

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

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

Цель варианта использования заключается в том, чтобы определить законченный аспект или фрагмент поведения некоторой сущности без раскрытия её внутренней структуры. В качестве такой сущности может выступать система или любой элемент модели, который обладает собственным поведением.

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

Варианты использования могут применяться как для спецификации внешних требований к проектируемой системе, так и для спецификации функционального поведения уже существующей системы. Множество вариантов использования в целом должно определять все возможные стороны ожидаемого поведения системы. Кроме этого, варианты использования неявно устанавливают требования, определяющие, как актеры должны взаимодействовать с системой, чтобы иметь возможность корректно работать с предоставляемыми сервисами.

В проектируемой системе можно определить следующий набор вариантов использования.

Настройка окружения при первом запуске. Этот прецедент необходим для корректной работы системе и выполняется первым.

Регистрация нового пользователя. Этот прецедент предоставляет возможность зарегистрировать нового для системы пользователя.

Аутентификация и авторизация пользователя. Этот прецедент позволяет пользователя представиться системе и начать работу с ней.

Завершение работы. Этот прецедент предоставляет возможность корректно завершить работу системы.

Завершение сеанса пользователя. Этот прецедент предоставляет возможность корректно завершить работу текущего пользователя.

Загрузка и сохранение настроек. Это прецедент предоставляет возможность сохранения текущего состояния системы для последующего его восстановления.

Загрузка тестовых настроек. Это прецедент предоставляет возможность проверки корректной работы системы в целом и отдельных модулей в частности.

Установка параметров модулей. Этот прецедент предоставляет возможность настроить модули, входящие в систему.

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

Просмотр протоколов работы. Этот прецедент предоставляет возможность ознакомиться с действиями пользователя во время работы с системой.

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

Актеры взаимодействуют с системой посредством обмена сообщениями с вариантами использования. Сообщение представляет собой запрос актером определенного сервиса системы и получение этого сервиса. Это взаимодействие может быть выражено посредством ассоциаций между отдельными актерами и вариантами использования или классами. Кроме этого, с актерами могут быть связаны интерфейсы, которые определяют, каким образом другие элементы модели взаимодействуют с этими актерами.

Два и более актера могут иметь общие свойства, то есть взаимодействовать с одним и тем же множеством вариантов использования одинаковым образом. Такая общность свойств и поведения представляется в виде отношения обобщения с другим, возможно, абстрактным актером, который моделирует соответствующую общность ролей.

В проектируемой системе можно определить следующий набор актёров.

Неавторизованный пользователь. Этот актёр представляет неавторизованного пользователя, который взаимодействует с системой.

Авторизованный пользователь. Этот актёр представляет пользователя, наделённого некоторыми расширенными правами по работе с системой.

Между элементами диаграммы вариантов использования могут существовать различные отношения, которые описывают взаимодействие экземпляров актеров и вариантов использования.

В языке UML существует несколько стандартных видов отношений между актерами и вариантами использования:

·        ассоциации (association relationship);

·        расширения (extend relationship);

·        обобщения (generalization relationship);

·        включения (include relationship).

Применительно к диаграммам вариантов использования ассоциация устанавливает, какую конкретную роль играет актер при взаимодействии с экземпляром варианта использования. На диаграмме вариантов использования отношение ассоциации обозначается сплошной линией между актером и вариантом использования. Направленная ассоциация - то же что и простая ассоциация, но показывает, что вариант использования инициализируется актером. Обозначается стрелкой.

В проектируемой системе актёр «Неавторизованный пользователь» связан направленной ассоциацией с тремя вариантами использования. Это «Регистрация нового пользователя», «Аутентификация и авторизация пользователя» и «Настройка окружения при первом запуске».

Актёр «Авторизованный пользователь» связан направленной ассоциацией с оставшимися прецедентами.

Отношение расширения между вариантами использования обозначается пунктирной линией со стрелкой (вариант отношения зависимости), направленной от того варианта использования, который является расширением для исходного варианта использования. Данная линия со стрелкой помечается ключевым словом «extend» (расширяет).

Отношение расширения отмечает тот факт, что один из вариантов использования может присоединять к своему поведению некоторое дополнительное поведение, определенное для другого варианта использования. Данное отношение включает в себя некоторое условие и ссылки на точки расширения в базовом варианте использования. Чтобы расширение имело место, должно быть выполнено определенное условие данного отношения. Ссылки на точки расширения определяют те места в базовом варианте использования, в которые должно быть помещено соответствующее расширение при выполнении условия.

Один вариант использования может быть расширением для нескольких базовых вариантов, а также иметь в качестве собственных расширений несколько других вариантов. Базовый вариант использования может дополнительно никак не зависеть от своих расширений.

В проектируемой системе отношение расширения не используется.

Отношение обобщения служит для указания того факта, что некоторый вариант использования А может быть обобщен до варианта использования В. В этом случае вариант А будет являться специализацией варианта В. При этом, В называется предком или родителем по отношению А, а вариант А - потомком по отношению к варианту использования В. Потомок наследует все свойства и поведение своего родителя, а также может быть дополнен новыми свойствами и особенностями поведения. Графически данное отношение обозначается сплошной линией со стрелкой в форме незакрашенного треугольника, которая указывает на родительский вариант использования.

Между отдельными актерами также может существовать отношение обобщения. Данное отношение является направленным и указывает на факт специализации одних актеров относительно других.

В проектируемой системе отношение вариантами использования «Завершение сеанса пользователя» обобщён до варианта использования «Завершение работы», так как первый представляет собой специализированным вариантом второго.

Отношение включения между двумя вариантами использования указывает, что некоторое заданное поведение для одного варианта использования включается в качестве компонента в последовательность поведения другого варианта использования.

Отношение включения, направленное от варианта использования А к варианту использования В, указывает, что каждый экземпляр варианта А включает в себя функциональные свойства, заданные для варианта В. Эти свойства специализируют поведение соответствующего варианта А на данной диаграмме. Графически данное отношение обозначается пунктирной линией со стрелкой, которая помечается ключевым словом «include» (включает).

В проектируемой системе отношение включения не используется.

Диаграмма прецедентов проектируемой системы изображена на рисунке 8.

К возможным рискам при функционировании ПО можно отнести следующие риски.

Установка пользователем некорректных параметров для различных блоков ПО. Меры по предупреждению: контролировать вводимые пользователем параметры, информировать пользователя о некорректности ввода.

Недостаток ресурсов на рабочих станциях для работы приложения. Меры по предупреждению: оптимизация использования ресурсов рабочих станций, информирование пользователя о недостатке ресурсов.

Запрос функций ПО в некорректной последовательности. Меры по предупреждению: запретить выполнение функций ПО в некорректной последовательности, информировать пользователя о невозможности выполнить на данном этапе запрашиваемую функцию ПО.

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

Возможные аппаратные или системные сбои. Меры по предупреждению: контролировать возникновение сбоев, информировать пользователя.

Рисунок 8. - Диаграмма прецедентов

1.6  Разработка графической оболочки


Графический интерфейс пользователя - система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана (окон, значков, меню, кнопок, списков и т.п.).

Графический интерфейс пользователя проектировался на основе форм Delphi [7]. Он состоит из 16 форм и предоставляет пользователю возможность ввода, вывода и просмотра информации при работе с имитатором.

Форма настройки окружения при первом запуске представлена на рисунке 9.

Рисунок 9. - Первый запуск

Форма аутентификации пользователя представлена на рисунке 10.

Рисунок 10. - Аутентификация

Главная форма, необходимая для запуска остальных форм, представлена на рисунке 11. Выбор действия может осуществляться пользователем через пункты меню главной формы и кнопками на панели инструментов. Подтверждение ввода параметров в текстовые поля осуществляется нажатием после ввода клавиши «Enter». Для многих графических элементов на формах доступны подсказки при наведении курсора на них.

Рисунок 11. - Главная форма

Меню «Файл» изображено на рисунке 12.

Рисунок 12. - Меню «Файл»

Формы для загрузки и сохранения текущих параметров блоков интерфейса представлены на рисунке 13.

  

Рисунок 13. - Загрузка и сохранение настроек

Меню «Сигнал» изображено на рисунке 14.

Рисунок 14. - Меню «Сигнал»

Меню «АЦП» изображено на рисунке 15.

Меню «Кодер», «Модулятор», «Детектор», «Декодер» изображены на рисунке 16.

Рисунок 15. - Меню «АЦП»

Рисунок 16. - Меню «Кодер», «Модулятор», «Детектор», «Декодер»

Меню «Канал» изображено на рисунке 17.

Рисунок 17. - Меню «Канал»

Меню «Тест» изображено на рисунке 18.

Рисунок 18. - Меню «Тест»

Меню «Справка» изображено на рисунке 19.

Рисунок 19. - Меню «Справка»

Форма входа в привилегированный режим представлена на рисунке 20.

Рисунок 20. - Привилегированный режим

Для задания параметров сигнала предназначена форма на рисунке 21. В группе «Вид сигнала» производится выбор вида сигнала: «Гармонический», «Прямоугольный импульс», «Треугольный». В соответствующих текстовых окнах можно задать значения амплитуды и частоты. На графике отображается период сигнала. Кнопка «Амплитудный спектр» служит для запуска вычисления спектра сигнала.

Рисунок 21. - Параметры сигнала

Параметры аналого-цифрового преобразователя задаются в соответствующих текстовых окнах формы на рисунке 22.

В диалоговом окне на рисунке 23 выбирается тип кодирования, в группе «Тип кодера»: «Проверка на четность», «Код Хэмминга для исправления однократных ошибок», «Циклический код для исправления однократных ошибок» и вариант «Без кодирования». В случае выбора циклического кода, флажками в группе «Полином» задаётся полином. Нумерация разрядов слева направо.

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

Рисунок 22. - Параметры АЦП

Рисунок 23. - Параметры кодера

Выбор параметров манипуляции осуществляется на форме, представленной на рисунке 25. В группе «Манипуляция» осуществляется выбор вида манипуляции: «Амплитудная», «Частотная» и «Без манипуляции». Соответствующие параметры манипуляции задаются в текстовых окнах. Параметры детектирования задаются в текстовых окнах на форме, представленной на рисунке 26.

Рисунок 24. - Параметры канала передачи

Рисунок 25. - Параметры манипуляции

Рисунок 26. - Параметры детектирования

Все текущие параметры можно просмотреть на форме, изображённой на рисунке 27. Для сохранения параметров доступно, при нажатии правой кнопки манипулятора курсора, всплывающее меню, изображённое на рисунке 28.

Просмотр статистики осуществляется на форме, представленной на рисунке 29.

Для окна статистики доступно, по правой кнопке манипулятора курсора, меню для сохранения статистики, изображённое на рисунке.

Просмотр протоколов работы осуществляется на форме, представленной на рисунке 30.

Форма на рисунке 31 служит для отображения различных диаграмм. Включает в себя две смежные области для отображения графиков [8]. Для каждого графика доступно, при нажатии правой кнопки манипулятора курсора, всплывающее меню для сохранения графика, изображённое на рисунке 32.

Над графиками отображаются их названия. Два текстовых поля в левом углу графика служат для задания границ по оси Y. Масштаб по оси X задается в текстовом поле под графиком. Для навигации по оси X на величину масштаба служит группа кнопок под диаграммами.

Форма на рисунке 33 служит для отображения табличных данных в смежных таблицах. В текстовом поле масштаб устанавливается количество строк в таблице. Навигация осуществляется аналогично форме с диаграммами. Смежных таблиц может быть две или три. Для таблиц доступно, при нажатии правой кнопки манипулятора курсора, всплывающее меню для сохранения данных, изображённое на рисунке 28.

Для изменения размера диаграмм, таблиц по их общей границе используются разделители, выделенные чёрным цветом.

Рисунок 27. - Просмотр текущих параметров

Рисунок 28. - Контекстное меню

Рисунок 29. - Просмотр статистики

Рисунок 30. - Протоколы работы

Рисунок 31. - Диаграммы

Рисунок 32. - Меню диаграммы

Рисунок 33. - Таблицы для отображения бит

1.7  Разработка методики работы с программным обеспечением

кодирование программный имитатор канал связь

Разработанное программное обеспечение предназначено для проведения лабораторных работ по помехоустойчивому кодированию. ПО даёт возможность сымитировать работу всех блоков участвующих в передаче информации через канал связи. Начиная с генератора аналогового сигнала и заканчивая цифро-аналоговым преобразователем. С помощью ПО пользователь может ознакомиться с аналого-цифровым преобразованием аналоговой информации, с различными видами модуляции (амплитудная, частотная), различными видами помехоустойчивого кодирования (код Хэмминга, циклический код, проверка на чётность), с детектированием модулированного сигнал, с декодированием полученного кода и получением передаваемого сигнала после цифро-аналогового преобразования.

1.7.1
Установка и удаление программного обеспечения

ПО поставляется в виде установочного модуля checc_setup.exe для систем Windows, сделанного с помощью программы Inno Setup 5.3.9. Во время установки, можно изменить некоторые параметры, такие как: директория для установки, название программы в меню программ, создаваемые ярлыки к программе. Для удаления программы следует воспользоваться стандартными средствами Windows. Пользовательские данные и при этом не удаляются. Удаление пользовательских данных осуществляется при запуске программы с помощью ярлыка «Удаление пользовательских данных», для удаления требуется привилегированный пароль.

1.7.2 Работа с программным обеспечением

Работа с ПО осуществляется в графической среде операционной системы Windows (XP, Vista, Seven). Также возможен запуск в системах семейства UNIX с использованием альтернативной реализации Windows API - WineHQ.

При первом запуске программы осуществляется настройка параметров, необходимых для дальнейшей работы. В открывшемся окне «Путь к профайлам» - это путь к папке c настройками пользователей, по указанному пути создастся папка «checc», где и будут храниться настройки. Путь можно указать вручную, либо с помощью диалога, нажав на кнопку рядом с текстовым окном. «Привилегированный пароль» - это пароль, вводимый для подтверждения установки тестовых настроек и при удалении протокола работы. Директорию для хранения профайлов пользователей следует выбирать в месте, доступ к которому не ограничен. Завершается настройка кнопкой «Войти».

После этого и при последующих запусках ПО осуществляется аутентификация и авторизация пользователя. В открывшемся окне предлагается ввести имя и пароль пользователя. При нажатии на ссылку «Новый пользователь» создаётся пользователь с указанными данными. При нажатии на кнопку «Войти» осуществляются процедуры аутентификации и авторизации пользователя с указанными данными. При ошибке аутентификации пользователю выдаётся предупреждение. После авторизации открывается главная форма.

Доступ к основным функциям осуществляется через меню и панель управления главного окна.

Существует два варианта установки различных параметров программы. Первым способом является выбор из ограниченного множества значений. Это осуществляется с помощью радиокнопок и флажков. Вторым способом является ввод числовых данных в текстовые окна. Подтверждения введённых вторым способом данных осуществляется нажатием кнопки «Enter». При правильном вводе изменяемый параметр подсвечивается зелёным, при ошибочном вводе - красным.

Окна по настройке параметров открываются в модальном режиме. Остальные окна до закрытия модального окна не доступны для манипуляторов. Закрытие окон осуществляется нажатием кнопки «Выход» (для главной формы через меню «Файл») или системными сочетаниями клавиш .

Окно отображения диаграмм представляет собой форму с двумя областями для отображения графиков в декартовой системе. Для удобства можно изменять размеры области занимаемой каждым графиком делается это с помощью разделителя, размещённого между графиками и выделенного чёрным цветом. Разделитель, выделяется левой кнопкой манипулятора курсора и перемещается в нужную сторону. Для графиков можно установить масштаб по оси  в единицах графика. Это сделано для разбиения графика на страницы, для экономии расхода оперативной памяти во время отрисовки графика и для возможности просмотра отдельных частей графика. Навигация по страницам осуществляется с помощью четырёх кнопок: «Первая», «Последняя», «Вперёд», «Назад». Также для каждого графика можно установить масштаб по оси  Для этого нужно задать минимальное и максимальное значение. Текущее положение манипулятора курсора в координатах графика отображается в заголовке окна слева. Для этого окна определён набор комбинаций клавиш клавиатуры:

·        «» - действует только для графика детектированного сигнала и отображает или скрывает линию, означающую уровень детектирования.

·        «» - увеличивает толщину линии, которой рисуется график (ограничено 10 пикселями).

·        «» - уменьшает толщину линии, которой рисуется график.

Окно отображения табличных данных представляет собой область с двумя или тремя смежными таблицами. Для удобства можно изменять размеры области занимаемой каждой таблицей делается это с помощью разделителей, размещённых между таблицами и выделенных чёрным цветом. Разделитель, выделяется левой кнопкой манипулятора курсора и перемещается в нужную сторону. Для таблиц можно установить масштаб - количество строк данных. Это сделано для разбиения таблицы на страницы, для экономии расхода оперативной памяти во время отрисовки таблиц и для удобного размещения на экране. О значении данных можно узнать из заголовка, присутствующего у каждой таблицы. При наведении указателя манипулятора курсора на ячейку отображается доступная по этой ячейка информация.

Для окон отображения диаграмм и табличных данных доступно масштабирование.

Окно настройки параметров генератора сигнала можно вызвать через меню «Сигнал»«Параметры» или кнопкой панели инструментов . Выбор типа сигнала осуществляется радиокнопками, остальные параметры вводятся в текстовые окна.

Окно настройки параметров помехоустойчивого кодирования и декодирования можно вызвать через меню «Кодер»«Параметры», «Декодер»«Параметры» или кнопкой панели инструментов . Выбор типа кодера осуществляется радиокнопками, остальные параметры вводятся в текстовые окна.

Окно настройки параметров модуляции можно вызвать через меню «Модулятор»«Параметры» или кнопкой панели инструментов . Выбор вида модуляции осуществляется радиокнопками, остальные параметры вводятся в текстовые окна.

Окно настройки параметров канала связи можно вызвать через меню «Канал»«Параметры» или кнопкой панели инструментов . Ввод параметров осуществляется с помощью текстовых окон.

Окно настройки параметров детектирования можно вызвать через меню «Детектор»«Параметры» или кнопкой панели инструментов . Ввод параметров осуществляется с помощью текстовых окон.

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

После настройки параметров всех модулей можно осуществлять моделирование работы канала связи.

Моделирование работы осуществляется в следующей последовательности:

.        Аналого-цифровое преобразование, которое можно запустить через меню «АЦП»«Моделировать» или кнопкой панели инструментов . Для отображения результатов работы АЦП открывается окно отображения диаграмм. На первой диаграмме отображается дискретные значения сигнала. На второй - квантованные значения.

.        Помехоустойчивое кодирование, которое можно запустить через меню «Кодер»«Моделировать» или кнопкой панели инструментов . Для отображения результатов работы кодера открывается окно отображения табличных данных. В первой таблице отображаются байты, пришедшие с АЦП. При этом старший бит отображается слева. Байты и биты пронумерованы. Во второй таблице отображаются кодированные байты, полученные с декодера. Проверочные биты выделены синим цветом.

.        Модуляция, которую можно запустить через меню «Модулятор»«Моделировать» или кнопкой панели инструментов . Для отображения результатов модуляции открывается окно отображения диаграмм. На первой диаграмме отображается зашумлённый модулированный сигнал. На второй - помеха.

.        Детектирование, которое можно запустить через меню «Детектор»«Моделировать» или кнопкой панели инструментов . Для отображения результатов детектирования открывается окно отображения диаграмм. На первой диаграмме отображается детектированный сигнал. На второй - зашумлённый модулированный сигнал.

.        Помехоустойчивое декодирование, которое можно запустить через меню «Декодер»«Моделировать» или кнопкой панели инструментов . Для отображения результатов работы декодера открывается окно отображения табличных данных. В первой таблице отображаются байты, пришедшие с АЦП. При этом старший бит отображается слева. Байты и биты пронумерованы. Во второй таблице отображаются байты, полученные с детектора. Проверочные биты выделены синим цветом. Ошибочные биты, которые будут исправлены, выделены зелёным цветом. Ошибочные биты, которые не будут исправлены, выделены красным цветом. Биты, которые по ошибке исправит декодер, выделены оранжевым цветом. Если в байте присутствует ошибка, то номер байта выделяется красным цветом. Ошибочные байты, ошибка в которых была исправлена (третья таблица), выделены зелёным цветом. Для кода проверки на чётность ошибки не исправляются, соответственно оранжевый и зелёный цвета для этого типа кодирования не применяются.

.        Цифро-аналоговое преобразование, которое можно запустить через меню «Сигнал»«Принятый» или кнопкой панели инструментов . Для отображения результатов детектирования открывается окно отображения диаграмм. На первой диаграмме отображается корреляционная функция восстановленного и исходного сигнала. На второй - исходный и восстановленный сигналы. Принятый сигнал отображается синим цветом.

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

·        Проверка работы АЦП осуществляется через меню «АЦП»«Проверка». В ходе проверки осуществляется цифро-аналоговое преобразование цифровых данных полученных с АЦП. Отображение осуществляется аналогично отображению сигнала после декодирования.

·        Просмотр статистики осуществляется через меню «Справка»«Статистика». Все характеристик, кроме числа единичных бит после кодирования, вычисляются после декодирования. В статистике отображены в битах и в процентах от общего количества: исправленные биты, корректно исправленные биты, некорректно исправленные биты, неисправленные биты, ошибочные биты, верно переданные биты. Также при отображении статистики выводится общее количество бит после АЦП, после кодера и количество единичных бит после кодера, для определения уровня детектирования.

·        Сохранение результатов работы. Для этого на формах отображения диаграмм и табличных данных, форме статистики, форме просмотра текущих параметров доступно всплывающее меню, по правой кнопке манипулятора курсора. С помощью пункта меню «В файл» можно сохранить в файл изображение окна (тип файла BITMAP) или текст (тип файла TEXT). Для диаграмм доступно только сохранение изображения. Кроме сохранения в файл те же данные можно сохранить в буфер обмена. Для этого доступны элементы меню «В буфер обмена» (для диаграмм), «Текст в буфер обмена», «Изображение в буфер обмена».

·        Сохранение текущих параметров всех модулей осуществляется через меню «Файл»«Сохранить настройки». Настройки сохраняются с именем заданным пользователем в текстовом окне открывшегося диалога, именем по умолчанию является дата авторизации.

·        Загрузка сохранённых параметров всех модулей осуществляется через меню «Файл»«Загрузить настройки». В диалоговом окне можно выбрать для загрузки настройки, до этого сохранённые пользователем.

·        Загрузка тестовых параметров осуществляется через меню «Тест»«Загрузить тестовые параметры». Для загрузки требуется ввести привилегированный пароль. После загрузки у всех модулей установлены тестовые параметры. Если тестовые параметры не могут быть загружены, устанавливаются начальные тестовые параметры.

·        Сохранение тестовых параметров осуществляется через меню «Тест»«Сохранить тестовые параметры». Для сохранения требуется ввести привилегированный пароль. После сохранения текущие параметры модулей становятся тестовыми. После загрузки тестовых параметров можно провести все действия из раздела по моделированию работы канала. После моделирования на начальных тестовых параметрах должна получиться следующая статистика.

Ø Исправленных бит 8,4% (135 бит)

ü  корректно 5,9% (95 бит)

ü  некорректно 2,5% (40 бит)

Ø Неисправленных бит 9,1% (145 бит)

Ø  Всего ошибочных бит 11,6% (185 бит)

Ø  Всего верно переданных 88,4% (1415 бит)

Ø  Всего бит после АЦП 1600 бит

Ø  Процент '1' (после кодера) 51,0% (1225 бит)

Ø  Всего бит после кодера 2400 бит

·        Загрузка параметров по умолчанию осуществляется через меню «Тест»«Загрузить параметры по умолчанию». Для загрузки требуется ввести привилегированный пароль. После загрузки у всех модулей установлены параметры по умолчанию. Параметры по умолчанию загружаются также при авторизации пользователя. Если параметры по умолчанию не могут быть загружены, устанавливаются начальные параметры по умолчанию.

·        Сохранение параметров по умолчанию осуществляется через меню «Тест»«Сохранить параметры по умолчанию». Для сохранения требуется ввести привилегированный пароль. После сохранения текущие параметры модулей становятся параметрами по умолчанию.

·        Просмотр протоколов работы осуществляется через меню «Файл»«Протоколы работы». Выбор протокола осуществляется с помощью выпадающего списка. Текущий протокол находится в конце списка. Управление осуществляется кнопками «Смотреть» и «Удалить». Если файл протокола был изменён с момента сохранения, то под протоколом будет отображено предупреждение. Для удаления требуется ввод привилегированного пароля.

·        Просмотр краткой информации о программе осуществляется через меню «Справка»«О программе». Также в разделе «Обратная связь» присутствует ссылка на адрес электронной почты для обращения за поддержкой. По ссылке открывается установленный в операционной системе почтовый клиент. Адрес электронной почты можно скопировать в буфер обмена через всплывающее меню «Копировать», появляющееся при правом клике по ней.

·        Просмотр данной методики работы с данным программным обеспечением осуществляется через меню «Справка»«Методика работы». Справочный материал открывается в веб-обозревателе.

·        Завершение работы программы осуществляется через меню «Файл»«Завершить работу программы». Сохраняется протокол работы и программа завершается

·        Завершение сеанса пользователя осуществляется через меню «Файл»«Завершить сеанс пользователя» выполняется то же, что и при завершении работы программы, только программа запускается снова, с предложением авторизации.

1.8  Примеры работы программного обеспечения имитатора


Установка программного обеспечения

Была произведена установка программы checc на компьютер с операционной системой Windows XP SP3.

Настройка окружения программы

При первом запуске настроены параметры программы. Путь к профайлам пользователей задан директорией, где установлена программа. Привилегированный пароль установлен в значение 123.

Создание нового пользователя и аутентификация

Создан новый пользователь с именем user1 и паролем user1. Произведена аутентификация пользователя user1 в системе.

Установка параметров блоков интерфейса

Выбран синусоидальный сигнала и установлены параметры: амплитуда 5 В и частота 10 Гц. Для АЦП установлены следующие параметры: разрядность 8 бит, частота дискретизации 100 Гц и число отсчётов 100. Для ЦАП установлена частота среза ФНЧ 15 Гц. Для кодирования выбран код Хэмминга для исправления однократных ошибок. Выбрана амплитудная манипуляция с частотой несущей 100 Гц и амплитудой несущей 5 В. Установлена скорость передачи в канале связи 10 бит/с. Заданы параметры помехи: математическое ожидание: 0 В и среднеквадратическое отклонение 2,05 В. Установлены параметры детектора: Уровень детектирования 50%, коэффициент усиления 1,65, частота среза ФНЧ детектора 10 Гц. Для проверки введённых значений осуществлён просмотр всех текущих параметров.

Моделирование работы интерфейса

Произведено моделирование работы АЦП и получены диаграммы дискретных и квантованных значений сигнала. Это сто значений синусоидального сигнала взятых с частой дискретизации 100 Гц, то есть через каждые 10 мс. Для проверки работы АЦП произведено восстановления сигнала через меню «АЦП»«Проверка». На полученном графике видно, что форма исходного и принятого восстановленного сигнала совпадают. Произведено моделирование работы помехоустойчивого кодера. Для кодирования 8 битовой исходной информации с АЦП кодер вычисляет значение 4 проверочных бит для всех 100 отсчётов. Исходные значения кодированных уровней с АЦП в бинарном представлении и закодированных помехоустойчивым кодированием отображаются в двух таблицах. Проверочные биты выделяются синим цветом. Произведено моделирования модуляции. Амплитудно-модулированные биты с кодера и помеха отображаются на диаграмме. За одну секунду, в соответствии с установленными параметрами передается 10 бит. Всего бит , следовательно, передача осуществляется за 120 с. Произведено детектирование принятого из канала сигнала, получены графики зашумлённого модулированного и детектированного сигналов. Произведено помехоустойчивое декодирование. Получены таблицы с битами после АЦП, детектора, декодера. Согласно статистике: исправленных бит 3,1%, корректно 2,7%, некорректно 0,4%, неисправленных бит 1,1%, всего ошибочных бит 1,5%, всего верно переданных 98,5%, процент '1' (после кодера) 55%. Осуществлён просмотр принятого сигнала. На графике видно искажение формы сигнала.

Сохранение результатов

Все графики и таблицы сохранены с помощью всплывающего меню в графические файлы. Статистика сохранена в текстовый файл.

Завершение работы

Через меню «Файл»«Сохранить настройки» произведено сохранение настроек с именем «пример работы ПО». Завершение работы с программой осуществлено через меню «Файл»«Завершение работы».

2.      ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ


2.1  Информационный поиск


Для имитации работы цифрового канала связи с применением помехоустойчивого кодирования можно использовать различные программы моделирования. Наиболее распространёнными из них являются MATLAB и интегрированный с ним Simulink.

MATLAB - это высокопроизводительный язык для технических расчётов. Он включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование MATLAB - это:

·  математические вычисления,

·        создание алгоритмов,

·        моделирование,

·        анализ данных, исследование и визуализация,

·        научная и инженерная графика,

·        разработка приложений, включая создание графического интерфейса.

Simulink - интерактивный инструмент для моделирования, имитации и анализа динамических систем. Он дает возможность строить графические блок-диаграммы, имитировать динамические системы, исследовать работоспособность систем. Примером ПО из исследуемой предметной области может являться разработанная в среде моделирования MATLAB Simulink модель COMMLIB. Модель разработана в Ульяновском государственном техническом университете.

В связи с тем, что ПО разрабатывалось для проведения лабораторных работ, с целью изучения конкретной предметной области, основным преимуществом разработанного ПО является то, что для его применения не требуется изучать системы моделирования. Кроме того разработанное ПО выполняет задачи, как правило, не присущие системам моделирования. Это организация раздельное работы пользователей, хранение информации о работе пользователя, удобный графический интерфейс.

2.2  Выбор и обоснование вида интерфейса пользователя


Интерфейс пользователя - комплекс программных и аппаратных средств для обеспечения информационного взаимодействия техники (компьютера и др.) и пользователя.

Наиболее распространённые виды интерфейсов[9]:

·  Текстовый пользовательский интерфейс (ТПИ) - разновидность интерфейса пользователя, использующая при вводе-выводе и представлении информации исключительно набор буквенно-цифровых символов и символов псевдографики. Характеризуется малой требовательностью к ресурсам аппаратуры ввода-вывода (в частности, памяти) и высокой скоростью отображения информации, поэтому широко использовался на начальном этапе развития вычислительной техники.

·        Графический пользовательский интерфейс (ГПИ) - разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений.

Недостатком ТПИ является ограниченность изобразительных средств по причине ограниченности количества символов, включённых в состав шрифта, предоставляемого аппаратурой. Программы с текстовым интерфейсом могут имитировать оконный интерфейс, чему особенно способствует применение псевдографических символов. ТПИ, использующий в качестве элементов интерфейса только и исключительно вводимые с клавиатуры текстовые строки (команды), называется интерфейсом командной строки (т. н. консольные программы - программы, использующие интерфейс командной строки, где информация выводится на консоль).

Для приложения выбран графический интерфейс пользователя. Графический интерфейс интуитивно более понятен пользователю. Для полноценного восприятия результатов работы программы необходимо иллюстрирование происходящих процессов в виде диаграмм. В отличие от интерфейса командной строки, в ГПИ пользователь имеет произвольный доступ (с помощью устройств ввода - клавиатуры, мыши, джойстика и т.п.) ко всем видимым экранным объектам (элементам интерфейса) и осуществляет непосредственное манипулирование ими.

2.3  Выбор и обоснование среды программирования


Для реализации имитатора была выбрана среда программирования Delphi версии 7 фирмы Enterprise (Borland), так как она предоставляет наиболее широкие возможности для программирования приложений ОС Windows.

Delphi - это продукт Borland International для быстрого создания приложений. Высокопроизводительный инструмент визуального построения приложений включает в себя компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal.

Преимущества Delphi по сравнению с аналогичными программными продуктами.

·  высокая производительность разработанного приложения;

·        низкие требования разработанного приложения к ресурсам компьютера;

·        наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

·        возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

·        удачная проработка иерархии объектов.

Система программирования Delphi рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого.

2.4  Разработка методики отладки и тестирования программного обеспечения при разработке и в процессе эксплуатации


При проверке правильности программ и систем рассматриваются процессы верификации, валидации и тестирования ПС, которые регламентированы в стандарте ISO/IEC 12207 жизненного цикла ПО.

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

Верификация и валидация, как методы, обеспечивают соответственно проверку и анализ правильности выполнения заданных функций и соответствия ПО техническому заданию, а также заданным спецификациям.

Цель процесса верификации - убедиться, что каждый программный продукт (и/или сервис) проекта отражает согласованные требования к их реализации. Этот процесс основывается:

·  на стратегии и критериях верификации применительно ко всем рабочим программным продуктам;

·        на выполнении действий стандарта по верификации;

·        на устранении недостатков, обнаруженных в программных (рабочих и промежуточных) продуктах;

·        на согласовании результатов верификации с заказчиком.

Цель процесса валидации - убедиться, что специфические требования для программного продукта выполнены, и осуществляется это с помощью:

·  разработанной стратегии и критериев валидации для всех рабочих продуктов;

·        оговоренных действий по проведению валидации;

·        демонстрации соответствия разработанных программных продуктов требованиям заказчика и правилам их использования;

·        согласования с заказчиком полученных результатов валидации.

Таким образом, основные задачи процессов верификации и валидации состоят в том, чтобы проверить и подтвердить, что конечный программный продукт отвечает назначению и удовлетворяет требованиям заказчика. Эти процессы взаимосвязаны и определяются, как правило, одним общим термином "верификация и валидация" или "Verification and Validation" (V&V).&V основаны на планировании их как процессов, так и проверки для наиболее критичных элементов проекта: компонент, интерфейсов (программных, технических и информационных), взаимодействий объектов (протоколов и сообщений), передач данных между компонентами и их защиты, а также оставленных тестов и тестовых процедур.

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

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

Исторически первым видом тестирования была отладка.

Отладка - это проверка описания программного объекта на языке программирования с целью обнаружения в нем ошибок и последующее их устранение. Ошибки обнаруживаются компиляторами при их синтаксическом контроле. После этого проводится верификация по проверке правильности кода и валидация по проверке соответствия продукта заданным требованиям.

Целью тестирования является проверка работы реализованных функций в соответствии с их спецификацией. На основе внешних спецификаций функций и проектной информации на процессах ЖЦ создаются функциональные тесты, с помощью которых проводится тестирование с учетом требований, сформулированных на этапе анализа предметной области. Методы функционального тестирования подразделяются на статические и динамические.

Статические методы используются при проведении инспекций и рассмотрении спецификаций компонентов без их выполнения. Техника статического анализа заключается в методическом просмотре (или обзоре) и анализе структуры программ, а также в доказательстве их правильности. Статический анализ направлен на анализ документов, разработанных на всех этапах ЖЦ, и заключается в инспекции исходного кода и сквозного контроля программы.

Инспекция ПО - это статическая проверка соответствия программы заданным спецификациями, проводится путем анализа различных представлений результатов проектирования (документации, требований, спецификаций, схем или исходного кода программ) на процессах ЖЦ. Просмотры и инспекции результатов проектирования и соответствия их требованиям заказчика обеспечивают более высокое качество создаваемых ПС.

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

Эти приемы позволяют на более ранних этапах проектирования обнаружить ошибки или дефекты путем многократного просмотра исходных кодов. Символьное тестирование применяется для проверки отдельных участков программы на входных символьных значениях.

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

Динамическое тестирование ориентировано на проверку корректности ПС на множестве тестов, прогоняемых по ПС, в целях проверки и сбора данных на этапах ЖЦ и проведения измерения отдельных показателей (число отказов, сбоев) тестирования для оценки характеристик качества, указанных в требованиях, посредством выполнения системы на ЭВМ. Динамическое тестирование основывается на систематических, статистических (вероятностных) и имитационных методах.

Систематические методы тестирования делятся на методы, в которых программы рассматриваются как «чёрный ящик» (используется информация о решаемой задаче), и методы, в которых программа рассматривается как «белый ящик» (используется структура программы). Этот вид называют тестированием с управлением по данным или управлением по входу-выходу. Цель - выяснение обстоятельств, при которых поведение программы не соответствует ее спецификации. При этом количество обнаруженных ошибок в программе является критерием качества входного тестирования.

Цель динамического тестирования программ по принципу «чёрного ящика» - выявление одним тестом максимального числа ошибок с использованием небольшого подмножества возможных входных данных.

Методы «чёрного ящика» обеспечивают:

·  эквивалентное разбиение;

·        анализ граничных значений;

·        применение функциональных диаграмм, которые в соединении с реверсивным анализом дают достаточно полную информацию о функционировании тестируемой программы.

Эквивалентное разбиение состоит в разбиении входной области данных программы на конечное число классов эквивалентности так, чтобы каждый тест, являющийся представителем некоторого класса, был эквивалентен любому другому тесту этого класса.

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

Метод «белого ящика» позволяет исследовать внутреннюю структуру программы, причем обнаружение всех ошибок в программе является критерием исчерпывающего тестирования маршрутов потоков (графа) передач управления, среди которых рассматриваются:

·  критерий покрытия операторов - набор тестов в совокупности должен обеспечить прохождение каждого оператора не менее одного раза;

·        критерий тестирования ветвей (известный как покрытие решений или покрытие переходов). Этот набор тестов в совокупности должен обеспечить прохождение каждой ветви и выхода, по крайней мере, один раз.

Второй критерий соответствует простому структурному тесту и наиболее распространен на практике. Для удовлетворения этого критерия необходимо построить систему путей, содержащую все ветви программы. Нахождение такого оптимального покрытия в некоторых случаях осуществляется просто, а в других является более сложной задачей.

Тестирование по принципу «белого ящика» ориентировано на проверку прохождения всех путей программ посредством применения путевого и имитационного тестирования.

Путевое тестирование применяется на уровне модулей и графовой модели программы путем выбора тестовых ситуаций, подготовки данных и включает тестирование следующих элементов:

·  операторов, которые должны быть выполнены хотя бы один раз, без учета ошибок, которые могут остаться в программе из-за большого количества логических путей и необходимости прохождения подмножеств этих путей;

·        путей по заданному графу потоков управления для выявления разных маршрутов передачи управления с помощью путевых предикатов, для вычисления которого создается набор тестовых данных, гарантирующих прохождение всех путей. Однако все пути протестировать бывает невозможно, поэтому остаются не выявленные ошибки, которые могут проявиться в процессе эксплуатации;

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

«Белый ящик» базируется на структуре программы, в случае «черного ящика», о структуре программы ничего неизвестно. Для выполнения тестирования с помощью этих «ящиков» известными считаются выполняемые функции, входы (входные данные) и выходы (выходные данные), а также логика обработки, представленные в документации [10][11].

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

Тестирование программы во время эксплуатации, как правило, заключается в использовании пользователем службы поддержки, предоставленной производителем. Для проверки корректности работы ПО предлагается набор тестовых параметров, заранее подготовленных для всех модулей системы. При работе на тестовых данных должен получиться заранее известный результат. При возникновении при работе ПО ситуаций, не описанных в документации, следует пользоваться возможностью поддержки со стороны производителя ПО. Для получения поддержки по электронному адресу, указанному в разделе «Обратная связь» диалога о программе, в письме следует описать возникшую ситуацию. А для анализа недокументированного поведения ПО следует приложить к письму архив директории с установленной программой и архив директории с профайлами пользователей.

3.      ТЕХНИКО-ЭКОНОМИЧЕСКИЙ РАЗДЕЛ


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

Расчёт себестоимости разработки программного обеспечения включает в себя расчёты по следующим пунктам [12]:

1.      - затраты на материалы и комплектующие изделия

.        - заработная плата разработчиков ПО

.        ЕСН - единый социальный налог

.        - накладные расходы

.        - затраты на содержание и эксплуатацию вычислительных средств.

Расчёт себестоимости осуществляется по следующей формуле

. (6)

3.1  Расчёт затрат на материалы и комплектующие изделия


Расчёт затрат на материалы и комплектующие изделия по формуле

, (7)

где - норма расхода материалов, шт.;  - цена за принятую единицу, р.; m - число наименований расходных материалов. Расчёт приведён в таблице 1.

Таблица 1. - Затраты на материалы

Материал

Единица измерения

Цена за единицу, р.

Норма расхода

Затраты, р.

Бумага А4 Sveto Copy

Пачка

130

1

130

Ватман А1

Лист

11

7

77

Ватман А2

Лист

10

3

30

Диск CD-R

Диск

38

1

38

Печать А4

Страница

2,5

90

225

Печать А1

Страница

70

7

490

Печать А2

Страница

50

3

150

Папка

Папка

50

1

50

Затраты на материалы

1190


3.2  Расчёт заработной платы на создание программного обеспечения


Заработная плата  на создание ПО включает в себя основную  и дополнительную  заработные платы

. (8)

Основная заработная плата включает в себя заработную плату по количеству отработанного времени  и премию  и рассчитывается по формуле

. (9)

Премия принимается в размере 30% от заработной платы

, (10)

где  р. - заработная плата программиста за месяц;  - общая трудоемкость создания ПО;  ч. - среднее количество рабочего времени в месяце.

Как видно для расчёта заработной платы необходимо рассчитать общую трудоёмкость .

3.2.1 Расчёт общей трудоёмкости

Общая трудоёмкость зависит от основных факторов, определяющих трудоёмкость создания ПО:

1.      - условное число операторов

.        - коэффициент недостаточности описания задачи

.        - коэффициент квалификации программиста (соответствует опыту 5 лет)

Условное число операторов в разрабатываемой программе определяется по формуле

, (11)

где  - число операторов в исходном коде программы;  - коэффициент, учитывающий новизну и сложность программы.

По формуле (11)

Разработка ПО включает шесть операций:

1.  подготовка описания задачи

2.      исследование алгоритма решения задачи

.        разработка блок-схемы алгоритма решения

.        программирование по блок-схеме алгоритма

.        отладка программы решения задачи на ЭВМ

.        подготовка документации по задаче

Время подготовки описания задачи определяться по эмпирической формуле

 чел.час, (12)

где  - трудоёмкость операции в наиболее благоприятных условиях;  - трудоёмкость операции при неблагоприятных условиях;  - трудоёмкость операции при нормальных условиях.

По формуле (12)  чел.час.

Трудоёмкость исследования алгоритма решения задачи определяется по формуле

 чел.час. (13)

По формуле (13)  чел.час.

Трудоёмкость разработки блок-схемы алгоритма определяется по формуле

 чел.час. (14)

По формуле (14)  чел.час.

Трудоёмкость программирования по блок-схеме алгоритма определяется по формуле

 чел.час. (15)

По формуле (15)  чел.час.

Трудоёмкость отладки программы на ЭВМ

 чел.час. (16)

По формуле (16)  чел.час.

Трудоёмкость подготовки документации по задаче определяется по формуле

 чел.час, (17)

где  - затраты труда на подготовку материалов рукописи;

 чел.час. (18)

По формуле (18)  чел.час.

 - затраты труда на редактирование, печать и оформление документации

 чел.час. (19)

По формуле (19)  чел.час.

По формуле (17)  чел.час.

Таблица 2. - Трудоёмкость создания программного средства

№ операции

Наименование операции

Трудоёмкость, чел.час

1

подготовка описания задачи

50

2

исследование алгоритма решения задачи

14,875

3

разработка блок-схемы алгоритма решения

49,583

4

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

49,583

5

отладка программы решения задачи на ЭВМ

247,917

6

подготовка документации по задаче

115,692

527,65



 чел.час

По формуле (10)  р.

Премия равна  р.

По формуле (9)  р.

Дополнительная заработная плата устанавливается в размере 10% от основной.

. (20)

По формуле (20)  р.

По формуле (8)  р.

3.3    Расчёт единого социального налога


Единый социальный налог рассчитывается по формуле

, (21)

где  - ставка единого социального налога.

По формуле (21)  р.

3.4  Расчёт накладных расходов


Накладные расходы - это расходы на управление и хозяйственное обслуживание. Величина накладных расходов устанавливается в процентах от основной заработной платы

. (22)

Процент накладных расходов  принимается в размере 100%.

По формуле (22)  р.

3.5  Расчёт затрат на содержание и эксплуатацию вычислительных средств


Годовые затраты на эксплуатацию вычислительных средств определяются по формуле

, (23)

где  - стоимость электроэнергии;  - затраты на техническое обслуживание и ремонт; А - амортизационные отчисления.

Стоимость электроэнергии, потребляемой вычислительной аппаратурой

, (24)

где  кВт - номинальная потребляемая мощность компьютера;  - коэффициент загрузки;  ч. - общее время использования ЭВМ;  р. - стоимость одного кВт-часа электроэнергии.

По формуле (24)  р.

Затраты на техническое обслуживание и ремонт вычислительной аппаратуры принимается равным 5% от её балансовой стоимости и определяется по формуле

, (25)

где  - балансовая стоимость вычислительной аппаратуры,  - годовой эффективный фонд времени.

Балансовая стоимость вычислительной аппаратуры определяется по формуле

, (26)

 р. - цена вычислительной аппаратуры;  - ставка затрат на доставку и монтаж.

По формуле (26)  р.

Годовой эффективный фонд времени

, (27)

где  - число календарных дней;  - число выходных дней в году;  - число праздничных дней в году; часов - продолжительность рабочего дня;  - процент потерь времени на ремонт вычислительной аппаратуры.

По формуле (27)  ч.

По формуле (25)  р.

Амортизационные отчисления определяются по формуле

, (28)

где  - норма амортизации.

По формуле (28)  р.

По формуле (23) р.

Таблица 3. - Сметная калькуляция на разработку программного

обеспечения

Вид затрат

Сумма, р.

Удельный вес

Материалы и комплектующие изделия

1190

1,16

Основная заработная плата

41421,8

40,304

Дополнительная заработная плата

4142,18

4,0304

Единый социальный налог

11846,64

11,5268

Эксплуатационные затраты

Затраты на электроэнергию

62,56

0,0609


Амортизация

2241,33

2,1808


Затраты на ремонт и техническое обслуживание

448,27

0,4362

Накладные расходы

41421,8

40,304

Итого

102774,58100



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

4.      РАЗДЕЛ ОХРАНЫ ТРУДА, ОКРУЖАЮЩЕЙ СРЕДЫ И БЖД


4.1  Анализ опасных и вредных производственных факторов при работе на ЭВМ


Согласно СанПиН 2.2.2/2.4.1340-03 к основным опасным и вредным производственным факторам (ОВПФ) при работе на ЭВМ относятся [13]: электромагнитные поля (ЭМП), акустический шум, вредные вещества в воздухе, визуальные показатели мониторов, мягкое рентгеновское излучение (только для мониторов с использованием электронно-лучевых трубок).

4.2  Мероприятия по нормированию опасных и вредных производственных факторов


Поля и излучение, создаваемые видеомонитором, являются биологически активными и отрицательно воздействуют на здоровье человека. Частотный диапазон переменного электрического и магнитного полей расположен в пределах 5 Гц. - 400 кГц. Временные допустимые уровни ЭМП представлены в таблице 4. Хотя на данный момент предпочтение отдаётся плоским дискретным экранам, не создающим таких уровней полей, как мониторы на основе электронно-лучевой трубки (ЭЛТ). Однако все еще применяются мониторы на основе ЭЛТ. И для борьбы с электромагнитными и электростатическими полями этих мониторов в их конструкцию вводят специальные экраны, поглощающие или отражающие до 95% всех полей. Для снижения рентгеновского излучения применяются специальные покрытия для экранов ЭЛТ. Экраны выполняются из прозрачных (пропускающих не менее 88% светового излучения) материалов с повышенным содержанием тяжелых металлов - свинца, железа, а в особых случаях - золота, платины, иридия и осмия.

Дополнительным источником электромагнитного излучения в некоторой степени является блок питания компьютера. Но, учитывая, что он устанавливается в металлический или металлизированный корпус и сам выполнен в металлическом корпусе, этим фактором можно пренебречь.

Таблица 4. - Временные допустимые уровни ЭМП, создаваемых ПЭВМ

Наименование параметров

ВДУ ЭМП

Напряженность электрического поля

в диапазоне частот 5 Гц - 2 кГц

25 В/м


в диапазоне частот 2 кГц - 400 кГц

2,5 В/м

Плотность магнитного потока

в диапазоне частот 5 Гц - 2 кГц

250 нТл


в диапазоне частот 2 кГц - 400 кГц

25 нТл

Электростатический потенциал экрана видеомонитора

500 В


Наиболее распространенными дополнительными устройствами, обеспечивающими работу группы пользователей компьютеров, являются системы обеспечения бесперебойного питания компьютеров, сетевое оборудование и высокопроизводительные лазерные принтеры. В силу особенностей своего функционирования эти устройства также являются источниками вредных воздействия на организм человека.

В случае источников бесперебойного питания двумя основными факторами являются электромагнитное излучение и опасность поражения электрическим током при неправильной эксплуатации. Если борьба с первым из этих факторов сводится к простому экранированию корпусов источников бесперебойного питания и сосредоточению их в одном месте, желательно удаленном или экранированном дополнительными экранами, то для борьбы со вторым фактором требуется проведение периодических инструктажей по технике безопасности и недопущение обслуживания системы питания неподготовленными лицами.

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

Источником вибраций и шумов являются в основном подсистемы долговременной памяти, в состав которых входят высокооборотные электромеханические двигатели - накопители на гибких и особенно жестких дисках, отчасти устройства чтения и записи компакт-дисков, вентилирующие системы. В значительной мере снизить интенсивность шума позволяет применение специальных экранированных отсеков внутри корпуса компьютера, в которые и устанавливаются такие устройства, использование шумоподавляющих материалов. Допустимые значения уровней звукового давления представлены в таблице 5.

Таблица 5. - Допустимые значения уровней звукового давления в

октавных полосах частот и уровня звука, создаваемого ПЭВМ

Уровни звукового давления в октавных полосах со среднегеометрическими частотами

Уровни звука в дБА

31,5 Гц

63 Гц

125 Гц

250 Гц

500 Гц

1000 Гц

4000 Гц

8000 Гц


86 дБ

71 дБ

61 дБ

54 дБ

49 дБ

45 дБ

42 дБ

40 дБ

38 дБ

50


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

Таблица 6. - Допустимые визуальные параметры устройств

отображения информации

Параметры

Допустимые значения

1

Яркость белого поля

Не менее 35 кд/м2

2

Неравномерность яркости рабочего поля

Не более ± 20%

3

Контрастность (для монохромного режима)

Не менее 3 : 1

4

Временная нестабильность изображения (непреднамеренное изменение во времени яркости изображения на экране дисплея)

Не должна фиксироваться

5

Пространственная нестабильность изображения (непреднамеренные изменения положения фрагментов изображения на экране)

Не более 2×10-4 L, где L - проектное расстояние наблюдения, мм

Для дисплеев на ЭЛТ частота обновления изображения должна быть не менее 75 Гц при всех режимах разрешения экрана, гарантируемых нормативной документацией на конкретный тип дисплея, и не менее 60 Гц для дисплеев на плоских дискретных экранах (жидкокристаллических, плазменных и т.п.).

4.3  Расчёт вентиляции


Задачей вентиляции является обеспечение чистоты воздуха и заданных метеорологических условий в производственных помещениях. Вентиляция достигается удалением загрязнённого или нагретого воздуха из помещений и подачей в него свежего воздуха [14].

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

Так как в помещении вычислительного центра (ВЦ), где производится работа на ЭВМ, отсутствует выделение вредных веществ, то достаточно будет обеспечить приток воздуха в помещение. Установка приточной вентиляции (рисунок 34) состоит из следующих элементов: воздухозаборного устройства 1, воздуховодов 2, фильтров 3 для очистки забираемого воздуха от примесей, калорифера 4, центробежного вентилятора 5 и приточного устройства 6.

Рисунок 34. - Установка приточной вентиляции

4.3.1 Расчёт воздухообмена

Минимальный расход наружного воздуха определяется по формуле

, (29)

где  - нормируемый удельный расход приточного воздуха на одно рабочее место, на одного человека, принимается равным 60 м3/ч,  - число рабочих мест.

По формуле (29)

4.3.2 Расчёт гидравлического сопротивления вентиляционной сети

Общий расход приточного воздуха м3/с. Температура атмосферного воздуха  Температура воздуха в помещении  Материал воздуховодов - кровельная проолифленная сталь.

Давление газа при рабочих условиях в сечении рассчитывается по формуле

, (30)

где  - плотность сухого газа при нормальном давлении, кг/м3.

Для сухого газа при давлении 101,325 кПа объёмный расход вычисляется по формуле

, (31)

где  - объёмный расход газа при нормальных условиях, м3/с.

Первый элемент сети - приточная шахта.

При нормальных условиях плотность воздуха принимается равной 1,2930 кг/м3

По формуле (30)  кг/м3. Объёмный расход определяется по формуле (31)  м3/с.

Принимая скорость движения воздуха в канале при нормальных условиях в диапазоне 4-5 м/с, можно приближённо определить сечение воздуховода из уравнения расхода воздуха

,

откуда м2,

что соответствует диаметрам круглых воздуховодов.

 м.

Ближайший, находящийся в этом диапазоне диаметр круглого воздуховода  мм, что соответствует площади 0,078 м2 и скорости

м/с,  м/с.

Коэффициент кинематической вязкости воздуха  м2/с при

Динамическое давление

 Па.

Число Рейнольдса

.

Коэффициент местных потерь для шахты при  .

Суммарный коэффициент потерь

,

так как для шахты .

Потери давления на первом элементе (шахте)

 Па.

Второй элемент сети - прямой участок.

Имеющиеся данные

 м3/с; ;  кг/м3;

 м2/с;  м/с;  Па;

; ,  мм.

Для кровельной проолифленной стали абсолютная шероховатость  мм.

Относительная шероховатость .

Коэффициент линейного сопротивления

.

.

Потери давления на втором участке

 Па.

Третий элемент сети - колено.

Имеющиеся данные

 м3/с; ;  кг/м3;

 м2/с;  м/с;  Па;

; ,  мм.

Суммарный коэффициент потерь на третьем элементе

,

где , , .


Потери давления на третьем участке

 Па.

Четвёртый элемент сети - прямой участок.

Рассчитывается аналогично второму с учётом того что длина  мм.

.

Потери давления на четвёртом участке

 Па.

Пятый элемент сети - калорифер.

Для трёхрядного калорифера потери давления

 Па.

Шестой элемент сети - внезапное сужение.

После калорифера температура  Соотношение площадей поперечного сечения воздуховодов и калорифера .

Объёмный расход воздуха в воздуховодах по формуле (31)

 м3/с.

Плотность воздуха по формуле (30)  кг/м3.

Коэффициент кинематической вязкости

 м2/с.

Средняя скорость по сечению воздуховода

 м/с.

Динамическое давление

 Па.

Число Рейнольдса

.

Коэффициент местных потерь (внезапное сужение потока) рассчитывается по формуле

,

потери на трение учитываются в следующем элементе сети.

.

Потери давления на шестом участке

 Па.

Седьмой элемент сети - прямой участок.

Имеющиеся данные

 м3/с; ;  кг/м3;

 м2/с;  м/с;  Па;

; ;

Коэффициент потерь на данном участке

.

Потери давления на седьмом участке

 Па.

Восьмой элемент - пирамидальный диффузор (прямоугольного сечения).

Геометрические соотношения диффузора

 м;  м;  м2;  м2; ; ;

Имеющиеся данные

 м3/с; ;  кг/м3;

 м2/с;

Скорость на входе диффузора

 м/с.

Число Рейнольдса

.

Динамическое давление

 Па.

Коэффициент сопротивления определяют пренебрегая потерями от трения, . Для  и угла раскрытия  .

Потери давления на восьмом участке

 Па.

Девятый элемент сети - прямой участок подключён к выходу диффузора, поэтому скорость, динамическое давление и число Рейнольдса определяются по параметрам этого участка.

 м;  м2;  м;

Расход, температура, плотность воздуха и кинематическая вязкость остаются неизменными.

Скорость на участке

 м/с.

Динамическое давление

 Па.

Число Рейнольдса


Относительная шероховатость .

Коэффициент линейного сопротивления

.

.

Потери давления на девятом участке

 Па.

Общие потери сети

 Па.

4.3.3 Выбор вентилятора и электродвигателя

Необходимая производительность  Полное давление  Па. Для данной вентиляционной сети приемлемым является вентилятор типа 06-300 №3,2 (рисунок 35). Рабочему режиму соответствует точка А. По этой точке находится скорость вращения 160 рад/с, что соответствует  об/мин, и  (КПД).

Установочная мощность электродвигателя для вентилятора рассчитывается по формуле

, (32)

где  - мощность двигателя, Вт;  - расход воздуха, м3/с;  - полные потери в вентиляционной сети;  - КПД вентилятора;  - КПД привода;  - коэффициент запаса.

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

По формуле (32)  Вт.

По требуемым данным приемлемым является электродвигатель АО2-11-4.

Рисунок 35. - Характеристика вентилятора 06-300 №3,2.

4.4 
Пожарная профилактика


Выбор и расчёт необходимого количества огнетушителей в защищаемом помещении или на объекте производится в зависимости от их огнетушащей способности, предельной площади, а также класса пожара горючих веществ и материалов. Помещения с вычислительной техникой можно отнести к категории Д (пониженная пожароопасная). Пожары в таких помещениях связаны с горением электрического оборудования, поэтому можно определить класс Е пожара (пожары, связанные с горением электроустановок).

Выбор типа огнетушителя (передвижной или ручной) обусловлен размерами возможных очагов пожара. При значительных размерах необходимо использовать передвижные огнетушители.

Помещения категории Д могут не оснащаться огнетушителем, если их площадь не превышает 100 м2.

При защите помещений с вычислительной техникой следует учитывать специфику взаимодействия огнетушащих веществ с защищаемым оборудованием. Данные помещения следует оборудовать хладоновыми и углекислотными огнетушителями с учётом предельно допустимой концентрацией огнетушащего вещества.

Нормы оснащения помещения ручными огнетушителями приведены в таблице 7.

Таблица 7. - Нормы оснащения помещения ручными огнетушителями

Категория помещения

Предельная защищаемая площадь, м2

Класс пожара

Хладоновые огнетушители вместимостью 2(3) л.

Углекислотные огнетушители вместимостью, л, массой огнетушащего вещества, кг





2 2

5(8) 3(5)

Г, Д

1800

Е

2

4

2


Произведён анализ и мероприятия по нормированию опасных и вредных производственных факторов при работе на ЭВМ. Для обеспечения чистоты воздуха и заданных метеорологических условий в помещении вычислительного центра осуществлён расчёт вентиляции. Для осуществления пожарной профилактики произведена классификация помещения и пожара, выбраны меры по защите помещения.

ЗАКЛЮЧЕНИЕ

В процессе выполнения дипломного проекта были разработан программный имитатор цифрового канала связи с применением помехоустойчивого кодирования. Была разработана структура и алгоритм работы ПО. Для разработки ПО выбрана среда разработки Borland Delphi 7, предоставляющая возможности визуальной разработки пользовательского интерфейса. Разработаны алгоритмы моделирующие работу блоков имитатора. Разработан графический интерфейс для отображения результатов работы и взаимодействия с пользователем. Для удобной работы нескольких пользователей, сохранения состояния ПО реализована подсистема авторизации пользователей. Для контроля выполненных действий в ПО реализовано протоколирование работы. В процессе создания ПО производилось его всестороннее тестирование и отладка, кроме того реализован тестовый режим, для проверки работы имитатора.

Разработанное ПО даёт возможность сымитировать работу всех блоков участвующих в передаче информации через канал связи. Начиная с генератора аналогового сигнала и заканчивая цифро-аналоговым преобразователем. С помощью ПО пользователь может ознакомиться с аналого-цифровым преобразованием аналоговой информации, с различными видами модуляции (амплитудная, частотная), различными видами помехоустойчивого кодирования (код Хэмминга, циклический код, проверка на чётность), с детектированием модулированного сигнал, с декодированием полученного кода и получением передаваемого сигнала после цифро-аналогового преобразования.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.   Олсон Г., Пиани Д. Цифровые системы автоматизации и управления. - СПб.: Невский Диалект, 2001. - 557 с.

2.      Скляр Б. Цифровая связь. Теоретические основы и практическое применение. - 2-е изд., исп. - М.: Издательский дом "Вильямс", 2003. - 1104 с.

3.      Крушный В.В. Основы теории информации и кодирования. - Снежинск: СГФТА, 2005.

.        Росс В.Н. Руководство по CRC-алгоритмам обнаружения ошибок. 1993. - http://www.ross.net/crc/download/crc_v3.txt.

.        Сергиенко А.Б. Цифровая обработка сигналов. - СПб.: Питер, 2002. - 608 с.

.        Невзоров В. База знаний Delphi. - http://www.drkb.ru/.

7.      Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользователя. - М., ДМК Пресс, 2000. - 432 с.

.        Поздняков А.М. Графика на языке Паскаль с элементами математики. http://graphinpas.narod.ru/

.        Мандел Т. Разработка пользовательского интерфейса. - М., ДМК Пресс, 2001. - 416 с.

10.  Петрухин В.А., Лаврищева Е.М. Методы и средства инженерии программного обеспечения. Интернет-Университет Информационных Технологий. - http://www.intuit.ru/department/se/swebok.

11.    Степанченко И. В. Методы тестирования программного обеспечения. - Волгоград: ВолгГТУ, 2006. - 74 с.

12.    Корчагина Р.Л. Оценка экономической эффективности программных средств: Методические указания. - СПб.: Балт. гос. ун-т., 2005. - 19 с.

.        СанПиН 2.2.2/2.4.1340-03. Гигиенические требования к персональным электронно-вычислительным машинам и организации работы: Утв. и введ. в действие постанов. Глав. гос. сан. врач. 03.06.03 №118.

.        Иванов Н.И., Фадин И.М. Безопасность жизнедеятельности. Коллективные средства защиты: Справ. пособие по дипломному проектированию. - 2-е изд., испр. и доп. - СПб.: Балт. гос. техн. ун-т., 2003. - 192 с.

ПРИЛОЖЕНИЕ

Программный код на Delphi основных функций программного обеспечения

Функция adc реализует аналого-цифровое преобразование. Входные параметры curdiscret - номер текущего дискрета. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function adc;

var_bit :Byte;_levels:Int64;_level :Int64;_height:real;_signal :real;_signal :real;:real;_dis :real;curdiscret > adc_propertion.messagev then:= false;;;_levels := Int64(1) shl adc_propertion.capacity;_dis := 1 / adc_propertion.dfrequency;

//дискретизация:= curdiscret * period_dis;_res.discret := signal_propertion.signal(signal_propertion.amplitude,_propertion.frequency, discret);_signal := signal_propertion.maxvalue;_signal := signal_propertion.minvalue;_height := (max_signal - min_signal) / (Int64(quant_levels));

// квантование

// оцифровывание_bit := adc_propertion.capacity;_level := Int64(1) shl (n_bit);((adc_res.discret - min_signal) / level_height < Int64(n_level) - 1) or

((adc_res.discret - min_signal) / level_height > Int64(n_level)) do(adc_res.discret - min_signal) / level_height < Int64(n_level) - 1 then_level := (Int64(n_level) xor (Int64(3) shl (n_bit - 1)))_level := (Int64(n_level) xor (Int64(1) shl (n_bit - 1)));n_bit > 0 then_bit := n_bit - 1;;_res.level := Int64(n_level) - 1;_savetofile;:= true;;

Функция evencoder осуществляет кодирование оцифрованного значения уровня с АЦП по алгоритму проверки чётности. Входные параметры: capacity - разрядность кода, приходящего с АЦП.

procedure evencoder;

var_bit :Cardinal;_res.evencode := adc_res.level shl 1;n_bit := 0 to capacity - 1 do_res.evencode := coders_res.evencode xor getbitfromint(adc_res.level, n_bit);;_savetofile(1);;

Функция evendecoder осуществляет декодирование кода по алгоритму проверки чётности. Входные параметры: capacity - разрядность кода, code - декодируемый код.

evendecoder;_bit :Cardinal;_res.level := code shr 1;_res.end_error := 0;_res.full_error := 0;_res.error := False;n_bit := 0 to capacity - 1 do_res.end_error := decoders_res.end_error xor getbitfromint(code, n_bit);;decoders_res.end_error > 0 then_res.error := True;_res.full_error := decoders_res.end_error;;_savetofile();;

Функция hammcoder осуществляет кодирование оцифрованного значения уровня с АЦП по алгоритму Хэмминга 1-х. Входные параметры: capacity - разрядность кода, приходящего с АЦП.

procedure hammcoder;

var, k :Cardinal;_count :Cardinal;_index :Cardinal;_bit :Cardinal;_byte :Cardinal;_count := coders_res.hcapacity - capacity;:= 0;:= 0;_index := 1;_byte := 0;_res.hammcode := 0;n_bit := 0 to coders_res.hcapacity - 1 do(n_bit = check_index - 1) then:= k + 1;_index := Int64(1) shl k;_res.hammcode := int64(coders_res.hammcode) or

(Int64(getbitfromint(adc_res.level, i)) shl n_bit);:= i + 1;getbitfromint(coders_res.hammcode, n_bit) = 1 then_byte := check_byte xor (n_bit + 1);;;_index := 1;:= 0;n_bit := 0 to checkbit_count - 1 do_res.hammcode := int64(coders_res.hammcode) or (Int64((check_byte shr k) and 1) shl (check_index - 1));:= k + 1;_index := Int64(1) shl k;;_savetofile(2);;

Функция hammdecoder осуществляет декодирование кода по алгоритму Хэмминга 1-х. Входные параметры: capacity - разрядность кода, code - декодируемый код, checkbit_count - количество проверочных бит.

procedure hammdecoder;:Cardinal;_index :Cardinal;_index :Cardinal;_bit :Cardinal;_code :Int64;_res.end_error := 0;_res.full_error := 0;_res.error := False;_code := code;_res.level := 0;n_bit := 0 to capacity - 1 do_res.full_error := decoders_res.full_error xor (getbitfromint(right_code, n_bit) * (n_bit + 1));;decoders_res.full_error > 0 then_res.error := True;decoders_res.full_error > capacity then_res.full_error := 0;(decoders_res.full_error > 0) then(right_code, decoders_res.full_error - 1);:= 0;_index := 1;_index := 0;_res.end_error := decoders_res.full_error;n_bit := 0 to capacity - 1 do(n_bit = check_index - 1) thendecoders_res.end_error = check_index then_res.end_error := 0;:= k + 1;_index := Int64(1) shl k;decoders_res.end_error = n_bit + 1 then_res.end_error := info_index + 1;_res.level := int64(decoders_res.level) or

(Int64(getbitfromint(right_code, n_bit)) shl info_index);(info_index);;;

decoder_savetofile();;

Функция xdiv осуществляет деление полиномов по модулю два. Входные параметры: P - делимое, G - делитель, Plen, Glen, длины полиномов. Возвращает остаток от деления по модулю два.

function xdiv;

var

Psh :Byte;

Gsh :Byte;:Byte;_bit :Byte;

Psh := max(Glen - Plen, -1) + 1;:= max(Plen - Glen, 1) - 1;

Pbit := Plen + Psh - 1;:= Int64(P) shl Psh;:= Int64(G) shl Gsh;n_bit := 1 to Psh do:= Int64(Int64(G) shl 1);(getbitfromint(G, Pbit) = 1) then:= Int64(G) xor P;;;:= Int64((Int64(G) shr (Gsh + Psh)));

end;

Функция wcrctail осуществляет составление таблицы для производящего полинома. Входные параметры: polinom - производящий полином.

procedure wcrctail;

var

polinomInt :Int64;

tail :Int64;:Byte;_bit :Byte;:= getintfrombin(getbinfromstr(polinom));:= polinomcap(polinom);(poltailf, combinepath(curuser.profdir, 2, [curuser.userl, curuser.crctailf]));(poltailf);n_bit := 1 to 64 do:= xdiv(polinomInt, Int64(1) shl (n_bit - 1), pollen, n_bit);(poltailf, tail);;(poltailf);(poltailf, '');

end;

Функция crccoder осуществляет кодирование оцифрованного значения уровня с АЦП по алгоритму циклического кодирования 1-х. Входные параметры: capacity - разрядность кода, приходящего с АЦП, polinom - производящий полином.

procedure crccoder;_count:Byte;:Int64;:Int64;:Byte;_count := coders_res.ccapacity - capacity;:= getintfrombin(getbinfromstr(polinom));:= polinomcap(polinom);:= xdiv(polinomInt, adc_res.level shl checkbit_count,, coders_res.ccapacity);_res.crccode := Int64(adc_res.level) shl checkbit_count;_res.crccode := Int64(coders_res.crccode) or messageInt;_savetofile(3);;

Функция crcdecoder осуществляет декодирование кода по алгоритму циклического кодирования 1-х. Входные параметры: capacity - разрядность кода, code - декодируемый код, checkbit_count - количество проверочных бит, polinom - производящий полином.

procedure crcdecoder;:Int64;:Int64;:Byte;:= getintfrombin(getbinfromstr(polinom));:= polinomcap(polinom);_res.error := False;:= xdiv(polinomInt, code, pollen, capacity);messageInt > 0 then_res.error := True;_res.full_error := rcrcdigit(messageInt, capacity);_res.level := code;_res.end_error := 0;(decoders_res.full_error > 0) then(decoders_res.level, decoders_res.full_error - 1);_res.end_error := decoders_res.full_error;decoders_res.end_error > checkbit_count then_res.end_error := decoders_res.end_error - checkbit_count_res.end_error := 0;;_res.level := decoders_res.level shr checkbit_count;_savetofile();;

Функция ampulation осуществляет амплитудную модуляцию битов. Входные параметры time - время которого вычисляется значение модулированного сигнала, speed - скорость передачи в канале связи, amplitude - амплитуда модулированного сигнала, carrier - несущая частота, coder - тип кодирования, capacity - разрядность кода, приходящего с кодера. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function ampulation;

var:real;:Cardinal;:byte;:= 1 / speed;:= trunc(time / bitlen);mod_res.n_discret <> (whole div capacity) then_res.n_discret := whole div capacity;not coders.coder_readfromfile(mod_res.n_discret, coder) then:= false;;;;:= getbitfromint(code_res.code, capacity - whole mod capacity - 1);_res.amplitude := bit * amplitude * sin(2 * PI * carrier * time);:= true;;

Функция nonulation реализует режим «без модуляции». Входные параметры time - время которого вычисляется значение сигнала, speed - скорость передачи в канале связи, amplitude - амплитуда сигнала, coder - тип кодирования, capacity - разрядность кода, приходящего с кодера. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function nonulation;

var:real;:Cardinal;:byte;:= 1 / speed;:= trunc(time / bitlen);mod_res.n_discret <> (whole div capacity) then_res.n_discret := whole div capacity;not coders.coder_readfromfile(mod_res.n_discret, coder) then:= false;;;;:= getbitfromint(code_res.code, capacity - whole mod capacity - 1);_res.amplitude := bit * amplitude;:= true;;

Функция frequlation осуществляет частотную модуляцию битов. Входные параметры time - время которого вычисляется значение модулированного сигнала, speed - скорость передачи в канале связи, amplitude - амплитуда модулированного сигнала, carrier1, carrier2- две частоты модуляции, coder - тип кодирования, capacity - разрядность кода, приходящего с кодера. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function frequlation;

var:real;:Cardinal;:Byte;:= 1 / speed;:= trunc(time / bitlen);mod_res.n_discret <> (whole div capacity) then_res.n_discret := whole div capacity;not coders.coder_readfromfile(mod_res.n_discret, coder) then:= false;;;;:= getbitfromint(code_res.code, capacity - whole mod capacity - 1);bit = 1 then_res.amplitude := amplitude * sin(2 * PI * carrier2 *

(time - gl.last_time) + gl.last_phase);.last_phase := 2 * PI * carrier2 *

(time - gl.last_time) + gl.last_phase;.last_time := time;else_res.amplitude := amplitude * sin(2 * PI * carrier1 *

(time - gl.last_time) + gl.last_phase);.last_phase := 2 * PI * carrier1 *

(time - gl.last_time) + gl.last_phase;.last_time := time;;

Result := true;;

Функция amdemod осуществляет детектирование амплитудно-модулированного сигнала. Входные параметры: isignal - массив дискретов модулированного сигнала. osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq частота дискретизации, freq_cut - частота среза.

procedure amdemod;(isignal, N, osignal, tailcov, dfreq, freq_cut);(osignal, length(tailcov2), tailcov2);:= Copy(tailcov);(detecter_propertion.gain, osignal, N);;

Функция fmdemod осуществляет детектирование частотно-модулированного сигнала. Входные параметры: isignal - массив дискретов модулированного сигнала. osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq частота дискретизации, freq_cut1, freq_cut2 - частоты модуляции.

procedure fmdemod;(isignal, N, osignal, tailcov3, dfreq, freq_cut1, freq_cut2);(osignal, min(length(tailcov4), N), tailcov4);:= Copy(tailcov3);(osignal, osignal, N, dfreq, detecter_propertion.lpfdetectfreq);;

Функция detect осуществляет детектирование демодулированного сигнала. Входные параметры beforedetect - массив дискретов демодулированного сигнала, afterdetect - массив детектированных битов, detecttime - модельное время детектирования, detectlevel - уровень детектирования, bpsec - скорость передачи в канале, condunit - период дискретизации, st - текущее модельное время, capacity - разрядность кода, inv - инвертировать биты.

procedure detect;,:real;

N,,,:AlglibInteger;

begin:= trunc(detecttime * bpsec);:= detecttime - N / bpsec;(afterdetect, N);:= st - t;:= 1 / bpsec;:= 0;:= 0;j < N do[j] := 0;:= 0;:= 0;t < tperb dobeforedetect[k] > detectlevel then(afterdetect[j]);(i);(k);:= t + condunit;;afterdetect[j] > 0.5 * i theninv then[j] := 0[j] := 1;inv then[j] := 1[j] := 0;;_res.code := (Int64(detect_res.code) or (Int64(afterdetect[j]) shl (capacity - bcnt - 1)));bcnt = capacity - 1 then:= 0;_savetofile;(detect_res.code);_res.code := 0;else(bcnt);

inc(j);;;

Функция demodcode осуществляет демодулирование и детектирование модулированного сигнала. Входные параметры detect_cnt - количество детектируемых, за одну итерацию битов, condunit -период дискретизации. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function demodcode;

var:TReal1DArray;:TInteger1DArray;,_discret :AlglibInteger;:boolean;,:real;:Boolean;_init;:= 0;:= detect_cnt;N * condunit < 1 / channel_propertion.speed then:= ceil(1 / (channel_propertion.speed * condunit));_init;_deletefile;(beforedetect, N);true don_discret := 0 to N - 1 domodulator_propertion.nmodulator of

: readflag := ampulation(t, channel_propertion.speed, modulator_propertion.mamplitude,_propertion.mfrequency,_propertion.ncoder + 1, capacity);

: readflag := frequlation(t, channel_propertion.speed, modulator_propertion.mamplitude,_propertion.mfrequency, modulator_propertion.mfrequency2,_propertion.ncoder + 1, capacity);

: readflag := nonulation(t, channel_propertion.speed, modulator_propertion.mamplitude,_propertion.ncoder + 1, capacity);readflag := true;;readflag then:= white_noise(noise_propertion.mean, noise_propertion.stddev);[n_discret] := mod_res.amplitude + res2;:= n_discret;;;:= t + condunit;;N = 0 then;modulator_propertion.nmodulator of

:(beforedetect, beforedetect, N, 1 / condunit, detecter_propertion.lpfdetectfreq);:= false;;

:(beforedetect, beforedetect, N, 1 / condunit,_propertion.mfrequency, modulator_propertion.mfrequency2);:= modulator_propertion.mfrequency < modulator_propertion.mfrequency2;;

::= false;:= false;;(beforedetect, afterdetect, condunit * N,_propertion.detectlevel * modulator_propertion.mamplitude,_propertion.speed, condunit, t, capacity, inv);not readflag then;

end;:= readflag;;

Функция nlineartf осуществляет моделирование прохождение сигнала через нелинейный элемент. Входные параметры: isignal - массив дискретов входного сигнала, osignal - массив дискретов выходного сигнала, N - количество дискретов.

procedure nlineartf;:AlglibInteger;:= 0;(osignal, N);i <= N - 1 do(isignal[i] > svolt) then[i] := isignal[i] - svoltif (isignal[i] < -svolt) then[i] := -(isignal[i] + svolt)[i] := 0;(i);;

end;

Функция amdetect осуществляет демодулирование амплитудно-модулированного сигнала. Входные параметры: isignal - массив дискретов модулированного сигнала, osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq - частота дискретизации, freq_m - частота среза.

procedure amdetect;(isignal, N, osignal, 0.2);(1.0, osignal, 2 * N - 1, osignal, dfreq, freq_m, 1);:= Copy(osignal, N, N - 1);(osignal, N);

end;

Функция fmdetect осуществляет демодулирование частотно-модулированного сигнала. Входные параметры: isignal - массив дискретов модулированного сигнала, osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq - частота дискретизации, freq_m1, freq_m2 - частоты модуляции.

procedure fmdetect;(freq_m1 > freq_m2) then(1.0, isignal, 2 * N - 1, osignal, dfreq, (freq_m1 + freq_m2) / 2, 10)(1.0, isignal, 2 * N - 1, osignal, dfreq, (freq_m1 + freq_m2) / 2, 10);:= Copy(osignal, N, N - 1);(osignal, N);;

Функция amplifier осуществляет усиление сигнала. Входные параметры: k - коэффициент усиления, signal - массив дискретов модулированного сигнала, osignal - массив дискретов демодулированного сигнала, N - количество дискретов.

procedure amplifier;j:AlglibInteger;:= 0;j < N do[j] := k * signal[j];(j);

end;

end;

Функция lowpassf осуществляет цифровую фильтрацию сигнала. Тип фильтра - фильтр нижних частот. Входные параметры: isignal - массив дискретов модулированного сигнала, osignal - массив дискретов демодулированного сигнала, N - количество дискретов, dfreq - частота дискретизации, freq_cut - частота среза, order - порядок фильтра.

procedure lowpassf;:TReal1DArray;, j :AlglibInteger;:Real;:= 0;:= exp(-2 * PI * freq_cut / dfreq);:= Copy(isignal);(osignal, N);(inputsignal, N);i < order do:= 0;j < N do[j] := (1 - alpha) * inputsignal[j];j > 0 then[j] := osignal[j] + alpha * osignal[j - 1];(j);;:= Copy(osignal);

inc(i);;;

Функция dac осуществляет цифро-аналоговое преобразование. Входные параметры: level - оцифрованный уровень.

procedure dac;_gl.dac_res.level := level;_gl.dac_res.discret := (Int64(dac_gl.dac_res.level) + 1);_gl.dac_res.discret := dac_gl.dac_res.discret *_gl.level_height +_propertion.minvalue - dac_gl.level_height / 2;

dac_savetofile;;

Функция logit осуществляет протоколирование работы ПО. Входные параметры: event_str - протоколируемое сообщение.

procedure logit;:string;:= FormatDateTime('dd.mm.yy hh:nn:ss', now);(logfile, Format('%s >%s', [sdate, event_str]));

fflush(logfile);;

Функция logout осуществляет завершение работы ПО.

procedure logout;blogin thencuruser do(Format('Пользователь%s закончил работу', [userl]));ReadIni(combinepath(cworkdir, 1, [proffile]), 'main', 'permanent') <> '1' then(cworkdir, true, true, true);;;;:= False;;

end;

Функция truecrypt осуществляет шифрование MD5. Входные параметры: login - имя пользователя, passw - пароль пользователя, fit - тип шифруемой информации (файл, строка). Возвращаемое значение - MD5-строка.

function truecrypt;:array[1..10] of char = '#!@~&$%?^*';:TMD5Digest;:TMD5Digest;:string;:string;:string;, n :LongInt;fit then:= MD5File(passw):= MD5String(passw);:= MD5String(LowerCase(MD5DigestToStr(MD5String(login))) +(MD5DigestToStr(crypto)));:= LowerCase(MD5DigestToStr(crypted));:= LowerCase(MD5DigestToStr(crypto));:= Length(crypt1);:= '';i := 1 to n do(ord(crypt2[i]) >= ord('0')) and (ord(crypt2[i]) <= ord('9')) then:= crypt3 + spec[strtoint(crypt2[i]) + 1]if (ord(crypt2[i]) >= ord('a')) and (ord(crypt2[i]) <= ord('d')) then:= crypt3 + UpperCase(crypt1[i]):= crypt3 + crypt1[i];;:= MD5String(crypt3);;

Функция loginto осуществляет аутентификацию и авторизацию пользователя. Входные параметры: login - имя пользователя, passw - пароль пользователя. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function loginto;:string;:string;not chkprofile(login) then:= False;;;:= combinepath(curuser.profdir, 2, [login, curuser.proffile]);:= ReadIni(fname, 'main', 'userid');MD5DigestCompare(md5fromstr(userid), truecrypt(login, passw)) then.userl := login;:= True;else:= False;:= Result;;

Функция newreg осуществляет создание нового пользователя. Входные параметры: login - имя пользователя, passw - пароль пользователя. Возвращаемое значение - удачное (true), неудачное (false) завершение операции.

function newreg;

var:string;chkprofile(login) then:= False;;;not CreateDir(combinepath(curuser.profdir, 1, [login])) then:= False;;;:= combinepath(curuser.profdir, 2, [login, curuser.proffile]);(fname, 'main', 'userid', MD5DigestToStr(truecrypt(login, passw)));(fname, 'graph', 'xywidth', '1');

Result := True;;

Функция draw_xy осуществляет рисование линии на графике. Входные параметры: x - координата по оси X, y - координата по оси Y. Возвращаемое значение 0 - удачное, 1 - неудачное завершение операции.

function TMGraph.draw_xy;config do.Pen.Width := xywidth;(npoint = 1) then_o := round(xen + (x - xn) / mx);_o := round(yen - (y - yn) / my);

point(xe_o, ye_o);

end else:= round(xen + (x - xn) / mx);:= round(yen - (y - yn) / my);((xe = xe_o) and (ye = ye_o)) then:= -1;;;(xe_o, ye_o, xe, ye);

xe_o := xe;_o := ye;

end;:= npoint + 1;;:= 0;;

Функция draw_axis осуществляет рисование осей графика.

procedure TMGraph.draw_axis;, y :real;,:integer;, hy :real;:integer;:string;config do:=xn;:=(xk-xn)/(kdx-1);:=yn;:=(yk-yn)/(kdy-1);.Pen.Width := 2;(xen, yek, xek, yen);:= round (xen+(0-xn)/mx);:= round (yen-(0-yn)/my);i:=1 to kdx do:= Round (xen+(x-xn)/mx);(xe, yen, xe, yen + 5);(x * kux:5:2, xyst);.TextOut(xe - 10, yen + dyen div 2, xyst);:= x + hx;;i:=1 to kdy do:= Round (yen-(y-yn)/my);(xen, ye, xen - 5, ye);(y * kuy:5:2, xyst);.TextOut(xen - dxen, ye - 6, xyst);:= y + hy;;.Pen.Width := 1;

end;;

Функция addbyte осуществляет добавление байта в таблицу. Входные параметры: row - строка таблицы, byte - добавляемый байт, color - цвет байта, gridnumber - номер таблицы.

procedure Tgridform.addbyte;:Integer;gridnumber of

:i := tables_propertion.cont1.size.colcount - 1 downto 0 do.grid1.Cells[ tables_propertion.cont1.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont1.cellscolor[_propertion.cont1.size.colcount - i, row] := color;;

:i := tables_propertion.cont2.size.colcount - 1 downto 0 do.grid2.Cells[ tables_propertion.cont2.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont2.cellscolor[_propertion.cont2.size.colcount - i, row] := color;;

:i := tables_propertion.cont3.size.colcount - 1 downto 0 do.grid3.Cells[ tables_propertion.cont3.size.colcount - i, row + 1] :=((byte shr i) and 1);_propertion.cont3.cellscolor[_propertion.cont3.size.colcount - i, row] := color;

end;;;

Функция sinus вычисляет значение гармонического сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, f - частота, t - текущие время. Возвращаемое значение - значение сигнала.

function sinus;:= roundto(Amplitude * sin(2 * PI * f * t), -9);;

Функция rect вычисляет значение прямоугольного сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, tperiod - период, pulse_ratio - скважность, t - текущие время. Возвращаемое значение - значение сигнала.

rect;abs(realmod(t, signal_propertion.tperiod)) <_propertion.tperiod / signal_propertion.pulse_ratio then:= Amplitude:= 0;;

Функция triangle вычисляет значение треугольного сигнала при заданных параметрах в конкретный момент времени. Входные параметры: Amplitude - амплитуда, f - частота, t - текущие время. Возвращаемое значение - значение сигнала.

function triangle;:= roundto(Amplitude * (t * f - floor(t * f)), -9);

end;

Похожие работы на - Разработка программного имитатора цифрового канала связи с применением помехоустойчивого кодирования

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!