close

Вход

Забыли?

вход по аккаунту

?

В1 3 вариант

код для вставкиСкачать
Введение
Каждое из трех предшествующих столетий ознаменовалось появлением
какой-то технологии, развитие которой определяло прогресс в этом столетии.
XVIII век - механические системы, XIX - паровые машины, XX - технологии
сбора, передачи, обработки и хранения информации.
В настоящее время одним из самых важных ресурсов для человека
является информация. Люди получают информацию, обрабатывают ее,
обмениваются информацией. Одним из способов обмена информацией на
расстоянии является передача цифровой информации.
Ценность информации может быть очень высока, поэтому передача
требует применения помехозащищенности, кодирования. Важна также и
своевременность доставки информации.
Задачу передачи информации на расстояние позволяет решить система
передачи данных (СПД). Область применения таких систем достаточно
широка.
Целью курсового проекта является проектирование системы передачи
данных, удовлетворяющей заданным требованиям по помехоустойчивости
Нужно произвести выбор такого способа передачи, при котором
обеспечивается наиболее оптимальный вариант доставки сообщений.
В главе 1 приведены теоретические сведения на заданную тему. В ней
рассматриваются основные методы передачи сигналов, способы кодирования
информации для повышения помехозащищенности и сформулирована задача
на данный курсовой проект.
Во второй главе производится расчет СПД на помехоустойчивость и
время запаздывания. Выбран оптимальный формат посылки и метод
модуляции.
Третья глава содержит описание структуры передающей и приемной
частей системы передачи данных, а также алгоритмы их работы.
Синтезированы схемы кодирующего и декодирующего устройств.
В четвертой главе приведен пример программной реализации
кодирующего и декодирующего устройств.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
3
1
1.1
Анализ способов построения СПД.
Классификация СПД.
Телемеханическая система – это совокупность устройств пунктов
управления и контролируемых пунктов, периферийного оборудования,
необходимых линий и каналов связи, предназначенных для совместного
выполнения телемеханических функций. [3]
Классификация:
По выполняемым функциям.
 Система телеизмерения (ТИ) — система, осуществляющие передачу
непрерывных измеряемых величин. Например, требуется передача данных с
большой точностью об уровне продукта, находящегося в емкости. Информация передается с контролируемого пункта на пункт управления. Принятые
данные могут вводиться в ЭВМ и представляться диспетчеру для визуальных
наблюдений на цифровых индикаторах и стрелочных приборах, а также
регистрироваться специальными приборами.
 Система телесигнализации (ТС) — система, осуществляющая передачу
различных дискретных величин, которые могут вводиться в ЭВМ или
сообщать диспетчеру о состоянии контролируемых объектов с помощью
звуковой и световой сигнализации. Например, требуется выдать сообщение
при наполнении или опустошение емкости продуктом.
 Система телеуправления (ТУ) — система, осуществляющая передачу
информации в виде команд на включение или отключение различных
механизмов. Эти команды или посылаются диспетчером с пункта
управления, или подаются с ЭВМ на изменение установок в регуляторах.
При этом, если объекты управления находятся вблизи диспетчера, необходимость в обратной сигнализации отпадает: диспетчер визуально наблюдает за
исполнением посланных команд. Сфера применения подобных систем
управления ограничена. Обычно управляемые объекты находятся вне поля
зрения диспетчера, и о том, включились или отключились они после подачи
команды, нужна сигнализация. Для этого требуется соединение системы
управления с системой сигнализации.
 Система телеуправления и телесигнализации (ТУ-ТС) — система,
позволяющая передавать команды с пункта управления на контролируемый
пункт и получать известительную сигнализацию об исполнении команды,
посылаемой
контролируемым пунктом
на
пункт управления,
и
сигнализацию об изменении состояния объекта.
 Система измерения и сигнализации (ТИ-ТС) — система, передающая
только известительную информацию с контролируемого пункта на пункт
управления. В такой системе возможна и передача производственно-статистической информации.
 Системы телерегулирования (ТР) – телеуправление объектами с
непрерывным множеством состояний. Осуществляется с помощью систем
ТИ и ТУ.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
4
По характеру линии связи.
Линия связи – физическая среда, по которой передаются сигналы.
Для передачи информации могут использоваться следующие линии
связи:
 проводные
 световодные
 радиотракт
В системах телемеханики передается на дальнее расстояние большое
количество сообщений от многих источников или ко многим приемникам.
Например, в системах ТУ происходит передача информации от одного
источника (диспетчера) ко многим приемникам (объектам), а в системах ТС –
от многих источников (объектов) к одному приемнику (диспетчеру).
По расположению управляемых объектов.
 Система для сосредоточенных объектов — система, в которой имеется
один пункт управления и один контролируемый пункт.
 Система для рассредоточенных объектов — система, в которой есть
один пункт управления и несколько контролируемых пунктов.
По характеру управляемых объектов.
 Системы со стационарными (неподвижными) объектами
 Системы с подвижными объектами. [3]
