Последовательный интерфейс и универсальный асинхронный приемопередатчик
Параллельный интерфейс
Как обсуждалось в предыдущих разделах, для обеспечения связи микропроцессора с различными внешними устройствами используются два вида интерфейса. Простейшим является параллельный интерфейс. При использовании параллельного интерфейса 8-разрядный микропроцессор за каждую операцию обмена обеспечивает передачу 8 бит информации. Ниже мы рассмотрим метод последовательной передачи данных, который применяется, когда данные должны передаваться на расстояние, превышающее расстояние, допустимое для параллельной передачи данных.
На рис. 12.6 представлена схема обеспечения параллельного 8-битового ввода-вывода данных. Рассматриваемые аппаратные средства предназначены для ввода и вывода одного 8-битового слова данных. Некоторые элементы, входящие в данную схему, нам уже встречались при рассмотрении в гл. 11 платы памяти. Такими элементами являются буферы адресной шины микропроцессора и дешифратор адреса.
Шина данных микропроцессора является двунаправленной; в соответствии с этим осуществляется ее буферирование. В рассматриваемой схеме представлен единственный 8-разрядный буфер. Этот буфер стробируется сигналом «Чтение устройства ввода-вывода». В качестве стробирующего сигнала используется также сигнал «Запись в устройство ввода-вывода». Линии, по которым подаются указанные сигналы, аналогичны линиям ввода-вывода в схеме управления памятью, однако данные линии используются для подачи сигналов только во время выполнения операций ввода-вывода.
Сигнал «Чтение устройства ввода-вывода» поступает, когда микропроцессор готов к подаче на шину данных микропроцессора данных из адресованного порта ввода-вывода. Сигнал «Чтение устройства ввода-вывода» поступает также на шинный формирователь. Линия подачи сигнала «Запись в устройство ввода-вывода» находится в активном состоянии, когда микропроцессор готов к записи данных в адресованный порт. Кроме того, последний сигнал подается в качестве стробирующего сигнала в буфер выходных данных.
Рис. 12.6. Интерфейсное устройство параллельного ввода-вывода, обеспечивающее обмен 8-битовыми словами данных между микропроцессором и шиной данных.
В рассматриваемой схеме обеспечения ввода-вывода данных имеется регистр состояния, с помощью которого микропроцессор проверяет состояние порта ввода-вывода. Обычно регистр состояния, входной и выходной регистры имеют подряд идущие адреса портов ввода-вывода. Например, регистр состояния может адресоваться как порт ввода-вывода с адресом 00, входной регистр - как порт ввода-вывода с адресом 01, а выходной регистр - как порт ввода-вывода с адресом 02.
Регистр состояния имеет только два разряда. Нулевой разряд регистра состояния устанавливается в состояние логической 1 путем подачи сигнала «Входные данные готовы». Вместе с тем производится прерывание микропроцессора. Ниже мы рассмотрим, что происходит, когда микропроцессор воспринимает сигнал прерывания. А сейчас просто будем иметь в виду, что после наступления прерывания микропроцессор должен выполнить программу обработки прерывания, соответствующую устройству, вызвавшему прерывание. Так как по сигналу «Входные данные готовы» устанавливается в 1 нулевой разряд регистра состояния, микропроцессору доступна информация о состоянии порта ввода-вывода. Установка нулевого разряда регистра состояния в 1 является для микропроцессора признаком того, что на восемь входных линий поданы входные данные. Теперь микропроцессор может воспользоваться командой IN для передачи данных, находящихся на входных линиях, в аккумулятор.
Команда OUT микропроцессора служит для вывода данных. Данные, подаваемые микропроцессором на шину данных, помещаются в 8-разрядный буфер данных. Вместе с тем устанавливается в 1 первый разряд регистра состояния. Такому значению указанного разряда регистра состояния соответствует рабочее состояние линии «Выходные данные готовы». Тем самым внешнее устройство информируется о том, что новые данные готовы к выводу. Этот разряд состояния сбрасывается внешним устройством, которое подает сигнал «Данные приняты». Если микропроцессору необходимо узнать, имеются ли данные, подлежащие выводу, он может ввести слово состояния порта ввода-вывода и проанализировать первый разряд этого слова.
Пара рассмотренных сигналов позволяет микропроцессору и внешнему устройству проверить готовность данных к передаче; таким образом устраняется возможность потери данных и обеспечивается их корректная передача.
Схемы, подобные рассмотренной схеме обеспечения ввода-вывода, могут разрабатываться с использованием обычных микросхем, однако для этой цели могут быть использованы и специально созданные большие интегральные схемы.
Обычно несколько параллельных портов ввода-вывода может размещаться на кристалле самого микропроцессора или на кристаллах, реализующих другие функции микропроцессорной системы. Такой подход к размещению портов ввода-вывода приводит к созданию микропроцессорных систем с небольшим количеством кристаллов. Например, обычным решением является размещение двух или большего числа портов ввода-вывода в большой интегральной схеме, реализующей ПЗУ с масочным программированием. Такой модуль может использоваться совместно с кристаллом микропроцессора и кристаллом ОЗУ. Используя элементы трех указанных типов, можно построить микропроцессорную систему, включающую в себя некоторое количество портов ввода-вывода и большее количество модулей ПЗУ и ОЗУ, чем у микро-ЭВМ, реализованных на одном кристалле.
Для выполнения операций ввода-вывода мы использовали следующие две команды:
Обе команды 2-байтовые, каждая выполняется за пять циклов. Существенно то, что передача данных при выполнении операции ввода-вывода связана с временными затратами. Если требуется передать большой объем данных, то необходимое для этого время может оказаться довольно большой величиной, для уменьшения которой следует решить серьезную техническую задачу. В настоящей книге мы пока рассматривали такой способ организации выполнения операций ввода-вывода, когда в командах для ссылки на устройства ввода-вывода использовались специальные адреса. При этом обмен данными между микропроцессором и внешними устройствами не имеет ничего общего с обменом данными между микропроцессором и памятью. Однако в некоторых микропроцессорах обращение к устройствам ввода-вывода организовано аналогично обращению к памяти. Устройства ввода-вывода ставят в соответствие слова памяти и определенные адреса. Устройства подключаются к адресной шине памяти, а для управления обменом данными между ними и микропроцессором используются сигналы «Чтение из памяти» и «Запись в память». При организации обращения к устройствам ввода-вывода по аналогии с обращением к памяти не требуется использовать специальных команд ввода-вывода. Недостатком такого способа памяти является то, что часть адресного пространства памяти используется для адресации устройств ввода-вывода; размер этой части определяется количеством используемых в системе устройств ввода-вывода. Конечно, такой недостаток остро проявляется в системах, имеющих много устройств ввода-вывода, или когда в системе почти вся память использована для других целей. Обычно в микропроцессорных системах используется 5-10 портов ввода-вывода, и поэтому указанного затруднения, как правило, не возникает.
Организация ввода-вывода по аналогии с обращением к памяти упрощает процесс обмена данными, что является достоинством такого способа организации ввода-вывода. Поскольку обращение микропроцессора к устройствам ввода-вывода по форме не отличается от обращения к памяти, способ реализации этих обращений оказывается одним и тем же. Следовательно, исключается необходимость в специальных командах ввода-вывода. Кроме того, уже не потребуются все сигналы управления, которые при обычном способе организации передает шина управления микропроцессора. Так как адресами устройств ввода-вывода манипулируют как словами памяти, все команды микропроцессора, предназначенные для обращения к памяти, могут использоваться и для работы с устройствами ввода-вывода. Поэтому при программировании не обязательно ограничиваться простыми командами ввода-вывода.
Например, используя способ организации ввода-вывода, аналогичный способу организации обращения к памяти, можно выполнить сложение вводимого слова данных с содержимым аккумулятора или сравнить входные данные с содержимым аккумулятора. В более совершенных микропроцессорах, в наборе команд которых имеются команды пересылки содержимого некоторой области памяти в другую область памяти, вводимое слово данных с помощью одной команды можно переслать из устройства ввода в определенную область памяти.
Однако способ ввода-вывода, организованный по аналогии с обращением к памяти, можно использовать и в микропроцессорах, располагающих специальными командами ввода-вывода. Наличие команд ввода-вывода не является препятствием для использования рассматриваемого здесь способа организации ввода-вывода. Итак, способ управления вводом-выводом, организованный по аналогии с обращением к памяти, можно использовать при создании микропроцессорных систем, поскольку последние при этом становятся менее сложными.
Был разработан определенный стандарт на организацию параллельной передачи данных между электронными контрольно-измерительными приборами и микропроцессором. На основании этого стандарта была создана шина IEEE-488. Принципы построения этой шины разработаны фирмой Hewlett-Packard. Указанный стандарт получил широкое распространение как в США, так и в Западной Европе. Несколько фирм-изготовителей микропроцессоров стали производить специальные БИС, предназначенные для сопряжения разрабатываемых ими микропроцессоров и стандартной шины IEEE-488.
К шине IEEE-488 могут подсоединяться различные устройства: контроллеры; устройства отображения информации; устройства, которые во время своего функционирования как получают, так и выдают информацию. Каждому устройству присваивается адрес. На рис. 12.7 изображена функциональная схема простой системы, в которой для связи между микропроцессором и другими устройствами используется стандартная шина IEEE-488. В этой системе микропроцессор служит контроллером. Он определяет диапазоны измерений и функции, которые должен выполнить вольтметр. Кроме того, микропроцессор указывает, когда вольтметр должен подать данные на шину. Как печатающее устройство, так и микропроцессор принимают данные. Дополнительно к необработанным результатам измерений, поступающим на печатающее устройство, микропроцессор подает на шину соответствующие вычисленные им параметры. Эти параметры также выдаются на печать.
Скорость передачи данных по шине IEEE-488 может превышать 1 Мбайт/с. Фактическая скорость передачи данных по шине ограничивается быстродействием устройств, подключаемых к шине.
Рис. 12.7. Система, вкоторой используется шина данных IEEE-488.
Последовательный интерфейс и универсальный асинхронный приемопередатчик
Как отмечалось выше, многие устройства связаны с микропроцессором посредством линий последовательной передачи данных. Широкое применение способа последовательной передачи данных объясняется главным образом ограничениями, присущими способу параллельной передачи данных. Рабочее расстояние для линии параллельного ввода-вывода ограничивается 1 - 2 м. При увеличении длины кабеля возрастает его емкость, поэтому становится невозможной передача данных на высокой скорости. Длину линий параллельной передачи данных можно увеличить до 10-20 м путем использования специальных формирователей и путем уменьшения скорости передачи. Однако дальнейшее увеличение длины линий при параллельной передаче данных практически невозможно.
При последовательной передаче данных жестких ограничений на длину линии не накладывается. Но, прежде чем начать последовательную передачу данных, необходимо выполнить преобразование данных из параллельной формы в последовательную. После преобразования в последовательную форму данные передаются по частным арендуемым линиям или по телефонной сети.
Рис. 12.8. Передача данных по линии последовательной передачи данных.
Преобразовать данные из параллельной формы в последовательную несложно. Вначале данные загружаются в сдвиговый регистр. Содержимое сдвигового регистра сдвигается на один разряд при поступлении каждого тактового импульса; данные на выходе такого сдвигового регистра будут иметь последовательную форму. Условимся, что биты слова данных, загруженного в регистр, будут появляться на его выходе друг за другом, начиная с младшего. Таким образом, первым при последовательной передаче данных будет передан младший бит слова данных, затем передаче подлежит следующий по порядку бит слова данных и т. д. Последним, очевидно, окажется старший бит слова данных. Процесс преобразования данных из параллельной формы в последовательную представлен на рис. 12.8.
Чтобы принять данные в последовательной форме и преобразовать их в параллельную форму, необходимо выполнить действия, обратные по отношению к описанным выше. Данные, поступающие в последовательной форме, вводятся бит за битом в сдвиговый регистр. После заполнения сдвигового регистра данные из него в параллельной форме передаются в микропроцессорную систему.
Устройство, обеспечивающее преобразование данных из параллельной формы в последовательную и обратное преобразование, называют универсальным асинхронным приемопередатчиком (УАПП). Такое устройство реализуется в виде БИС. Кроме преобразования формы представления данных приемопередатчик выполняет важные функции контроля и управления.
Приемопередатчик добавляет к каждому передаваемому слову данных 2 бит-стартовый бит и стоп-бит. Поэтому вместо передачи 8-битового слова данных фактически требуется передать 10 бит данных. Дополнительные биты используются принимающим приемопередатчиком для установления границ-начала и конца - передаваемого слова данных. На рис. 12.9 изображено 8-битовое слово данных и показаны дополнительные стартовый и стоп-биты. Стартовый бит всегда имеет значение логического 0, стоп-бит-логической 1.
Скорость передачи данных описанным способом принято измерять в бодах. Один бод равен одному биту в секунду, и поэтому скорость в бодах выражает, сколько бит в секунду может быть передано по соответствующему каналу передачи данных. Например, скорость передачи 1200 бод означает, что за одну секунду будет передано 120 10-битовых символов: стартовый бит, 8 бит данных и стоп-бит. В табл. 12.1 представлены обычно используемые скорости последовательной передачи сигналов. Следует знать, как скорость передачи, выраженная
Рис. 12.9. Восьмибитовое слово данных с одним стартовым битом и одним стоп-битом.
Таблица 12.1. Наиболее часто используемые скорости последовательной передачи данных
Скорость
передачи, бод
| Число байтов,
передаваемых за 1 с
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
в бодах, связана со скоростью передачи слов данных при последовательной передаче.
При передаче сигналов со скоростью 110 бод используется особый формат передаваемых данных: здесь имеется один стартовый бит и два стоп-бита. Соответствующее слово данных будет иметь длину 11 бит. На рис. 12.10 представлен формат 11-битового слова данных, используемый в системах передачи данных, работающих со скоростью 110 бод. Такая скорость передачи сигналов используется в механических стартстопных телеграфных аппаратах. В отличие от указанных телеграфных аппаратов видеотерминалы могут работать со скоростями, достигающими 9600 бод. В некоторых системах используется 1,5-битовый сигнал окончания, который может генерироваться определенными УАПП.
Обычно для работы асинхронного приемопередатчика требуется последовательность тактовых импульсов, период следования которых в 16 раз меньше времени передачи 1 бит данных. Например, для работы приемопередатчика со скоростью 1200 бод необходима последовательность тактовых импульсов, частота следования которых равна 19,2 кГц. Тактовые импульсы используются для синхронизации входного сигнала и для генерирования выходного сигнала.
Рис. 12.10. Одиннадцати битовое слово данных, обычно используемое при скорости передачи данных 110 бод.
При проектировании большинства современных УАПП предполагается, что они будут подключаться к портам параллельного ввода-вывода микропроцессора. Однако некоторые приемопередатчики можно подсоединять непосредственно к шине микропроцессора. В УАПП имеется регистр состояния, в котором специальный бит устанавливается в определенное состояние, когда приемопередатчик примет слово данных, и устанавливается в другое состояние по завершении передачи слова данных. Передача последовательного сигнала с использованием УАПП требует хранения битов состояния в регистре состояния приемопередатчика. Напомним, что синхронизация приемопередатчика полностью не зависит от синхронизации микропроцессора. Следовательно, после того как микропроцессор поместил передаваемое слово данных в регистр передатчика, он не может знать, когда ему удастся загрузить в регистр передатчика следующее слово данных. Микропроцессор должен ждать до тех пор, пока приемопередатчик не установит определенное значение бита состояния; анализ бита состояния позволяет микропроцессору определить готовность приемопередатчика к загрузке в него нового слова.
В некоторых УАПП предусмотрены разряды регистра состояния, которые позволяют выполнять программное управление скоростью работы приемопередатчика.
Для связи человека с ЭВМ широко используются терминалы; для обеспечения передачи данных между терминалом и ЭВМ часто применяются асинхронные приемопередатчики. Для человека взаимодействие с ЭВМ предпочтительно осуществлять с помощью буквенно-цифровых символов. С этой целью используется специальный код, называемый Стандартным американским кодом для обмена информацией (American Standard Code for Information Interchange, или сокращенно ASCII). В коде ASCII для кодирования каждого символа используется 7 бит. Поскольку 27 = 128, с помощью данного кода можно закодировать 128 различных символов.
Табл. 12.2 содержит набор символов кода ASCII. К сожалению, некоторые специальные управляющие символы не имеют точно установленного наименования. Однако коды буквенно-цифровых символов, коды знаков математических операций и знаков пунктуации полностью стандартизованы. В табл. 12.2 представлены каждый символ, его 7-битовый двоичный код и соответствующий шестнадцатеричный номер символа.
При передаче 8-битовых кодов восьмой бит может либо иметь постоянное значение (логический 0 или логическая 1), либо значение, позволяющее обнаруживать некоторые ошибки при передаче символов. Если используется код с обнаружением ошибок, то восьмой бит называют контрольным битом четности. Большинство УАПП осуществляют формирование и проверку бита четности. Иногда вместо бита четности используют бит нечетности. Если при передаче данных применяется контроль на четность, то восьмому биту придается значение логического 0 или 1 так, чтобы в передаваемом 8-битовом слове данных было четное количество единиц. Если же применяется контроль на нечетность, то значение восьмого бита должно быть таким, чтобы общее количество единиц в 8-битовом слове было нечетным. В кодах, представленных в табл. 12.2, восьмой бит равен 0.
Для обнаружения ошибок при передаче данных может использоваться как контроль на четность, так и контроль на нечетность. После приема слова данных приемопередатчик проверяет в нем контрольный бит. Если обнаруживается нарушение четности (нечетности), то приемопередатчик записывает в регистр состояния признак ошибки. Затем УАПП может выдать запрос на повторную передачу данных. Проверкой на четность удается выявить 50% возможных ошибок. Очевидно, будет обнаруживаться только нечетное число ошибочных битов. Если ошибка возникнет сразу в двух битах, то обнаружить ее контролем на четность не удастся.
На рис. 12.11 показано, как при последовательной передаче данных вследствие шумов может возникнуть ошибка, которую можно выявить контролем на четность. Шумы изменили четвертый бит таким образом, что вместо значения логической 1 он принял значение логического 0; сообщение, при передаче которого произошло такое искажение, будет содержать ошибку.
Кроме того, универсальный асинхронный приемопередатчик может обнаруживать ошибки синхронизации (кадрирования). Ошибки кадрирования происходят, когда приемопередатчик не идентифицирует стартовый бит. Приемопередатчик не в состоянии принимать слова данных, не снабженные размещенными надлежащим образом начальным и конечным битами.
Рис. 12.11. Пример последовательной передачи данных с ошибкой в четвертом бите, обнаруженной при контроле на четность.
На рис. 12.12 показано принимаемое слово, в котором содержится ошибка кадрирования. Как можно видеть, принимаемое слово данных не выровнено на границы сдвигового регистра приемопередатчика. Шумы, действующие на линию передачи, являются наиболее распространенной причиной возникновения ошибки кадрирования.
На рис. 12.13 представлена структурная схема простого универсального асинхронного приемопередатчика. Очевидно, в схеме приемопередатчика можно выделить четыре основные части: приемную, передающую, регистр состояния и блок управления.
Передающая часть состоит из выходного буфера и регистра передатчика. Этот регистр является сдвиговым регистром; на его выходе последовательно появляются: стартовый бит, биты данных DO-D7 и стоп-биты. Подлежащее передаче 8-битовое слово данных загружается в выходной буфер по заднему фронту сигнала стробирования входных данных. По переднему фронту этого сигнала начинается последовательная, передача данных, т. е. по переднему фронту начинается процесс сдвига содержимого регистра. Рассмотренные действия поясняет рис. 12.14. С выхода сдвигового регистра данные поступают на линию, предназначенную для последовательной передачи данных.
Рис. 12.11 Пример передачи данных при наличии ошибки кадрирования.
Рис. 12.13. Структурная схема универсального асинхронного приемопередатчика.
Приемник является почти «зеркальным отражением» передатчика. Сначала данные последовательно вводятся в регистр приемника. При этом регистр приемника, обнаружив стартовый бит, выполняет 10 или 11 сдвигов своего содержимого. После того как регистр приемника выполнит все сдвиги, 8-битовое слово данных может быть передано в выходной буфер приемника. Эта передача данных осуществляется при поступлении сигнала разрешения вывода данных.
Рис. 12.14. Сигнал стробирования входных данных.
Как сдвиговый регистр передатчика, так и сдвиговый регистр приемника управляются тактовыми импульсами, период следования которых в 16 раз меньше времени передачи одного бита данных. При выбираемом таким образом периоде следования тактовых импульсов гарантируется, что время сдвига не превысит одной тридцать второй части от времени передачи 1 бит данных. Указанная степень синхронизации сохраняется, даже если последовательность тактовых импульсов, определяющая скорость передачи данных по линии, и входные данные являются асинхронными.
Как показано на рис. 12.13, регистр состояния приемопередатчика имеет два выхода. Во-первых, пять его разрядов состояния связаны с отдельными выводами БИС. Во-вторых, все слово состояния может быть загружено в выходной буфер приемника.
Эта загрузка выполняется при подаче сигнала «Строб вывода слова состояния». Регистр состояния содержит следующие разряды:
Наложение. Значение логической 1 в данном разряде означает, что текущее слово данных «набегает» на предыдущее слово данных. Такая ситуация возникает, когда предыдущее слово данных не было передано в выходной буфер приемника до начала поступления следующего слова данных.
Ошибка кадрирования. Значение логической 1 в соответствующем разряде регистра указывает на то, что приемопередатчик не смог обнаружить стоп-бита, следующего за битами слова данных. Возможно, приемопередатчик пропустил фактический стартовый бит и в качестве такового принял один из битов слова данных.
Ошибка четности. Логическая 1 в данном разряде свидетельствует о том, что приемопередатчик обнаружил ошибку, выявляемую контролем по четности (или нечетности). Точное условие контроля устанавливается блоком управления, входящим в состав приемопередатчика.
Буфер передатчика пуст. Значение логической 1 в этом разряде означает, что следующее слово данных может быть загружено в буфер передатчика.
Данные готовы. Значение логической 1 в данном разряде означает, что в буфере приемника содержатся новые данные. Это слово данных выбирается из буфера путем подачи сигнала «Строб вывода данных».
Рис. 12.15. Слово состояния УАПП.
Так как слово состояния приемопередатчика можно записать в выходной буфер приемника, с помощью команды IN его можно переслать в аккумулятор микропроцессора. Здесь с помощью команды сравнения можно выполнить проверку значения разрядов слова состояния.
Допустим, слово состояния имеет формат, представленный на рис. 12.15. Если слово данных принято без ошибок, то слово состояния равно 0000 00102 = 0216.
Итак, слово состояния можно сравнить с константой 02. При выполнении команды сравнения бит нулевого результата слова состояния микропроцессора будет установлен в состояние логической 1 только тогда, когда в слове состояния приемопередатчика разряд «Данные готовы» будет находиться в состоянии логической 1. Если при сравнении окажется, что слово состояния приемопередатчика не равно 0216, то микропроцессор, выполнив специальную программу, сможет определить фактическое состояние приемопередатчика.
Теперь, обратившись еще раз к рис. 12.13, рассмотрим управляющие входы приемопередатчика, используемые для задания режима его функционирования. Пара входов используется для определения количества битов (5, 6, 7 или 8) передаваемого (принимаемого) слова данных. Управляющий вход «Нечетность/Четность» используется для установления вида контроля - по нечетности или по четности. Сигнал, подаваемый на этот вход, будет восприниматься лишь тогда, когда линия «Контроль» находится в состоянии, при котором допускается выполнение функции контроля. Кроме того, контрольный бит является последним битом в передаваемом слове данных. При использовании 7-битового кода ASCII контрольным является восьмой бит слова данных.
Вход «Число стоп-битов» позволяет задавать число битов окончания слова; часто используется один стоп-бит, однако при скорости передачи данных, равной 110 бод, применяются два стоп-бита.
Выше мы рассмотрели УАПП, реализованный в виде БИС. Такой приемопередатчик может использоваться либо в автономном режиме, либо совместно с микропроцессором. При втором варианте использования приемопередатчик подключается к порту микропроцессора.
Существуют и более сложные универсальные приемопередатчики, реализованные также в виде БИС. Они могут непосредственно соединяться с шиной данных и адресной шиной микропроцессора. При использовании таких приемопередатчиков нет необходимости в применении дополнительных схем, которые требуются для обеспечения взаимодействия микропроцессора и автономного приемопередатчика. Для обеспечения работы приемопередатчиков часто используют специальные генераторы синхроимпульсов, частота которых численно равна скорости передачи, выраженной в бодах, умноженной на 16. Такой специальный генератор вырабатывает синхроимпульсы, соответствующие всем стандартным скоростям передачи данных. Благодаря использованию кварцевого резонатора генерируемые последовательности синхроимпульсов отличаются стабильностью и точностью.
Как утверждалось выше, приемопередатчик является асинхронным устройством. Это означает, что скорость передачи данных не зависит от синхронизации микропроцессора. Помимо этого, при асинхронном способе передачи не определяются временные соотношения между сигналами, соответствующими последовательно передаваемым словам данных. Представьте себе, например, что пользователь осуществляет ввод данных, используя для этого клавиатуру видеотерминала. После каждого нажатия клавиши производится передача соответствующего символа. Интервал времени между моментом нажатия некоторой клавиши и моментом нажатия следующей клавиши нельзя точно предсказать. Однако, после того как началась передача некоторого символа, скорость передачи элементов кодовой комбинации, соответствующей передаваемому символу, остается неизменной вплоть до окончания передачи всей кодовой комбинации.
В каком же положении находится микропроцессор в связи с использованием асинхронного способа передачи символов? Микропроцессор просто «не знает», когда получит следующий символ. Поэтому ему приходится анализировать содержимое регистра состояния УАПП. Если разряд «Данные готовы» регистра состояния содержит логическую 1, то микропроцессор читает слово данных из приемопередатчика. Если же микропроцессор выявит в указанном разряде логический 0, то он должен продолжать анализ слова состояния приемопередатчика до тех пор пока не обнаружит в этом разряде логическую 1.
На рис. 12.16 изображена блок-схема подпрограммы, предназначенной для выполнения описанных выше действий. Микропроцессор может выполнять «цикл ожидания» сколь угодно долго. Разберем пример, в котором будем использовать команды, представленные на данном рисунке.
Предположим, производится передача данных со скоростью 300 бод. Для передачи одного символа требуется 10 бит, следовательно, максимальная скорость передачи данных равна 30 символ/с. Если длительность машинных циклов команд IN, ANI и JNZ равна 1 мкс, то суммарное время их выполнения составит 13 мкс1. (Как команда IN, так и команда JNZ выполняются за пять циклов; команда ANI выполняется за три цикла.) При скорости передачи 30 символ/с микропроцессор за время ожидания установления единичного значения разряда «Данные готовы» должен выполнить 2564 цикла ожидания. Один цикл ожидания длится 13 мкс. Если же, например, после первого символа не поступит без задержки второй символ, микропроцессор, очевидно, должен выполнить больше чем 2564 цикла ожидания. Скорее всего, очередной символ не будет непосредственно следовать за предыдущим, так как лишь некоторые операторы могут работать со скоростью 30 символ/с - эта скорость эквивалентна скорости передачи 360 слов/мин.
Обычно рассмотренную задачу решают с помощью системы прерывания процессора; запрос на прерывание подается с выхода «Данные готовы», имеющегося в приемопередатчике. После обработки запроса на прерывание микропроцессор выполняет команду ввода IN. Вопрос обработки прерываний будет рассмотрен ниже.
Рис. 12.16. Блок-схема подпрограммы управления вводом данных из порта ввода-вывода.
1 В этом примере использована команда ANI (И непосредственное). В предыдущих примерах мы использовали команду сравнения. Любой из этих команд можно воспользоваться, так как после проверки не требуется сохранять слово состояния - оно может быть уничтожено.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|