Inferno #03
22 ноября 2002

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 1.

<b>Диплом</b> - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 1.
                Аннотация

  В дипломном проекте  на тему: "Програм- 
мное  обеспечение  специализированного ло- 
гического  анализатора  (СЛА)" разработаны 
программы управления и самоконтроля СЛА на 
основе однокристальной микроЭВМ AT89C52, а 
также обмена  данными с ПЭВМ по интерфейсу 
RS-232 с программной компрессией. 
  СЛА  работает  совместно  с управляющей 
ПЭВМ, осуществляющей  выдачу считанных ре- 
зультатов  на  экран  монитора и запись на 
магнитный носитель. 
  Функциональная схема устройства, описа- 
ние алгоритмов  программ и самих программ, 
создание  и обоснование метода сжатия дан- 
ных,а также методика тестирования разрабо- 
танного  ПО  и  оценка  результатов работы 
программ приведены  в расчетно-пояснитель- 
ной записке. 
  ПО разрабатывалось  на языке АССЕМБЛЕР, 
компиляция  и  отладка проведена с помощью 
пакета Asm51Edit 2 + Debugger-51. 
  Данное программное обеспечение входит в 
состав программного комплекса,разрабатыва- 
емого научно-техническим  отделом ФГУП РКБ 
<Глобус>, в котором  создавался  дипломный 
проект. 

────────────────────────────────────────── 

                Summary

  In given  degree  project  on  a theme: 
"Software  of  specialized  logic analyzer 
(SLA)" has been developed program of mana- 
gement and self-checking and data exchange 
with PC by interface RS-232 with a program 
compression. 
  SLA is based on microcontroller AT89C52 
and  works  together with manager personal 
computer, which  can  view  results on the 
screen and record them onto magnetic disk. 
  Functional scheme of SLA,description of 
algorithms and programs,compression method 
creation  and explanation, testing methods 
and examination of results of work of pro- 
grams - are given in an explanatory note. 
  The software  is  written  in ASSEMBLER 
language. Compilation  and  debugging  are 
carried  out  with  the  help  of  package 
Asm51Edit 2 + Debugger-51. 
  The  given  software  is  a part of the 
program  complex, which is being developed 
by  a scientific and  technical department 
of design office "the Globe" where the de- 
gree project was created. 

────────────────────────────────────────── 

               Содержание

1. Введение..............................4 
2. Технико-экономическое обоснование.....6 
3. Постановка задачи....................10 
3.1. Принципы построения СЛА............10 
3.2. Структурная схема СЛА..............14 
3.3. Система команд СЛА.................21 
3.4. Разработка требований к программе..30 
4. Теоретическая часть..................36 
4.1. Расчёт времени измерения...........36 
4.2. Выбор и обоснование средств 
    разработки..........................48 
4.3. Разработка общего и детальных 
    алгоритмов программы................50 
5. Практическая часть...................57 
5.1. Особенности разработки программ 
    для ОЭВМ............................57 
5.2. Разработка и описание программы 
    для ОЭВМ............................60 
5.3. Автономная отладка программы на 
    модели..............................68 
5.4. Описание работы с СЛА..............76 
6. Экономическая часть..................79 
6.1. Определение трудоёмкости разработки 
    программного продукта...............79 
6.2. Построение ленточного графика......82 
6.3. Составление сметы на разработку....83 
6.4. Выводы по экономической эффективности 
    программного продукта...............86 
7. Безопасность и экологичность проекта.87 
7.1. Анализ условий труда в помещениях 
    с ПЭВМ..............................87 
7.2. Выбор способа кондиционирования 
    помещения с ПЭВМ....................94 
8. Заключение...........................99 
9. Литература..........................100 
10. Приложения.........................102 

────────────────────────────────────────── 

              1. Введение

   Жизненный  цикл  всех электронных изде-
лий, выпускаемых  предприятием, включает в
себя следующие этапы:

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

   Разработка,изготовление и наладка комп-
лексов радиоэлектронного оборудования(РЭО)
немыслимы без применения средств автомати-
зации.Применение различного рода автомати-
зированных  систем (АС) позволяет  сущест-
венно сократить  сроки разработки изделий,
свести к минимуму количество ошибок,а так-
же повысить надежность аппаратуры.В насто-
ящее  время в составе АС в качестве управ-
ляющих элементов широко и эффективно испо-
льзуются как специализированные ЭВМ, так и
универсальные  ПЭВМ. Современные  ПЭВМ для
всевозможных АС обладают приемлемыми пара-
метрами, такими как высокое быстродействие
(сотни миллионов операций в секунду),боль-
шой объём оперативной  памяти (сотни мега-
байт),возможность долговременного хранения
больших  объёмов информации на магнитных и
других носителях,возможность обмена данны-
ми с внешними устройствами на больших ско-
ростях,многозадачность и т.д. Стало возмо-
жным реализовывать алгоритмы,которые ранее
практически не могли  быть реализованы из-
за недостаточного объёма памяти  и быстро-
действия.

   Процесс  создания современной радиотех-
нической  аппаратуры  сложен и накапливает
ошибки на всех этапах. Часть ошибок бывает
обнаружена  только после сборки, на этапах
контроля  изготовления и настройки уже ра-
ботающего устройства.
   Поэтому важное значение в процессе про-
изводства  оборудования  имеет  отладка  в
процессе настройки и эксплуатации.
   Большое  количество  приборов   и  уст-
ройств, используемых  на  предприятии  РКБ 
<Глобус>, ориентировано на подключение об- 
щей шине типа ММИ. Наладка устройств,подк-
люченных к шине ММИ, требует использования
логического анализатора. Логический анали-
затор - это измерительный прибор, функцией
которого  является  снятие временных диаг-
рамм цифровых сигналов (в дальнейшем - из-
мерение) с привязкой  времени  снятия вре-
менной диаграммы к моменту появления неко-
торой комбинации сигналов(синхронизирующей
комбинации).
   Необходимость  применения   логического
анализатора(ЛА), а также ориентация на ба-
зовые  конструктивные решения предприятия-
изготовителя потребовали разработки специ-
ализированного ЛА (СЛА) в конструкции пре-
дприятия.
   Неотъемлемой  частью автоматизированной
системы отладки оборудования,основанной на
СЛА, является программное  обеспечение для
ядра устройства - однокристального  микро-
контроллера,поддерживающего управление ап-
паратными средствами контроля и диалогом с
ПЭВМ.
   Разработке  такого программного обеспе-
чения и посвящён данный дипломный проект.

────────────────────────────────────────── 

        2. Технико-экономическое
         обоснование разработки

   В условиях  большого  цеха  предприятия
часто требуется осуществить централизован-
ный контроль и управление  множеством при-
боров.
   На ФГУП РКБ <Глобус> разработан специа-
лизированный межмодульный интерфейс (ММИ),
ориентированный на подключение к одной ши-
не ряда  устройств и управление их работой
с центральной ЭВМ.
   Отладка  устройств, подключенных к шине
ММИ, требует специальной аппаратуры, такой
как цифровые запоминающие осциллографы или
логические анализаторы. Локализация ошибки
в каждом  устройстве  при ручном  контроле
(функциональном тестировании) может занять
несколько  дней, тогда как специальная ап-
паратура позволяет отыскать ту же ошибку в
течение нескольких часов или минут.
   Логические  анализаторы в данном случае
предпочтительнее в силу большого количест-
ва одновременно наблюдаемых сигнальных ли-
ний,что даёт возможность отследить процес-
сы взаимодействия  сигналов  в зависимости
друг от друга, в условиях их непериодичес-
кого образования. Выявление некоторых оши-
бок схем устройств  практически невозможно
без одновременного наблюдения за большинс-
твом сигналов. Например,попарное сравнение 
32 сигналов интерфейса ММИ  на двухлучевом 
осциллографе  включает 32·31/2=496 измере-
ний  с  разным положением щупов, тогда как
логический  анализатор  может выполнить ту
же задачу за 1Ў3 измерения, в  зависимости
от числа одновременно  анализируемых линий
для данного ЛА. При этом логический анали-
затор имеет возможность автоматически син-
хронизироваться  по  некоторой  комбинации
сигналов,возникающих на шине,что позволяет
избежать  ручного анализа длинных последо-
вательностей записанных сигналов.

   Серийно выпускающиеся логические анали-
заторы, описанные, например, в  [7], из-за
своей стационарности  затруднительно испо-
льзовать  для контроля аппаратуры в дейст-
вующем цехе. Более того,условия в цехе за-
частую  не  соответствуют эксплуатационным
характеристикам прибора,что может привести
к его неверной работе или выходу из строя.
Поэтому  лучшим решением был бы переносной
специализированный  логический  анализатор
(СЛА), делящий часть функций с ЭВМ, в роли
которой может выступать современный персо-
нальный компьютер, оснащённый последовате-
льным интерфейсом типа RS-232  для связи с
СЛА  по кабелю  на витой паре. Полноценный
дисплей, установленный  на ПЭВМ, позволяет
снизить   трудоемкость  зрительной  работы
оператора СЛА,а мощный центральный процес-
сор  ПЭВМ  позволяет реализовать алгоритмы
машинного анализа снятой последовательнос-
ти сигналов. При использовании  банка эта-
лонных  сигналов можно полностью автомати-
зировать процесс тестирования для стандар-
тной аппаратуры.

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

   При  описанной выше конструкции системы
СЛА - ПЭВМ устройство СЛА должно быть наи-
более простым.В настоящее время этого поз-
воляет достичь использование однокристаль-
ных микроЭВМ.Современные технологии микро-
миниатюризации позволили разместить на од-
ном кристалле  центральный процессор, ПЗУ,
ОЗУ и контроллеры  доступа  к внешним пор-
там.
   Микросхемы  семейства  MCS-51 (отечест-
венные  аналоги - семейство МК51) получили
популярность  среди прочих микроконтролле-
ров  из-за  особенно  удачной архитектуры,
удобной  для  проектирования на основе неё
различных устройств. Оказалось целесообра-
зным использовать для переносного СЛА мик-
росхему  AT89C52, совместимую с MCS-51, но
отличающуюся большей скоростью работы,уве-
личенными по сравнению с предшественниками
объёмами ОЗУ и ПЗУ, а также усовершенство-
ванным механизмом синхронизации.

   Поскольку  процесс снятия сигналов спе-
циализированным   логическим  анализатором
приходится производить на высоких частотах
(вплоть до 5 МГц),для работы на которых не
приспособлен выбранный микроконтроллер,не-
обходимо  смонтировать в том же устройстве
статическое  ОЗУ  со схемой автоматической
записи  в  него из шин ММИ. При этом схема
записи должна контролироваться программным
обеспечением контроллера AT89C52, который,
в свою очередь, должен  выполнять команды,
переданные управляющей программой,запущен-
ной на ПЭВМ.
   Также микроконтроллер  должен осуществ-
лять периодическую  проверку работоспособ-
ности ОЗУ СЛА (самоконтроль) и кодирование
данных (с компрессией и защитой от ошибок)
при  передаче  их  на  ПЭВМ  по интерфейсу 
RS-232. 

   Существенным фактором,влияющим на время
разработки  описанного  выше СЛА, является
время разработки управляющего программного
обеспечения микроконтроллера.Это время су-
щественно  сокращается  за счёт применения
специализированных кросс-средств разработ-
ки: кроссассемблеров, отладчиков, а  также
внутрисхемных эмуляторов и т.д.

  Выводы:

1. Любое устройство после сборки может со- 
держать ошибки,которые можно локализовать
с помощью отладки уже на этапе функциони-
рования. 
2. Наиболее  приспособленным   устройством 
для отладки устройств, подключенных к об-
щей шине типа ММИ, является специализиро-
ванный логический анализатор (СЛА). 
3. Переносная часть СЛА должен быть компа- 
ктна, что достижимо с помощью современных
технологий (однокристальные  микроЭВМ,  в
дальнейшем - ОЭВМ). 
4. Необходимо  программное обеспечение для 
управления микроконтроллером - ядром СЛА. 
5. Следует  применять   специализированные 
кросс-средства разработки и отладки прог-
раммного обеспечения СЛА.

  Требования к программному продукту:

1. Программа  должна обеспечивать управле- 
ние платой специализированного логическо-
го анализатора. 
2. Программа  должна  быть размещена в ПЗУ 
микроконтроллера  AT89C52 (объём  8 кило-
байт). 
3. Программа  должна  обмениваться данными 
с ПЭВМ  по  последовательному  интерфейсу
RS-232 со скоростью 19200 бод. 
4. Формат  посылок между СЛА и ПЭВМ должен 
соответствовать  стандартам, принятым  на
предприятии. 
5. Программа  должна  выполнять  следующие 
основные функции:запуск и останов измере-
ния, задание  режимов измерения, передача
данных  измерения на ПЭВМ, самоконтроль и
выдача состояния логического анализатора. 
6. Все  действия  должны  производиться по 
командам, передаваемым с ПЭВМ.

────────────────────────────────────────── 

          3. Постановка задачи

      3.1. Принципы построения СЛА

   В зависимости  от типа реализации логи-
ческие  анализаторы можно разделить на два
класса:

 полностью аппаратно реализованные;
 с управлением от ПЭВМ.

   В случае  аппаратной реализации возмож-
ности по взаимодействию с оператором,орга-
низации  архивов  и протоколов существенно
ограничены. Примером аппаратно реализован-
ных  ЛА  являются  устройства  Thandar  TA 
2080, Soar 1420, Racal Dana  202 [7]. Реа- 
лизация  же в комплексе с управляющей ПЭВМ
имеет следующие достоинства:

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

   В данном дипломном проекте разрабатыва-
ется программное обеспечение специализиро-
ванного логического анализатора,интегриро-
ванного  с IBM-совместимой  ПЭВМ. Описание
структуры и работы  устройства приведены в
разделах 3.2  и 3.3 настоящего  дипломного
проекта.
   Разрабатываемый  специализированный ло-
гический  анализатор (СЛА) состоит из двух
частей: переносного модуля с коммутирующим
разъёмом (разьёмом  с устанавливаемыми пе-
ремычками), предназначенного для подключе-
ния  к шине ММИ, и стационарной ЭВМ общего
назначения.Две части соединяются между со-
бой  с помощью шинного кабеля с последова-
тельным  протоколом по стандарту RS-232 на
частоте 19200 бит/с.
   Переносная часть СЛА основана на однок-
ристальной микро-ЭВМ AT89C52 и управляется
программой на языке АССЕМБЛЕР.Данная прог-
рамма должна обрабатывать запросы,получен-
ные через  канал ПЭВМ-СЛА, и в зависимости
от  этих  запросов: контролировать  работу
схем записи и синхронизации,размещенных на
той  же переносной части, возвращать полу-
ченные  данные  в сжатом  виде  на главную
ЭВМ, а также производить самоконтроль схем
устройства по команде и по включении.
   Схемы  записи  и синхронизации работают
отдельно от  микроконтроллера, но управля-
ются  им. Это  позволяет получать данные о
логических  уровнях  на шине ММИ с большой
(вплоть  до 5 МГц) частотой дискретизации,
что невозможно средствами самого микрокон-
троллера AT89C52.
   Схема записи, размещенная на переносной
части,производит запись в двухпортовое ОЗУ
(ДОЗУ) из  произвольно скоммутированных 32
линий шины ММИ с частотой выборки,задавае-
мой программируемым счетчиком-таймером.При
этом  коэффициент деления базовой частоты,
из которой получается  частота дискретиза-
ции записи сигналов в ДОЗУ,задается коман-
дами микроконтроллера.
   Схема синхронизации с помощью устройст-
ва  управления  запускает  и останавливает
схему записи в ОЗУ после появления на шине
определенной комбинации логических уровней
сигналов.Синхронизирующим могут быть любой
набор из 16 сигналов шины.Синхронизирующий
набор  сигналов задается микроконтроллером
в виде:

 16 бит маски  участвующих  в сравнении 
сигналов; 
 16 бит полярности  участвующих в срав- 
нении сигналов.Полярность сигналов,не вхо- 
дящих в маску,при синхронизирующем сравне- 
нии не учитывается. 

   В отличие от осциллографа, который обы-
чно запускается при первом пересечении за-
ранее заданного порогового значения,ЛА мо-
жет иметь несколько режимов запуска [7]:

 Запуск  при  появлении заданного слова 
данных, т.е. анализатор запускается, когда 
входные сигналы формируют частую  комбина- 
цию данных; 
 Предзапуск / послезапуск, используемые 
для запоминания, а если необходимо,и инди- 
кации входных данных,пришедших до запуска- 
ющего слова и после него; 
 Запуск, когда  возникает  определённое 
различие  между ожидаемыми сигналами и по- 
лученными входными данными и пр. 

   Разрабатываемый  СЛА  должен работать в
нескольких  режимах синхронизации запуска:
синхронизирующий  сигнал приходится на на-
чало/до начала  считываемой последователь-
ности (интервала измерения), либо на конец
этого интервала, либо на середину. Поэтому
схема синхронизации может запускать считы-
вание до появления синхронизирующей комби-
нации или через некоторое время после неё.
С помощью другого программируемого счётчи-
ка-таймера  задаётся время задержки выклю-
чения  схемы записи. Время задержки пуска/
останова  схемы записи задается микроконт-
роллером AT89C52 в единицах периодов диск-
ретизации считывания.
   Используемая микросхема ОЗУ имеет объём 
16 килобайт (для хранения до 4096 отсчётов 
32 каналов). Схема  подключения  этого ОЗУ 
является  условно двухпортовой, т.е. к ней
имеют доступ и схема  записи, и микроконт-
роллер.Со стороны схемы записи имеется 12-
разрядная  шина адреса и 32-разрядная шина
данных, со стороны  микроконтроллера - 14-
разрядная  шина  адреса и 8-разрядная шина
данных. ДОЗУ расположено в адресном прост-
ранстве внешней оперативной памяти ОЭВМ, в
младших адресах.
   Все  параметры измерения (вид синхрони-
зации, синхронизирующая  комбинация, число
точек интервала измерения, частота дискре-
тизации и др.) указываются оператором гла-
вной ПЭВМ и должны  передаваться на СЛА по
последовательному интерфейсу  вместе с ко-
мандой или запросом. Программное обеспече-
ние СЛА должно  интерпретировать  и испол-
нять команды и запросы, поданные с ПЭВМ, и
возвращать по последовательному интерфейсу
данные о результатах выполнения.
   ПЭВМ,управляющая автоматизированной си-
стемой отладки оборудования, основанной на
СЛА,должна отображать считанную последова-
тельность  логических  уровней  сигналов и
отображать эти сигналы в виде графика.
   Для  управления  СЛА  может  применять-
ся  практически  любая  модель ПЭВМ, осна-
щённая графическим дисплеем,архивной памя-
тью  и интерфейсом последовательного порта 
RS-232. 
   Устройство  СЛА, а также  основанной на
нём  системы отладки оборудования подробно
рассмотрено в следующем разделе.

────────────────────────────────────────── 

       3.2. Структурная схема СЛА

   Специализированный  логический анализа-
тор с управлением  от ПЭВМ состоит из двух
основных компонентов:

 ЛА (СЛА);
 ведущая (управляющая) ПЭВМ.

   Структурная  схема  СЛА  с  управляющей
ПЭВМ показана на рисунке 3.2.1.

       ┌────────┐       ┌────────┐
       │  ПЭВМ  │─────│ОПЕРАТОР│
       └───────┘       └────────┘
  ┌ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
           │RS-232
  |    ┌───────┐       ┌────────┐  |
       │  ОЭВМ  │─────│ СХ.УПР │
  |    └───────┘       └───┬────┘  |
           │                │
  |    ┌───────┐       ┌───────┐  |
       │  ОЗУ   │──────┤ СХ.ЗАП │
  |    └────────┘       └───────┘  |
   СЛА                      │ММИ
  └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ┘
                        ┌───┴────┐
                        │   Уi   │
                        └────────┘
   Рис.3.2.1. Структурная схема СЛА.

   На схеме обозначены:

 ОЭВМ - центральный процессор СЛА,одно- 
кристальная микроЭВМ AT89C52; 
 ПЭВМ - управляющая ПЭВМ, соединённая с 
СЛА с помощью последовательного интерфейса 
RS-232; 
 Уi - отлаживаемое  устройство, подклю- 
ченное к шине; 
 ММИ - общая шина ММИ (межмодульный ин- 
терфейс); 
 Сх.Упр. - схема  управления  записью в 
ОЗУ; 
 Сх.Зап. - схема автоматической  записи 
в ОЗУ данных, снятых с шины ММИ. 

   Функциональная схема устройства изобра-
жена на рисунке 3.2.2.


[прим.издателей: здесь была схема в альбо- 
мном расположении,см.графический материал] 


   Рис.3.2.2. Функциональная схема СЛА.

   На схеме  обозначены (помимо описанного
выше):

 P0, P1, P2, P3 - двунаправленные порты 
ОЭВМ для подключения внешних устройств; 
 ША - шина адреса;
 ШД - шина данных;
 WR - сигнал записи во внешнюю  память, 
генерируемый ОЭВМ; 
 RD - сигнал  чтения из внешней памяти, 
генерируемый ОЭВМ; 
 ALE - стробирующий  отрицательный  им- 
пульс,генерируемый ОЭВМ при передаче стар- 
шей части адреса через порт P0 при обраще- 
нии к внешней памяти; 
 ТМ1, ТМ2, ТМ3 - инкрементирующие счёт- 
чики-таймеры с программируемым коэффициен- 
том  деления  базовой частоты. Управляются 
импульсом инкрементирования (+1). Посколь- 
ку счётчики работают постоянно,разрешением 
передачи генерируемых импульсов переполне- 
ния (OV) управляет Схема Управления; 
 ММИ - общая  шина ММИ  с подключенными 
отлаживаемыми устройствами У1, У2,..., Уn. 
 ТШ - триггеры Шмидта;
 RG - буферизующие  регистры. OE - раз- 
решающий вход, контролирует третье состоя- 
ние выхода регистра. C - вход импульса за- 
писи в регистр; 
 ДОЗУ - двухпортовое ОЗУ, накапливающее 
данные о логических  уровнях  сигналов  за 
период  измерения. OE - разрешающий  вход. 
WE - вход разрешения записи в ОЗУ. Со сто- 
роны ОЭВМ  ДОЗУ  дешифруется  при A15=0, а 
доступ к остальным устройствам осуществля- 
ется при A15=1; 
 Самоконтроль - маршрут,по которому при 