1.2
Способы передачи данных и методы фазирования
В общем случае между пунктами А и В может осуществляться как
односторонняя, так и двухсторонняя передача.
Различают следующие режимы работы при передаче сигналов:
1. Дуплексный режим – А->В и одновременно В->А. Здесь оба
направления в отношении скорости передачи могут быть равнозначны
(симметричный дуплексный режим) или различны.
2. Полудуплексный режим – либо A->B, либо B->A. Этот режим
отвечает диалогу двух партнеров. Возможна передача информации в обоих
направлениях, но лишь поочередно
3. Симплексный режим – А->В - информация может передаваться
лишь в одном направлении.
В симплексных (односторонних) устройствах повышение верности
может быть достигнуто тремя способами:
1.
путем многократного повторения символов;
2.
одновременной передачей одной и той же информации по
нескольким параллельным каналам;
3.
применением кодов, исправляющих ошибки.
Многократное повторение является наиболее простым способом
повышения верности, который состоит в том, что передатчик посылает в
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
5
канал нечетное число раз одну и ту же информацию, а на приемной стороне
происходит сравнение между собой одноименных кодовых комбинаций
(либо одноименных двоичных разрядов). Потребителю выдается тот символ
(или бит), который был принят большее число раз (мажоритарный метод).
Однако при выборе такого способа защиты следует иметь в виду, что
избыточность информации растет пропорционально количеству повторений
одних и тех же символов, аналогично возрастают и затраты времени на
передачу массива.
Способ одновременной передачи по нескольким каналам по
помехоустойчивости эквивалентен способу многократной передачи. Он
предусматривает наличие нечетного количества каналов, по которым
передаются одни и те же кодовые последовательности. На приеме
используется мажоритарный прием. Основное требование таких систем:
наличие параллельных каналов с независимыми ошибками. Для обеспечения
этого требования каналы связи должны быть разнесены географически или
хотя бы по крайней мере выбираться в разных линиях связи. Недостатком
способа одновременной передачи является резкое повышение стоимости
СПД за счет использования для передачи сообщений от одного источника
нескольких каналов.
Наибольшей эффективностью в симплексных СПД обладает способ
защиты от ошибок, основанный на использовании кодов с исправлением
ошибок. В таких системах передаваемый блок кроме информационных
единичных элементов, полученных от источника информации, содержит и
проверочные биты, которые формируются кодирующим устройством на
основании информационных разрядов по определенным правилам. На
приемной стороне декодером по тем же правилам осуществляются
аналогичные проверки, при которых учитываются и проверочные элементы.
В результате проверки определяется номер позиции в принятом блоке,
значение которой необходимо в процессе исправления проинвертировать.
Вероятность ошибочного приема символа зависит не только от вероятности
ошибки в дискретном канале, но и от применяемого кода.
В односторонних СПД при выборе корректирующего кода приходится
рассчитывать на худшее состояние канала, т. е. избыточность в таких
системах является постоянной, независимо от того имеются ошибки в канале
или нет. В начальных условиях худшее состояние канала будет относительно
редко, его пропускная способность используется очень неэффективно.
Вторым недостатком систем с исправлением ошибок является резкое
возрастание сложности аппаратуры с увеличением количества исправляемых
ошибок.
К дуплексной группе относятся устройства, в которых повышение
верности передаваемой информации достигается за счет введения обратной
связи. Они в свою очередь делятся на системы с решающей (РОС),
информационной (ИОС) и комбинированной (КОС) обратной связью.
Сущность повышения верности в этих системах состоит в том, что при
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
6
обнаружении искажений в передаваемом сообщении происходит запрос
блока, в котором один или несколько неправильно принятых знака. В
системах с РОС передаваемые данные кодируются избыточными кодами,
позволяющими обнаруживать одиночные ошибки или пачки (группы)
ошибок. Решение о необходимости повторения блока информации, в котором
обнаружена ошибка, принимается приемником на основании анализа
поступившей последовательности. В случае обнаружения в принятом блоке
ошибок он стирается и по каналу обратной связи (ОС) приемная станция
посылает сигнал «Запрос», на основании которого передатчик повторно
выдает этот же блок. При безошибочном приеме блока данные поступают
потребителю, а по каналу ОС передается сигнал «Подтверждение».
В устройствах с ИOC нет необходимости вводить избыточность в передаваемые данные. Двоичная последовательность, зафиксированная
приемником, запоминается и затем по каналу ОС передается вся или в виде
укороченной кодовой комбинации, содержащей определенные признаки всей
последовательности, на передающую сторону. Полученная по каналу ОС
информация анализируется передающей станцией, которая по результатам
анализа принимает решение о передаче следующего блока либо о повторении
ошибочно принятого. Это решение сообщается на приемную сторону и на
его основании получения информация выдается потребителю или стирается.
Устройства с КОС представляют собой сочетание информационной и
решающей ОС. В них ношение о необходимости повторной передачи может
приниматься как на передающей, так и на приемной сторонах, а по каналу
обратной связи могут передаваться информационные элементы или сигналы
«Запрос» и «Подтверждение».
В зависимости от характера канала связи и формата передаваемых
сообщений выделяют синхронный и асинхронный методы передачи
информации. В случае использование синхронного метода фазирование
происходит лишь один раз перед передачей посылки. При этом циклы с
определенной длиной следуют друг за другом. В асинхронном (стартстопном) методе есть четко выраженные начало (старт) и конец (стоп)
кодовой комбинации, по которым и происходит синхронизация. Для
фазирования применяют устройства фазирования по циклу или УФЦ.
Устройства фазирования по циклу (УФЦ) служат для определения
начала блока информации (цикла) в принимаемой последовательности
цифровых сигналов, что необходимо для правильного декодирования
сообщения. Фазирование по циклам представляет собой процесс
принудительного установления определенного фазового соотношения между
распределителями на передающей и приемной сторонах АПД, при котором
первый переданный в канал связи бит направляется в первую ячейку приемного регистра, второй — во вторую и т. д. Для осуществления процесса
фазирования на приемной стороне необходимо иметь сведения о фазе
передающего распределителя. В отличие от поэлементной синхронизации
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
7
эти сведения необходимо посылать на приемную часть АПД в начале
передачи, либо в течение всего сеанса связи. Способы фазирования по
циклам можно разделить на две группы.
Безмаркерные (с одноразовым запуском), при которых во время
передачи информации фазирующие сигналы (маркеры) не передаются, а
фазирование осуществляется за счет выдачи в канал специальной
фазирующей последовательности перед началом передачи сообщения и в
паузах между передачей отдельных блоков информации.
Маркерные (с непрерывной синхронизацией), при которых в течение
всего сеанса связи по каналу совместно с информационными сигналами
передаются специальные кодовые комбинации (маркеры), используемые для
фазирования АПД по циклу.
Также различают синхронные и стартстопные способы фазирования. В
синхронных — циклы фиксированной длины следуют непрерывно друг за
другом, в связи с чем их начало и конец в сфазированном приемнике заранее
известны. При стартстопном — цикл может начаться в произвольный момент
времени, а длина его — быть произвольной. В промежутках между выдачей
блоков передающий и приемный распределители находятся на «стопе».
Запуск их происходит под действием команды «Старт», подаваемой перед
началом блока в канал связи. Команда «Старт» может быть представлена
отдельным сигналом или кодовой комбинацией.
Безмаркерное фазирование реализуется несколькими способами:
1. Установление необходимой начальной фазы осуществляется путем
передачи пусковых (фазирующих) комбинаций. В системах обмена
информацией с обратной связью передаваемый синхроблок, состоящий из
специальной фазирующей комбинации и дополненный сигналами типа
«точки», которые предназначены для быстрого установления синхронизации
по элементам, передается на приемную станцию до тех пор, пока по
обратному каналу не будет получено подтверждение установления
начальной фазы приемного распределителя. В системах одностороннего
действия пусковая комбинация передается столько раз, пока она не будет
зафиксирована приемником с заданной вероятностью. Очевидно, количество
передачи блока в этом случае определяется максимальным уровнем помех в
канале связи.
2. Фазирование с адресно-пусковыми комбинациями. Такой способ
применяется в системах обмена информацией, когда один и тот же канал
используется для передачи данных нескольким потребителям, имеющим
различные адреса. Фазирующий блок при этом способе дополняется
адресной комбинацией, причем к структуре адресной части предъявляются
такие же высокие требования по помехоустойчивости, как и к пусковым
комбинациям.
Маркерные УФЦ (с непрерывной передачей фазирующих сигналов) в
зависимости от вида маркерной комбинации реализуются различными
способами:
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
8
1. Устройства с явно выраженной фазирующей комбинацией,
совместимой с информационными символами, входящими в блок. Под
совместимостью понимается возможность появления в информационном
блоке группы символов, совпадающих с маркерной комбинацией, причем
при сбоях цикловой фазы маркеры могут выделяться из информационной
последовательности, что приведет к ложному фазированию.
2. Устройства с явно выраженной фазирующей комбинацией, не
совместимой с информационной последовательностью. Такие УФЦ
называют устройствами с синхронизирующим префиксом. Кодовая
комбинация маркера (префикса) выбирается такой, которая не встречается в
информационной последовательности, в том числе при сдвиге ее на любое
число разрядов. В системах, использующих этот способ фазирования, в
информационный блок следует включать дополнительные элементы,
исключающие появление в нем маркерных комбинаций.
3. Использование для циклового фазирования избыточной информации,
вводимой для повышения верности передачи. В таких УФЦ при нарушениях
синфазности
переключения
Распределителей резко
увеличивается
количество обнаруживаемых ошибок. Разницу между вероятностью ошибок
при синфазной работе и реальной частотой ошибок можно использовать
осуществления фазирования по циклам.
Независимо от способа фазирования любая схема УФЦ должна
содержать блок ввода в передаваемую последовательность маркерной
комбинации на передающей стороне и блок выделения этой комбинации в
приемнике.
Если информация от источника поступает нерегулярно, небольшими
массивами, блоками различной длины и по каким-либо причинам не
представляется концентрация этой информации на передающей стороне, то
наиболее целесообразным является применение старт-стопного метода
фазирования. В этом случае средняя длина блока и вид фазирующей
комбинации
определяются
из
условий
обеспечения
требуемой
помехоустойчивости.
В большинстве систем передачи дискретной информации выгодно
применять синхронные маркерные и безмаркерные способы фазирования. В
дуплексных и полудуплексных СПД при передаче небольших массивов
информации, в диалоговом режиме работы абонентов, при наличии пауз
между передаваемыми сообщениями, а также в системах данных по
выделенным каналам, когда не требуется непрерывный контроль за
процессом
фазирования
по
циклам,
целесообразно
применение
безмаркерного способа, который обеспечивает более высокую эффективную
скорость передачи информации.
При непрерывной передаче сообщений или передаче больших массивов
информации в результате различных возмущающих воздействий, способных
нарушить синфазный режим работы системы, необходимо обеспечить
систематический контроль за состоянием фазирующих устройств
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
9
непрерывной передачей в канал маркерных комбинаций. В таких случаях
следует применять маркерный способ фазирования [2].
1.3
Передача алфавитно-цифровой информации.
Для однозначного представления информации, передаваемой от
источника, применяется кодирование.
Кодирование – преобразование дискретного сообщения в дискретный
сигнал, осуществляемое по определенному правилу.
Один из вариантов кодирования представление каждого возможного
сообщения источника в виде определенного уровня сигнала в канале.
Помехоустойчивость такого способа резко снижается при увеличении числа
возможных сообщений.
Возможный вид сигнала в канале при передаче информации называется
импульсным признаком.
Число импульсных признаков можно уменьшить до двух, применяя для
нумерации команд двоичную систему счисления. Но при этом возрастает
длина слова или число разрядов п. Например, для передачи 1000 сообщений
п должно быть не менее 10, тогда N=2l0=1024.
Если число признаков q = 2 (0 и 1, а и б), то такие коды называют
двоичными (бинарными), или двухпозиционными. Коды, у которых q≥3,
являются могопозиционными, или недвоичными — небинарными (троичными, четвертичными и т. п.).
Оказывается, надежность передачи значительно увеличивается при
уменьшении числа и усилении различия признаков, несмотря на увеличение
длины слова. Поэтому в настоящее время применяют, за редким
исключением, двоичные коды (q = 2). Импульсные признаки для передачи
таких кодов могут быть довольно разнообразными . Так, 1 может
передаваться, например, или наличием импульса с амплитудой A, или
импульсом длительностью τ, а 0 — отсутствием импульса или импульсом
длительностью τ1. Могут быть использованы и другие импульсные признаки.
Комбинации двоичного кода можно записывать также буквами. Например, комбинация 10101 запишется как абаба. Таким образом, любая
кодовая комбинация содержит определенный набор элементов или символов
(1 и 0, а и б), которые называются буквами алфавита, а весь набор букв
образует алфавит кода. Если для двоичного кода алфавит состоит только из
двух символов, то для троичного кода их число увеличивается до трех (а, б,
в, или 1, 2, 3), а в десятичном коде оно равно десяти.
Таким образом, основание кода q — это количество признаков или
число букв (цифр). Кодовая комбинация, составленная из п символов или п
элементов, называется кодовым словом (кодовым блоком), имеющим длину
п или число разрядов п. Если длина всех кодовых комбинаций одинакова, то
такие коды называют равномерными (комплектными). Например, код 001,
011, 101 является комплектным, а код 1, 11, 101 — некомплектным, так как
слева от единиц нули не приписаны. В телемеханике обычно используют
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
10
только равномерные коды. В двоичных кодах применяют также термин «вес
кода», под которым понимают число единиц в кодовой комбинации. Так, вес
кода 1101 равен трем, а вес кода 1000 — единице [3].
Рассмотрим несколько кодов, предназначенных для передачи
алфавитно-цифровой информации:
Телеграфный трёхрегистровый код МТК-2. Код 5-битовый (всего 32
разных кода), поэтому используются 3 разных регистра (русский, латинский,
цифры), переключаемые управляющими символами РУС, ЛАТ, ЦИФ. Букв Ъ
и Ё нет; вместо буквы Ч использовали цифру 4.
МТК-2 основан на международном телеграфном коде № 2 (ITA2),
рекомендованном Международным консультативным комитетом по
телефонии и телеграфии в 1932 г. (в международном коде 00000 не
используется).
Таблица 1.1 – Кодовые комбинации МТК-2
К
од
ат.
1
1000
1
0011
0
1110
1
0010
1
0000
1
0110
0
1011
0
0101
0
1100
1
1010
1
1110
0
1001
0
0111
0
0110
Л
Р
Ц
К
Л
Р
Ц
ус. иф. од ат. ус. иф.
1
A
А
-
B
Б
?
1010
C
Ц
:
D
Д
E
Е
З
1100
1
F
Ф
Э
1111
0
G
Г
Ш
1001
1
H
Х
Щ
0111
1
I
И
8
0101
J
Й
Ю
0001
K
К
(
L
Л
)
M
М
.
N
Н
,
1101
0
1
0100
0
0001
1
1
Q
Я
1
R
Р
4
S
С
'
T
Т
5
U
У
7
V
Ж
=
W
В
2
X
Ь
1
Y
Ы
6
Z
З
+
0
0010
C
R
0
1000
L
F
Л
1
АТ
1111
Ц
1
1011
ИФ
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
11
0
0011
0
1101
O
О
9
0100
P
П
0
0000
0
S
P
Р
0
УС
Соответствие между английским и русским регистрами, принятое в
МТК-2, было использовано при создании компьютерных кодировок КОИ-7 и
КОИ-8.
КОИ-7 — это семибитная кодировка для русского языка, использующая
переключение режимов. Для переключения в русский режим использовался
управляющий символ 0xE (SO, РУС), а для возврата в латинский — символ
0xF (SI, ЛАТ). Русский режим существовал в двух вариантах — с заглавными
и строчными буквами или только с заглавными, но зато и русскими, и
латинскими одновременно (во втором варианте обычно обходились без
переключения). Буквы Ё не было; отсутствовала также заглавная буква Ъ.
КОИ-8 (код обмена информацией, 8 битов), KOI8 — восьмибитовый
стандарт кодирования символов в информатике. Разработан для кодирования
букв кириллических алфавитов. Разработчики КОИ-8 поместили символы
русского алфавита в верхней части расширенной таблицы ASCII таким
образом, что позиции кириллических символов соответствуют их
фонетическим аналогам в английском алфавите в нижней части таблицы. Это
означает, что если в тексте, написанном в КОИ-8, убирать восьмой бит
каждого символа, то получается «читабельный» текст, хотя он и написан
латинскими символами. Например, слова «Русский Текст» превратились бы в
«rUSSKIJ tEKST». Как побочное следствие, символы кириллицы оказались
расположены не в алфавитном порядке. Существует несколько вариантов
кодировки КОИ-8 для различных кирилических алфавитов. Русский алфавит
описывается в кодировке KOI8-R, украинский — в KOI8-U. KOI8-R стал
фактически стандартом для русской кириллицы в электронной почте [7].
1.4
Постановка задачи.
Целью данного курсового проекта является разработка системы сбора и
передачи информации, удовлетворяющей заданным требованиям:
Таблица 1.2 – Характеристики ГВП и остаточного затухания канала
F, КГц
∆τ, мс
∆a, Дб
F, КГц
∆τгр, мс
∆a, Дб
0,1
2,5
5,53
2,7
0,03
0,4
0,3
1,91
4,12
2,9
0,05
0,12
0,5
1,2
2,55
3,1
0,13
0,6
0,7
0,6
0,7
3,3
0,28
1,2
0,9
0,35
0,05
3,5
0,48
0,8
1,1
0,18
0,9
3,7
0,66
0,9
1,3
0,15
1,8
3,9
0,84
1,6
1,5
0,05
0,8
4,1
1,1
2,2
1,7
0,05
0,05
4,3
1,3
2,84
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
12
1,9
2,1
2,3
2,5
0
0,05
0,05
0,03
0,64
0,1
0,2
1,28
4,5
4,7
4,9
1,6
1,85
2,36
3,88
4,7
5,33
Таблица 2.3 – Параметры разрабатываемой СПД
Источник информации
Nвар
Канал связи
Примечание
N
Объем
λ, с
Тип
Рош
Кп
1
2
3
4
5
6
7
8
3
5
104 МТК-2
2*10-6
ПД
10-2
3
CRC, p(x)=140178
-1
В графе 1 указан номер варианта задания.
Графы 2 - 4 содержат исходные данные об источниках информации:
 графа 2 - о количестве источников информации (предполагается, что
все источники имеют одинаковые параметры);
 графа 3 - данные об информации, производимой каждым
