ЯЗЫК МАКРОАССЕМБЛЕРА
Языки ассемблера и макроассемблера относятся к машинно-ориентированным языкам программирования низкого уровня. Эти языки специфичны для каждого типа микропроцессора, так как основаны на машинной системе команд, и, кроме того, связаны с используемой программой-ассемблером, т.
е. транслятором с языка ассемблера в машинные коды. Так, программы, представленные в гл. 1—4 книги, написаны на макроассемблере (без использования микросредств) микроЭВМ «Электроника К1-І0», а в гл. 5, 6 — на макроассемблере (с использованием макросредств) ДОС СМ 1800. Поскольку обе эти машины построены на базе микропроцессора серии КР580, их языки макроассемблера близки, но тем не менее имеют и некоторые различия.
Кратко опишем те языковые средства, которые являются одинаковыми (или почти одинаковыми) для обоих указанных языков ассемблера и использованы в приведенных программах.
Программа представляет собой последовательность предложений языка ассемблера — строк, ограниченных символом ВК. Возможны четыре типа предложений: 1) пустое предложение (содержит один символ ВК, улучшает восприятие исходного текста программы); 2) предложение машинной команды; 3) предложение вспомогательной команды языка (псевдокоманды); 4) предложение макрокоманды. Часто предложения второго и третьего типов называют операторами языка ассемблера. В общем случае предложение на языке ассемблера содержит 4 поля и имеет следующий вид:
НАЗВАНИЕ ОПЕРАЦИЯ ОПЕРАНДЫ КОММЕНТАРИЙ (ВК)
В конкретном предложении каждое из указанных полей может быть пустым. Если все поля пусты, то и предложение будет пустым. Поля предложения ограничиваются разделителями, которые могут быть дополнены произвольным количеством пробелов (говорят, что предложение записывается в свободном формате). В качестве разделителей применяются следующие знаки: пробел (разделяет поля), запятая (разделяет операнды в поле операндов), двоеточие (завершает имена, используемые в качестве меток), точка с запятой (открывает поле комментариев), апострофы (ограничивают строку символов) и скобки (ограничивают выражение).
Содержимое полей предложений исходной программы записывается
с помощью символов, образующих алфавит языка ассемблера, в качестве которых используются:
буквы латинского и русского алфавитов (как правило, прописные);
десятичные цифры от 0 до 9;
специальные символы (знаки): « + », «—», «*», «/», «:», «,», «;», «( )», «?» и т. п.;
любые символы системы КОИ-7 (в строках, заключенных в апострофы, н в комментариях).
Основное отличие языка ассемблера от машинного языка заключается в использовании вместо двоичных кодов операций н адресов мнемонических и символических наименований — символических имен. Символическое имя в языке ассемблера — это последовательность букв и цифр, начинающаяся с буквы. Длина последовательности символов в имени не ограничивается, различными считаются символические имена, которые отличаются только первыми N символами (обычно N=5...8 и зависит от специфики ассемблера-транслятора). В языке используют два типа имен: постоянные и определенные пользователем. Постоянные имена не нуждаются в определении перед их использованием в исходной программе. К ним относятся мнемокоды машинных команд, мнемокоды псевдокоманд, имена регистров и регистровых пар, мнемокоды операций языка ассемблера. Символические имена пользователя следует обязательно определять в исходной программе, причем они не должны совпадать с постоянными именами (иначе ассемблер-транслятор выдаст сообщение об ошибке).
В поле названия предложения содержится либо имя, либо метка. Имя служит для идентификации элементов программы в псевдокомандах EQU, SET, MACRO (табл.
П.10). Если имя используется для организации адресных ссылок на указанные операторы, оно называется меткой. Синтаксически метка определяется так же, как и имя, но отделяется от поля операции двоеточием. Числовое значение метки определяемся по содержимому счетчика адреса ассемблера-транслятора при трансляции исходной программы. Метка всегда соответствует адресу первого байта машинной команды или области данных, которые она именует. Поле операции содержит либо имя машинной команды, либо имя псевдокоманды, либо имя макровызова. В поле операндов имеются один или несколько операндов, каждый из которых в общем случае представляет собой некоторое выражение языка ассемблера. Поле комментария содержит произвольную последовательность символов, которая используется для описания программных элементов при создании листинга программы. Предложение может состоять только из поля комментария, образуя предложение-комментарий.Выражения языка ассемблера, определяющие операнды,— это комбинации термов, операций ассемблера, а также открывающих и закрывающих скобок. Числовые значения выражений вычисляются ассемблером-транслятором по модулю 64К= 65536. Каждый терм представляет собой некоторое числовое значение, которое либо определяется самим термом (самоопределенный терм), либо присваивается выражению в результате вычислений ассемблера-транслятора. Самоопределенный терм представляет собой константу двоичного (последовательность двоичных цифр, оканчивающаяся буквой В), восьмеричного (последовательность восьмеричных цифр, оканчивающаяся буквой Q), десятичного (последовательность десятичных цифр с конечной буквой D или без нее), шестнадцатеричного (последовательность шестнадцатеричных цифр с конечной буквой Н и предиачальной цифрой 0, если первая шестнадцатеричная цифра является буквой) или символьного
Примечание. Квадратные скобки используются для обозначения необязательных элементов в формате оператора.
(последовательность символов, заключенная в апострофы и транслируемая в соответствующие системы КОИ-7) типов.
В качестве терма могут быть использованы имя, определенное предварительно псевдокомандами языка ассемблера EQU или SET (имена, определенные с помощью псевдокоманды SET, могут в последующем тексте программы переопределяться в отличие от имен, определенных псевдокомандой EQU), а также метка, имя регистра илн регистровой пары и машинная команда языка ассемблера, взятая в круглые скобки. Выражения представляют собой последовательность вышеуказанных имен и констант, объединенных знаками арифметических, логических и некоторых других операций.
Псевдокоманды не имеют простых аналогов команд на машинном языке. Они предназначены для передачи ассемблеру-транслятору дополнительной информации о транслируемой программе. Можно выделить четыре класса псевдокоманд (см. табл. П.10): 1) управления трансляцией ORG, END; 2) определения данных и выделения области памяти для данных DB, DW, DS; 3) определения символических имен EQU, SET; 4) определения макрокоманд MACRO, ENDM.
Псевдокоманда ORG используется для установки начального адреса программы (ее фрагмента) или данных в памяти, а псевдокоманда END — для прекращения процесса трансляции исходной программы. Псевдокоманда DB формирует в оперативной памяти массив 8-битных констант, значения которых задаются в списке — последовательности выражений языка ассемблера, разделенных запятыми. Псевдокоманда DW аналогична команде DB, но формирует в отличие от нее массив 16-битных констант. Псевдокоманда DS используется для резервирования области памяти под данные (содержимое этой области ассемблер-транслятор не определяет).
Псевдокоманды MACRO и ENDM применяются для создания макросредств в языке ассемблера, тем самым превращая его в язык макроассемблера. Макросредства служат для повышения эффективности труда программиста. Потребность в них возникает тогда, когда в программе часто должны встречаться одинаковые или почти одинаковые последовательности команд.
Макросредства позволяют однократно описать эти повторяющиеся последовательности с помощью макроопределений, а в тех местах программы, где встречаются этипоследовательности, помещать только краткие ссылки на них — макрокоманды (макровызовы).
Макроопределение представляет собой фрагмент текста программы, заключенный между псевдокомандами MACRO и ENDM. В поле названия псевдокоманды MACRO указывается имя определяемой макрокоманды, а в поле операндов — список формальных параметров — имен, имеющихся в теле микроопределеиия, которые требуется изменять при раскрытии макроопределения. Место подстановки макроопределения в текст программы указывается с помощью макрокоманды, которая в поле операции содержит имя соответствующего макроопределения, а в поле операндов — список фактических параметров, подставляемых вместо формальных параметров. При трансляции макрокоманды вместо нее подставляется текст соответствующего макроопределения. Замена формальных параметров фактическими производится по принципу позиционного соответствия простой текстовой подстановкой: первый фактический параметр в списке заменяет первый формальный параметр и т. д. Наличие списка параметров в макрокоманде не является обязательным условием, а зависит от вида макроопределения.
4. ПРОГРАММИРОВАНИЕ ПЕРИФЕРИЙНОГО ПАРАЛЛЕЛЬНОГО АДАПТЕРА KP5S0BB55
Микросхема КР580ВВ55 программируемого периферийного параллельного адаптера (ППА) предназначена для применения в МП системе в качестве универсального элемента ввода-вывода, обеспечивающего обмен данными в параллельном формате между МП и системными, в частности периферийными, устройствами. Аналогичное назначение, функции и структуру имеют микросхема К580ИК55 и зарубежный прототип ППА микросхема Intel 8255 [2, 3, 4, 12, 19, 31, 41, 42].
Условное обозначение ППА и его программная модель показаны на рис. П.2. Микросхема КР580ВВ55 размещена в 40-контактном корпусе и подключается к МП системе посредством двунаправленной трехстабильной 8-разрядной шины данных ШД(8), двухразрядной шины адреса ША(2) и 4-разрядной шины управления ШУ(4) с сигналами: ЗП — запись, ЧТ — чтение, ВМ — выбор микросхемы и СВР — сброс.
Адаптер включает три программно-доступных 8-разрядных порта ввода-вывода (ПА, ПВ, ПС) и 7-разрядный регистр управляющего слова РУС, содержимое которого определяет направление передачи и функциональное назначение 24 двунаправленных трехстабильиых линий ввода- вывода, т. е. конфигурацию и режимы работы портов. Порты ПА и ПВ предназначены для обмена байтами данных с системными устройствами, а порт ПС, как правило,— для обмена интерфейсными сигналами управления. Порт ПС в отличие от портов ПА н ПВ программно-доступен при операциях записи данных не только как элемент в целом, но и поразрядно, т. е. с независимой адресацией каждого отдельного разряда ПС; (( = 0, 1, ..., 7), а в операциях выбора режима — как два полупорта: старший — ПСС,>іладший — ПСМ или их части. Обмен данными между элементами ППА и МП системой происходит через внутреннюю шину, связанную с ШД и через устройство управления (УУ) с шинами ША(2) и ШУ (4).В МП системе, содержащей ППА, возможны два типа операций над его элементами: чтение (ввод) в МП содержимого адресуемого элемента и запись (вывод) из МП байта данных в адресуемый элемент ППА. Эти операции выполняются программно с помощью двух команд МП: Ш В2 и OUT В2, где В2 — системный адрес конкретного порта
Рис. П.2. Микросхема ППА КР580ВВ55:
а—условное обозначение; б—программная модель
ППА (см. прил. і). В процессе выполнения указанных команд в МП системе формируются сигналы управления, комбинация которых определяет ту или иную операцию над элементами ППА (табл. П.11). Два разряда адреса (они не обязательно должны совпадать с одноименными разрядами шины адреса МП) определяют выбор одного из трех портов или регистра. Заметим, что если для каждого порта существует пара операций чтение — запись, то для регистра РУС отсутствует операция чтения.
При начальной установке МП системы на вход СВР адаптера необходимо подать сигнал сброса. Этот сигнал устанавливает ППА в исходное состояние, при котором содержимое всех портов н регистра РУС обнуляется, а линии ввода-вывода устанавливаются в состояние ввода. После этого ППА доступен для программирования.
Программирование ППА, или его настройка, осуществляется с помощью операции записи управляющего слова (УС) в регистр РУС. Возможны два типа настройки ППА (табл. П.12).
1. Настройка разрядов — поразрядное программирование состояний порта ПС: сброс в нуль или установка в единицу каждого отдельно адресуемого разряда ПС,, независимо от состояний других разрядов ПС. УС для этого типа программирования имеет вид (Д7...Д0) =
= (0------------- {- Н—(- + ), где разряд (Д7) = 0 определяет именно ука
занный тип настройки, значения разрядов (Д6Д5Д4) произвольны и могут быть доопределены любой двоичной комбинацией; разряды (Д3Д2Д1) задают двоичный адрес і разряда ПС;, а разряд До — вид операции; сброс разряда ПС, если (До) =0, и его установку, если (До) = 1. В графе 19 табл. П.12 приведены шестнадцатеричные значения УС, используемые в командах обращения к ППА. Так как значение старшей шестнадцатеричной цифры кода УС зависит от доопределения разрядов (ДбДгДі) є {0, 1, ..., 7}, то значения УС лежат в диапазоне чисел {00, 01, .... 7F}. Заметим, что, хотя для настройки разрядов используется операция записи УС, содержимое регистра РУС при этом не изменяется (фиктивная запись). Для изменения состояния нескольких разрядов или формирования временной диаграммы на выходе определенного разряда ПС необходимо загружать в ППА соответствующую временную последовательность УС. Данный тип настройки позволяет использовать порт ПС в качестве регистра состояний периферийного устройства при организации программно-управляемого обмена данными.
2. Настройка режимов — программирование портов ПА, ПВ и ПС на один из трех возможных режимов или их комбинацию: 0 — режим простого однонаправленного обмена; 1 — режим стробируемого однонаправленного обмена; 2 — режим стробируемого двунаправленного обмена. Для настройки режимов используются УС, в которых разряд (Д7) = 1 (в этом случае УС действительно записывается в регистр РУС). Пара разрядов УС (ДеДь) определяет выбор режима для порта ПА: (00) —режим 0; (01) —режим 1 и (1—) —режим 2; разряды Ді и Дз определяют соответственно для портов ПА и ПСС направления линий: если бит равен 1, линии имеют направление на ввод; если бит равен 0,— на вывод. Аналогично для порта ПВ разряд Д2 задает режим 0, если (Дг) =0, и режим 1, если (Д2) = I, а разряды Ді и До определяют соответственно для портов ПВ и ПСМ направлення линий. Каждому режиму и конфигурации линий ввода-вывода однозначно соответствует определенное значение УС или группа его значений (из-за возможности произвольного доопределения некоторых разрядов УС), а
при записи нового УС в регистр РУС соответствующим образом меняется и настройка. Заметим, что настройка разрядов порта ПС не изменяет режима ППА.
В режиме 0 порты ПА, ПВ и полупорты ПСС, ПСМ могут быть настроены на любую из 16 возможных конфигураций однонаправленного ввода или вывода (см. табл. П.12).
Обмен данными реализуется по командам ввода-вывода МП синхронным или асинхронным способами. Синхронный, или безусловный, обмен предполагает безусловную готовность системного устройства выдать или принять данные по команде МП за строго фиксированный интервал времени. Такой обмен в МП системе используется только для быстрых и полностью определенных процессов, например процессов обмена между МП и основной памятью. Асинхронный, нли условный, обмен предполагает, что готовность устройства к обмену появляется через произвольный, неопределенный интервал времени после подачи команды начала обмена. Поэтому такой обмен выполняется в два этапа: вначале устанавливается факт готовности устройства к обмену, а затем производится сам обмен данными.
В режиме 0 может быть реализован синхронный или асинхронный программно-управляемый обмен, причем во втором случае данные сопровождаются сигналами управления (квитирования), значения которых непрерывно контролируются программой управления обменом.
При операции ввода данные (или сигналы управления) периферийного устройства (ДПУ) через соответствующий порт ППА по сигналу ЧТ передаются на ШД МП системы и в аккумулятор, а в операции вывода — из аккумулятора на ШД и далее по сигналу ЗП на выход соответствующего порта, а затем на вход ПУ. В интервале между командами обращения к ППА состояния линий выводов портов не изменяются, а возможные изменения состояний линий ввода не воспринимаются МП системой до очередной команды чтения ППА. Режим 0 используется, как правило, для ввода относительно медленно меняющихся (по сравнению с временем выполнения обслуживающей программы) данных ПУ, а также начальных условий и констант.
В режиме 1 порты ПА и ПВ могут быть настроены на любую из четырех возможных конфигураций однонаправленного стробируемого ввода или вывода. При этом в отличие от режима 0 два разряда полупорта ПСС и полупорт ПСМ однозначно настраиваются для каждой указанной конфигурации на ввод или вывод сигналов управления обменом, а два оставшихся разряда полупорта ПСС могут быть настроены на простой ввод или вывод для обмена одно- или двухразрядными данными. Если порт ПА настроен на вывод, свободно программируемыми разрядами полупорта ПСС являются ПС5, ПС4; если на ввод,— ПС7, ПСб- При настройке порта ПА на вывод разряд ПС7 используется для вывода на ПУ сигнала ГПД — готовность к передаче (значение сигнала ГПД = 0 свидетельствует о готовности данных порта к передаче в ПУ), разряд ПСб — для ввода от ПУ сигнала ППД — подтверждение передачи (значение сигнала ППД = 0 свидетельствует, что данные приняты ПУ), а разряд ПСз—для вывода в МП систему сигнала ЗПР — запрос прерывания (значение сигнала ЗПР= 1 воспринимается МП как запрос прерывания). При настройке порта ПА на ввод разряд ПС5 используется для вывода на ПУ сигнала ППР — подтверждение приема (значение сигнала ППР= 1 свидетельствует, что данные от ПУ приняты МП), разряд ПС4 — для ввода от ПУ сигнала СТР —
строб (по значению сигнала СТР=0 данные ПУ заносятся в порт ввода ППА), а разряд ПСз — для вывода в МП систему сигнала ЗПР.
В режиме 1 реализуется асинхронный (или условный) обмен данными с использованием сигналов квитирования, причем в отличие от режима 0 с асинхронным обменом в данном режиме сигналы управления формируются аппаратно, поэтому отпадает необходимость в программном контроле за их состоянием и появляется возможность асинхронного обмена по прерываниям. Такой обмен использует ресурсы МП только на время непосредственного обмена данными (не тратятся ресурсы на ожидание готовности устройства к обмену). Вместе с тем в режиме 1 имеется возможность маскирования-демаскирования запросов прерывания ЗПР путем программирования разрядов порта ПС: прерывания разрешены, если в конфигурации ввода разряд (ПС4) = 1 для порта ПА (разряд ПС2 для порта ПВ), а в конфигурации вывода (ПСб) = 1 (разряд ПСг для порта ПВ). Если эти разряды обращены в нуль, сигналы запроса не формируются, и МП система либо игнорирует обмен с конкретным ПУ, либо использует программный опрос состояний сигналов квитирования. Режим 1 используется, как правило, для обслуживания либо быстродействующих ПУ (чтобы избежать потерь информации при обмене), либо, наоборот, ПУ с большим временем доступа (чтобы избежать потерь производительности МП).
В режиме 2 порт ПА настраивается на конфигурацию двунаправленного стробируемого обмена с использованием полупорта ПСС и разряда ПСз для ввода-вывода сигналов управления, а порт ПВ может быть настроен в режим 0 или 1. В первом случае группа из трех разрядов (ПСг, ПСі, ПСо) может свободно программироваться на ввод либо вывод, а во втором случае эти разряды используются для ввода-вывода сигналов управления обменом порта ПВ. В режиме 2 имеются те же возможности маскирования прерываний, что и в режиме 1. Ввод или вывод данных через порт ПА инициализируется сигналами запроса от ППА. Режим 2, как и режим 1, используется для управления быстродействующими ПУ по прерываниям, но с передачей данных по одной двунаправленной шине.
Режимы работы портов можно изменять как до, так и в процессе работы системных программ, что позволяет с помощью одного ППА обслуживать в определенном порядке различные ПУ (необходимо учитывать, что при изменении режима содержимое портов обнуляется).
5. ПРОГРАММИРОВАНИЕ ПЕРИФЕРИЙНОГО ПОСЛЕДОВАТЕЛЬНОГО АДАПТЕРА КР580ВВ51
Микросхема КР580ВВ51 (КР580ВВ51А) программируемого периферийного адаптера, или, иначе, универсального синхронно-асинхронного приемопередатчика (УСАПП), предназначена для применения в МП системе в качестве универсального элемента ввода-вывода информации в последовательном формате (бит за битом) для обмена данными по каналу связи. Такой обмен используется для устройств с последовательным интерфейсом, удаленных периферийных устройств или в распределенных системах сбора и обработки данных. Прототипная микросхема — Intel 8251 (8251А) [2, 4, 12, 16, 19, 31, 41, 42].
Условное обозначение УСАПП и его программная модель показаны на рис. ПЗ, а назначения сигнальных выводов раскрыты в табл. П.13.
Микросхема КР580ВВ51 размещена в 40-контактном корпусе и подключается к МП системе посредством двунаправленной трехстабильной 8-разрядной шины данных ШД(8) и 6-разрядной шины управления ШУ(6) с сигналами ВМ, ЗП, ЧТ, У/Д, СИН и СВР. Сигналы ГПД, КПД, ГПР, ВСИН могут быть использованы для запросов прерывания при организации обмена по прерываниям между МП и УСАПП или в качестве условий, программно-доступных через слово состояния при организации программно-управляемого обмена. К стыку с каналом связи УСАПП подключается непосредственно своим выходом ДПД и (нли) входом ДПР. Сигналы ЗПРТ, ГПРТ, ЗПДТ и ГПДТ используются для управления обменом между УСАПП и стыком (модемом). Линии сигналов СПД и СПР служат для подключения генераторов синхронизирующих импульсов (СИ) соответственно передачи и приема данных.
УСАПП содержит семь программно-доступных регистров: 8-раз- рядные регистры данных (РД), состояния (PC), режима (РР), команд (РК), первого синхросимвола (РСС1), второго синхросимвола (РСС2) и 13-разрядный, но доступный, как 8-разрядный, регистр передатчика (РПД) (дополнительные 5 разрядов регистра используются для записи старт-бита, до двух стоп-бит, бита паритета и служебного бита). РПД служит для преобразования параллельного формата передаваемых данных в последовательный. УСАПП содержит также два 9-разрядных регистра приемника РПР1 и РПР2 (девятый разряд регистров предназначен для приема бита паритета), образующих двойной буфер приема. РПР1 используется для преобразования последовательного формата принятых данных в параллельный. Двойная буферизация приема
Табл. П.13. Сигнальные выводы УСАПП
Сбрасывается по срезу сигнала ЗП при записи данных (но не команды). Может быть программно опрошен в слове состояния
позволяет каналу работать с максимальной скоростью передачи, предоставляя вместе с тем МП время на обработку, равное длительности приема одного символа. Данные, принятые в регистры приемника, программно-доступны через РД. Взаимодействие элементов УСАПП происходит через внутреннюю шину под управлением устройства управления (УУ), связанного с ШУ(6).
В МП системе возможны два типа операций над элементами УСАПП: чтение (ввод) в МП содержимого адресуемого элемента и запись (вывод) из МП байта данных в адресуемый элемент УСАПП. Эти операции выполняются программно двумя командами МП: IN В2 и OUT В2, где В2 — системный адрес конкретного регистра УСАПП (см. прил. 1). В процессе выполнения указанных команд в МП системе формируются сигналы управления, комбинация которых определяет ту или иную операцию над элементами УСАПП (см. табл. П.14, в которой под регистром управления (РУ) подразумевается один из регистров РР, РК, РСС1 или РСС2. Доступность того или иного РУ определяется порядком загрузки в УСАПП управляющих слов (УС), определяющих режим работы, форматы и скорости передачи данных).
Для организации связи между МП системой и удаленным устройством используются обычно два УСАПП: один — в системе, другой — в устройстве (здесь вместо УСАПП может применяться любая схема с аналогичными функциями). При этом УСАПП позволяет строить
Табл. П.14. Сигналы управления в операции УСАПП
дуплексные (прием и передача возможны одновременно в двух направлениях по двум каналам), полудуплексные (прием и передача возможны по одному каналу связи с разделением времени) и симплексные
Рис. П.З. Микросхема УСАПП КР580ВВ51:
а — условное обозначение^ б — программная модель
(по одному каналу связи идет либо только прием, либо только передача) системы связи. Для каждой из этих систем обмен данными возможен в одном из двух режимов работы УСАПП: асинхронном либо синхронном. Единицей обмена в последовательном формате в обоих режимах обычно является символ, содержащий от 5 до 8 бит данных и представленный в одной из стандартных систем кодирования, например 5-битном телеграфном или 7-битном коде для обмена информацией (КОИ-7), что не исключает и побайтного обмена некодированными данными.
В асинхронном режиме используется стартстопный метод передачи символов, при котором каждый передаваемый символ обрамляется двумя управляющими сигнал'ами: старт-битом, всегда начинающим передачу символа, и стоп-битом, оканчивающим эту передачу (рис. П.4, а). Управляющие биты в отличие от бит данных имеют всегда строго фиксированные логические значения: 0 — для старт-бита и 1—для стоп-бита. При отсутствии передачи символа непрерывно передается стоп-бит, поэтому переход 1 -»-0 является для принимающего УСАПП признаком начала передачи очередного символа и используется для отсчета фиквированных временных интервалов с целью определения моментов прихода (точек опроса) последующих бит символа.
Рис. П.4. Диаграммы последовательной передачи данных:
а — стартстопная передача отдельного символа; б—стартстопная передача последовательности символов; в — синхронная передача последовательности символов
Адаптеры на разных концах линии связи не имеют, как правило, единого источника или общей линии синхронизации, но должны точно отмеривать период между битами последовательности. Это достигается за счет использования приемником и передатчиком удаленных адаптеров двух отдельных несинхронизированных, но калиброванных и настроенных на одинаковую частоту генераторов СИ. Принимающий УСАПП синхронизируется старт-битом таким образом, чтобы стробирующие СИ, используемые для выделения бит символа, приходились на середину интервала каждого принимаемого бита. Если длительность старт-бита и бита данных равна т, то первый СИ должен появиться через период времени т/2 относительно фронта старт-бита, а последующие СИ — через период времени т.
В асинхронном режиме генератор синхронизируется по старт-биту только один раз за время приема символа и не подстраивается в процессе приема бит данных. Вследствие нестабильности частот генераторов передающего и принимающего УСАПП и погрешности синхронизации по старт-биту точка опроса может смещаться от бита к биту относительно идеального центрального положения, что приводит к ошибочному приему бит данных. Ошибка такого типа — ошибка формата, или кадра,—
Рис. П.5. Структура управляющего слова режима УСАПП
обнаруживается по стоп-биту: в этом случае на месте стоп-бита вместо 1 фиксируется 0. В УСАПП длительность стоп-бита программируется по величине относительно длительности бита данных с кратностью 1; 1,5 и 2, что позволяет учесть особенности работы различных ПУ. Для повышения достоверности приема в условиях помех передаваемый символ часто дополняют контрольным битом паритета (четного или нечетного). Если принятый бит паритета не соответствует контрольному, сформированному в УСАПП в соответствии с принятыми данными, фиксируется ошибка паритета.
Асинхронный режим обмена используется, как правило, для удаленных ПУ с ручным вводом информации, когда передача идет отдельными символами, между которыми имеются длительные стоповые проме-
Рис. П.6. Структура управляющего слова команды УСАПП
жутки, или при низком уровне помех в каналах связи при передаче массивов символов (рис. П. 4,6). При передаче массивов эффективная скорость передачи данных существенно снижается из-за временных затрат на передачу управляющих бит для каждого символа. Эта скорость ограничена для УСАПП в асинхронном режиме величиной 9600 с-1 (Бод). Для помехоустойчивой передачи массивов символов при высоких требованиях к скорости передачи используется синхронный режим УСАПП, позволяющий достичь скорости 56000 бит/с.
В синхронном режиме (синхронный метод передачи) данные передаются в виде сплошных массивов символов (без управляющих бит между символами), и индивидуальные символы определяются их положением на временной шкале относительно начала массива (рис. П.4, е). Для указания приемнику начала массива используются один или два специальных символа — синхросимволы ССІ и СС2 (два синхро-
Рис. П.7. Структура слова состояния УСАПП
символа необходимы для обеспечения кодопрозрачиости передаваемых данных [II, 76]). После приема синхросимволов приемник интерпретирует последующие символы как данные.
В синхронном режиме передаваемая последовательность символов имеет обычно большую длину, поэтому метод однократной синхронизации по началу массива, аналогичный методу однократной синхронизации по началу символа при стартстопной передаче, здесь не обеспечивает устойчивой синхронизации. В синхронном режиме необходимо иметь либо общую шину синхронизации между удаленными УСАПП (что делается крайне редко), либо отдельные генераторы СИ, которые синхронизируются непрерывно (подстраиваются) потоком символов и синхросимволов. В режиме синхронной передачи при отсутствии, хотя бы временном, данных от МП, УСАПП автоматически выдает в линию синхросимволы, что позволяет подстраивать синхронизацию и «держать ее наготове» для приема очередного символа данных. На приемном конце синхросимволы автоматически удаляются из потока данных. При работе передатчика на несколько приемников синхросимволы, помимо своей основной функции определения начала массива и синхронизации, могут выполнять и адресную функцию: определять своим кодом адрес приемника (приемник содержит аналогичный синхросимвол).
Программирование режимов работы УСАПП осуществляется операцией записи управляющего слова режима (УСР) в регистр режима
(РР). Два младших разряда этого слова определяют тип режима (синхронный или асинхронный), а для асинхронного режима позволяют указать, кроме того, коэффициент отношения частоты синхронизации приема-передачи данных к скорости передачи (рис. П.5). Этот коэффициент позволяет более гибко приспосабливаться к возможностям генераторов СИ. Заметим, что стартстопный асинхронный режим работы возможен только при коэффициентах деления частоты 1:16 и 1:64 (коэффициент 1:1 необходим для обеспечения стартстопной работы по синхронным каналам). Следующие два разряда УСР определяют разрядность символа в зависимости от используемой системы кодирования, а очередные два разряда возможности контроля паритета. Два старших разряда УСР в зависимости от режима работы, определенного младшими разрядами, указывают на используемую длину стоп-бита для асинхронного режима либо на вид синхронизации для синхронного режима. В случае синхронного режима с внутренней синхронизацией начало массива символов определяется синхросимволами, а для режима с внешней синхронизацией — внешним сигналом синхронизации начала массива, подаваемым на вход ВСИН. Старший разряд УСР определяет для синхронного режима количество используемых синхросимволов.
Непосредственное управление процессом приема-передачи осуществляется управляющим словом команды (УСК), которое записывается в регистр команды (РК). Младший разряд этого слова определяет состояние передачи, следующий разряд служит для установки сигнала ЗПДТ запроса терминала, очередной разряд определяет состояние приема, а следующий — условие конца передачи (рис. П. 6). Разряд Д4 используется для сброса признаков ошибок, следующий разряд — для установки сигнала ЗПРТ запроса терминала, очередной разряд — для программного сброса УСАПП, а старший разряд УСК определяет режим поиска синхросимволов в синхронном режиме. Этот режим предшествует режиму приема символов данных.
Программный контроль за состоянием УСАПП возможен посредством слова состояния (рис. П. 7). Три младших разряда слова позволяют определять состояние сигналов ГПД, ГПР, КПД, следующие три разряда — состояния сигналов ошибки: паритета, переполнения и формата. Ошибка переполнения возникает, если МП не успел прочесть принятый символ до запроса на обработку следующего принятого символа. Очередной разряд слова используется для контроля сигнала начала массива, а старший разряд — для контроля сигнала ГПДТ запроса терминала.
Порядок записи в УСАПП управляющих слов и байтов данных должен соответствовать такому алгоритму. После сигнала аппаратного сброса УСАПП производится запись УСР. Следующее УС в зависимости от содержимого УСР интерпретируется либо как синхросимвол СС1 (для синхронного режима), либо как команда (для асинхронного режима). При синхронном режиме с использованием двух синхросимволов третье УС также интерпретируется как синхросимвол (СС2), а при асинхронном режиме, в котором второе УС не содержит программного сброса, третье слово интерпретируется как слово данных для передачи. После слова команды (не содержащей программного сброса) в УСАПП может быть записана произвольная последовательность команд или данных. Конкретная последовательность слов режима, команд и данных определяется протоколом связи на физическом уровне [П, 76].
Б заключение отметим некоторые различия в условиях работы микросхем КР580ВВ51 и КР580ВВ5ІА в синхронном режиме: во-первых, КР580ВВ51 после инициализации (загрузки режима, синхросимволов, команды и данных) начинает передачу с данных, а КР580ВВ5ІА сначала передает синхросимволы, а затем — данные; во-вторых, КР580ВВ5І не выполняет команды отмены поиска СС и на каждый принятый СС выдает сигнал ВСИН, не выставляя сигнала ГПР (кодопрозрачность в этом случае обеспечивается за счет байт-стаффинга [II, 76]), а КР580ВВ51А выполняет указанную команду и после этого выставляет сигнал ГПР на каждый принятый СС как на обычный символ (ие генерируя сигнал ВСИН), что обеспечивает кодопрозрачность протокола передачи аппаратными средствами. Существуют и другие тонкие отличия в работе микросхем, проявляющиеся в синхронном режиме.