тестировании  СЛА значения с выходов счёт- 
чика адреса подаются на коммутатор.Это по- 
зволяет провести самоконтроль входных тра- 
ктов СЛА после сборки устройства; 
 Г1 - тактовый генератор.

   Адресация  устройств на внутренней шине
адреса СЛА осуществляется по двум одновре-
менно  установленным  битам адреса. Полные
адреса устройств показаны в таблице 3.2.1.

                            Таблица 3.2.1 
┌────────────────────────────────┬───────┐ 
│         Устройство             │ Адрес │ 
├────────────────────────────────┼───────┤ 
│Старшие разряды слова полярности│       │ 
│синхронизирующей комбинации     │ 0C000h│ 
├────────────────────────────────┼───────┤ 
│Младшие разряды слова полярности│       │ 
│синхронизирующей комбинации     │ 0A000h│ 
├────────────────────────────────┼───────┤ 
│Старшие разряды слова конфигура-│       │ 
│ции синхронизирующей комбинации │ 09000h│ 
├────────────────────────────────┼───────┤ 
│Младшие разряды слова конфигура-│       │ 
│ции синхронизирующей комбинации │ 08800h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ1 (ст.)               │ 08400h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ1 (мл.)               │ 08200h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ2 (ст.)               │ 08100h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ2 (мл.)               │ 08080h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ3 (ст.)               │ 08040h│ 
├────────────────────────────────┼───────┤ 
│Начальное состояние счётчика-   │       │ 
│таймера ТМ3 (мл.)               │ 08020h│ 
├────────────────────────────────┼───────┤ 
│Код устройства коммутации       │ 08010h│ 
└────────────────────────────────┴───────┘ 

   При "0" в разряде слова конфигурации -
канал не задействуется.
   При "1" в разряде слова конфигурации -
канал задействуется.
  "0" в разряде слова полярности - поляр-
ность сигнала "+".
  "1" в разряде слова полярности - поляр-
ность сигнала "-".
   Устройство коммутации коммутирует с по-
мощью набора перемычек линии шины ММИ в 32
канала,пронумерованных 0..31, и возвращает
код  положения коммутирующих перемычек для
проверки  правильности подключения разъёма
к шине.
   Все счётчики-таймеры 16-разрядные и ра-
ботают  на  инкремент. Переполнение (OV) в
счётчиках-таймерах  генерируется при пере-
ходе из 0FFFFh в 0000h.

   Адресное пространство ОЗУ (16 килобайт)
разбивается  на  четыре  области следующим
образом (рис.3.2.3):

     3FFFh ┌────────────────┐ ─┐
           │ Данные каналов │  │
     3000h │     24...31    │  │
     2FFFh ├────────────────┤  │
           │ Данные каналов │  │
     2000h │     16...23    │  │
     1FFFh ├────────────────┤  ├ ОЗУ
           │ Данные каналов │  │
     1000h │      8...15    │  │
     0FFFh ├────────────────┤  │
           │ Данные каналов │  │
           │      0...7     │  │
     0000h └────────────────┘ ─┘

Рис.3.2.3. Распределение данных о каналах
                 в ОЗУ.

   При  этом в каждой области данные кана-
лов распределяются по битам байтов ОЗУ,как
показано в таблице 3.2.2:

                            Таблица 3.2.2
┌────┬────┬────┬────┬────┬────┬────┬────┐
│Бит0│Бит1│Бит2│Бит3│Бит4│Бит5│Бит6│Бит7│
├────┼────┼────┼────┼────┼────┼────┼────┤
│К.31│К.30│К.29│К.28│К.27│К.26│К.25│К.24│
│К.23│К.22│К.21│К.20│К.19│К.18│К.17│К.16│
│К.15│К.14│К.13│К.12│К.11│К.10│К.9 │К.8 │
│К.7 │К.6 │К.5 │К.4 │К.3 │К.2 │К.1 │К.0 │
└────┴────┴────┴────┴────┴────┴────┴────┘

   Схема защиты защищает СЛА  от выхода из
строя  из-за  возможного появления больших
напряжений на шине ММИ при поломке какого-
либо устройства, подключенного к шине.

   Работа СЛА осуществляется следующим об-
разом.
   По команде <Исходное> от ПЭВМ СЛА уста-
навливается в исходное состояние.Для уста-
новки  в исходное  состояние СЛА формирует
следующие управляющие сигналы:

 <Пуск>- обнуляется сигнал запуска схе- 
мы управления синхронизацией записи в ОЗУ; 
 <Стоп>- обнуляется сигнал принудитель- 
ного останова схемы управления. 

   Кроме того,приводится в исходное состо-
яние последовательный порт RS-232.
   При поступлении  запроса <Запустить из- 
мерение> СЛА  программирует все  счётчики- 
таймеры заданными в запросе коэффициентами
деления, заносит  в  слово  конфигурации и
слово полярности требуемый вид синхронизи-
рующей комбинации,после чего формирует по-
ложительный  импульс  <Пуск>  для  запуска
схемы управления.
   Схема  управления по сигналам тактового
счётчика ТМ1 посылает стробирующий импульс
на буферизующий регистр записи в ОЗУ,после
чего  на выходах регистра формируется ста-
бильная  комбинация  из логических уровней 
32 сигналов, предназначенных для записи, и 
подаёт  импульс  записи на соответствующий
вход ОЗУ.
   Счётчик задержки ТМ2 запускается до за-
пуска схемы сравнения и гарантирует запись
в ОЗУ нужного количества отсчётов информа-
ции  о каналах до появления синхронизирую-
щей комбинации.Это требуется в режимах си-
нхронизации, при  которых синхронизирующая
комбинация  должна приходиться на середину
или окончание интервала измерения.
   Счётчик  количества точек ТМ3 определя-
ет, сколько  отсчётов  логических  уровней
каналов  будет записано после появления на
шине  синхронизирующей  комбинации.  После
этого схема записи в ОЗУ автоматически вы-
ключается.
   Значения  таймеров  можно изобразить на
следующей временной диаграмме (рис.3.2.4):

                   СК
        ╓──────────╫──────────╖
        ║записанная║информация║       t
 ═══════╬══════════╬══════════╬════════>
        ║<───T2───>║<───T3───>║
        ╙──────────╫──────────╜
        │<───────────────────>│
            количество точек

     Рис.3.2.4. Начальные значения
          счётчиков-таймеров.

   Здесь:

 СК - момент появления синхронизирующей 
комбинации; 
 Т2 - инверсное   начальное  содержимое 
счётчика-таймера ТМ2 (поскольку таймер ра- 
ботает на инкремент); 
 Т3 - инверсное  начальное   содержимое 
счётчика-таймера ТМ3; 

   Если  задан вид запуска СЛА с задержкой
после  поступления синхронизирующей комби-
нации, то время этой задержки,измеренное в
тактах схемы записи, включается (прибавля-
ется с противоположным знаком) в начальное
содержимое TM3.

   Начальный адрес чтения в ОЗУ не опреде-
лён,поэтому в запросах на чтение ОЗУ и ка-
налов предусмотрено поле начального адреса
для считывания, а запрос <Читать состояние 
ЛА> возвращает ПЭВМ текущее состояние счё- 
тчика адреса.

────────────────────────────────────────── 

        3.3. Система команд СЛА

   Для управления работой специализирован-
ного  логического  анализатора  с  помощью
ПЭВМ  должно  быть предусмотрено несколько
типов команд и запросов,которые пересылаю-
тся через интерфейс  RS-232. Для пересылки
в ПЭВМ данных о считанных последовательно-
стях сигналов СЛА должна выдавать соответ-
ствующие ответные сообщения (ОС).
   Форматы  входных  и  выходных сообщений
для  СЛА  разработаны  ФГУП РКБ <Глобус> и
указаны в техническом задании на разработ-
ку.

   Информация через RS-232 передаётся кад-
рами. Обмен производится на скорости 19200
бод, 1 стоп-бит, 8 битов данных  без конт-
роля на чётность.
   Структура  кадра   показана  в  таблице 
3.3.1. 

                            Таблица 3.3.1 
┌────────┬───────────────────────────────┐ 
│№ байта │         Назначение            │ 
├────────┼───────────────────────────────┤ 
│   1    │ Код операции (КОП)            │ 
│   2    │ (инверсия КОП) + 1            │ 
│   3    │ кол-во байтов данных ст.(Nст) │ 
│   4    │ кол-во байтов данных мл.(Nмл) │ 
│   5    │ байт данных 1                 │ 
│   6    │ байт данных 2                 │ 
│  ...   │            ...                │ 
│  N+4   │ байт данных N                 │ 
│  N+5   │ контрольная сумма             │ 
└────────┴───────────────────────────────┘ 

   Байты 3Ў(N+5) - необязательные,они при-
сутствуют  в кадре, если  7-й  разряд кода
операции равен 1.
   Контрольная  сумма - дополнение  до  28
суммы по модулю 2 байтов 3Ў(N+4).
   Коды операций команд,запросов и ОС при-
ведены в таблице 3.3.2.

                            Таблица 3.3.2
┌────────┬───┬──────────────────────────┐
│Биты КОП│   │      Наименование        │
│76543210│hex│                          │
├────────┼───┼──────────────────────────┤
│        │   │Кодирование кодов операций│
│        │   │    команд и запросов     │
├────────┼───┼──────────────────────────┤
│00000001│01 │Команда <Исходное>        │
│10000010│82 │Команда                   │
│        │   │     <Запустить измерение>│
│00000011│03 │Команда                   │
│        │   │    <Остановить измерение>│
│00000100│04 │Команда                   │
│        │   │  <Запустить самоконтроль>│
│00000101│05 │Запрос                    │
│        │   │     <Читать состояние ЛА>│
│10000110│86 │Запрос <Читать ОЗУ>       │
│10000111│87 │Запрос <Читать канал>     │
├────────┼───┼──────────────────────────┤
│        │   │Кодирование кодов операций│
│        │   │    ответных сообщений    │
├────────┼───┼──────────────────────────┤
│10000001│81 │ОС <Данные выданы>        │
│00000010│02 │ОС <Команда выполнена>    │
│00000011│03 │ОС                        │
│        │   │  <Ошибка передачи данных>│
│00000100│04 │ОС <Некорректные данные>  │
│00000101│05 │ОС <Ошибка команды>       │
└────────┴───┴──────────────────────────┘

   СЛА выдаёт ОС, если:

 байты 1 и 2 приняты без ошибок;
 значение байта 2  равно инкременту ин- 
версии значения байта 1; 
 принят допустимый КОП.

   В противном случае ОС не выдаётся.

   СЛА выдаёт ОС:

 <Данные выданы>  или <Команда выполне- 
на>, если  приняты без  ошибок  корректные 
команда или запрос; 
 <Ошибка передачи данных>, если обнару- 
жена ошибка  при приёме байтов 3Ў(N+5) или 
не совпала контрольная сумма; 
 <Некорректные  данные>,  если  приняты 
некорректные данные; 
 <Ошибка команды>, если принят некорре- 
ктный КОП. 

   ПЭВМ повторяет выдачу команды  или зап-
роса до М раз в случаях:

 отсутствует ОС в течение Т секунд;
 обнаружена  ошибка  при  приёме байтов 