источником;
 графа 4 - данные о плотности потока поступления заявок на
обслуживание от источников информации.
Графы 5 – 7 содержат данные о канале связи:
 графа 5 указывает тип канала связи (С - симплексный,Д дуплексный, ПД - полудуплексный);
 в графе 6 указана вероятность ошибки одного двоичного символа
(предполагается, что используется двоичный симметричный канал без
памяти);
 в графе 7 помещены данные, характеризующие основные требования
к качеству передачи информации: категория помехоустойчивости системы
(Кп) согласно ГОСТ 16521-88 .
Графа 8 – данные о коде, используемом при передаче данных. CRC –
контроль избыточным циклическим кодом [1].
1.5
Выводы к главе 1.
1. объем информации от каждого источника - 104 МТК-5, то есть 5*104
бит. Очевидно, что передачу сообщения необходимо осуществлять поблочно;
2. в ПД системах для повышения помехоустойчивости необходимо
применять РОС;
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
13
3. для кодирования адреса 5-ти источников информации потребуется 3
бита;
4. в каждом блоке число проверочных бит будет равно 12 (по
наивысшей степени заданного полинома).
2
2.1
Расчет параметров и характеристик
Определение оптимальной скорости и вида модуляции
2.1.1 Определение оптимальной скорости модуляции
В соответствии с заданным вариантом строятся частотные
характеристики канала: неравномерность остаточного затухания (рис. 2.1) и
групповое время прохождения (рис.2.2):
Рисунок 2.1 – Неравномерность остаточного затухания канала.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
14
Рисунок 2.2 –Групповое время прохождения (ГВП) канала.
Характеристика остаточного затухания имеет колебательные
отклонения, поэтому максимально возможное остаточное затухание
необходимо брать в пределах от 1,74 до 2,6 дБ. Отметим на графике ∆а=1,8
дБ. Ширина полосы пропускания канала равна ∆Fк=FВ-Fн=3960-580=3380 Гц.
Максимальная скорость модуляции при использовании ЧМ, ФМ и АМ с
двумя боковыми полосами:
Bпр = 0,7*∆Fк .
(2.1)
Bпр = 2366 Бод
Так как характеристика группового времени прохождения имеет четносимметричный характер, то допустимая неравномерность ГВП в этом случае
во всей полосе пропускания равна:
∆τгрдоп ≤
1
.
Bпр
(2.2)
∆τгрдоп ≤0,42*10-3с.
По графику ГВП (рис. 2.2) видно, что в полосе ∆Fк= 3380 Гц
неравномерность времени запаздывания ∆τгр ≈0,95мс, т.е. скорость Bпр = 2366
Бод без предварительной коррекции канала связи не может быть обеспечена
из-за больших межсимвольных искажений.
Для нахождения оптимальной скорости передачи Bопт необходимо
решить графически систему двух уравнений, одно из которых задано
зависимостью вида B = k∆Fk , a второе представлено графиком ψ(∆FK),
построенным на основе характеристики ГВП при выполнении условий ∆τгр ≤
τ0. По АЧХ канала в необходимо определить ∆Fk . Далее по формулам можно
найти Bпр. Выбирая несколько значений ∆τгр , определить по ФЧХ при
каждом из них соответствующее значение ∆FK и, полагая ∆τгр≈ 1 , построить
Bпр
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
15
зависимость В = ψ(∆FK). Точка пересечения зависимостей B = k∆FK и В =
ψ(∆FK) даст значение Вопт .
Составим таблицу для построения графика:
Таблица 2.1 – Определение оптимальной скорости модуляции.
∆τгр, мс
FВ, Гц
Fн, Гц
∆Fк, Гц
Bпр, Бод
0,42
3440
850
2590
2381
0,4
3410
860
2550
2500
0,37
3390
880
2510
2702
0,35
3370
900
2470
2857
0,3
3320
960
2360
3333
0,25
3260
1010
2250
4000
На графике (рис. 2.3) четко видно, что система не имеет решения:
Рисунок 2.3 –Определение оптимальной скорости модуляции.
Для нахождения скорости модуляции возможны следующие варианты:
1. использование фазового корректора для изменения ГВП канала;
2. уменьшение полосы используемых частот.
Рассмотрим оба варианта.
Способ 1:
Корректировка ГВП канала с помощью фазового корректора:
Таблица 2.2 –коррекция ГВП канала.
∆τгр, мс
F, КГц
До коррекции После коррекции
0,1
2,5
2
0,3
1,91
1,3
0,5
1,2
0,5
0,7
0,6
0,3
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
16
0,9
1,1
1,3
1,5
1,7
1,9
2,1
2,3
2,5
2,7
2,9
3,1
0,35
0,18
0,15
0,05
0,05
0
0,05
0,05
0,03
0,03
0,05
0,13
0,18
0,15
0,1
0,04
0,03
0
0,01
0,02
0,03
0,03
0,04
0,07
Продолжение таблицы 2.2
F, КГц
3,3
3,5
3,7
3,9
4,1
4,3
4,5
4,7
∆τгр, мс
До коррекции После коррекции
0,28
0,18
0,48
0,22
0,66
0,3
0,84
0,37
1,1
0,43
1,3
0,6
1,6
0,9
1,85
1,4
По таблице 2.2 строим откорректированную частотную характеристику
(рис. 2.4):
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
17
Рисунок 2.4 – Корректировка ГВП канала:
1- начальная характеристика; 2- откорректированная характеристика;
3- ∆τгрдоп.
С помощью фазового корректора ∆Fк= 3380 Гц будет достигнута при
∆τгр ≈0,4мс, при этом ∆τгр ≤∆τгрдоп для требуемого диапазона частот,
следовательно можно обеспечить максимальную скорость Bпр = 2366 Бод. Из
ряда стандартных скоростей для передачи данных (ГОСТ 17422-82)
выбираем ближайшую меньшую скорость модуляции В=1200 Бод.
Способ 2:
Дополним таблицу 2.1 значениями при ∆τгр >∆τгрдоп :
Таблица 2.3 – Определение оптимальной скорости модуляции.
∆τгр, мс
FВ, Гц
Fн, Гц
∆Fк, Гц
Bпр, Бод
0,5
3510
780
2730
2000
0,6
3620
700
3020
1666
0,7
3750
680
3070
1428
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
18
Рисунок 2.5 – Определение оптимальной скорости модуляции.
По графику(рис 2.5), максимальная скорость модуляции при
использовании ЧМ, ФМ и АМ с двумя боковыми полосами по (2.1)
Bпр = 1950 Бод, при этом необходима полоса в 2785 Гц, а
∆τгр=1/Впр=5,1 мс.
Из ряда стандартных скоростей для передачи данных (ГОСТ 17422-82)
выбираем ближайшую меньшую скорость модуляции В=1200 Бод.
Таким образом, в обоих вариантах получили одинаковую стандартную
скорость модуляции. Предпочтительнее второй способ, так как требует
меньших аппаратных затрат.
2.1.2 Выбор типа модуляции
Вид модуляции в УПС для каждого конкретного случая проектирования
выбирается на основе отдельных критериев, так как единого обобщенного
критерия для сравнения для сравнения различных видов модуляции, которым
можно было бы воспользоваться на практике, нет. В качестве таких
критериев наиболее распространенными являются: помехоустойчивость,
требуемая полоса частот, относительная сложность аппаратуры (по
сравнению с двухполосной АМ). Решающим фактором при определении
метода модуляции является его помехоустойчивость. Требуемая вероятность
ошибочной регистрации может быть обеспечена путем применения
различных методов модуляции, отличающихся удельной скоростью,
сложностью аппаратурной реализации и другими параметрами. Наименьшей
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
19
помехоустойчивостью обладают УПС с АМ. В то же время аппаратурная
реализация такого УПС является самой простой.
Наибольшей помехоустойчивостью обладает ФМ. ЧМ занимает
промежуточное значение по помехоустойчивости, а его реализация проще,
чем ФМ. Преимуществом ЧМ является также независимость коэффициента
ошибок от сдвига частоты в канале (до ±10Гц) и скачков фазы(до 40°). Эти
же возмущения в фазовых УПС приводят к появлению ошибок [2].
Более высокую скорость передачи может обеспечить применение АМ с
одной боковой полосой, но УПС с данным видом модуляции менее
помехоустойчив, чем с двумя боковыми полосами и сложнее в технической
реализации. Использование многопозиционных методов модуляции
значительно увеличивает скорость передачи информации, но в то же время
снижает помехоустойчивость системы. В данном случае ЧМ является более
предпочтительной. Более точную оценку вида модуляции можно дать, зная
отношение сигнал-шум.
2.2
Выбор формата сообщения.
В данном курсовом проекте для дуплексных и полудуплексных каналов
необходимо использовать маркерные способы фазирования.
Передача сообщений от отправителя к получателю обычно
осуществляется поблочно. Блок может содержать десятки и сотни символов
(кодовых комбинаций):
Блок данных 1 Блок данных 2
...
Блок данных N
Рисунок 2.6 – Общий формат передачи информации
В общем случае, для маркерного способа фазирования структура блока
имеет следующий вид:
маркер
Адрес
№
блока
Информация
Проверочные
биты
Рисунок 2.7 – Общий формат блока информации.
Уточним размеры и формат составляющих блока.
2.2.1 Определение структуры и размера маркера.
Маркер служит для синхронизации приемного и передающего
устройств, а также для сигнализации приемного устройства о начале
передачи блока информации.
При наличии искажений единичных элементов за счет высокого уровня
помех в канале связи часть разрядов маркерной комбинации может
исказиться, что приведет к невозможности обнаружения блока и потере
информации. Чтобы избежать этого, следует решение о фиксировании lразрядной маркерной комбинации принимать не только при полном
совпадении всех разрядов, но и в случае если s элементов этой комбинации
приняты неверно. Это приведет к повышению вероятности того, что
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
20
маркерная комбинация может быть выделена из информационной
последовательности, и в результате произойдет ложное фазирование.
Достоверность этого события оценивается вероятностью того, что в
случайной последовательности, входящей в состав блока, с равновероятным
появлением «0» и «1» появится сочетание из l элементов, отличающихся от
маркера не более чем на s бит [2].
Выбрав соответствующую длину маркера, можно обеспечит приемлемое
значение вероятности ложного фазирования Pлф и вероятности пропуска МК
Pпр :
1
2l
Pлф1 
Pпр1 
s
С
i 0
i
l
, Pлфi  (Pлф1)i ,
l
С P (1  P )
i  s 1
i i
l 0
l 1
0
, Pпрi  (Pпр1 )i ,
(2.3)
(2.4)
где P0 – вероятность ошибки при передаче одного двоичного символа.
Возьмем S=4 и построим график зависимости вероятности ложного
фазирования маркера от его длины, учитывая, что по заданию P0=0,01.
Таблица 2.4 – Определение вероятности ложного фазирования.
l, бит
Pлф1
4
1
10
0,377
15
0,059
20
0,0058
25
0,00045
30
0,00003
35
0,00000017
По таблице 2.4 строим график:
Рисунок 2.8 Определение оптимальной длины маркера.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
21
Требуемый класс помехоустойчивости – третий, то есть величина
ложного фазирования, не должна превышать: Pлф1  105 . Проводим на графике
вероятность ложного фазирования Pлф1  105 и находим пересечение с
искомым графиком. Полученная точка- оптимальное значение длины
маркера. В данном случае Lопт=31,8 бит. Берем ближайшее большее значение,
то есть L=32 бита. Таким образом, по формулам (2.3) и (2.4) получаем:
Pлф1 
1 4 i
С  9,6 106
32  32
2 i 0
32
i
Pпр1  С32
0,01i (1  0,01)31  2,1106
i 5
Полученные значения удовлетворяют требуемому классу
помехоустойчивости.
Маркер можно передавать как целиком, так и по частям. Так как
полученная длина маркера достаточно большая, то передавать маркерную
комбинацию целиком будет невыгодно: слишком большие накладные
расходы, а также существенное уменьшение эффективной скорости
передачи. Исходную маркерную последовательность будем передавать за 4
блока, то есть по 8 бит за блок.
При выборе маркерной комбинации необходимо учитывать :
 структура МК не должна быть однородной;
 разряды начала и конца должны быть различны;
 структура не должна быть строго регулярной.
