3 Разработка структурной схемы УЗО и программного модуля
Устройство защиты от ошибок использует матричный способ кодирования с защитами по четности.
Кодирование выполняется, как показано на рис. 1. Формируется контрольный восьмой бит Кпо четности в каждой комбинации. Этим обеспечивается четность числа единиц в блоке данных по горизонтали. Одноименные биты в комбинациях блока суммируются по модулю 2, и формируется дополнительная проверочная комбинация блоков К1-К7, которая дополняется по четности проверочным битом К8 (проверка проверок). Матричный код с проверками на четность позволяет исправлять однократные и обнаруживать многие многократные ошибки. Ошибочный элемент находится на пересечении строки и столбца, в которых имеется нарушение по четности.
Рис. 1
Устройство защиты от ошибок реализовано аппаратно-программным способом. Простые операции реализуют аппаратным способом, который обеспечивает высокое быстродействие, сложные функции выполняются программным способом. Контрольный бит четности по строкам формируется с помощью адаптера (последовательного интерфейса) КР580 ВВ51. Контрольная комбинация четности по столбцам формируется программно.
Структурная схема аппаратно-программного обеспечения, относящегося к передающей части УЗО, и его окружение приведены на рис. 2. Передача информации между модулями схемы показана утолщенными стрелками, а тонкие стрелки означают связи по управлению, т.е. вызовы программных модулей. Схема функционирует следующим образом. После включения питания или сигнала сброса работает программа начального запуска. Формируются необходимые структуры данных, инициализируются переменные и интерфейсы, в том числе программируется последовательный интерфейс К580 ВВ51 в режиме стартстопной передачи семи информационных элементов и дополнения их до четности восьмым битом.
Далее работает управляющая программа - диспетчер. Он выбирает необходимые программные модули и запускает их с требуемой периодичностью. При возникновении пауз в работе
Рис. 2
программных модулей, например при ожидании готовности внешних устройств, они прерывают свою работу и возвращают управление диспетчеру, который запускает следующий программный модуль. После отработки других модулей диспетчер вновь возвращается к данному модулю и запускает его с прерванного места. Таким образом обеспечивается многопрограммная обработка передаваемой информации в реальном масштабе времени. В данном случае диспетчер периодически запускает программные модули формирования блока данных и передачи блока в канал связи. Первый модуль формирует блок данных в буфере передачи. При формировании блока подсчитывается контрольная сумма по модулю 2 и помещается в конец блока в качестве проверочной комбинации (ПК). Для упрощения здесь не рассматривается формирование служебных символов - начала текста, конца блока. Во время формирования блока данных вызывается программа приема одного символа от источника.
Программный модуль передачи блока данных в канал связи выбирает символы из буфера передачи и вызывает подпрограмму передачи символа. Последняя записывает символ в последовательный интерфейс модуля сопряжения с телеграфным устройством преобразования сигналов (УПС ТГ).
Модуль сопряжения с УПС ТГ реализован аппаратным способом, содержит БИС К580 ВВ51 ППИ и выполняет функции преобразования параллельного кода в последовательный, формирования проверочного бита (четность по строкам) и выдачи элементов стартстопной комбинации в УПС ТГ через стык С2. Названная БИС программируется на передачу семи информационных элементов с проверкой на четность.
Исходный текст программного модуля формирования блока данных длиной 16 символов (15 информационных и один проверочный) имеет вид
Программный модуль выполняет следующие функции. Содержимое регистров, используемых в модуле, сохраняется в стеке, в регистре В организуется счетчик на 15 по числу информационных символов, в регистровую пару HL заносится начальный адрес буфера передачи, а в регистровую пару DE заносится адрес ячейки буфера, где будет храниться проверочная комбинация блока (ПК). Эта ячейка обнуляется.
Далее следует циклическая часть программного модуля. Анализируется счетчик на равенство нулю, и если формирование блока не закончено, то начинается выполнение тела цикла вызовом подпрограммы приема символа от источника. В этой подпрограмме возможно ожидание, пока источник не готов. Тогда управление передается диспетчеру. Через некоторое время диспетчер вызовет подпрограмму для ее продолжения. Когда источник готов к выдаче, символ принимается и при возврате через аккумулятор передается в модуль BLOCD.
На следующем шаге символ записывается в буфер передачи адресу, хранящемуся в паре регистров HL, и складывается по модулю 2 с ПК. Далее увеличивается текущий адрес буфера в паре регистров HL, уменьшается содержимое счетчика и цикл повторяется, пока содержимое счетчика на 15 не станет равным нулю. Программа завершается восстановлением содержимого регистров. В буфере передачи сформирован блок данных на 15 комбинаций и с одной проверочной комбинацией.
Исходный текст программного модуля передачи блока данных из буфера передачи в канал связи имеет вид
Программный модуль выполняет следующие функции. Содержимое регистров сохраняется в стеке, в регистре В организуется счетчик на 16, и далее организована циклическая часть модуля.
Содержимое счетчика пересылается в аккумулятор и сравнивается с нулем. Если передача блока не закончена, то выбирается очередной символ из буфера передачи по адресу, хранящемуся в паре регистров HL, и вызывается подпрограмма передачи одного символа в канал связи PRD1. Далее содержимое счетчика уменьшается на 1 и увеличивается адрес ячейки буфера передачи. Цикл повторяется, пока содержимое счетчика не станет равным нулю. Тогда восстанавливается содержимое регистров и программа PRDBL завершается.
Исходный текст подпрограммы передачи одного символа в канал связи имеет вид:
Вначале сохраняется в стеке содержимое регистров. Данная подпрограмма изменяет только содержимое аккумулятора. Достаточно использовать одну команду PUSH. Затем для небольшой паузы управление передается диспетчеру. После возвращения из программы диспетчера читается содержимое слова состояния последовательного интерфейса.
«Единица» в разряде слова состояния свидетельствует о готовности регистра передачи к записи в него очередного символа. Для проверки значения этого разряда слово состояния сдвигается вправо и разряд
переносится в триггер признака переноса С. Если передатчик не готов, то выполняется переход на вызов диспетчера для небольшой паузы. Диспетчер запустит другие программные модули и через некоторое время возвратит управление подпрограмме PRD1 в точку чтения состояния готовности передатчика.
Такой процесс «активного» ожидания (в это время выполняются другие программы) продолжается, пока передатчик ВВ51 передает предыдущий символ в канал связи. Когда передатчик готов к работе, символ переписывается из регистра С в аккумулятор, записывается в регистр передачи интерфейса ВВ51, восстанавливается содержимое аккумулятора и подпрограмма завершается. Последовательный интерфейс ВВ51 передает записанный символ последовательным кодом в канал связи. На кодирование затрачиваются в программах четыре команды на 105 элементов, всего 0,04 опер./эл. Матричное кодирование эффективно при реализации его программным способом.