Смекни!
smekni.com

Передача информации по каналу с решающей обратной связью (стр. 10 из 11)

Далее в следующие 14 тактов происходит отправка исправленного сообщения на выход в приемник 01100000010111 (OUT) и одновременное чтение следующего сообщения.

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

До 28 такта всё аналогично пункту 2, за исключением того, что не появляются сигналы NXT, ERCOR и соответственно F_NXT, F_ERCOR. На 28 такте происходит сброс счетчика, очистка памяти CLRN_OUT = 0 и чтение сообщения заново (так как на решатель кодера не приходит импульс F_NXT).

Соответственно далее всё происходит подобным образом. Более подробно работа решателя приведена в приложении на временных диаграммах.

2.10 Выводы

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

3. Описание программных средств, разработанных в ходе реализации проекта

3.1 Структура системы

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

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

Для конкретной реализации в программе должны содержаться массивы для хранения требуемых для работы алгоритма переменных: CODE – массив разрядов, входящих в сообщение, должен вводиться пользователем (9 разрядов – информационные). И массив G_CODE для закодированного сообщения (9 разрядов – информационные, 5 разрядов – проверочные).

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

3.2 Входные данные, форма представления результатов

Входными данными является код, который вводит пользователь. Код вводится следующим образом: имеется 9 символов, по умолчанию они нули. С помощью курсорных клавиш перемещается курсор по символам и при нажатии клавиши пробел значение символа меняется на противоположное, то есть 1 на 0, а 0 на 1.

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

3.3 Спецификация на программу в целом.

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

1. Кодирование кодовой последовательности с помощью циклического кода (14,9);

2. Вывод закодированного сообщения (информационные и контрольные символы);

3. Возможность пользователя «искажать» закодированное сообщение для дальнейшего декодирования;

4. Декодирование закодированного сообщения и исправление ошибок в искаженном сообщении.

Итак, входные данные:

Code:Array[1..k]Of Boolean; – массив начальной кодовой комбинации;

Выходные данные:

G_Code:Array[1..n]Of Byte; – закодированная кодовая комбинация;

Константы:

a:Array[1..k,1..n]Of Byte=((0,0,0,0,0,0,0,0,1,0,0,1,1,1),

(0,0,0,0,0,0,0,1,0,0,1,1,1,0),

(0,0,0,0,0,0,1,0,0,1,1,1,0,0),

(0,0,0,0,0,1,0,0,0,1,1,1,1,1),

(0,0,0,0,1,0,0,0,0,1,1,0,0,1),

(0,0,0,1,0,0,0,0,0,1,0,1,0,1),

(0,0,1,0,0,0,0,0,0,0,1,1,0,1),

(0,1,0,0,0,0,0,0,0,1,1,0,1,0),

(1,0,0,0,0,0,0,0,0,1,0,0,1,1)); – образующая матрица;

stepen=6; – степень образующего многочлена=6, т.к. порядковый номер степени начинаем отсчитывать не с 0, а с 1;

Polynom:Array[1..stepen]Of byte=(1,0,0,1,1,1); – образующиймногочлен.

3.4 Системные требования

Минимальные:

Процессор: 80486-33

Память: 4 MbRAM

Видеопамять: 512KbDRAM

Свободное место на жестком магнитном диске: 1 Mb

Операционная система: DOS 3.30 или выше.

3.5 Спецификация на программу в целом.

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

В программе широко использовались элементы технологии TOP-DOWN.

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

4. Результативная часть

4.1 Тестирование

Тестирование – это процесс, посредством которого проверяется правильность программы. Его цель – показать, что программа правильно работает в соответствии с проектными спецификациями.

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

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

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

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

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

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


Таблица 4.1. Тестирование программы

Введенный код Код с проверочнымисимволами Передаваемый код Декодированный код
101010101 10101010111100 11101010111100 10101010111100
010000001 01000000111101 01000000111001 01000000111101
010100000 01010000001111 01010000000011 невозможнодекодировать
111111110 11111111000101 11111111000101 11111111000101

4.2 Описание пользовательского интерфейса

После запуска программы на экране появляется меню, содержащее 4 пункта:

1. Кодировка

2. Помощь

3. О программе

4. Выход

После активации пункта номер 1 открывается окно, отображающее процессы кодирования и декодирования.

4.3. Инструкция пользователю.

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

4.4 Выводы

Написанная программа полностью соответствует ТЗ, правильно кодирует и декодирует циклический код (14,9), а также исправляет ошибки.


5. Заключение

В результате проделанной работы была построена математическая модель помехозащищенного циклического кода (14,9), который кодирует информацию так, что при приеме может быть обнаружено две ошибки и одна из них исправлена. Данный код кодирует передаваемое сообщение из 9 бит, количество различных сообщений – более 256 (согласно ТЗ).

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

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

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

Также было проведено моделирование работы кодера, декодера и решателей на программе MAX+plusII, где были получены соответствующие временные диаграммы, которые также вынесены в приложение.

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


Текст программы на языке VHDL для решателя декодера

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

ENTITY dec5 IS

PORT

(R1, R2, R3, R4, R5: IN STD_LOGIC;

ERCOR, NXT: OUT STD_LOGIC);

END dec5;

ARCHITECTURE decoder5 OF dec5 IS

BEGIN

process (R1, R2, R3, R4, R5)

begin

if (R1='0' and R2='0' and R3='0' and R4='0' and R5='0') then

ERCOR<='0';

NXT<='1';

elsif (R1='1' and R2='0' and R3='0' and R4='0' and R5='0') then

ERCOR<='1';