С учетом вышесказанных требований, получаем:
11000100.01010011.00101011.11100010
Рисунок 2.8 – структура маркера.
2.2.2 Определение длины блока.
По заданию информация проверяется избыточным циклическим кодом
px  140178 , то есть 12 проверочных бит. Для адресации 5 источников
потребуется 3 бита.
При использовании РОС, по обратному каналу не передается номер
блока, поэтому необязательно делать сквозную нумерацию блоков. Под
номер блока достаточно отвести 2 бита, то есть циклически повторять
нумерацию блоков от нуля до трех.
Избыточность уменьшается с длиной блока, поэтому, если необходимо
обеспечить максимальную эффективную скорость передачи информации, то
нужно увеличивать длину блока, в то же время при увеличении длины блока
увеличивается и вероятность ошибки, а следовательно и повторной передачи
блока. Оптимальная величина блока определяется из графика зависимости
V = f (nб) при фиксированных Ро, nсл и r (увеличение длины блока приводит к
увеличению задержки выдачи информации получателю и усложняет
аппаратурную реализацию СПД).
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
22
Vэф  V (1 
P0nбл
r  nсл
)(1 
),
1  P0nбл
nбл
(2.5)
Где nсл включает в себя длину маркерной комбинации (8 бит), число
проверочных бит (12), номер блока (2 бита) и биты, отведенные под адрес
источника (3). Задаваясь рядом значений nбл можно построить график
зависимости Vэф/V = f(nбл):
Таблица 2.5 – Зависимость относительной эффективной скорости
передачи от длины блока.
nбл, Бит
Vэф/V
50
0,49
100
0,71
150
0,76
200
0,78
250
0,77
300
0,75
350
0,73
400
0,7
450
0,67
500
0,63
В итоге получаем:
Рисунок 2.9 – Определение оптимальной длины блока.
По графику (рис 2.9) получаем nбл_опт= 210 бит. Выбираем ближайшую
длину информационной части блока из ряда [!!!] : k= 240 бит, тогда
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
23
nбл=240+12+8+3+2=265 бит
Число блоков: Nбл=209.
Таким образом, предполагаемый формат блока будет иметь вид:
Маркер
Адрес
Номер блока
Информация
Проверочные
биты
8 бит
3 бита
2 бита
240 бит
12 бит
Рисунок 2.10 – Структура блока.
По заданию информация представлена в виде слов МТК-2, то есть
каждое слово по 5 бит. В блоке будет передаваться по 48 слов МТК-2.
2.2.3 Формат ответного сообщения
При наличии обратного канала связи в большинстве случаев
целесообразно использовать УЗО с ОС. Устройства с информационной ОС
позволяют обнаруживать ошибки практически любой кратности, но к каналу
обратной связи предъявляются такие же требования, как и к прямому.
Поэтому У3O с ИОС наиболее эффективно могут быть использованы при
скорости передачи 300/200 бит/с, так как УПС для такой скорости образуют в
полосе канала ТЧ два идентичных двунаправленных дискретных канала.
Если передача должна осуществляться на скорости 600 бит/сек или
выше, то эффективность использования канала связи УЗО с ИОС снижается,
и в этом случае для повышения верности передачи применяют УЗО с РОС.
Так как заданная скорость передачи превышает 600 бит/с, то
необходимо использовать РОС с применением помехоустойчивого
кодирования.
Выбранный способ кодирования обеспечивает помехозащищенное
кодирование с учетом заданной вероятности искажений.
Для начала определим все возможные виды ответного сообщения:
передача данных окончена;
запрос следующего блока информации, сигнал «Подтверждение»;
повторный запрос блока, сигнал «Запрос».
Таким образом потребуется 2 бита для описания вида сообщения:
00 – передача данных окончена;
01 – запрос следующего блока;
10 – повторный запрос блока;
Для ответного сообщения целесообразно применить асинхронный стартстопный метод, так как:
сообщения небольшой длительности;
паузы между сообщениями больше, чем длина сообщения
Формат сообщения для передачи по обратному каналу с РОС будет
иметь вид, представленный на рисунке:
Старт
Пауза
Информация
Проверочные
биты
Стоп
Рисунок 2.11 – Формат ответного сообщения.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
24
Старт-1,5 бита, 0,5 бит - контрольная пауза, 1стоповый бит, информация
- 2 бита.
Для исправления ошибок используем дублирование информации. Такой
метод прост в технической реализации и может обеспечить нужную
вероятность ошибочного приема. Применим пятикратное дублирование.
Таким образом, длина блока будет равна:1,5+0,5+10+1=13 бит.
Вероятность трансформации в данном случае:
 d 1 (n  p) j  e( n p) 
Pт р  1  
 ,где p - вероятность ошибки.
j!
 j 0

8
Pт р  2,55510 .
(2.6)
При 3-х кратном дублировании: Pт р  8 105 , что не удовлетворяет
требованиям третьей категории помехоустойчивости. Пятикратное
дублирование
информации
обеспечивает
требуемую
вероятность
ошибочного приема информации.
2.3
Расчет среднего времени запаздывания информации.
Время передачи для одного источника рассчитывается по (2.7):
L  M 265 209
Тпер 

 46,1 (с)
(2.7)
B
1200
Время цикла передачи от N источников информации определяется по
формуле (2.8):
(2.8)
tц  Tпер  N  46,1 5  230,5 (с)
Среднее время ожидания сообщением обслуживания на выходе
источника информации определяется по формуле (2.9):
  tц 2
2 106  230,52
(2.9)
C

 0,053(с)
2  (1    tц ) 2  (1  2 106  230,5)
Время передачи для одного источника по обратному каналу:
Tпер_обр
13 209
 2,64 (с)
1200
Время цикла передачи от N источников информации определяется по
формуле (2.10):
(2.10)
tц_обр  2,64  5  13,2 c .
Время передачи для одного источника по прямому и обратному каналу:
Тпер0 = Т пер + Tпер_обр=59,3(с)
Время цикла передачи от N источников информации по прямому и
обратному каналу определяется по формуле (2.10):
tц0  59,3  5  296,5 (с)
Среднее время ожидания сообщением обслуживания на выходе
источника информации определяется по формуле (2.9):
2 106  296,52
C
 0,09 (с)
2  (1  2 106  296,5)
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
25
Среднее время запаздывания информации определяется по
формуле:
W  tц0  С  296,5  0,09  296,59 (с)
2.4
Выводы к главе 2
Таким образом, были получены следующие данные, необходимые для
дальнейшего проектирования:
 Вычислена оптимальная скорость модуляции, на основе которой
определена стандартная скорость 1200 Бод;
 Определен вид модуляции – ЧМ;
 Вычислена оптимальная длина маркера, разработана его структура
(рис. 2.8);
 Определена оптимальная длина блока, на основании которой выбрана
длина информационной части из стандартного ряда ( рис.2.9);
 Разработан формат прямого и обратного сообщения (рис 2.10 и 2.11)
 Рассчитаны основные временные параметры системы.