1Ў(N+5); 
 не совпали контрольные суммы;
 принято ОС <Ошибка передачи данных>.

   Повторные или  новые команда или запрос
должны выдаваться не ранее,чем через t се-
кунд после приёма ОС.
   Параметры обмена по умолчанию:

 М = 4;
 Т = 4 с;
 t = 0,1 с.

   Далее приведены форматы команд и запро-
сов, выдаваемых  ведущей ПЭВМ, и действия,
выполняемые СЛА в соответствии  с форматом
полученных команды или запроса,а также фо-
рматы соответствующих ОС.

  а) Команда <Исходное>.

                           Таблица 3.3.3.
       Формат команды <Исходное> 
┌─────────┬─────────────────────────────┐ 
│ № байта │         Назначение          │ 
├─────────┼─────────────────────────────┤ 
│    1    │            КОП              │ 
│    2    │     (инверсия КОП) + 1      │ 
└─────────┴─────────────────────────────┘ 

   По данной команде:

 выдается ОС <Команда выполнена>;
 микропроцессорный  модуль СЛА устанав- 
ливается в исходное состояние; 
 выполняется  самоконтроль микропроцес- 
сорного модуля СЛА и внешнего ОЗУ; 
 формируется слово состояния ЛА.

  б) Команда <Запустить измерение>.

                           Таблица 3.3.4.
  Формат команды <Запустить измерение> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │    слово конфигурации ст.    │ 
│    6    │    слово конфигурации мл.    │ 
│    7    │     слово полярности ст.     │ 
│    8    │     слово полярности мл.     │ 
│    9    │         вид запуска          │ 
│   10    │  количество точек измерения  │ 
│   11    │     период измерения ст.     │ 
│   12    │     период измерения мл.     │ 
│   13    │количество тактов задержки ст.│ 
│   14    │количество тактов задержки мл.│ 
│   15    │       контрольная сумма      │ 
└─────────┴──────────────────────────────┘ 

   По данной команде:

 обнуляется байт состояния ЛА;
 загружаются  соответствующие  регистры 
ЛА; 
 запускается процесс приема синхрослова 
или измерения; 
 формируется слово состояния ЛА;
 выдается ОС <Команда выполнена>.

  в) Команда <Остановить измерение>.

                           Таблица 3.3.5.
 Формат команды <Остановить измерение> 
┌─────────┬─────────────────────────────┐ 
│ № байта │         Назначение          │ 
├─────────┼─────────────────────────────┤ 
│    1    │            КОП              │ 
│    2    │     (инверсия КОП) + 1      │ 
└─────────┴─────────────────────────────┘ 

   По данной команде:

 прекращается процесс приема синхросло- 
ва или измерения; 
 ЛА подготавливается к следующему запу- 
ску; 
 формируется слово состояния ЛА;
 выдается ОС <Команда выполнена>.

  г) Команда <Запустить самоконтроль>.

                           Таблица 3.3.6.
Формат команды <Запустить самоконтроль> 
┌─────────┬─────────────────────────────┐ 
│ № байта │         Назначение          │ 
├─────────┼─────────────────────────────┤ 
│    1    │            КОП              │ 
│    2    │     (инверсия КОП) + 1      │ 
└─────────┴─────────────────────────────┘ 

   По данной команде:

 выдается ОС <Команда выполнена>;
 выполняется самоконтроль ЛА;
 формируется слово  состояния ЛА по ре- 
зультатам самоконтроля. 

   ОС выдается до выполнения операции,что-
бы ПЭВМ могла контролировать успешный при-
ём команды. Следующие  команда  или запрос
могут быть выданы не ранее, чем через Tсмк
(должно  быть определено в рабочем порядке
после разработки программы ЛА). По умолча-
нию: Tсмк=800 мс (время  прохождения само-
контроля ОЗУ и ПЗУ).

  д) Запрос <Читать состояние ЛА>.

                           Таблица 3.3.7.
  Формат запроса <Читать состояние ЛА> 
┌─────────┬─────────────────────────────┐ 
│ № байта │         Назначение          │ 
├─────────┼─────────────────────────────┤ 
│    1    │            КОП              │ 
│    2    │     (инверсия КОП) + 1      │ 
└─────────┴─────────────────────────────┘ 

   По данному запросу:

 выдается слово состояния ЛА в кадре ОС 
<Данные выданы>; 
 обнуляются разряды №№ 0, 1, 2, 3 байта 
состояния ЛА. 

                           Таблица 3.3.8.
        Кодирование ОС на запрос
           <Читать состояние> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │      байт состояния ЛА       │ 
│         ├──────┬───────────────────────┤ 
│         │ 0р.=1│отказ самоконтроля ОЗУ │ 
│         │      │  при инициализации    │ 
│         │ 1р.=1│отказ самоконтроля ПЗУ │ 
│         │      │  при инициализации    │ 
│         │ 2р.=1│отказ самоконтроля ОЗУ │ 
│         │ 3р.=1│отказ самоконтроля ПЗУ │ 
│         │ 4р.=1│ ожидание синхрослова  │ 
│         │ 5р.=1│  ожидание окончания   │ 
│         │      │      измерения        │ 
│         │ 6р.=1│ данные в ОЗУ готовы   │ 
│         │      │      для выдачи       │ 
│         │ 7р.  │      резерв (0)       │ 
│         ├──────┴───────────────────────┤ 
│    6    │  код устройства коммутации   │ 
│    7    │    слово диагностики ст.     │ 
│    8    │    слово диагностики мл.     │ 
│    9    │ состояние счётчика адреса ст │ 
│   10    │ состояние счётчика адреса мл │ 
│   11    │          резерв (0)          │ 
│   12    │      контрольная сумма       │ 
└─────────┴──────────────────────────────┘ 

  е) Запрос <Читать ОЗУ>.

                           Таблица 3.3.9.
      Формат запроса <Читать ОЗУ> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │     номер группы каналов:    │ 
│         │       0 - (0-7) канал        │ 
│         │       1 - (8-15) канал       │ 
│         │       2 - (16-23) канал      │ 
│         │       3 - (24-31) канал      │ 
│    6    │  номер начального байта ст.  │ 
│    7    │  номер начального байта мл.  │ 
│    8    │     количество байтов ст.    │ 
│    9    │     количество байтов мл.    │ 
│   10    │       контрольная сумма      │ 
└─────────┴──────────────────────────────┘ 

   По данному запросу:

 выдается заданное количество  байтов с 
заданного номера байта  из заданной группы 
ОЗУ ЛА в кадре ОС <Данные выданы>. 

                          Таблица 3.3.10.
 Кодирование ОС на запрос <Читать ОЗУ> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │          байт 1 ОЗУ          │ 
│    6    │          байт 2 ОЗУ          │ 
│   ...   │             ...              │ 
│   N+4   │          байт N ОЗУ          │ 
│   N+5   │       контрольная сумма      │ 
└─────────┴──────────────────────────────┘ 

  ж) Запрос <Читать канал>.

                          Таблица 3.3.11.
     Формат запроса <Читать канал> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │         номер канала         │ 
│    6    │  номер начального байта ст.  │ 
│    7    │  номер начального байта мл.  │ 
│    8    │     количество байтов ст.    │ 
│    9    │     количество байтов мл.    │ 
│   10    │       контрольная сумма      │ 
└─────────┴──────────────────────────────┘ 

   По данному запросу:

 выбирается  наиболее эффективный метод 
сжатия / кодирования  для  передачи данных 
требуемого канала; 
 в сжатом / кодированном виде  выдается 
заданное количество байтов с заданного но- 
мера байта для заданного  канала из ОЗУ ЛА 
в кадре ОС <Данные выданы>. 

   При передаче  выбирается метод сжатия /
кодирования  данных, наиболее  выгодный по
объёму посылки (времени передачи) в данном
конкретном случае.Выбор метода сжатия про-
изводится по статистике количества фронтов
(методы  сжатия  рассматриваются в разделе 
4.1: <Расчёт времени измерения>). 

                          Таблица 3.3.12.
 Кодирование ОС на запрос <Читать канал> 
┌─────────┬──────────────────────────────┐ 
│ № байта │          Назначение          │ 
├─────────┼──────────────────────────────┤ 
│    1    │             КОП              │ 
│    2    │      (инверсия КОП) + 1      │ 
│    3    │             Nст              │ 
│    4    │             Nмл              │ 
│    5    │         метод сжатия:        │ 
│         │   0 - постоянный сигнал 0    │ 
│         │   1 - постоянный сигнал 1    │ 
│         │   2 - сигнал без сжатия      │ 
│         │   3 - сигнал со сжатием по   │ 
│         │       битовому RLE-методу    │ 
│    6    │     байт 1 данных канала     │ 
│    7    │     байт 2 данных канала     │ 
│   ...   │             ...              │ 
│   N+4   │    байт N-1 данных канала    │ 
│   N+5   │       контрольная сумма      │ 
└─────────┴──────────────────────────────┘ 

   Данные  форматы команд и запросов также
должны поддерживаться программой управляю-
щей ПЭВМ.

────────────────────────────────────────── 

 3.4. Разработка требований к программе

   На основании вышеизложенного были сфор-
мулированы следующие требования к програм-
ме управления  специализированным логичес-
ким анализатором.
   Программа должна поддерживать следующие
этапы работы:

1. приём команды или запроса с управляющей 
ПЭВМ; 
2. подготовка к измерению; 
3. ожидание синхронизирующей комбинации; 
4. ожидание  окончания  измерения и чтение 
данных с шины ММИ в ОЗУ; 
5. передача данных  с СЛА  на  управляющую 
ПЭВМ; 
6. самоконтроль модулей СЛА; 
7. установка в исходное состояние и иници- 
ализация модулей СЛА.

  Приём команды или запроса с управляющей 
ПЭВМ 

   Программа управления специализированным
логическим анализатором должна производить
все  действия  по  командам, переданным  с
ПЭВМ. Программа должна ожидать команду или
запрос всегда,за исключением времени,когда
она не занята другими задачами, такими как
самоконтроль или передача данных.
   В режиме  приёма  команды  или  запроса
программа должна обеспечивать:

 проверку  входных  данных  на коррект- 
ность; 
 в случае правильного приёма кадра про- 
грамма  должна обработать поданную команду 
и выдать ответное сообщение <Команда выпо- 
лнена> или <Данные выданы>; 
 в случае ошибочного  приёма кадра (не- 
верная длина  или несовпадение контрольной 
суммы) программа должна выдать  ОС <Ошибка 
передачи данных>; 
 в случае  некорректных  входных данных 
программа  должна  выдать ОС <Некорректные 
данные>. 

  Подготовка к измерению

   Начало  измерения должно инициироваться
оператором управляющей ПЭВМ. При поступле-
нии команды <Запустить измерение> програм-
ма управления СЛА  должна инициализировать
счётчики-таймеры и схему сравнения в соот-
ветствии с указанными в команде данными, а
затем  подать на вход схемы управления по-
ложительный импульс <Пуск>.
   После  этого программа должна перейти в
режим ожидания  нового запроса или команды
с управляющей ПЭВМ.
   Измерение может быть принудительно пре-
