Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мет. проект. прогр.РЕД.doc
Скачиваний:
30
Добавлен:
30.03.2015
Размер:
356.86 Кб
Скачать

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

2.1. Кодирование двоичных данных кодом с проверкой на четность

Для кодирования N-разрядного двоичного слова необходимо вычис­лить (N+1)-й разряд по правилу четности.

Пусть исходное слово - это массив А из N-разрядов, тогда мас­сив-код будет содержать (N+1)-разряд. Для определения четности можно использовать операцию сложения по модулю два, либо подсчитать сумму единиц в массиве A, а затем определить, четна она или нет. Если сумма четна, то A[N+1]=0, в противном случае A[N+1]=1.

В данной работе для реализации выбран последний способ. Тогда схема алгоритма (СА) вычисления контрольного разряда име­ет вид рис. 2.2.

Дополнительно на СА (см. рис. 2.1) введены обозначения: i - номер разря­да, S - сумма единиц слова.

После ввода самого N-разрядного слова A (бл. 2) вычисляется значе­ние (N+1)-го контрольного бита (бл. 3-5), затем печатается или выводится в канал ПД весь (N+1)-разрядный код (бл. 6).

Рис. 2.2. СА кодирования двоичного слова

2.2. Декодирование данных

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

Здесь С - массив-код из М=N+1 элементов, S - сумма единиц кода. После ввода разрядности слов в коде (М) и самого слова (бл.1) вычисляется сумма единиц в коде (бл. 2, 3). Затем производится проверка: если сумма равна нулю, то ошибок не произошло (бл. 5) в принятом из ка­нала передачи данных коде, далее выдается ин-формационная часть кода (без контрольного бита) (бл. 6) для дальнейшей обработ-ки. В случае обнаружения ошибки выдается соответствующее сообщение.

Рис. 2.3. СА декодирования кода

2.3. Универсальный алгоритм кодирования-декодирования

Анализ СА (см. рис. 2.2. и рис. 2.3.) показывают, что в обоих случаях вычисля-ется сум­ма, т.е. есть общая часть. Поэтому возможно объединение алгоритмов коди-рования и декодирования в единый алгоритм. При этом вычисление суммы следует выделить в подпрограмму, тогда универсальный алгоритм примет вид рис. 2.3, на котором использованы следующие обозначения:

М - разрядность кода или слова;

R - режим (R=1 - кодирование, R=2 - декодирование),

C[1..M] - код для декодирования,

C[1..M] - слово из М информационных разрядов для кодирования

Рис. 2.4. Схема универсального алгоритма

3. Особенности разработки программы

Для программной реализации алгоритма рис. 2.4. выбран универсальный язык программирования Turbo Pascal [6]. Программа разработана в строгом соответствии со СА и представлена файлом на дискете. Она занимает 16 байт в памяти и состоит из 40 строк.