3
3.1
Разработка структурных схем и алгоритмов функционирования СПД.
Разработка структурной схемы передающего устройства.
Система передачи данных состоит из передающей и приемной частей.
Структурная схема передающей части СПД представляет собой
совокупность основных блоков, реализующих заданные функции, и связей
между ними. Связи указываются только между теми блоками, которые
непосредственно взаимодействуют в процессе работы СПД.
Основными блоками являются:
o
устройство управления (УУ);
o
счетчик повторных запросов (СПЗ);
o
блок формирования информации (БФИ);
o
кодирующее устройство (КУ);
o
блок начальной установки (БНУ);
o
формирователь тактовых импульсов (ФТИ);
o
датчик номера блока (ДНБ);
o
датчик маркерной комбинации (ДМК);
o
анализатор обратного канала связи (АОКС);
o
блок аварийной сигнализации и индикации (БАСИ);
o
ключевая схема (Кл);
o
формирователи сигналов обмена (ФСО1 и ФСО2);
o
буферный накопитель (БН);
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
26
o
датчик адреса источника (ДА);
o
блок преобразования передаваемой информации (БППИ);
Основным блоком УЗО является устройство управления (УУ), которое
управляет работой всех остальных блоков. Управляющие воздействия на
выходе УУ вырабатываются на основе анализа входящих сигналов и зависят
от временной позиции в пределах информационного блока. Переключение
УУ происходит под действием тактовых импульсов, формируемых ФТИ. Для
установления устройств в начальное состояние применяется блок начальной
установки. Данные, поступающие с источников, отправляются в БППИ, где
происходит их преобразование к виду, подходящему для обработки в КУ.
Обработанные данные поступают в буферный накопитель, затем
объединяются с адресом источника, поступающим с ДА, маркерной
комбинацией, формируемой ДМК, и номером блока, поступающим с ДНБ.
Эти данные составляют информационную последовательность от источника,
и ее формирование происходит в БФИ.
Затем информационная последовательность поступает на кодирующее
устройство КУ, в котором к информационной последовательности
добавляются проверочные биты. Отметим, что биты, отведенные под маркер,
не кодируются, так как при расчетах длины маркера оговорено, что он может
искажаться (до 4-х ошибок). После добавления проверочных бит в конец
блока информация передается в УПС. В конце каждого блока УУ опрашивает
состояние АОКС и в случае наличия сигнала «Подтверждение» осуществляет
дальнейшую передачу последующих блоков либо при наличии сигнала
«Запрос» прекращает ввод информации и выдает повторно из БН блок, в
котором обнаружена ошибка.
Для индикации аварийных ситуаций в схему включен блок аварийной
сигнализации и индикации (БАСИ). Также этот блок служит для индикации
состояния СПД. Блок аварийной ситуации должен индицировать следующие
возможные состояния: включение питания АПД; передача или прием; нет
ответа с приемной стороны; ошибка передачи.
Для анализа поступающей информации по обратному каналу служит
анализатор обратного канала связи (АОКС). Из обратного канала связи на
АОКС поступает закодированное сообщение. Декодирование поступившей
информации осуществляется мажоритарным способом. Если поступил
сигнал «Запрос», то АОКС увеличивает значение счетчика числа повторных
запросов на единицу. Если сигнал «Запрос» посылается более, чем заданное
число раз(назовем его Nз), то УУ выдает на БАСИ код ошибки.
Для реализации передачи от нескольких источников, УУ должно
циклически опрашивать источники информации (ИИ) о готовности их
передавать информацию. Последовательно проверяются адреса источников,
до момента нахождения источника, готового к передаче информации. По
адресу происходит коммутация канала с нужным источником, с которого
данные поступают для обработки.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
27
Для работы схемы необходим блок временного хранения данных, в
который будет помещаться информация, полученная от одного из
источников информации. Данные будут храниться там до передачи их
приемнику. Для временного хранения данных служит буферный накопитель
(БН). Для связи УУ с УПС и источниками информации предусмотрены
ФСО1 и ФСО2.
Ключевая схема представляет собой мультиплексор со стробированием,
где:
 адресные входы - код номера источника (поступает со счетчика
адреса);
 информационные сигналы – информация с источников;
 сигнал стробирования – связь с УУ.
Структурная схема передающей части СПД выглядит следующим
образом:
Г1
Г2
БФИ
ФСО1
Г5
П1 Пn
Г1
ДМК
Д1
Д2
П4
Г4
И5
Д5
П5
Г5
закодировать информацию
записать данные
записать адрес
Д4
И4
БН
БНУ
БАСИ
ФСО2
Управляющий
сигнал
синхронизация
УУ
ФТИ
код аварии
П3
Г3
адрес
Счетчик адреса
записать МК
И3
БППИ
Кл
...
открыть ключ
Д3
ДНБ
КУ
Д5
начальная
установка
Г2
следующий адрес
И2
П2
сброс счетчика адресов
Д2
ДА
Записать номер блока
Д1
И1
данные
...
ОКС
СПЗ
АОКС




















УПС
Рисунок3.1 - Функциональная схема передающей части СПД.
3.2
Алгоритм функционирования приемного устройства.
Включение питания индицируется блоком аварийной сигнализации и
индикации. Далее сигналы с блока начальной установки передаются на
управляющее устройство, осуществляется сброс буферного накопителя,
блока формирования информации, регистров кодирующего устройства,
счетчика адреса и номера блока. Далее УУ начинает увеличивать счетчик
адреса и одновременно запрашивать сигнал о готовности выбранного
источника. При обнаружении готового источника инициализируется режим
передачи и приема, данные с выбранного источника помещаются в буферный
накопитель, формируется сообщение для передачи. Сообщение поступает на
кодирующее устройство, в котором к нему добавляются проверочные биты.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
28
По сигналу УУ кодирующее устройство отправляет информацию в УПС.
Производится передача сообщения.
Далее проверяется обратный канал, Происходит прием ответного
сигнала. При поступлении сообщения происходит его декодирование и
проверяется верность доставки данных. Если сообщение от источника
доставлено с ошибками, подается сигнал на устройство управления и СПЗ,
происходит повторная передача блока информации. При отсутствии ошибок
передается следующий блок информации. Если ответное сообщение не
приходит в течение заданного интервала времени, УУ подает код аварии в
БАСИ. Если данные больше передавать не требуется, системе можно
отключить питание. Алгоритм передающей части СПД:
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
29
Начало
1
Включение
питания
2
А
Индикация вкл.
питания
E
В
13
Время
ожидания
превышено?
14
Декодирование
нет
да
3
Начальная
установка
устройств
нет
15
С
Передача
без ошибок?
16
17
4
Выбор
следующего
адреса
источника
да
Увеличение
числа
повторных
запросов
Индикация
аварийной
ситуации
18
Конец
данных?
нет
да
нет
D
5 Источник
готов?
нет
19
Nз
превышено?
D
Код
окончания
передачи?
20
да
да
да
21
Индикация
аварийной
ситуации
6
Запись данных
в накопитель
нет
нет
E
22
Выключить
питание?
да
7
сброс счетчика
повторных
запросов
Конец
8
Формирование
сообщения
9
Кодирование
сообщения
10
Передача
сообщения
11
Ожидание
сообщения в
обратном
канале
12
Сообщение
пришло?
С
нет
да
В
А
Рисунок 3.2 - Блок-схема алгоритма передающей части
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
30
3.3
Разработка структурной схемы приемного устройства.
Структурная схема приемной части СПД содержит следующие блоки:
 устройство управления (УУ);
 блок начальной установки (БНУ);
 формирователь тактовых импульсов (ФТИ);
 блок аварийной сигнализации и индикации (БАСИ);
 регистр маркерной комбинации (РгМК);
 регистр служебной комбинации (РгСК);
 входной регистр (ВхРг);
 дешифратор маркерной комбинации (ДшМК)
 декодирующее устройство (ДКУ);
 буферный накопитель (БН);
 формирователь сообщения обратной связи(ФСОС);
 блок анализа служебной комбинации (БАСК);
 блок преобразования и выдачи информации (БПВИ);
 формирователи сигналов обмена (ФСО1 и ФСО2);
Работой приемной части управляет устройство управления. Так же, как
и в передающей части, необходимо ввести в схему блоки БАСИ, ФТИ, БНУ.
Для выявления маркера необходимы дешифратор и регистр маркерной
комбинации. Информация, пришедшая с УПС, поступает в регистр
маркерной и служебной комбинации, а также во входной регистр. По
сигналу УУ, БАСК анализирует номер блока и адрес источника, после чего
выдает ответ в УУ. Декодирующее устройство вычисляет синдром ошибок и
информирует УУ о наличии или отсутствии ошибок. При безошибочной
передаче УУ подает сигнал на БН, и данные поступают в БПВИ. В БПВИ
происходит преобразование информации к виду, пригодному для ООД.
Так как канал передачи полудуплексный, приемное устройство должно
отправить приемному устройству отчет о приеме блока информации. Для
этого приемник формирует квитанцию и отправляет ее по обратному каналу.
Для формирования квитанции в схему добавлен ФСОС.
Помимо анализа верности передачи служебной информации, БАСК
подсчитывает общее число верно переданных блоков и по окончании
передачи данных от источника формирует УУ и по обратному каналу
отправляется сообщение «передача окончена».
Существует возможность синхронизации ГТИ с УПС. С помощью
ФСО1 реализуется связь между УПС и УУ, а с помощью ФСО2 – между УУ
и ООД.
Таким образом, структурная схема приемной части будет иметь
следующий вид:
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
31
ВхРг
РгСК
РгМК
ДКУ
ДшМК
ФСОС
Записать в буфер
Результат декодирования
Декодировать
данные
Результат проверки
Код
сообщения
БАСК
Проверка Служебной
информации
ФСО1
Результат проверки
Управляющий
сигнал
Проверка маркера
БН
Поиск маркера
БПВИ
информация
Преобразование
УУ
ФСО2
синхронизация
Управляющий
сигнал
код




















УПС
данные
ФТИ
БНУ




