рвано до своего  окончания при подаче опе-
ратором  управляющей ПЭВМ команды <Остано- 
вить измерение>. В ответ  на  эту  команду 
программа  управления СЛА должна подать на
вход  схемы  управления  положительный им-
пульс <Стоп>.

  Ожидание синхронизирующей комбинации

   После запуска измерения, до поступления
синхронизирующей  комбинации программа уп-
равления  СЛА  должна  находиться  в цикле
ожидания команды или запроса ПЭВМ. В ответ
на  запрос <Читать состояние ЛА> программа
должна  в теле  ОС возвращать информацию о
том, что  ЛА  находится  в режиме ожидания
синхрослова (установленный 4-й разряд бай-
та состояния ЛА).
   Информация  о  нахождении  ЛА  в режиме
ожидания  синхрослова  позволяет оператору
ПЭВМ  контролировать  <зависание>  ЛА (при
ожидании  невозможной,  например, ошибочно
введённой, синхронизирующей  комбинации) и
принять  решение о принудительном прерыва-
нии текущего измерения.

  Ожидание  окончания  измерения и чтение 
данных с шины ММИ в ОЗУ 

   Во  время  измерения, после поступления
синхронизирующей  комбинации программа уп-
равления  СЛА  должна  находиться  в цикле
ожидания команды или запроса ПЭВМ. В ответ
на  запрос <Читать состояние ЛА> программа
должна  в теле  ОС возвращать информацию о
том, что  ЛА  находится  в режиме ожидания
окончания измерения (установленный 5-й ра-
зряд байта состояния ЛА).
   В режиме  синхронизации <синхронизирую-
щая комбинация  в начале интервала измере-
ния> после получения синхрослова начинает-
ся автоматическая запись  в ОЗУ данных ка-
налов шины ММИ.В остальных режимах синхро-
низации запись в ОЗУ начинается до синхро-
слова.Поскольку ожидание записи в ОЗУ тре-
бует введения в схему ещё одного счётчика,
в реализации  СЛА  запись в ОЗУ начинается
до синхрослова во всех режимах синхрониза-
ции, но используются только  полезные дан-
ные, считанные последними. При записи уве-
личение адресов идёт циклически внутри ка-
ждой из 4 областей ОЗУ.
   Измерение считается законченным,когда в
ОЗУ считано требуемое  количество отсчётов
полезных данных о каналах.
   После окончания измерения  схема записи
в ОЗУ отключается,и на запрос <Читать сос- 
тояние ЛА> программа должна возвращать ин- 
формацию об  успешном  окончании измерения
(установленный  6-й разряд байта состояния
ЛА). Из битов 4,5,6 байта состояния ЛА од-
новременно  может  быть  установлен только
один.

  Передача  данных  с  СЛА на управляющую 
ПЭВМ 

   После того,как на запрос <Читать состо- 
яние ЛА> ПЭВМ получит ответное  сообщение, 
содержащее информацию об окончании измере-
ния, ПЭВМ  может  подать  запрос на выдачу
данных измерения.
   Программа управления СЛА должна обеспе-
чивать два режима передачи данных  о кана-
лах на ПЭВМ: поканальный и одновременный.
   В случае поканальной передачи программа
управления  СЛА  по запросу <Читать канал>
возвращает в компрессированном виде требу-
емое  количество  байт  данных о состоянии
требуемого  канала, хранящихся в ОЗУ СЛА с
определённого адреса.
   В случае  одновременной передачи по од-
ному  запросу  ПЭВМ <Читать ОЗУ> программа
управления СЛА возвращает данные сразу о 8
смежных каналах, расположенных в одной об-
ласти ОЗУ.Сжатие при этом не производится.

  Самоконтроль модулей СЛА

   Самоконтроль СЛА производится сразу по-
сле сброса / включения  и по команде  ПЭВМ 
<Запустить самоконтроль ЛА>. 
   Программа  управления  СЛА проверяет на
истинность  содержимое  встроенного  ПЗУ и
тестирует работоспособность  внешнего ОЗУ.
На время самоконтроля (Tсмк=800 мс) СЛА не
обрабатывает сообщения управляющей ПЭВМ.
   Самоконтроль ОЗУ производится с помощью
контроля  и  последовательного  заполнения
ОЗУ сверху  вниз и снизу  вверх значениями 
55h, 0AAh, 00h. 
   Самоконтроль ПЗУ производится сигнатур-
ным анализом:с помощью сравнения сигнатуры
ПЗУ, записанной  в последних 19 байтах ПЗУ 
(16 байт  сигнатур + 3  байта  контрольной 
суммы), с сигнатурой,вычисленной на основе
действительного содержимого ПЗУ. Сигнатура
вычисляется  для каждого бита отдельно, на
основе полинома:
           16   12   9   7
          X  + X  + X + X + 1.

   Работоспособность  входного  тракта   и
схемы  записи в ОЗУ производится с помощью
заведения выходов счётчика адреса на вход-
ной коммутатор,после чего управляющая ПЭВМ
в общем порядке может прочитать эти сигна-
лы по запросам к СЛА.

  Установка в исходное состояние и иници- 
ализация модулей СЛА 

   Программа  управления  СЛА приводится в
исходное  состояние  сразу  после сброса /
включения и по команде ПЭВМ <Исходное ЛА>.
   При переходе в исходное состояние прог-
рамма  должна  произвести  самоконтроль  и
сформировать  на  основе  его  результатов
слово состояния ЛА. Конфигурирование моду-
лей  СЛА  при  инициализации заключается в
сбросе  линий  сигналов <Пуск>  и <Стоп> и
очистке содержимого ДОЗУ.

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

   Входными данными на разных этапах рабо-
ты программы являются:

 команды и запросы,выдаваемые на СЛА по 
интерфейсу RS-232 согласно п.3.3.; 
 информация,полученная в результате са- 
моконтроля СЛА; 
 информация, считанная с шины ММИ;
 информация о состоянии СЛА, получаемая 
от схемы управления записью в ОЗУ. 

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

   Выходными данными программы являются:

 ответные сообщения из СЛА по интерфей- 
су RS-232 согласно п.3.3.; 
 сигналы,подаваемые в схему управления;
 информация,заносимая при запуске изме- 
рения в счётчики-таймеры и в схему сравне- 
ния. 

  Требования  к составу и параметрам тех- 
нических средств 

   Программа  управления  СЛА должна функ-
ционировать  на  однокристальной  микроЭВМ 
AT89C52 с тактовой частотой 24 МГц,подклю- 
ченной  к IBM-совместимой ПЭВМ по последо-
вательному интерфейсу  RS-232 со скоростью
передачи  информации  19200 бод. Программа
должна  размещаться  в ПЗУ ОЭВМ  объёмом 8
килобайт.

────────────────────────────────────────── 

         4. Теоретическая часть

     4.1. Расчёт времени измерения

   Для  эффективной работы СЛА время цикла
измерения и передачи его результатов долж-
но быть минимизировано.Рассчитаем это вре-
мя.

  Исходные данные:

 скорость обмена данными  по интерфейсу 
RS-232 (19200 бод); 
 быстродействие ОЭВМ  AT89C52: машинный 
цикл (время выполнения простейшей команды) 
500 нс при тактовой частоте f=24 МГц; 
 время  чтения  одного кванта состояния 
анализируемых  линий: от 200 нс до 200 мкс 
(на практике чаще всего используется рабо- 
чий диапазон от 200 нс до 500 нс); 
 количество анализируемых  линий в шине 
(не более 32); 

   Общее время измерения Т есть сумма сле-
дующих времён:

     T = Tзап+Tож+Tчт+Tподг+Tпер, (4.1.1)

где Тзап - суммарное  время, затрачиваемое
на пересылку  запросов из ЭВМ в СЛА; Тож -
время ожидания начала измерения  при синх-
ронизации  по определённой комбинации сиг-
налов  на шине; Тчт - время, затрачиваемое
СЛА на чтение и сохранение  в ОЗУ данных с
линий шины  ММИ; Тподг - время  подготовки
данных к передаче; Тпер - суммарное время,
затрачиваемое  на пересылку  из СЛА  в ЭВМ
информации  о состоянии  анализируемых ли-
ний.
   В  течение  фрагментов времени Tож+Tчт+ 
+Tподг приёмная сторона, ожидая данные,по- 
сылает  запросы. Но время этих запросов не
входит в Тзап, поскольку все они,кроме по-
следнего, не  увеличивают время измерения.
Последний запрос должен прийти после окон-
чания подготовки данных к передаче, а сама
передача будет осуществляться по факту его
получения.
   Время  Тзап  зависит от числа байтов C,
передаваемых  в  составе команд и запросов
для СЛА.
   Обозначим  через R скорость обмена дан-
ными между СЛА и ПЭВМ. Так как каждый байт
в посылке кодируется 10 битами (8 бит дан-
ных, 1 стартовый и 1 стоповый бит), то

            19200        ┌байт┐
        R = ───── = 1920 │────│.  (4.1.2)
             10          └ с  ┘

   Суммарную  длину  запросов C можно рас-
считать как сумму длин запросов,содержащих
команду и тип измерения, метод синхрониза-
ции, список опрашиваемых сигнальных линий,
частоту квантования,а также сумму длин от-
дельных  запросов  на передачу для каждого
сигнала.
   Пусть с ПЭВМ на СЛА для считывания N=32
каналов переданы запросы:
 ЗАПУСТИТЬ ИЗМЕРЕНИЕ, длина 15 байт;
 ЧИТАТЬ СОСТОЯНИЕ ЛА, длина 2 байта;
 32 запроса ЧИТАТЬ КАНАЛ,длина 10 байт;
   При суммарной  длине  запросов  C=15+2+ 
+32·10=337 байт: 
                      C
              Tзап = ───;         (4.1.3)
                      R
                  337
          Tзап = ──── ў 0,18 (с).
                 1920

   Время  ожидания  начала  измерения  Тож
(при режиме синхронизации начала, середины
или окончания измерения по приходу опреде-
лённой комбинации сигналов на шине) теоре-
тически не ограничено, но в расчёте мы мо-
жем принять его равным 0,1 секунды.
   Время передачи Тпер определяется по фо-
рмуле:
                     Q·N
             Tпер = ────.         (4.1.4)
                     8R

   Где N - количество анализируемых  линий
шины.
   Время Тчт определяется  количеством то-
чек квантования Q (не более 4096) и часто-
той квантования f, выбираемой оператором,и
не зависит от числа анализируемых линий.

                     Q
              Tчт = ───.          (4.1.5)
                     f

   Примем  для  среднего измерения Q=4000, 
f=2000000 Гц: 

          Q       4000
   Tчт = ─── = ────────── = 0,002 (с).
          f    2000000 (Гц)

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

      T = Tзап+Tож+Tчт+Tподг+Tпер =

                     4000·32
  = 0,18+0,1+0,002+0+─────── ў 8,6 (с).
                     8·1920

   Цикл измерения,составляющий секунды,не-
приемлем,поскольку оператор вынужден долго
ждать появления показаний (в случае однок-
ратного измерения),а циклическое измерение
практически невозможно,поскольку результат
такого измерения окажется состоящим из си-
льно  разнесённых  во времени отрезков, не
составляющих полной картины процессов,про-
исходящих на шине.
   Время передачи можно сократить несколь-
