p align="left">Рассмотрим методику построения кодирующего устройства. Пусть требуется составить схему кодирующего устройства для многочлена P(X)=X5+X2+X+1. Схематичное изображение кодирующего устройства можно увидеть на рисунке 2.1. Рис. 2.1. Схематичное изображение кодирующего устройства Схема, изображенная на рис. 2.1, работает следующим образом. В исходном состоянии ключ К1 находится в положении 1, а ключ К2 замкнут. Все подлежащие кодированию информационные символы, начиная со старшего разряда, поступают одновременно на выход и через сумматор на входе в схему кодирования. После того как пройдет последний символ k, ключ К1 переключится в положение 2, а ключ К2 размыкается. После этого регистр делает m шагов, равных числу ячеек, т.е. восемь шагов. И весь остаток поступает на выход. Этот остаток представляет собой контрольные символы, следующие за информационными символами. Принципиальная схема данного кодирующего устройства представлена в приложениях. Аппаратная реализация ключей была опущена и заменена схемотехническим упрощенным изображением SA1 и SA2. В схеме эти ключи должны срабатывать в той же последовательности, как и на рис 1.3. Поясним назначение выводов разъема: XT1: Внешний ГТИ (генератор тактовых импульсов). XT2: Вход кодирующего устройства. Подача входных импульсов. XT3: Выход кодирующего устройства. XT4: +5 Вольт XT5: общий. (0 Вольт) Перечень элементов, используемый в кодере - представлен также в приложении и таблице 2.1. 2.2 Выбор микросхем для реализации принципиальной схемы кодера Таблица 2.1. Перечень элементов схемы|
Поз. обозн. | Наименование | Количество | | DD1, DD2 | КР531ТМ8 | 2 | | DD3, DD4 | КР1554ЛП5 | 2 | | | Для реализации схемы памяти используются микросхемы серии КР531ТМ8, которые содержат по четыре D - триггера, имеющих общую цепь питания. У каждого триггера есть выходы Q и Q. Для реализации функции сложения по модулю 2 используются микросхемы серии КР1554ЛП5. Они содержат по четыре логических элемента исключающее ИЛИ.В данной главе представлено описание работы кодирующего устройства, функциональное изображение схемы кодирующего устройства. Приведено ее описание, а также представлен набор микросхем, используемых для реализации принципиальной схемы кодера.3. Описание программных средств, разработанных в ходе реализации проекта3.1 Структура системыДля решения задачи предлагается объектно-ориентированный подход. Это наиболее перспективный подход к реализации любой задачи. Кроме того, язык MSVС++ 6.0 - это полностью объектно-ориентированный язык, включающий в себя удобные средства реализации этого подхода.Объектно-ориентированный подход имеет преимущества перед другими методами, прежде всего, из-за его наглядности, структурированности: методы и переменные, логически связанные между собой, объединены в классы. Сообщение между различными классами доступно через имена этих классов.В целом объектно-ориентированный подход получил широкое распространение из-за поддержки наследования, инкапсуляции и полиморфизма. Производные классы от классов-прародителей могут наследовать их методы, поэтому нового переопределение старых методов не требуется. Классы могут содержать как методы, так и функции, что максимально удобно при объединении логически связанных данных. Один класс может иметь множество производных классов, что очень удобно с точки зрения экономии времени, поскольку большинство процедур заново переопределять не приходится.Поэтому выбор этого подхода наиболее оправдан, перспективен и удобен для дальнейшего расширения разработки.Возможности MSVС++ 6.0 по решению задач, предполагающих работу с информацией разнообразны, поскольку на этом языке программирования можно реализовать практически любой алгоритм. Поставленную задачу можно решить, используя алгоритмы сложения по модулю 2. В языке С есть средство для решения второй проблемы. Сложение по модулю два осуществляется при использовании оператора ^. Он является эквивалентом оператора mod в языке программирования Pascal и реализует сложение по модулю два справа и слева стоящих от него операндов. Общая структура этой команды:(Результат) = (Операнд1) ^ (Операнд2)Результат сложения можно представить в виде таблицыТаблица 3.1. Сложение по модулю два|
Операнд 1 | Операнд 2 | Результат | | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 0 | | | Для конкретной реализации в программе должны содержаться массивы для хранения требуемых для работы алгоритма переменных: CODE - массив разрядов, входящих в сообщение, должен вводиться пользователем (9 разрядов - информационные). И массив G_CODE для закодированного сообщения (9 разрядов - информационные, 5 разрядов - проверочные).Проект также должен содержать справку об авторе, о назначении данной программы, а также о том, как с ней работать.3.2 Входные данные, форма представления результатовВходными данными программы является код, который пользователь должен ввести нажатием мыши на соответствующие поля (в программе это реализовано интуитивно понятными ChackBox-ами, т.е. галочками в квадратных полях. Поставленная галочка - означает 1 в информационных битах.). Эти поля пронумерованы в соответствие привычному нам расположению бит входного сообщения. Результаты представлены в виде итогового закодированного сообщения при помощи кодов Файра. Результат содержит строку из 8-ми информационных и 7-ми проверочных символов.3.3 Спецификация на программу в целом Программа выполняет следующие функции: 1). Кодирование заданной битовой последовательности с помощью кодов Файра; 2) Схематично представляет две матрицы - дополнительную и единичную. 3) Выводит динамически результат колирования, т.е. достаточно только изменить входное сообщение и результат тут же просчитывается и выводится на экран. Итак, входные данные: BOOL information[8] - массив, куда заносятся биты сообщения, которые необходимо заколировать. BOOL m[8] [7] - массив для хранения дополнительной матрицы, заранее посчитанной для кодера. Матрица имеет 8 строк, т. к. у нас 8 информционных бит и 7 столбцов, т. к. у нас 7 проверочных символов. Выходные данные: BOOL pro[7] - 7 проверочных символов, которые получены в результате кодирования. При создании программы било сделано нововведение, а именно - программа написана полностью на API. Это позволило намного сократить полученный EXE-файл. А также увеличить скорость работы программы. Такое введение было сделано с целью получения дополнительного опыта в программировании. Т.к. на API был сделан полностью интерфейс со своими особенностями, то текст программы получился обширным, содержащий большое кол-во модулей, классов, объектов, переменных. В связи с этим, с расчетном задании не была приведена спецификация на программные модули.
3.4 Системные требования 486dx2-66 16 Mb RAM 2Mb Video Ram Screen Resolution 800*600*16bit HDD - 1 Mb OS Windows 98, МЕ, ХР, Windows NT 4.0 или выше. Программа соответствует требованиям технического задания. Она успешно кодирует введенную двоичную последовательность при помощи кодов. Созданный удобный дружественный интерфейс - понятен и прост. Кроме того, комментарии позволяют быстро разобраться в программе и при необходимости внести в нее поправки. В программе широко использовались элементы Единого Пользовательского Интерфейса (Common User Access), а также элементы технологии TOP DOWN. Процедуры написанные для данной программы будут в дальнейшем использоваться в других программах. Написание данной программы принесло большую пользу в освоении структурного программирования и курса «Теория передачи информации». 4. Результативная часть 4.1 Тестирование Тестирование - это процесс, посредством которого проверяется правильность программы. Его цель - показать, что программа правильно работает в соответствии с проектными спецификациями. При тестировании проверялась работа каждого модуля в отдельности, а также всей программы в целом. Было проведено несколько тестирований, после каждого из которых проводилась доработка программы и устранение ошибок. Тестирование проводилось из расчета на то, программой могут пользоваться неопытные пользователи, которые непредсказуемы в работе с программой. На первом этапе тестирования вводилось несколько новых данных, и с ними проводились различные операции. Результаты этого тестирования показали правильную работу модуля, обеспечивающего ввод данных (проверялась защита от некорректного ввода и запоминание данных в память), Результаты тестирования показали устойчивую работу программы. Тестирование показало, что программа полностью соответствует техническому заданию. Верно разработан алгоритм и реализована процедура кодирования. При тестировании мы получили следующие примеры выполнения программы и алгоритма, что подтверждает правильность задания программы (в данном случае применялся метод черного ящика): Приведем тестовую таблицу с введенными кодами, закодированными последовательностями, то есть покажем соответствие между входными и выходными данными. Таблица 4.1. Тестирование программы |
Введенный код | Проверочные символы | Код с проверочными символами | | 10000000 | 1110011 | 100000001110011 | | 01000000 | 1001010 | 010000001001010 | | 11111111 | 0100010 | 111111110100010 | | 11110000 | 1111101 | 111100001111101 | | 00000011 | 1001110 | 000000111001110 | | 00000110 | 1111011 | 000001101111011 | | 10101010 | 0111100 | 101010100111100 | | |
4.2 Описание пользовательского интерфейса После запуска программы на выполнение на экране появляется диалоговое окно, содержащее 4 поля: 1) Поле ввода информационных бит. 2) Поле, иллюстрирующее единичную матрицу. 3) Поле, иллюстрирующее дополнительную матрицу. 4) Поле, иллюстрирующее закодированное сообщение. 4.3 Инструкция пользователю Для ввода информационных бит - необходимо в поле ввода проставить галочки в тех битах, которые = 1. Там, где должны быть нули, оставить пустым. После ввода информации - программа автоматически просчитывает выходной код и выводит его в поле ответа. Дополнительные иллюстрирующие поля показывают дополнительную информацию. В результате тестирования были обнаружены ошибки, которые впоследствии были устранены. В результате тестирования было получено, что программа является работоспособной. Программа правильно находит и строит код Файра. ЗаключениеВ результате проделанной работы была построена математическая модель помехозащищенного группового кода Файра (15, 8), который кодирует информацию так, что при приеме может быть обнаружена пачка ошибок длиной 3 и исправлена пачка ошибок длиной 2 (bs = 2, br = 3). Данный код кодирует передаваемое сообщение из 8 бит, количество различных сообщений - 128.
Страницы: 1, 2, 3, 4
|