ООД
БАСИ
Рисунок 3.3 – Структурная схема приемной части
3.4
Алгоритм функционирования приемного устройства.
Работа передающей части УЗО начинается с включения питания.
Включение питания индицируется блоком аварийной сигнализации и
индикации. Далее сигналы с блока начальной установки передаются на
управляющее устройство, осуществляется сброс в ноль буферного
накопителя и входных регистров, кодирующего устройства, БАСК.
После включения питания передающая и приемная части должны
синхронизировать свою работу. При маркерном способе передачи поиск
маркерной комбинации производится путем постоянного анализа
поступающей последовательности. Если во время приема одного кадра
следующая маркерная комбинация не приходит через заданное время, то УУ
принимает решение о неисправности и выдает код ошибки в БАСИ.
При выявлении МК, БАСК формирует УУ об отсутствии или наличии
ошибок в служебной информации. Если ошибки не обнаружены, приемное
устройство принимает данные и декодирует их. При успешном
декодировании данные поступают далее через БПВИ к приемнику
информации. Если имеются ошибки в служебной комбинации или
декодирование неуспешно, по обратному каналу посылается квитанция об
ошибке (сигнал «Запрос»). При безошибочном приеме отправляется сигнал
«Подтверждение».
После окончания передачи кадра, приемное устройство отправляет по
обратному каналу сигнал «передача окончена» и начинает поиск маркерной
комбинации следующего кадра информации.
Таким образом, алгоритм работы приемной части будет следующим:
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
32
Начало
А
1
13
Включение
питания
Выявление
маркера
2
Индикация вкл.
питания
14 Маркер
обнаружен?
нет
да
15
3
Начальная
установка
устройств
Прием данных
В
4
16
Анализ
служебной
информации
5
19
Информация
верна?
Прием данных
нет
да
18
Индикация
аварийной
ситуации
17
Выявление
маркера
Время
ожидания
истекло?
нет
да
20
6
Анализ
служебной
информации
7 Информация
верна?
Декодирование
21 Нулевой
синдром
ошибок?
нет
да
22
Преобразование
информации
да
8
Декодирование
9 Нулевой
синдром
ошибок?
да
10
Преобразование
информации
12
Формирование
ответа
«подтверждение»
24
Формирование
ответа
«подтверждение»
нет
11
Формирование
ответа
«запрос»
нет
23
Формирование
ответа
«запрос»
25
нет
Передача
закончена?
да
Формирование
ответа
«передача
окончена»
А
нет
В
26
Выключить
питание?
да
Конец
Рисунок 3.4 – Блок-схема алгоритма приемной части
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
33
Синтез схем кодирующего и декодирующего устройств.
3.5
Кодирующее устройство циклических кодов строится в соответствии с
выбранным полиномом.
Для реализации кодирующего устройства циклического кода
необходимо выполнить следующие операции:
1)умножить кодируемую последовательность на хr, где r равно
наивысшей степени образующего полинома;
2)полученное произведение поделить на образующий полином;
3)полученный остаток от деления суммировать с кодируемой
последовательностью, умноженной на хr.
Проверочными битами являются биты остатка от деления кодируемой
последовательности на образующий полином. Суммирование кодируемой
последовательности, умноженной на хr, с остатком от деления приводит к
тому, что закодированная последовательность нацело делится на
образующий полином. Это свойство используется при построении
декодирующих устройств.
По заданию, образующий полином Р(х) выбран двенадцатой степени.
Следовательно, при кодировании информационной последовательности
необходимо сначала умножить ее на 1012, а затем поделить на образующий
полином;
полученный
остаток
сложить
с
информационной
последовательностью и получить закодированную последовательность.
Вид выбранного образующего полинома:
P(x) = x12 +x11+x3+x2 +x+1.
Таким образом, структурная схема декодера:
x6
+
x3
x7
x8
x2
x9
+
x4
+
x1
x10
+
x1
x5
+
x11
x0
+
K2
выход
2
K1
1
вход
Рисунок 3.5 – Структурная схема кодера.
В этой схеме имеются два ключа К1 и К2. В исходном состоянии ключ
К1 находится в положении «1», ключ К2 замкнут. При этом к
информационных бит старшим разрядом вперед поступают на выход схемы и
через сумматор на схему деления на образующий полином Р(х). После
передачи к-символов схема управления, представленная УУ, переключает
ключ К1 в положение «2», а ключ К2 размыкает. На этом деление
заканчивается и за r-тактов осуществляется выдача остатка от деления .
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
34
В курсовом проекте необходим лишь контроль циклическим кодом, то
есть контроль ошибок. Для обнаружения ошибки достаточно разделить
принятую последовательность на образующий полином и проанализировать
остаток. При нулевом остатке ошибок при передаче не обнаружено, в
противном случае в принятой последовательности содержатся ошибки и
требуется повторная передача блока. Аналогично кодеру,
n-бит старшим разрядом вперед поступают на вход схемы деления на
образующий полином Р(х), при этом ключ К1 в положении «1». После
передачи n-символов схема управления переключает ключ К1 в положение
«2» и остаток за r тактов поступает на УУ. Структурная схема декодера будет
иметь вид:
запись
+
x0
+
x1
+
+
x2
x3
x4
x5
1
K1
x6
x7
x8
x9
x10
+
выход
2
x11
Рисунок 3.6 – Структурная схема декодера.
3.6
Выводы к главе 3.
В процессе проектирования были разработаны структурные схемы
приемного и передающего устройства, а также кодирующего и
декодирующего устройства согласно заданному полиному, описаны
алгоритмы работы передающей и приемных частей СПД. На основании
полученных данных можно приступить к программной реализации кодера и
декодера.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
35
4
4.1
Разработка кодирующего и декодирующего устройства
Описание программы
Общие сведения
В соответствии с заданием на курсовой проект был разработан
программный продукт «Передача и прием информации с использованием
CRC - кода», наглядно демонстрирующий работу кодера и декодера
циклического кода. Приложение было разработано в среде
программирования C++ Builder 5.0. Компиляция выполнена без
использования динамических библиотек и runtime пакетов с целью
обеспечения переносимости программы на компьютер, где не установлена
среда C++ Builder 5.0. Для функционирования приложения на компьютере
должна быть установлена операционная система семейства Microsoft
Windows. Аппаратные требования приложения невелики, благодаря чему оно
может быть использовано и на «слабых» компьютерах.
Функциональное значение
Приложение наглядно демонстрирует формирование информационной и
проверочной последовательности кодером, внесение каналом передачи
данных вектора ошибок, выявление декодером наличия ошибок в принятой
последовательности.
Программа предназначена лишь для демонстрации работы кодера и
декодера циклического кода, поэтому с помощью неё возможно
преобразование информационной последовательности ограниченной длины.
Степень образующего полинома также ограничена.
Входные данные
Программный продукт позволяет вводить данные с клавиатуры или
загружать из файла. Исходными данными являются:
 информационная последовательность,
 образующий полином P(x),
 вектор ошибок
Ввод названных данных производится в двоичном виде (нули и
единицы), что позволяет наглядно анализировать работу системы.
Выходные данные
Выходными данными программы является таблицы, показывающие
содержимое регистров кодера и декодера циклического кода, а также
результат декодирования (наличие или отсутствие ошибок в принятой
последовательности). Программный продукт позволяет сохранять в файл в
бинарном виде информационную последовательность, образующий полином,
вектор ошибок, содержимое регистров кодера и декодера. Сохранённые
программой данные можно загружать в качестве входных данных.
Сохранение информации в бинарном виде позволяет проверить правильность
её работы с помощью сторонних шестнадцатеричных редакторов.
Математическая постановка задачи
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
36
Циклические коды находят наибольшее распространение в системах
передачи данных с решающей обратной связью, что обусловлено их
высокими корректирующими свойствами, сравнительно простой
реализацией, невысокой избыточностью. Особенно они эффективны при
обнаружении пакетов ошибок. Циклические коды относятся к блочным
систематическим кодам, в которых каждая комбинация кодируется
самостоятельно в виде блока таким образом, что информационные k и
проверочные г элементы всегда находятся на определенных местах. Для
упрощения процедуры кодирования и декодирования проверочные биты
размещают в конце блока. Кодирование передаваемого сообщения
осуществляется умножением двоичной последовательности G(x) на одночлен
хr, имеющий ту же степень, что и образующий полином Р(х), с добавлением к
этому произведению остатка R(x), полученного после деления произведения
G(x)*xr на образующий полином, т. е. передаваемое в канал связи сообщение
F(x) имеет вид:
F(x) = G(x)* xr+R(x).
(4.1)
При декодировании принимаемая последовательность F(x) снова
делится на образующий полином Р(х). Полученный нулевой остаток R(x)=0
свидетельствует об отсутствии ошибок в принятом блоке, а отличие от нуля о наличии ошибок.
Описание логической структуры
Для моделирования работы кодера и декодера циклического кода в составы программы
был включен класс Coder. В состав класса входят следующие переменные:
Таблица 4.1 – Переменные класса Coder.
Имя переменной
Тип
Комментарии
Step_P
Степень образующего полинома
V
Объем передаваемой информации
integer
i
Счетчики в циклах
j
Inf
Указатель на массив информации
Pol
Указатель на массив представления полинома
Reg_Cod
bool *
Указатель на массив представления кодера
Reg_Dec
Указатель на массив представления декодера
Err
Указатель на вектор ошибок
Для представления информации в программе используется тип bool. Это приводит к
увеличению объема занимаемой памяти, но в данном случае оно несущественно, так как
передается лишь 240 бит. Каждый элемент массива Reg_Cod и Reg_Dec соответствует
одной ячейке регистра.
Прототипы функций класса Coder:
 void Init();
 bool* getInf();
 bool* getPol();
 bool* getReg();
 void setInf(bool* );
 void setPol(bool* );
 void setReg(bool* );
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
37
 void setSt(int);
 int getSt();
 int getV();
 bool* getDec();
 bool* getErr();
 void setDec(bool* );
 void setErr(bool* );
 void coder::Cod();
 void coder::Decod().
