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 содержат буквально десятки регистров и для программирования требуют квалификации доктора философии. К сожалению, такова цена, которую вы платите за исключительную гибкость мощных БИС аппаратной поддержки микропроцессора.
Для иллюстрации сказанного рассмотрим последовательность команд инициализации микросхемы 8530 для работы в следующем режиме: асинхронная последовательная передача по каналу А, скорость 1200 бод, 8 бит, без контроля четности, 1 стоп-бит; кроме того, мы запретим прерывания. Полная процедура инициализации длинна и утомительна; мы приведем программу целиком, однако во всей красе рассмотрим лишь один-два важнейших командных байта. В табл. 11.6 перечислены регистры записи и чтения микросхемы 8530, доступ к которым, как мы уже объясняли, осуществляется в два этапа: сначала передается номер регистра в качестве команды (D/C' в низком состоянии), а затем происходит запись в регистр (или чтение из него).
Таблица 11.6.Регистры микросхем Zilog 8530
Регистр · Функция
Регистры чтения
RR0 · Состояние буферов приема-передачи и внешнее состояние
RR1 · Состояние условия специального приема
RR2 · Немодифицированный вектор прерывания (канал А); модифицированный вектор (канал В)
RR3 · Биты незавершенных прерываний
RR8 · Буфер приема
RR10 · Общее состояние
RR12 · Счетчик скорости пересылки (младший байт)
RR13 · Счетчик скорости пересылки (старший байт)
RR15 · Информация о прерывании, внешнее/состояние
Регистры записи
WR0 · Инициализация, указатели
WR1 · Прерывания и пересылка, определение режима
WR2 · Вектор прерывания
WR3 · Прием, параметры и управление
WR4 · Общие параметры и режимы
WR5 · Передача, параметры и управление
WR6 · Символы синхронизации или адресное поле SDLC
WR7 · Символ синхронизации или флаг SDLC
WR8 · Буфер передачи
WR9 · Управление и сброс прерывания ведущего
WR10 · Биты общего управления передачи/приема
WR11 · Управление режимом генератора
WR12 · Счетчик скорости пересылки (младший байт)
WR13 · Счетчик скорости пересылки (старший байт)
WR14 · Биты общего управления
WR15 · Управление прерыванием, внешнее/состояние