Рис. 11.23. Шинный приемопередатчик.
Часто можно найти микросхему средней степени интеграции с тристабильным выходным буфером и другими удобными для вас чертами; например, счетчик, фиксатор или даже АЦП/ЦАП с тристабильными выходами можно непосредственно подсоединить к микропроцессорной шине. В нашем примере так подключены АЦП//ЦАП. На рис. 11.24 показан другой пример буферизации шины: в некоторых микропроцессорах (например, 8086 и 8088) для экономии места функции выводов комбинируются, и на одни и те же выводы мультиплексируются и данные, и младшие разряды адреса.
Рис. 11.24. Мультиплектированная шина данных/адреса.
Выходной сигнал ALE (address latch enable, разрешение адресных фиксаторов) сопутствует правильному адресу и используется, как это показано на рисунке, для разрешения группы фиксаторов. Однако фиксировать данные нет необходимости, потому что стробирующие сигналы RD' и WR' действуют только когда сигналы данных имеют правильное значение. Обратите внимание на использование для буферизации двунаправленных линий данных приемопередатчика `245.
11.11. Периферийные БИС
Общие характеристики. Как уже упоминалось, БИС аппаратной поддержки микропроцессора обычно выполняются на базе КМОП- или nМОП- технологии и заключаются в корпуса с 28 или 40 выводами. Для таких БИС характерна высокая степень гибкости, причем их параметры часто допускают программную настройку. Обычно эти БИС предназначаются для определенных микропроцессоров, но фактически их универсальность позволяет использовать БИС одной фирмы с микропроцессором другой; так, мы объединили в нашей разработке календарь-часы фирмы Intersil и два порта фирмы Zilog с ЦП фирмы Motorola. Новые модели периферийных БИС обычно дороги (например, цена микросхемы 8530 составляет около 25 долл.), стоя иной раз больше, чем сам ЦП. Однако постепенно цена модели падает по экспоненциальному закону, что характерно для технологии интегральных схем (и, к сожалению, мало для чего еще в этом мире!). На рис. 8.87 был проиллюстрирован этот, видимо, универсальный закон «Кремниевой Долины» (расположенной на разломе Сан-Андреас между Сан-Франциско и Сан-Хосе).
Несмотря на наши иной раз нелестные замечания в адрес периферийных БИС, они в ряде случаев абсолютно незаменимы; достаточно вспомнить дисковые и видеоконтроллеры. Другим широко распространенным типом БИС поддержки является УСАПП, универсальный синхронно-асинхронный приемопередатчик.
Как использовать УСАПП. УСАПП представляет собой микросхему последовательного порта с микропроцессорным управлением, например Zilog 8530 в нашей разработке. Хороший УСАПП обеспечивает программное управление скоростью передачи, многообразие форматов кадра (число бит, контроль четности и проч.), универсальные синхронные режимы работы (по протоколам вроде HDLC и SDLC), выбор метода модуляции (без возвращения к нулю, частотный, манчестерский), восстановление тактовой синхронизации, контроль ошибок и т. д. Большинство УСАПП обеспечивает режим прерываний, а многие даже блочную передачу данных по каналу ПДП. Почти любое семейство ЦП имеет собственный УСАПП, хотя о совместимости разных УСАПП мало кто думает. Например, фирма IBM для работы с МП Intel 8088 на своих компьютерах PC выбрала УСАПП National 8250 вместо Intel 8251. Мы остановились на Zilog 8530 (он используется также в компьютере Макинтош) из-за его гибкости, доступности и цены, и именно с его помощью мы рассмотрим вопросы подключения и программирования УСАПП.
УСАПП чаще всего используются для пересылки данных на или из терминалов, модемов, устройств для получения твердых копий (принтеры, плоттеры), а также для непосредственной связи компьютеров в общем во всех случаях, когда основными требованиями являются универсальная совместимость и простота соединения. Обычно по линии с помощью биполярных уровней интерфейса RS-232 последовательно передаются коды ASCII, как это было описано в разд. 9.14 и 10.19. В таких простых системах связи УСАПП эксплуатируется в асинхронном режиме, когда каждый 8-битовый символ заключается между старт- и стоп-битами и передается в виде 10-битовой строки с одной из стандартных скоростей; для такого рода применений микросхема 8530 слишком хороша.
Микросхема 8530 выпускается в корпусе с 40 выводами (рис. 11.25); она взаимодействует с ЦП с помощью набора процессорных интерфейсных линий, а с внешним миром — одновременно и независимо с помощью набора коммуникационных интерфейсных линий.
Рис. 11.25. Сигналы «последовательного коммуникационного контроллера» (УСАПП) Zilog 8530.
Интерфейс с процессором. Для подключения к шине ЦП в микросхеме 8530 предусмотрены 8 двунаправленных линий данных, а для программно-управляемого ввода-вывода обычная пара стробирующих сигналов (RD', WR') и сигнал разрешения микросхемы (СЕ'). Вход А/В определяет, к какому из двух каналов УСАПП осуществляется обращение, а сигнал D/C' показывает, передаются ли данные (высокий уровень D/C') или информация управления/состояния (низкий уровень D/C').
Как и в микросхеме 8536, здесь предусмотрено большое количество регистров управления/состояния, доступ к которым осуществляется парами последовательных пересылок (посмотрите еще раз программные строки инициализации порта 8536). Обычно линии А/В и D/C' попросту подключаются к младшим адресным линиям ЦП, что отображает их на начало адресного пространства, начинающегося с базового адреса УСАПП (определяемого логикой декодирования адреса в устройстве). Наконец, интерфейс с процессором включает четыре линии прерываний.
Коммуникационный интерфейс. Каждый из двух каналов УСАПП (обозначаемых А и В) включает линии передачи и приема последовательных данных (TxD, RxD) вместе с линиями, обеспечивающими квитированное управление модемом (RTS, CTS и т. д.). Соответствующие этим линиям выводы можно обнаружить в разъеме на задней панели компьютера. Кроме этого, предусмотрены менее знакомые тактовые линии, используемые только для синхронной передачи (TRxC, RTxC). Наконец, УСАПП требуется внешний тактовый сигнал с частотой, в 32 раза превышающей наивысшую скорость передачи.
УСАПП не имеет никакого представления о биполярных уровнях интерфейса RS-232, поэтому на всех упомянутых линиях следует использовать драйверы и приемники уровней RS-232. В течение десятилетий в качестве интерфейсных микросхем для уровней RS-232 использовались классические модели биполярных счетверенных драйвера 1488 и приемника 1489; однако для нашего прибора мы выбрали КМОП-микросхему МАХ233 (сдвоенный драйвер/приемник), большим достоинством которой является наличие встроенных удвоителей напряжения и инверторов, что позволяет ограничиться единственным источником питания +5 В. Заметьте, что мы не связывались с линиями управления модемом (RTS, CTS, DSR, DTR); вообще их, как правило, игнорируют, используя вместо аппаратного программное квитирование (Ctrl-S, Ctrl-Q), включаемое в поток данных.
Программное обеспечение. Как уже отмечалось, режимы работы УСАПП устанавливаются командами программы. Байт, посылаемый в УСАПП в командном режиме (сигнал D/C' имеет низкий уровень), интерпретируется УСАПП, как команда управления и устанавливает рабочий режим. Таким образом можно определить вид передачи (синхронная или асинхронная), число стоп-бит, контроль четности или нечетности и т. д. Простые УСАПП вчерашнего дня имели всего один управляющий регистр и программировались легко; хитроумные микросхемы вроде 8530 содержат буквально десятки регистров и для программирования требуют квалификации доктора философии. К сожалению, такова цена, которую вы платите за исключительную гибкость мощных БИС аппаратной поддержки микропроцессора.