кими способами: с помощью уменьшения коли-
чества  точек квантования или числа анали-
зируемых линий,или же используя компрессию
передаваемых данных. Первые два способа не
всегда можно применить,поскольку в больши-
нстве  случаев требуется считывать опреде-
лённый список сигналов,никаким сигналом из
которого пожертвовать нельзя, а уменьшение
количества  точек приведёт либо к уменьше-
нию разрешающей способности СЛА,либо к по-
тере из виду части временной диаграммы.По-
этому  целесообразнее использовать указан-
ные способы только как рекомендации опера-
тору,и производить компрессию данных,пере-
даваемых из СЛА на ПЭВМ.

  Выбор  алгоритма   сжатия  (компрессии) 
данных 

   По примерам графиков сигналов, приходя-
щих по шине (рис. 4.1.1), видно, что часть
сигналов  является высокочастотными, часть
низкочастотными,периодическими и нет,часть
несёт  отдельные импульсы, другие содержат
шум (обрыв)  или  совсем  не  изменяются в
рассматриваемом масштабе времени.

       ┌┐                  ┌┐    ┌┐
 ──────┘└──────────────────┘└────┘└───── 

 ────────────┐              ┌───────────
             └──────────────┘ 

 ─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐
  └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─ 

 
 ─────────────────────────────────────── 

  ┌┐┌──┐┌┐ ┌─┐┌┐  ┌─┐┌──┐┌┐ ┌┐ ┌─┐┌┐ ┌──
 ─┘└┘  └┘└─┘ └┘└──┘ └┘  └┘└─┘└─┘ └┘└─┘

       Рис.4.1.1. Виды сигналов,
        приходящих по шине ММИ.

   Метод сжатия должен учитывать все пере-
численные случаи,чтобы не давать потерь во
времени (объёме информации) при передаче.
   Алгоритмы сжатия делятся на обратимые и
необратимые (с потерей информации).Послед-
нее для нашего случая неприемлемо,посколь-
ку необходимо восстановить  точную картину
измеряемых сигналов.
   Известны  следующие  группы  алгоритмов
обратимого сжатия  одномерного потока  [4, 
15]: 

1. Использующие кодирование  многократного 
подряд идущего вхождения единицы информа-
ции (RLE - Run Length Encoding); 
2. Удаляющие  избыточность, возникающую от 
разницы в частоте использования различных
символов (метод  Хаффмана, арифметическое
кодирование); 
3. Использующие замену часто повторяющихся 
фрагментов с помощью словарей  или ссылок
(LZ - Lempel,Ziv, по фамилиям авторов ме-
тода); 
4. Использующие   предсказуемость   потока 
(цепи Маркова, контексты); 
5. Другие методы. 

   Среди других методов можно выделить ме-
тоды сжатия аналоговых сигналов, например, 
DAKX, в том  числе  методы, работающие  со 
спектром  сигнала  и пр. Но в нашем случае
цифровой сигнал не приводится к аналогово-
му виду.
   Методы четвёртой группы неприменимы для
реализации  на ОЭВМ из-за высоких требова-
ний  к производительности и объёму памяти.
Можно оценить временные требования к алго-
ритму для СЛА на однокристальной микро-ЭВМ 
AT89C52, воспользовавшись  тем фактом, что 
передача данных должна вестись на скорости 
R=1920 байт/с. В этом  случае  время между 
передачей двух соседних байт составляет:

           -1    1
      t = R  = ──── ў 0,5 (мс),   (4.1.6)
               1920

            500(мкс)
   что равно ──────── = 1000 машинных цик-
              500(нс)
лов (МЦ) ОЭВМ.
   Методы группы LZ достаточно разнообраз-
ны.Базовый вариант алгоритма требует чрез-
мерно больших затрат памяти (несколько де-
сятков  килобайт  при объёме ОЗУ AT89C52 в 
256 байт). Для нашего случая применимы то- 
лько  методы с заранее определённым слова-
рём (таблицей токенов - символов, кодирую-
щих несколько элементов данных). Поскольку
вид кодируемых  сигналов достаточно разно-
образен, затруднительно  предложить  набор
токенов, позволяющий реализовать эффектив-
ное сжатие такого потока при любом размере
единицы информации.
   Методы  удаления частотной избыточности
можно  эффективно использовать совместно с
методами остальных групп.Методы этой груп-
пы, применённые к потоку, содержащему отс-
чёты цифрового сигнала,могут удалить избы-
точность,вызванную разницей частот появле-
ния нулей и единиц. Эта разница велика то-
лько для импульсных сигналов.
   В нашем случае наиболее приемлемы мето-
ды типа  RLE, поскольку  большая  часть из
них  довольно  быстра  и нетребовательна к
памяти.

  Компрессия с помощью методов RLE
 
   Рассмотрим базовый метод этой группы.
   Он  предназначен  для  сжатия  потока с
единицей информации (символом), близкой по
размеру к 1 байту (8 бит). В этом случае N
повторений символа C кодируются последова-
тельностью (таблица 4.1.1):

      Таблица 4.1.1. Кодирование повторов
                           по методу RLE.
          ┌─────┬─────┬─────┐
          │  C  │  C  │ N-2 │
          └─────┴─────┴─────┘

   Если  символ  C встретился ровно 2 раза
подряд,то в этом случае алгоритм даёт про-
игрыш на 1 байт. Если же символ повторился
более 257 раз подряд,то такую последовате-
льность следует разбить на две и более,ко-
дируя их, как показано выше.
   Поскольку  СЛА должен передавать двоич-
ные сигналы, то перед использованием этого
и аналогичных методов  сигналы должны быть
сгруппированы.Можно предложить два принци-
пиально  различных способа группировки би-
тов данных,полученных в результате измере-
ния с помощью СЛА.
  <Вертикальная> группировка объединяет в
одном  байте или слове отсчёты разных сиг-
нальных  линий, снятые в один и тот же мо-
мент времени. <Горизонтальная> группировка
объединяет в одном байте (слове) несколько
соседних  отсчётов одной и той же сигналь-
ной линии.
   В нашем  случае  более  приемлем второй
способ, поскольку при <вертикальной> груп-
пировке желательно,во-первых,наличие крат-
ности числа линий размеру единицы информа-
ции (что мы гарантировать не можем, поско-
льку количество анализируемых линий указы-
вается в  каждом случае оператором), а во-
вторых, наличие  корреляции между битами в
сформированном байте,что тоже в общем слу-
чае не выполняется.

   Другой метод из группы RLE не даёт про-
игрыша  по сравнению с исходной последова-
тельностью  при  коротких  повторах одного
символа.
   В этом методе сжатая последовательность
состоит  из чередующихся блоков, первый из
которых кодирует последовательность произ-
вольных байтов (содержит байт - длину пос-
ледовательности, возможно, 0, и  сами дан-
ные), второй - кодирует повторяющийся сим-
вол (содержит сам символ  и байт - количе-
ство его повторений, возможно, 0 ), следу-
ющий  блок - снова  кодирует  произвольные
данные и т.д.
   Для  рассматриваемого  нами аналогового
сигнала, сгруппированного <горизонтально>,
можно отказаться от хранения байта символа
в каждом блоке, кодирующем повтор,восполь-
зовавшись тем фактом,что повторяться в бо-
льшинстве  случаев могут только байты, со-
держащие  всеми  битами  нули или же всеми
битами единицы. Выбор между нулём и едини-
цей  можно  произвести  по последнему биту
предыдущего упакованного байта.
   Нетрудно видеть,что максимальный проиг-
рыш (при сжатии произвольного шумового си-
гнала) равен  всего  5 байтам  для Q=4096.
Данные  в этом  случае  будут закодированы
следующим образом (таблица 4.1.2):

            Таблица 4.1.2. Кодирование по
              альтернативному методу RLE. 
┌──────────────────────────────┬─────────┐ 
│ Длина несжатой последов-сти  │   255   │ 
├──────────────────────────────┼─────────┤ 
│ Несжатые данные (255 байт)   │ ? ... ? │ 
├──────────────────────────────┼─────────┤ 
│ Кол-во повторов              │    0    │ 
├──────────────────────────────┼─────────┤ 
│ Длина несжатой последов-сти  │   255   │ 
├──────────────────────────────┼─────────┤ 
│ Несжатые данные (255 байт)   │ ? ... ? │ 
├──────────────────────────────┼─────────┤ 
│ Кол-во повторов              │    0    │ 
├──────────────────────────────┼─────────┤ 
│ Длина несжатой последов-сти  │    2    │ 
├──────────────────────────────┼─────────┤ 
│ Несжатые данные (2 байта)    │   ? ?   │ 
└──────────────────────────────┴─────────┘ 

   Автор  данного дипломного проекта пред-
ложил  вариант  метода RLE, манипулирующий 
битовым потоком. 
   Заключаться он будет в следующем. В на-
чале сжатой последовательности указано на-
чальное состояние сигнала. В каждом следу-
ющем байте должно храниться расстояние ме-
жду фронтами сигнала  в битах, равное нулю
для дальнейшего продолжения сигнала преды-
дущей  полярности в том случае, если длина
импульса  одной  полярности  превышает 255
бит.

  Синхронизация окончания передачи

   Вариант метода RLE, кодирующий расстоя-
ния между фронтами, хорош тем,что при вве-
дении  некоторого ограничения даёт возмож-
ность предсказать длину упакованного блока
на основании  данных  о количестве фронтов
упаковываемого сигнала. Ограничение приво-
дит  к небольшой  потере в плотности комп-
рессии  и сводится  к разбиению  интервала
измерения  на подинтервалы (сегменты) дли-
ной  256  бит, в начале каждого из которых
явно указывается полярность сигнала в этот
момент.При этом фронт сигнала,приходящийся
между такими интервалами, должен кодирова-
ться как дополнительный псевдоимпульс дли-
ной 0 бит. Из этого видно, что длина полу-
ченной упакованной последовательности сос-
тавит:

    L = (1+8)I+8F = 9I+8F (бит),  (4.1.7)
     1

   где I - заранее  известное число интер-
валов,а F - подсчитанное число фронтов си-
гнала на период измерения,не учитывая фро-
нты, приходящиеся на начало и конец интер-
вала измерения.Очевидно,что при отсутствии
сегментации  периода измерения (I=1) число
передаваемых длин  импульсов  на 1 больше,
чем число фронтов.
   Если  учесть, что  полярность сигнала в
начале  следующего  интервала можно узнать
как полярность сигнала  в момент окончания
предыдущего  интервала,  включая  передний
фронт  возможного  псевдоимпульса длиной 0
бит, то длина посылки составит:

            L = 8I+8F+1 (бит).    (4.1.8)
             2

   Этот метод плохо применим для высокоча-
стотных и шумовых сигналов, фронты у кото-
рых меняются чаще,чем один раз в 8 бит.Для
таких  сигналов  упакованный  этим методом
блок получится длиннее оригинала.
   Поэтому  имеет смысл перед сжатием сиг-
нала и передачей его со СЛА на ПЭВМ произ-
вести  подсчёт  количества  фронтов в этом
сигнале.Процедура подсчёта количества фро-
нтов  должна выполняться до передачи и яв-
ляется  оптимизированной по времени выпол-
нения за счёт одновременной проверки 8 си-
гнальных  линий  в том виде, в котором они
помещены в ОЗУ считывающим устройством.
   Эта операция может производиться следу-