Функция Init() – конструктор класса.
Большинство функций класса предназначены для «извлечения» или изменения
значения закрытых переменных класса. Наибольший практический интерес
представляют функции кодирования (void Cod() ) и декодирования (void Decod() )
информации:
Начало
11
Inf=0
и
Pol=0
1
Scan=0
нет
нет
да
12
13
да
A
j=0
j=0
2
Reg_Cod=0
нет
да
3
Освобождение
памяти под
Reg_Cod
14
4
Инициализация
памяти под
массив
Reg_Cod
15
j<Step_P
17
нет
j<Step_P
нет
да
да
18
Reg_Cod[j]=
Reg_Cod[j+1]^
Pol[j+1]
Reg_Cod[j]=
Reg_Cod[j+1]
j=j+1
5
i=0
19
16
Reg_Cod
[Step_P-1]=1;
Reg_Cod
[Step_P-1]=0
6
нет
i<Step_P
да
C
7
Reg_Cod[i]=0
i=i+1
20
i=0
8
21
i=0
нет
i<Step_P
да
22
Inf
[V-Step_P+i]
=Reg_Cod[i]
i=i+1
9
i<V-Step_P
да
C
A
10
Scan=
Inf[i]^Reg_Cod[0]
да
Конец
В
Рисунок 4.1 – Блок–схема алгоритма функции Cod().
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
38
Начало
11
1 Inf=0 и
Pol=0 и Err=0
нет
нет
да
16
12
да
2
Reg_Dec=0
Scan=0
А
j=0
j=0
нет
да
17
3
13
Освобождение
памяти под
Reg_Dec
j<Step_P-1
нет
j<Step_P-1
да
да
14
4
Инициализация
памяти под
массив
Reg_Dec
Reg_Dec[j]=
Reg_Dec[j+1]
18
Reg_Dec[j]=
Reg_Dec[j+1]^
Pol[j+1]
5
15
i=0
Reg_Dec
[Step_P-1]
=Inf[i]^Err[i]
6
i<Step_P
19
Reg_Dec
[Step_P-1]
=(Inf[i]^Err[i])^1
нет
да
7
Reg_Dec[i]=0
i=i+1
8
i=0
9
А
нет
i<V
да
10
Конец
Scan=Reg_Dec[0]
В
Рисунок 4.2 – Блок–схема алгоритма функции Decod().
Моделирование работы системы происходит в несколько этапов:
1. инициализация образующего полинома;
2. формирование информационной последовательности;
3. кодирование;
4. наложение вектора ошибок;
5. декодирование.
Все перечисленные этапы отражены в интерфейсе программы.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
39
Рисунок 4.3 – Интерфейс программы.
4.2
Тестирование программной реализации.
Пусть объем исходной информации равен 1 байту: I=10111011
Полином четвертой степени: p(x)  110012
Для кодирования требуется умножить исходную информацию на xr и
разделить на образующий полином. Полученный остаток от деления сложить
по модулю два с исходной последовательностью, умноженной на xr. Для
анализа работы кодера и декодера нужно знать не частное, а лишь остаток от
деления.
Тест первый – нулевой вектор ошибок.
1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1
1 1 0 0 1
1 1 1 0 0
1 1 0 0 1
1 0 1 1 1
1 1 0 0 1
1 1 1 0 0
1 1 0 0 1
1 0 1 0 0
1 1 0 0 1
1 1 0 0 0
1 1 0 1 1
0 0 1 1
Рисунок 4.4 - Кодирование исходной последовательности.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
40
Остаток от деления в двоичном виде: 0011.
1 0 1 1 1 0 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1
1 0 1 1 1 0 1 1 0 0 1 1
Для декодирования разделим информацию на образующий полином:
1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 0 1
1 1 0 0 1
1 1 1 0 0
1 1 0 0 1
1 0 1 1 1
1 1 0 0 1
1 1 1 0 0
1 1 0 0 1
1 0 1 0 1
1 1 0 0 0
1 1 0 1 1
1 1 0 1 1
0 0 0 0
Рисунок 4.5 - Декодирование информационной последовательности(нулевой
вектор ошибок).
Нулевой вес остатка свидетельствует об отсутствии ошибок в принятой
последовательности.
Тест второй (одиночная ошибка).
Исказим третий бит закодированной последовательности:
1 0 0
1 1 0
1 0
1 1
1
1
1
0
1
0
1
1
1
1
0
0
0
0
0 1 1 0 0 1 1 1 1 0 0 1
0
1
1
0
1
1
1
1
0
1
1
1
1
0
1
1
0 0
0 1
0 1 1
0 0 1
0 1 0 1
Рисунок 4.6 - Декодирование информационной последовательности (одна
ошибка).
Так как вес остатка не равен нулю, то информация передана с ошибками.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
41
Тест третий (двойная ошибка).
Исказим 4-й и 5-й бит передаваемой последовательности:
1 0 1 0 0 0 1 1 0 0 1 1 1 1 0 0 1
1 1 0 0 1
1 1 0 1 0
1 1 0 0 1
1 1 1 1 0
1 1 0 0 1
1 1 1 0 1
1 1 0 0 1
1 0 0 1
Рисунок 4.7 - Декодирование информационной последовательности (две
ошибки).
Остаток от деления свидетельствует о наличии ошибок в принятой
последовательности.
Введем предложенные данные для тестирования программной реализации:
Рисунок 4.8 - Тестирование программной реализации (первый тест)
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
42
Рисунок 4.9 - Тестирование программной реализации (второй тест)
Рисунок 4.10 - Тестирование программной реализации (третий тест)
Результаты тестирования полностью совпали с теорией, что свидетельствует
о верной работе программной реализации.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
43
4.3
Выводы к главе 4.
В процессе проектирования была разработана программная реализация
кодера и декодера циклического кода, описан интерфейс программы, а
также приведены блок – схемы функций кодирования и декодирования
информации.
Листинг программы приведен в приложении C.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
44
Заключение
В результате проектирования получена система передачи данных, а
именно приемная и передающая части устройства защиты от ошибок,
реализующие прием и передачу сообщения при синхронном маркерном
способе фазирования. Разработаны форматы сообщений, а также устройства
кодирования и декодирования информации при передаче информационных
сообщений и квитанций по прямому и обратному каналу. Используется
полудуплексный канал связи и решающая обратная связь.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
45
Приложение А
(справочное)
Библиографический список
1. Бармин И.Н. Методические указания по выполнению курсового
проекта. – Киров, 2007. – 17 с.
2. Чернега В.С., Василенко В.А., Бондарев В.Н. Расчет и проектирование
технических средств обмена и передачи информации. – М.: Высшая
школа, 1990. – 224 с.
3. Тутевич В.Н. Телемеханика. – М.: Высшая школа, 1985. – 423 с.
4. СТП ВятГУ 101 – 2004. Общие требования к оформлению текстовых
документов. – Киров, 2004. – 29 с.
5. СТП ВятГУ 102 – 2004. Общие требования к структуре, оформлению и
представлению курсовых проектов и работ. – Киров, 2004. – 26 с.
6. Единая система программной документации.- М.: Изд. стандартов,
1982. - 128 с.
7. http://wiki.incomrade.com:80/index.php
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
46
Приложение B
(рекомендуемое)
Список используемых сокращений
СПД – система передачи данных.
УФЦ – устройство фазирования по циклу.
ТИ – система телеизмерения.
ТС – система телесигнализации.
ТУ – система телеуправления.
ТУ-ТС – система телеуправления и телесигнализации.
ТИ-ТС – система телеизмерения и телесигнализации.
ОС – обратная связь.
ИОС – информационная обратная связь.
РОС – решающая обратная связь.
КОС – комбинированная обратная связь.
ГВП – групповое время прохождения.
УУ – устройство управления.
СПЗ счетчик повторных запросов.
БФИ – блок формирования информации.
КУ – кодирующее устройство.
БНУ – блок начальной установки.
ФТИ – формирователь тактовых импульсов.
ДНБ – датчик номера блока.
ДМК – датчик маркерной комбинации.
АОКС – анализатор обратного канала связи.
БАСИ – блок аварийной сигнализации и индикации.
Кл – ключевая схема.
ФСО – формирователь сигналов обмена.
ФК – фазовый корректор.
БН – буферный накопитель.
ДА – датчик адреса источника.
БППИ – блок преобразования передаваемой информации.
РгМК – регистр маркерной комбинации.
РгСК – регистр служебной комбинации.
ВхРг – входной регистр.
ДшМК – дешифратор маркерной комбинации.
ДКУ – декодирующее устройство.
ФСОС – формирователь сообщения обратной связи.
БАСК – блок анализа служебной комбинации.
БПВИ – блок преобразования и выдачи информации.
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
47
Приложение C
(обязательное)
Листинг программы.
Coder.h
#ifndef coderH
#define coderH
//----------------class coder
{protected:
private:
int Step_P;
//степень полинома
bool *Inf;
//указатель на массив информационных элеметов
bool *Pol;
//указатель на массив представления полинома
bool *Reg_Cod;
bool *Err;
bool *Reg_Dec;
//регистры кодера
int V;
//объем информации
public:
int i,j;
//счетчики
void Init();
bool* getInf();
bool* getPol();
bool* getReg();
void setInf(bool* );
void setPol(bool* );
void setReg(bool* );
void setSt(int);
int getSt();
int getV();
bool* getDec();
bool* getErr();
void setDec(bool* );
void setErr(bool* );
void coder::Cod();
void coder::Decod();};
Coder.cpp
extern PACKAGE coder *My;
//--------------------------------------------------------------------------#endif
#include <vcl.h>
#pragma hdrstop
#include "coder.h"
pragma package(smart_init)
void coder::Init()
{ Inf=0; Pol=0; Reg_Cod=0; Step_P=0; Reg_Dec=0; Err=0; V=12; }
bool* coder::getInf()
{ return Inf; }
bool* coder::getPol()
{ return Pol; }
bool* coder::getReg()
{ return Reg_Cod; }
void coder::setInf(bool* A) { Inf=A; }
void coder::setPol(bool* A) { Pol=A;}
void coder::setReg(bool* A) { Reg_Cod=A; }
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
48
void coder::setSt(int B)
int coder::getSt()
int coder::getV()
bool* coder::getDec()
bool* coder::getErr()
void coder::setDec(bool* A)
void coder::setErr(bool* A)
{ Step_P=B; }
{ return Step_P; }
{ return V; }
{ return Reg_Dec; }
{ return Err;}
{ Reg_Dec=A;}
{ Err=A; }
void coder::Cod()
{if(Inf!=0&&Pol!=0)
{ if (Reg_Cod==0) Reg_Cod=new bool[Step_P];
for(i=0;i<Step_P;i++)
{ Reg_Cod[i]=0; } //Начальное заполнение регистра
for(i=0;i<V-Step_P;i++)
{ bool Scan=Inf[i]^Reg_Cod[0];
if(Scan==0)
{for(j=0;j<Step_P;j++)
{ Reg_Cod[j]=Reg_Cod[j+1]; }
Reg_Cod[Step_P-1]=0; }
if(Scan==1)
{ for(j=0;j<Step_P;j++)
{ Reg_Cod[j]=Reg_Cod[j+1]^Pol[j+1]; }
Reg_Cod[Step_P-1]=1; }
}
for(i=0;i<Step_P;i++)
{ Inf[V-Step_P+i]=Reg_Cod[i]; }
} }
//------------------------------------------------------------------------------void coder::Decod()
{ if(Inf!=0&&Pol!=0&&Err!=0)
{ Reg_Dec=new bool[Step_P];
for(i=0;i<Step_P;i++)
{ Reg_Dec[i]=0; }
for(i=0;i<V;i++)
{ bool Scan=Reg_Dec[0];
if(Scan==0)
{for(j=0;j<Step_P-1;j++)
{ Reg_Dec[j]=Reg_Dec[j+1]; }
Reg_Dec[Step_P-1]=Inf[i]^Err[i]; }
if(Scan==1)
{ for(j=0;j<Step_P-1;j++)
{ Reg_Dec[j]=Reg_Dec[j+1]^Pol[j+1]; }
Reg_Dec[Step_P-1]=(Inf[i]^Err[i])^1; } } } }
Unit2.cpp
#pragma hdrstop
#include <stdio.h>
#include "Unit3.h"
#include "Unit2.h"
#include "coder.h"
#include <math.h>
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; coder * My;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ My=new coder; My->Init(); }
//--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
49
{Randomize(); My->setSt(StrToInt(Edit1->Text));
int Step_P=My->getSt();
//считывание степени полинома
StringGrid2->ColCount=Step_P+1;
if(My->getPol()!=0) delete [Step_P+1] My->getPol();
//если
массив
не
инициализирован
bool* Pol=new bool[Step_P+1]; Pol[0]=1; Pol[Step_P]=1;
for (i=1;i<Step_P;i++)
{ Pol[i]=random(2); } //инициализация полинома
for(i=0;i<Step_P+1;i++)
{ StringGrid2->Cells[i][1]=IntToStr(Pol[i]);
StringGrid2->Cells[i][0]=IntToStr(Step_P-i); } //вывод на экран
StringGrid2->Visible=true; Label2->Visible=true; My->setPol(Pol); }
//--------------------------------------------------------------------------void __fastcall TForm1::Inversia_pol(TObject *Sender)
//инверсия элемента в массиве
полинома
{My->getPol()[Scan]=StrToInt(StringGrid2->Cells[Scan][1])^1;
StringGrid2->Cells[Scan][1]=IntToStr(My->getPol()[Scan]);}
//--------------------------------------------------------------------------void __fastcall TForm1::scan(TObject *Sender, int ACol, int ARow,bool &CanSelect)
{Scan=ACol;}
//--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{ int Step_P=My->getSt();
if(RadioButton1->Checked==true&&My->getSt()<32&&My->getSt()>2)
//Заполнение
информационного массива random
{ bool* Inf=My->getInf();
if(Inf==0) Inf=new bool[240];
StringGrid1->ColCount=240;
for(i=0;i<My->getV()-Step_P;i++)
//Инициализация информации
{ Inf[i]=random(2); StringGrid1->Cells[i][0]=IntToStr(Inf[i]); }
for(i=My->getV()-Step_P;i<My->getV();i++)
{ Inf[i]=0; StringGrid1->Cells[i][0]=IntToStr(Inf[i]); }
//Умоножаем
на
степень полинома
StringGrid1->Visible=true; My->setInf(Inf); }
if(RadioButton2->Checked==true&&My->getSt()<32&&My->getSt()>2) //загрузка из файла
{bool* Inf=My->getInf(); OpenDialog1->DefaultExt="isk"; OpenDialog1->FilterIndex=2;
if(OpenDialog1->Execute())
{ FILE *P=fopen(OpenDialog1->FileName.c_str(),"r"); fseek(P,0l,0);
char a[33]={0}; i=0;
do { a[i]=fgetc(P); i++; } while(feof(P)==0&&i<33);
if(Inf==0) Inf=new bool[My->getV()]; char A=128;
for(i=0;i<30;i++)
//вывод на экран
{A=128;
for(j=0;j<8;j++)
{ Inf[8*i+j]=((a[i]&A)>>(7-j))&0x1; A=A/2; }
}
StringGrid1->ColCount=My->getV(); StringGrid4->ColCount=My->getV();
for(i=0;i<My->getV();i++)
{StringGrid4->Cells[i][0]=IntToStr(Inf[i]); StringGrid1->Cells[i][0]=IntToStr(Inf[i]); }
StringGrid1->Visible=true; StringGrid4->Visible=true;
My->setInf(Inf); fclose(P); } } }
//--------------------------------------------------------------------------void __fastcall TForm1::Inversia_inf(TObject *Sender)
{My->getInf()[Scan]=StrToInt(StringGrid1->Cells[Scan][0])^1;
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
50
StringGrid1->Cells[Scan][0]=IntToStr(My->getInf()[Scan]);}
//--------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender)
//кодирование информации
{ My->Cod(); StringGrid3->ColCount=My->getSt(); StringGrid3->Visible=true;
for(i=0;i<My->getSt();i++)
//Вывод на экран регистров кодера
{StringGrid3->Cells[i][0]=IntToStr(My->getReg()[i]); }
bool *Err=My->getErr();
if(Err==0) { Err=new bool[My->getV()]; }
StringGrid4->ColCount=My->getV();
for(i=0;i<My->getV();i++)
{ Err[i]=0; StringGrid4->Cells[i][0]=IntToStr(My->getInf()[i]);
StringGrid4->Cells[i][1]=IntToStr(0); }
StringGrid4->Visible=true; My->setErr(Err); }
//--------------------------------------------------------------------------void __fastcall TForm1::Inversia_err(TObject *Sender)
{My->getErr()[Scan]=StrToInt(StringGrid4->Cells[Scan][1])^1;
StringGrid4->Cells[Scan][1]=IntToStr(My->getErr()[Scan]); }
//--------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender)
//декодирование
{ My->Decod(); StringGrid5->ColCount=My->getSt(); StringGrid5->Visible=true;
for(i=0;i<My->getSt();i++)
{ StringGrid5->Cells[i][0]=IntToStr(My->getDec()[i]); }
int E=0 ;
//наличие ошибки
for (i=0;i<My->getSt();i++)
//проверка регстра декодара на наличие "1"
{ if(My->getDec()[i]==1) E=1; }
if (E==0) Label6->Caption="Ошибок не обнаружено" ; //нулевой вес остатка
if (E==1) Label6->Caption="Передача произведена с ошибками" ; }
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn2Click(TObject *Sender) //Сохранение полинома в файл
{ SaveDialog1->DefaultExt="pol"; SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
{FILE *P=fopen(SaveDialog1->FileName.c_str(),"w+"); fseek(P,0l,0);
if(My->getPol()!=0)
{char A=0; int B=128;
for(i=0;i<=(My->getSt())/8;i++)
{ A=0; B=0x80;
for(j=0;j<8;j++)
{ if(8*i+j<=My->getSt()) A=A|((My->getPol()[i*8+j])*B);
B=B/2; }
fputc(A,P); }
fclose(P); } }
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender) //Загрузка полинома из файла
{ OpenDialog1->DefaultExt="pol"; OpenDialog1->FilterIndex=2;
if(OpenDialog1->Execute())
{ FILE *P=fopen(OpenDialog1->FileName.c_str(),"r"); fseek(P,0l,0);
My->setSt(StrToInt(Edit1->Text)); char a[4]={0}; i=0;
do { a[i]=fgetc(P); i++; } while(feof(P)==0&&i<4);
if(My->getPol()!=0) delete [My->getSt()+1] My->getPol();
StringGrid2->ColCount=My->getSt()+1; bool* Pol=new bool[32]; char A=128;
for(i=0;i<4;i++)
//вывод на экран
{ A=128;
for(j=0;j<8;j++)
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
51
{Pol[8*i+j]=((a[i]&A)>>(7-j))&0x1; A=A/2; }
}
for(i=0;i<=My->getSt();i++)
{StringGrid2->Cells[i][0]=IntToStr(My->getSt()-i); StringGrid2->Cells[i][1]=IntToStr(Pol[i]); }
Edit1->Text=StrToInt(My->getSt()); StringGrid2->Visible=true; Label2->Visible=true;
My->setPol(Pol); fclose(P); } }
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn3Click(TObject *Sender) //запись информации в файл
{SaveDialog1->InitialDir=GetCurrentDir(); SaveDialog1->DefaultExt="inf";
SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
{ FILE *P=fopen(SaveDialog1->FileName.c_str(),"w+");fseek(P,0l,0);
if(My->getInf()!=0)
{char A=0; int B=128;
for(i=0;i<32;i++)
{ A=0; B=0x80;
for(j=0;j<8;j++)
{ A=A|((My->getInf()[i*8+j])*B); B=B/2; }
fputc(A,P); }
}
fclose(P); } }
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn4Click(TObject *Sender)
//сохранение
значений
регистров кодера
{ SaveDialog1->DefaultExt="cod"; SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
{FILE *P=fopen(SaveDialog1->FileName.c_str(),"w+"); fseek(P,0l,0);
if(My->getReg()!=0)
{ char A=0; int B=128;
for(i=0;i<=(My->getSt())/8;i++)
{ A=0; B=0x80;
for(j=0;j<8;j++)
{ if(8*i+j<My->getSt()) A=A|((My->getReg()[i*8+j])*B);
B=B/2; }
fputc(A,P); }
fclose(P); } }
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn6Click(TObject *Sender)
//сохранение
значений
регистров декодера
{SaveDialog1->DefaultExt="dec"; SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
{ FILE *P=fopen(SaveDialog1->FileName.c_str(),"w+"); fseek(P,0l,0);
if(My->getDec()!=0)
{ char A=0; int B=128;
for(i=0;i<=(My->getSt())/8;i++)
{ A=0; B=0x80;
for(j=0;j<8;j++)
{ if(8*i+j<My->getSt()) A=A|((My->getDec()[i*8+j])*B); B=B/2; }
fputc(A,P); }
fclose(P); } }
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn5Click(TObject *Sender) //Сохранение вектора ошибок
{ SaveDialog1->DefaultExt="err"; SaveDialog1->FilterIndex=2;
if(SaveDialog1->Execute())
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
52
{ FILE *P=fopen(SaveDialog1->FileName.c_str(),"w+"); fseek(P,0l,0);
if(My->getErr()!=0)
{char A=0; int B=128;
for(i=0;i<32;i++)
{ A=0; B=0x80;
for(j=0;j<8;j++)
{ A=A|((My->getErr()[i*8+j])*B); B=B/2; }
fputc(A,P); }
}
fclose(P); } }
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn7Click(TObject *Sender) //Считывание вектора ошибок
{ bool* Err=My->getErr(); OpenDialog1->DefaultExt="err"; OpenDialog1->FilterIndex=2;
if(OpenDialog1->Execute())
{FILE *P=fopen(OpenDialog1->FileName.c_str(),"r"); fseek(P,0l,0); char a[33]={0}; i=0;
do { a[i]=fgetc(P); i++;} while(feof(P)==0&&i<33);
if(Err==0) Err=new bool[My->getV()];
char A=128;
for(i=0;i<30;i++)
{A=128;
//вывод на экран
for(j=0;j<8;j++)
{ Err[8*i+j]=((a[i]&A)>>(7-j))&0x1; A=A/2; }
}
StringGrid4->ColCount=240;
for(i=0;i<My->getV();i++)
{StringGrid4->Cells[i][1]=IntToStr(Err[i]); }
StringGrid4->Visible=true; My->setErr(Err); fclose(P); } }
}
//------------------------------void __fastcall TForm1::FormCreate(TObject *Sender)
{Button1->Click(); Button2->Click(); Button3->Click(); Button4->Click(); }
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{ Form2->Position=poDesktopCenter; Form2->ShowModal(); }
//--------------------------------------------------------------------------bool __fastcall TForm1::FormHelp(WORD Command, int Data, bool &CallHelp)
{ BitBtn8->Click();}
//--------------------------------------------------------------------------void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{ if (Key == VK_F1) BitBtn8->Click(); }
//--------------------------------------------------------------------------void __fastcall TForm1::FormActivate(TObject *Sender)
{ OpenDialog1->InitialDir=GetCurrentDir(); SaveDialog1->InitialDir=GetCurrentDir(); }
//--------------------------------------------------------------------------void __fastcall TForm1::FormDestroy(TObject *Sender)
{ delete [My->getSt()] My->getPol(); delete [My->getV()] My->getInf();
delete [My->getSt()] My->getReg(); delete [My->getSt()] My->getDec();
delete [My->getV()] My->getErr(); delete My; }
Лист
Изм Лист
№ документа
Подпись
Дата
ТПЖА.230201.031.177
ПЗ
53
Документ
Категория
Компьютеры, Программирование
Просмотров
53
Размер файла
2 382 Кб
Теги
вариант
1/--страниц
Пожаловаться на содержимое документа