Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
409
Добавлен:
06.01.2022
Размер:
33.47 Mб
Скачать

21.7. Периферийные устройства

Для того чтобы можно было организовать обмен данными микро-ЭВМ с внешними абонентами, требуются устройства сопряжения, которые организуют обмен информацией с ЦПЭ. Они подключаются так же, как и память, к шине микро-ЭВМ.

21.7.1. ПАРАЛЛЕЛЬНЫЙ ИНТЕРФЕЙС

Наиболее просто параллельный ввод данных обеспечивается подключением к шине данных буферного усилителя с тремя устойчивыми состояниями, управляемого с помощью дешифратора адреса (рис. 21.21). При обращении по требуемому адресу данные с внешних устройств появляются на шине данных и считываются микропроцессором. Этот процесс полностью аналогичен обращению к ячейке памяти. Таким образом, операция ввода отличается от операции записи только заданием соответствующего адреса. Посредством вызова адреса при 8-разрядной шине данных можно параллельно опросить 8 внешних устройств.

Регистр вывода можно реализовать аналогичным образом. При этом данные остаются прежними, пока не выданы новые значения; для перезаписи используется триггер (например, типа SN74LS374), представленный на рис. 21.22. Если микропроцессор сообщает заданный адрес в дешифратор адреса и задается режим записи (R/W == 0), то BS = 0. При отрицательном фронте тактового импульса Е опять BS == 1 и С = 1. К этому моменту на входах триггеров устанавливаются данные. При положительном фронте они передаются на их выходы и остаются там до следующего цикла вывода.

Адаптер интерфейса периферийных устройств

Для выборочного ввода или вывода можно комбинировать схемы, изображенные на рис. 21.21 и 21.22. Но все же проще использовать для этой цели простые монолитные интегральные двунаправленные интерфейсы, например адаптер интерфейса периферийных устройств (Peripheral Interface Adapter, PIA) типа МС 6821, блок-схема которого представлена на рис. 21.23. Он имеет два 8-разрядных канала ввода-вывода. Выводимые данные записываются в тот или иной регистр вывода. Ему соответствует регистр направления данных, с помощью которого можно для каждой линии задать режим ввода или вывода. Кроме того, каждый канал имеет по контрольному регистру, остальные выводы служат для разрешения или подтверждения запросов прерывания.

Таким образом, адаптер интерфейса периферийных устройств содержит всего шесть 8-разрядных регистров.

Рис. 21.21. Параллельный 8-разрядный ввод.

Рис. 21.22. Параллельный 8-разрядный вывод.

Однако с помощью двух имеющихся входов адреса можно выбрать только 4 регистра. Поэтому регистр данных и при необходимости регистр направления вызываются общим адресом. Различение их производится с помощью разряда соответствующего контрольного регистра. Распределение адресов представлено в табл. 21.14.

Рис. 21.23. Внутренняя структура адаптера интерфейса периферийных устройств типа МС 6821.

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

Программирование адаптера интерфейса можно пояснить на примере. Пусть в направлении А через выводы РА 3 ... PA 0 нужно подать двоичную комбинацию 1101.

После этого информацию, находящуюся на выводах РА 7... РА 4, нужно переписать в аккумулятор В. Соответствующая программа представлена на рис. 21.25. В качестве базового адреса адаптера интерфейса выберем l00016. В контрольном слове воспользуемся только переключающим битом и, расположенным на третьем от конца месте. Остальные биты примем равными нулю. При этом все функции прерывания запрещаются.

Рис. 21.24. Подключение адаптера интерфейса периферийных устройств к шине микро-ЭВМ.

Рис. 21.25. Пример программирования адаптера интерфейса периферийных устройств.

Когда программа выполнена, аккумулятор В содержит следующую информацию:

21.7.2. ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС

С помощью описанных устройств ввода-вывода можно осуществить также последовательный поразрядный обмен данными в том случае, когда используется только один выход- Для этого нужно программным способом сдвигать передаваемое слово данных на один разряд после каждого цикла выдачи. При вводе необходимо составить слово данных путем пошагового сдвига и сложения. Известно, что последовательный ввод-вывод через универсальный интерфейс характеризуется большим объемом программы и значительным временем обмена. Поэтому целесообразно произвести последовательно-параллельное, а затем параллельно-последовательное преобразования с помощью специальной схемы. Основой такой схемы является регистр сдвига с параллельными входами для записи, описанный в разд. 20.4,3. Кроме того.. нужно обеспечить управление этим процессом, которое необходимо для достижения требуемой скорости передачи при выводе 8 бит друг за другом.

С целью контроля синхронизации всю последовательность двоичных символов делят на отдельные группы (циклы передачи), которые маркируют с помощью дополнительных бит сигналов «Старт» и «Стоп». Контроль может быть осуществлен с помощью проверочного бита. При этом производится проверка на четность либо на нечетность- При проверке на четность дополнительный бит имеет такое значение, чтобы число единиц в передаваемом слове, включая проверочный бит четности, всегда было четным, а при проверке на нечетность оно должно быть нечетным.

Пример такой последовательности бит показан на рис. 21.26. Обычно используются следующие циклы передачи:

1) 1 бит сигнала «Старт», 8 бит данных, 1 бит четности, 1 бит сигнала «Стоп»,

2) 1 бит сигнала «Старт», 7 бит данных, 1 бит четности, 2 бита сигнала «Стоп».

Кроме того, можно заменять проверку на четность проверкой на нечетность или совсем не производить ее.

Ясно, что управление последовательным обменом данных описанным способом требует повышения аппаратурных затрат. Обычно для этой цели используются интегральные схемы, например адаптер интерфейса асинхронной передачи данных (Asynchronous Communications Interface Adapter, ACIA) типа МС 6850, блок-схема

Рис. 21.26. Пример реализации циклической передачи.

Звездочкой отмечен наиболее ранний момент возможного появления следующего сигнала «Старт».

Рис. 21.27. Внутренняя структура адаптера интерфейса асинхронной передачи данных типа МС6850.

которого приведена на рис. 21.27. Он содержит четыре регистра, которые выбираются с помощью адреса входа RS и путем переключения сигнала «запись-считывание» следующим образом:

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

С помощью 8-разрядного контрольного регистра можно выбрать цикл передачи и условия четности- Дополнительно можно определить, при каком условии должно осуществляться прерывание. Кроме того, можно программировать частотное разделение для n-разрядных циклов (n = 1, 16, 64). Если задать n = 16 и n = 64, то при приеме производится автоматическая синхронизация по сигналу «Старт».

После включения напряжения питания необходимо привести адаптер интерфейса в состояние готовности с помощью команды сброса. Так как выводов для аппаратного сброса нет, то эта операция реализуется программно путем записи в контрольный регистр определенной двоичной комбинации.

Если требуется выдать слово данных, то прежде всего опрашивается разряд 1 регистра состояния. Он содержит единицу, если предыдущее слово данных передано полностью, т.е. если регистр передачи дуст. Если это условие выполняется, то в регистр передачи записывается следующее слово данных. После этого он самодеятельно осуществляет вывод из адаптера интерфейса.

Если ЭВМ ожидает ввода, то опрашивается разряд 0 регистра состояния. Он содержит единицу, если регистр приема заполнен, т.е. если слово данных принято полностью. При выполнении этих условий с помощью соответствующей индикации в контрольном регистре можно осуществить прерывание.

Из следующих битов состояния можно определить, выполнено ли условие четности, или произошла потеря информации нир перезаписи регистра приема, связанная в тем, что ЭВМ несвоевременно вызвала предыдущее слово.

Код ASCII

Наиболее важно применение последовательного способа передачи данных при работе с телетайпом и дисплеем. Для этой цели разработан специальный 7-разрядный код, обозначаемый как ISO или ASCII (American Standart Code for Information Interchange). Ниже приведена табл. 21.15 соответствия отдельных символов комбинациям бит.

При последовательной передаче этих символов сначала передается разряд 0, а в разряде 7 добавляется бит проверки на четность. Если в адаптере интерфейса асинхронной передачи данных установлен цикл «7 бит + проверка на четность», то старший бит при приеме опрашивается только в связи с проверкой на четность, а на шине данных записывается в виде нуля. В связи с этим независимо от наличия проверки на четность для символов отведено 8-разрядное слово. Сокращенная двухразрядная шестнадцатеричная форма записи представлена в табл. 21.15.

Известно, что цифры 0... 9, согласно этой форме записи, соответствуют шестнадцатеричным числам 30... 39. Таким образом, двоичные числа, соответствующие цифрам кода ASCII, легко определить путем вычитания числа 3016.

Два первых столбца в табл. 21.15 содержат специальные команды обращения к телетайпу.

Наиболее важные из них могут быть заданы с помощью специальных клавиш, например

Остальные команды набираются клавишей Control (CTRL) с указанием соответствующих знаков, расположенных в столбцах 4 и 5. Так, например, символ BEL (ВЫЗОВ) = 0716, задается путем нажатия клавиш CTRL и G. Следующий наиболее важный знак задает клавиша пробела SP (Space) =2016.

Использование адаптера интерфейса асинхронной передачи данных иллюстрирует пример программы, представленный на рис. 21.28. С помощью программы РО произведем основной сброс и установим цикл передачи. При этом контрольное слово 01ц, указывает следующее:

1 бит сигнала «Старт», 7 бит данных, 1 бит проверки на четность, 2 бита «Стоп»,

кроме того, деление частоты на 16 необходимо для получения частоты цикла и обеспечения отключения запроса прерывания. В качестве базового адреса для адаптера интерфейса асинхронной передачи принят адрес 110016.

Программа ввода Р1 начинается с цикла ожидания, в котором с помощью разряда О в регистре состояния контролируется, принимает ли адаптер интерфейса асинхронной передачи данных символ кода ASCII. Когда это условие выполняется, содержимое регистра приема загружается в аккумулятор А.

Программа вывода Р2 тоже начинается с цикла ожидания, в котором определяется, полностью ли переданы предыдущие символы. Когда это условие выполняется, содержимое аккумулятора А загружается в регистр передач.