ющим фрагментом кода (время выполнения за-
висит  от данных, но в среднем  составляет 
40 МЦ = 20 мкс): 
       ...
       movx    a,@DPTR        //чтение из
       inc     DPTR        //внешнего ОЗУ
       xrl     a,R5         //сравнение с
                    //предыдущим отсчётом
       jz      m1_7         //пропускаем,
                         //если совпадает
       mov     b,a
       clr     a
       jnb     b.0,m1_0 //переход,если 0й
                    //разряд не изменился
       inc     Lreg0  //иначе инкременти-
       cjne    a,Lreg0,m1_0  //руется 16-
       inc     Hreg0  //разрядный счётчик 
m1_0: 
       jnb     b.1, m1_1    //аналогичная
     //проверка 1-го разряда на изменение
       inc     Lreg1
       cjne    a,Lreg1,m1_1
       inc     Hreg1 
m1_1: 
       ...
       jnb     b.7, m1_7  //проверка 7-го
                   //разряда на изменение
       inc     Lreg7
       cjne    a,Lreg7,m1_7
       inc     Hreg7 
m1_7: 
        movx    a,@dptr  //восстанавливаем
          //в аккумуляторе текущий отсчёт
       mov     R5,a  //запоминаем в реги-
       //стре R5 для последующих проверок
       ...
   Полученная  информация позволит выбрать
приемлемый  метод  сжатия, а для некоторых
методов - и предсказать  длину блока после
сжатия. Данные о длине блока важны, поско-
льку  посылка должна в заголовке содержать
свою длину, что необходимо для синхрониза-
ции окончания посылки на приёмной стороне.

  Синхронизация  окончания  передачи  для 
других методов сжатия 

   Во многих случаях  приведённый выше ва-
риант  метода  RLE, кодирующий  расстояние
между фронтами,является не самым эффектив-
ным по качеству сжатия. Поэтому можно пре-
дусмотреть возможность использовать другие
алгоритмы сжатия.
   Поскольку  для  многих  методов  сжатия
данных  длина  выходной последовательности
заранее неизвестна, то приходится либо от-
делить  время  компрессии от времени пере-
дачи (что  сопряжено с увеличением времени
измерения из-за большого времени подготов-
ки Tподг ),либо определённым способом раз-
делить посылку на несколько частей, каждая
из которых  будет  иметь  свой заголовок и
контрольную сумму. При этом блочном режиме
передачи  все части посылки, кроме послед-
ней, должны иметь известную заранее фикси-
рованную длину B байт.
   Число B должно быть меньше объёма внут-
реннего ОЗУ однокристальной микро-ЭВМ, по-
скольку  передаваемая секция (блок) упако-
ванных данных требует предварительной под-
готовки.

  Передача в блочном режиме:

 Программа  ОЭВМ  подготавливает первый 
блок упакованных данных для передачи, сох- 
раняя его во внутреннем ОЗУ; 
 В ответ на запрос со стороны ПЭВМ про- 
исходит  передача  первого подготовленного 
блока. Одновременно с этим в другом буфере 
подготавливается  следующий блок для пере- 
дачи; 
 ПЭВМ может запросить  переданный  блок 
повторно  в том  случае, если  он содержит 
ошибку (потеря синхронизации  или неверный 
контрольный код). Иначе ПЭВМ присылает си- 
гнал  подтверждения, служащий  запросом на 
продолжение передачи данных; 
 Указанная  последовательность действий 
повторяется до тех пор,пока не будет полу- 
чено подтверждение об успешном приёме пос- 
леднего блока. 

   Однако из-за большого объема дополните-
льных  передаваемых данных и необходимости
поместить  в оперативной  памяти ОЭВМ (256
байт) два буфера этот метод нецелесообраз-
но, хотя и возможно, использовать в данном
случае.

   На основании рассмотрения характеристик
различных  методов компрессии для передачи
данных о сигналах от СЛА к ПЭВМ был выбран
метод сжатия "битовый RLE с сегментацией".
   Пауза между двумя передаваемыми в сдви-
говый  регистр байтами равна 1000 машинных
циклов ОЭВМ (4.1.6). Система команд микро-
контроллера AT89C52 не позволяет произвес-
ти 256 битовых сравнений данных из внешней
памяти за этот промежуток времени (необхо-
димо как минимум 1 сравнение за 4 машинных
цикла при длительности команд в 1Ў2 машин-
ных  цикла), поэтому размер сегмента имеет
смысл  принять  равным 128 бит, тогда фазу
сигнала  становится можно кодировать стар-
шим битом передаваемого байта.
   Чтобы  избежать разночтения в интерпре-
тации  нулевого  по  младшим 7 битам байта
(длина импульса 0 или 128 ),условимся счи-
тать в этом  случае длину импульса  равной
нулю  в  конце  очередного сегмента по 128
байт, только  если  полярность  (7-й  бит)
этого  импульса  отличается  от полярности
предыдущего.
   Таким образом,каждый байт посылки коди-
рует длину импульса и его полярность (все-
го F импульсов и I псевдоимпульсов нулевой
длины либо псевдофронтов на границе сегме-
нтов по 128 байт),а длина посылки без учё-
та заголовка составляет:

            Lпос = I+F (байт),    (4.1.9)

   где Lпос - длина посылки без учёта дли-
ны заголовка, I - количество  сегментов по 
128 бит (количество  точек в интервале из- 
мерения должно делиться на 128), F - коли-
чество фронтов сигнала в интервале измере-
ния,не считая фронты на границах этого ин-
тервала.
   При этом следует учесть, что если подс-
читанное количество фронтов в сигнале пре-
вышает некоторую  критическую величину, то
сжатие  производиться  не  будет, и данные
канала будут  передаваться без компрессии.
Рассчитаем  критическое количество фронтов
сигнала в интервале измерения,при превыше-
нии которого сжатие нецелесообразно:

             Lпос < 128·I,

              I+F < 128·I,

               F < 127·I,        (4.1.10)

где I - число сегментов.
   Если же количество фронтов окажется ра-
вным  нулю, то  сигнал  является на данном
участке постоянным,и будет передана только
полярность сигнала (1 бит).
   Таким  образом, общее время измерения с
использованием сжатия составляет:

   T = Tзап+Tож+Tчт+Tподг+Tпер = (4.1.11)
                             N
                        N·I+ ∙ F
      C       Q     -5      i=1 i
   = ───+Tож+───+2·10 Q+───────── (с).
      R       f             R

   Пользуясь выражением (4.1.11), построим
графики  зависимости  времени измерения от
средней частоты сигналов (рис.4.1.2).
 




     Рис.4.1.2. Результаты расчёта
           времени измерения:

fсиг - средняя частота  сигнала; Q - коли- 
чество  точек  в интервале  измерения; T -
общее время измерения. 
Сплошная линия - с использованием реализо- 
ванного алгоритма сжатия. 
Пунктирная линия - без использования  сжа- 
тия. 
Штриховая линия - без контроля применимос- 
ти алгоритма сжатия.

────────────────────────────────────────── 

        4.2. Выбор и обоснование
           средств разработки

   Разрабатываемая программа для однокрис-
тальной  микроЭВМ AT89C52 должна обеспечи-
вать:
 высокую скорость обработки данных;
 доступ ко всем ресурсам СЛА и ОЭВМ;
 работу с портами;
 сжатие данных при передаче;
 корректную обработку ошибок при обмене 
данными; 
 небольшой объём кода (максимум 8 кило- 
байт); 
   Из существующих языков программирования
для данного микропроцессора вышеизложенным
требованиям удовлетворяет только язык низ-
кого  уровня АССЕМБЛЕР, операторы которого
непосредственно  задают  единичные команды
ОЭВМ, что  позволяет реализовать программу
максимальной  эффективности с точки зрения
размера и скорости работы. Однако для дос-
тижения заданных характеристик программно-
гrо продукта при разработке на языке АССЕ-
МБЛЕР программист затрачивает  большее ко-
личество  времени, чем  на языках высокого
уровня.
   Для упрощения процесса разработки прог-
рамм  на языке АССЕМБЛЕР созданы специаль-
ные средства проектирования - кросс-ассем-
блеры и мониторы-отладчики.Кросс-разработ-
кой называется процесс проектирования про-
граммного  обеспечения для одного вида вы-
числительных средств на вычислительной си-
стеме другого вида (обычно более мощной).
   Первые  из  таких   средств  разработки
(кросс-ассемблеры) позволяют  с  удобством
редактировать  программу  на  языке АССЕМ-
БЛЕР, что создается с помощью полнофункци-
онального текстового редактора, многоокон-
ности,графического интерфейса, системы ко-
нтекстных подсказок и т.п., а также компи-
лировать (ассемблировать) набранный  текст
из языка  АССЕМБЛЕР  непосредственно в ма-
шинный код микроконтроллера.
   Вторые - мониторы-отладчики  -  предна-
значены  для нахождения ошибок в программе
до прошивки её машинного кода  в ПЗУ и от-
ладки  этих ошибок по дизассемблированному
из машинного кода тексту. При этом имеются
возможности  имитировать работу микроконт-
роллера:выполнять отдельные команды,группы
команд, подпрограммы, запускать программу,
но, в отличие от реального процессора,воз-
можно  прервать выполнение фрагмента прог-
раммы в любое время, просмотреть и отреда-
ктировать содержимое регистров процессора,
памяти и портов.
   Из  нескольких  наборов  таких  средств
кросс-разработки  для  проектирования рас-
сматриваемого  ПО СЛА была выбран интегри-
рованный  пакет из ассемблера и отладчика:
соответственно  Asm51Edit 2 и Debugger-51,
созданный  на  ФГУП РКБ <Глобус>  Минаевым
А.С.
   От аналогов пакет  отличается в положи-
тельную сторону  высокой скоростью работы,
большим  количеством предусмотренных функ-
ций, удобным и наглядным графическим инте-
рфейсом  и  развитой  системой контекстной
помощи.

────────────────────────────────────────── 

   4.3. Разработка общего и детальных
          алгоритмов программы

  4.3.1. Общий алгоритм программы

  Требования к программе

   Разрабатываемое  ПО должно соответство-
вать требованиям,изложенным в разделе 3.4,
и протоколам обмена данными, приведённым в
разделе 3.3, обладать высокой производите-
льностью, контролировать ошибочность вход-
ных данных и учитывать возможные  исключи-
тельные ситуации (сбои, обрывы связи,неис-
правность аппаратуры).

  Реализация

   В соответствии  с вышеприведёнными тре-
бованиями,в разрабатываемое ПО должны быть
включены следующие программные модули:
 подпрограммы самоконтроля ОЗУ и ПЗУ;
 блок инициализации;
 обработчики ошибочных ситуаций;
 блок взаимодействия со схемой управле- 
ния, осуществляющий запуск и останов изме- 
рения; 
 подпрограммы ввода-вывода, позволяющие 
принимать и передавать  кадры сообщений по 
интерфейсу RS-232; 
 подпрограммы передачи данных измерения 
на ПЭВМ  с компрессией <на лету> и необхо- 
димая для этого программа подсчёта статис- 
тик каналов, записанных в ОЗУ. 
 
   После запуска и инициализации программа
должна  переходить к главному циклу приёма
и  обработки  команд  и  запросов согласно
блок-схеме (рис.4.3.1).

             ─────────
            (  Начало )
             ────┬────
                 v
          ┌──────────────┐
          │    Запрет    │
          │  прерываний  │
          └──────────────┘
                 v
          ┌──────────────┐
          │Инициализация:│
          │ ЛА, таймеров,│
          │   адаптера   │
          │    RS-232    │
          └──────┬───────┘
                 v
          ┌──────────────┐
          │ Самоконтроль:│
          │  ППЗУ ОЭВМ   │
          │    ОЗУ ЛА    │
          └──────┬───────┘
                 │<─────────────────────┐
                 v                      │
          ┌──────────────┐              │
          │ Приём кадра  │              │
          │   в буфер    │              │
          │    приёма    │              │
          └──────┬───────┘              │
                 │                      │
                 v                      │
                ,/.                    │
              ,/    .                  │
       Да   ,/ Данные . Нет            │
     ┌─────< достоверны?>────┐          │
     v      `        /'     v          │ 
┌─────────────┐`    /'┌────────────┐    │ 
│ Расшифровка │  `/'  │ ОС "Ошибка │    │ 
│и исполнение │        │  передачи  ├───>│ 
│     КОП     │        │   данных   │    │ 
└─────┬───────┘        └────────────┘    │ 
     │                                  │
     v                                  │
    ,/.                                │
  ,/    .      ┌─────────────┐         │
,/ Данные . Нет│     ОС      │         │ 
< корректны? >──>│"Некорректные├────────>│ 
`        /'    │   данные"   │         │
  `    /'      └─────────────┘         │
    `/'                                │
     │ Да                               │
     v                                  │
    ,/.                                │
  ,/    .      ┌─────────────┐         │
,/  Нужна . Нет│     ОС      │         │ 
<   выдача   >──>│   "Данные   ├────────>│ 
` данных?/'    │   выданы"   │         │
  `    /'      └─────────────┘         │
    `/'                                │
     │          ┌─────────────┐         │
     │ Да       │     ОС      │         │
     └─────────>│  "Команда   ├─────────┘
                │  выполнена" │
                └─────────────┘

       Рис.4.3.1. Укрупнённая БСА
        главного цикла программы.


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

   Из всех разрабатываемых алгоритмов,вхо-
дящих в ПО специализированного логического
анализатора,в детализации в первую очередь
нуждаются алгоритмы наиболее важных и сло-
жных действий,а именно:

 обработка  команды <Запустить  измере- 
ние>; 
 выдача данных канала со сжатием по би- 
товому RLE с сегментацией. 

  Алгоритм  обработки  команды <Запустить 
измерение> 

   Данный алгоритм реализуется в виде под-
программы, которая на основании блока дан-
ных команды <Запустить измерение> осущест-
вляет занесение требуемых начальных значе-
ний  в счётчики-таймеры  и запускает схему
управления записью в ОЗУ.
   В словесном виде  этот  алгоритм  может
быть представлен следующим образом (содер-
жимое внешней  памяти по адресу DPTR обоз-
начим как {DPTR} ):

1. Занести в глобальную переменную olddptr 
(начальный  адрес  предыдущего запроса на
чтение канала) значение 0FFFFh, чтобы при
следующем  запросе на чтение канала прои-
зошёл новый анализ количества фронтов. 
2. Копировать слово конфигурации синхрони- 
зирующей комбинации из команды в регистры
схемы синхронизации. 
3. Копировать слово полярности синхронизи- 
рующей  комбинации  из команды в регистры
схемы синхронизации. 
4. Занести  в регистр начального состояния 
таймера TM1 значение  периода  измерения,
взятое с обратным знаком. 
5. Занести в переменную  DELAY  из команды 
значение количества тактов задержки. 
6. Занести в регистр  ACC  из команды  код 
количества точек в интервале измерения. 
7. Если ACC=0, то N=256. 
8. Если ACC=1, то N=512. 
9. Если ACC=2, то N=1024. 
10. Если ACC=3, то N=2048. 
11. Если ACC=4, то N=4096. 
12. Если <вид запуска> не равен  0, то пе- 
рейти к пункту 16. 
13. Занести в регистр начального состояния 
таймера TM3 значение -(N+DELAY). 
14. Занести в регистр начального состояния 
таймера TM2 значение 0FFFFh. 
15. перейти к пункту 23. 
16. Если <вид запуска> не равен  1, то пе- 
рейти к пункту 20. 
17. Занести в регистр начального состояния 
таймера TM2 значение -N/2. 
18. Занести в регистр начального состояния 
таймера TM3 значение -(N/2+DELAY). 
19. перейти к пункту 23. 
20. Если <вид запуска> не равен  2, то пе- 
рейти к пункту 23. 
21. Занести в регистр начального состояния 
таймера TM3 значение
0FFFFh-DELAY = -DELAY-1.
При DELAY=0 в  счётчик  количества  точек
попадает  максимальное значение (перепол-
нение на 1-м такте). 
22. Занести в регистр начального состояния 
таймера TM2 значение -N. 
23. Установить линию сигнала <Пуск> в сос- 
тояние 1. 
24. Сбросить линию сигнала <Пуск> в состо- 
яние 0. 
25. Занести в байт состояния ЛА значение 0 
26. Выдать ОС <Команда выполнена>. 
27. Выход из подпрограммы. 

  Алгоритм   выдачи   данных   канала  со 
сжатием битовым RLE с сегментацией 

   Данный алгоритм реализуется в виде про-
граммы, которая  на основании блока данных
запроса <Читать канал> осуществляет выдачу
данных на ПЭВМ.

1. Вычислить segs как  количество запраши- 
ваемых байт, делённое на 128. 
2. Если segs дробное или segs>32, то пере- 
ход к выдаче ОС <Некорректные данные>. 
3. Проверить номер запрашиваемого сигнала. 
Если (номер сигнала)>31, то переход к вы-
даче ОС <Некорректные данные>. 
4. Из 4 и 5 битов  номера сигнала получить 
номер области внешнего ОЗУ:
obl:=(номер сигнала) div 8. 
5. DPTR:=1000h·obl+(начальный адрес). 
6. Если DPTR<>olddptr ИЛИ segs<>oldsegs, 
вызвать п/п подсчёта фронтов. 
7. olddptr:=DPTR. 
8. oldsegs:=segs. 
9. masker:= 
=100h shr (1+((номер сигнала) and 7)). 
10. Присвоить fronts количество фронтов по 
текущему каналу из таблицы. 
11. Если fronts=0, то  переход  к передаче 
постоянного сигнала. 
12. blocklength:=segs+fronts+1. 
13. Если blocklength>segs-16, то переход к 
передаче сигнала без сжатия. 
14. Выдать  в  последовательный  порт  КОП 
<Данные выданы>. 
15. Выдать -КОП. 
16. Обнулить контрольную сумму: csum:=0. 
17. Выдать старший байт blocklength. Здесь 
и далее при выдаче байта в буфер последо-
вательного порта должна накапливаться ко-
нтрольная сумма:
csum:=(csum+(байт)) mod 256. 
18. Выдать младший байт blocklength. 
19. Поместить  в  буфер  последовательного 
порта  номер  метода  (значение 03h)  без
ожидания передачи байта. 
20. segbeg:=DPL 
(начало главного цикла). 
21. dplbeg:=DPL 
(начало цикла упаковки  внутри сегмента). 
22. Если ({DPTR} and masker)<>0, то перей- 
ти к пункту 33
(подсчёт единиц, иначе нулей). 
23. Увеличить DPTR, учитывая зацикливание 
внутри 4k области ОЗУ: DPTR:=
=(DPTR and 3000h)+((DPTR+1) and 0FFFh). 
24. Если ({DPTR} and masker)<>0, то перей- 
ти к пункту 26
(выход из цикла). 
25. Если (segbeg-DPL) mod 256<>128, то пе- 
рейти к пункту 23 (продолжение цикла). 
26. Если ((segbeg-DPL) mod 256<>128) ИЛИ 
({DPTR} and masker)=0) ИЛИ
DPTR=(конечный адрес),
то перейти к пункту 31. 
27. Ожидать окончания передачи байта в по- 
следовательный порт. 
28. Выдать  в последовательный порт значе- 
ние (DPL-dplbeg) mod 256 без ожидания пе-
редачи байта. 
29. Присвоить ACC:=128 
(признак псевдоимпульса нулевой длины). 
30. Перейти к пункту 42. 
31. Присвоить ACC:=(DPL-dplbeg) mod 256. 
32. Перейти к пункту 42. 
33. Увеличить DPTR, учитывая  зацикливание 
внутри 4k области ОЗУ: DPTR:=
=(DPTR and 3000h)+((DPTR+1) and 0FFFh). 
34. Если ({DPTR} and masker)=0, то перейти 
к пункту 36
(выход из цикла). 
35. Если (segbeg-DPL) mod 256<>128, то пе- 
рейти к пункту 33
(продолжение цикла). 
36. Если ((segbeg-DPL) mod 256<>128) ИЛИ 
({DPTR} and masker)<>0) ИЛИ
DPTR=(конечный адрес),
то перейти к пункту 41. 
37. Ожидать окончания передачи байта в по- 
следовательный порт. 
38. Выдать  в последовательный порт значе- 
ние (DPL-dplbeg) mod 256 без ожидания пе-
редачи байта. 
39. Присвоить ACC:=0 
(признак псевдоимпульса нулевой длины). 
40. Перейти к пункту 42. 
41. Присвоить 
ACC:=128+(DPL-dplbeg) mod 256. 
42. Ожидать окончания передачи байта в по- 
следовательный порт. 
43. Выдать  в последовательный порт значе- 
ние ACC без ожидания передачи байта. 
44. Если (segbeg-DPL) mod 256<>128, то пе- 
рейти к пункту 21 (продолжение цикла упа-
ковки внутри сегмента). 
45. segs:=segs-1. 
46. Если segs>0, то перейти к пункту 20 
(продолжение главного цикла). 
47. Ожидать окончания передачи байта в по- 
следовательный порт. 
48. Выдать в последовательный порт контро- 
льную сумму кадра: -csum. 
49. Выход из программы. 

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





Другие статьи номера:

Sofтинка - Новая версия триколорного редактора 8 color editor v 0.04. Улучшения, результаты тестирования и список изменений.

Inferno - Об оболочке.

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Комментарии к тексту диплома.

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 1.

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 2.

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 3.

Диплом - Диплом Alone Coder-а. Разработка программного обеспечения для специализированного логического анализатора. Часть 4.

Inferno - Вступление от редакторов.

Inferno - Авторы журнала.

Размышления - В гостях у Кристобаля ХУНТЫ. Методика оценки фантастических произведений и способы придумывания новых фантастических идей.

Размышления - Как стать писателем. Руководство.

Inferno - Письма в редакцию.

Поэзия - Стих "Кто я?"

Возможности Спектрума - Pseudo-Color: миф или реальность? Алгоритм перевод чёрно-белого изображения в цветное.

Gamedev - WORM-255F. Код игры Питон размером в 255 байт с комментариями.

Юмор - Литературные анекдоты.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Проекты - возрождение идеи "Hационального Фонда Спектрума" (HФСП).
Содержание - краткое описание материалов первого номера журнала.
Игрушки - О содержании журнала "ZX-Format 7".
Inferno - Письма в редакцию.
Разное - операция "в поисках сьюзан".

В этот день...   27 апреля