Главная > Схемотехника > Искусство схемотехники, Т.3
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

11.11. Периферийные БИС

Общие характеристики. Как уже упоминалось, БИС аппаратной поддержки микропроцессора обычно выполняются на базе КМОП- или технологии и заключаются в корпуса с 28 или 40 выводами. Для таких БИС характерна высокая степень гибкости, причем их параметры часто допускают программную настройку. Обычно эти БИС предназначаются для определенных микропроцессоров, но фактически их универсальность позволяет использовать БИС одной фирмы с микропроцессором другой; так, мы объединили в нашей разработке календарь-часы фирмы Intersil и два порта фирмы Zilog с ЦП фирмы Motorola. Новые модели периферийных БИС обычно дороги (например, цена микросхемы 8530 составляет около 25 долл.), стоя иной раз больше, чем сам ЦП. Однако постепенно цена модели падает по экспоненциальному закону, что характерно для технологии интегральных схем , к сожалению, мало для чего еще в этом мире!). На рис. 8.87 был проиллюстрирован этот, видимо, универсальный закон «Кремниевой Долины» (расположенной на разломе Сан-Андреас между Сан-Франциско и Сан-Хосе).

Несмотря на наши иной раз нелестные замечания в адрес периферийных БИС, они в ряде случаев абсолютно незаменимы; достаточно вспомнить дисковые и видеоконтроллеры. Другим широко распространенным типом БИС поддержки является УСАПП, универсальный синхронноасинхронный приемопередатчик.

Как использовать УСАПП.

УСАПП представляет собой микросхему последовательного порта с микропроцессорным управлением, например Zilog 8530 в нашей разработке. Хороший УСАПП обеспечивает программное управление скоростью передачи, многообразие форматов кадра (число бит, контроль четности и проч.), универсальные синхронные режимы работы (по протоколам вроде HDLC и SDLC), выбор метода модуляции (без возвращения к нулю, частотный, манчестерский), восстановление тактовой синхронизации, контроль ошибок и т.д. Большинство УСАПП обеспечивает режим прерываний, а многие даже блочную передачу данных по каналу ПДП. Почти любое семейство ЦП имеет собственный УСАПП, хотя о совместимости разных УСАПП мало кто думает. Например, фирма IBM для работы с МП Intel 8088 на своих компьютерах PC выбрала УСАПП National 8250 вместо Intel 8251.

Рис. 11.25. Сигналы «последовательного коммуникационного контроллера» (УСАПП) Zilog 8530.

Мы остановились на Zilog 8530 (он используется также в компьютере Макинтош) из-за его гибкости, доступности и цены, и именно с его помощью мы рассмотрим вопросы подключения и программирования УСАПП.

УСАПП чаще всего используются для пересылки данных на или из терминалов, модемов, устройств для получения твердых копий (принтеры, плоттеры), а также для непосредственной связи компьютеров в общем во всех случаях, когда основными требованиями являются универсальная совместимость и простота соединения. Обычно по линии с помощью биполярных уровней интерфейса последовательно передаются коды ASCII, как это было описано в разд. 9.14 и 10.19. В таких простых системах связи УСАПП эксплуатируется в асинхронном режиме, когда каждый -битовый символ заключается между старт- и стоп-битами и передается в виде -битовой строки с одной из стандартных скоростей; для такого рода применений микросхема 8530 слишком хороша.

Микросхема 8530 выпускается в корпусе с 40 выводами (рис. 11.25); она взаимодействует с ЦП с помощью набора процессорных интерфейсных линий, а с внешним миром - одновременно и независимо с помощью набора коммуникационных интерфейсных линий.

Интерфейс с процессором. Для подключения к шине ЦП в микросхеме 8530 предусмотрены 8 двунаправленных линий данных, а для программно-управляемого ввода-вывода обычная пара стробирующих сигналов (RD, WR) и сигнал разрешения микросхемы (СЕ). Вход определяет, к какому из двух каналов УСАПП осуществляется обращение, а сигнал показывает, передаются ли данные (высокий уровень ) или информация управления/состояния (низкий уровень ). Как и в микросхеме 8536, здесь предусмотрено большое количество регистров управления/состояния, доступ к которым осуществляется парами последовательных пересылок (посмотрите еще раз программные строки инициализации порта 8536). Обычно линии попросту подключаются к младшим адресным линиям ЦП, что отображает их на начало адресного пространства, начинающегося с базового адреса УСАПП (определяемого логикой декодирования адреса в устройстве). Наконец, интерфейс с процессором включает четыре линии прерываний.

Коммуникационный интерфейс. Каждый из двух каналов УСАПП (обозначаемых А и В) включает линии передачи и приема последовательных данных вместе с линиями, обеспечивающими квитированное управление модемом (RTS, CTS и т.д.). Соответствующие этим линиям выводы можно обнаружить в разъеме на задней панели компьютера. Кроме этого, предусмотрены менее знакомые тактовые линии, используемые только для синхронной передачи . Наконец, УСАПП требуется внешний тактовый сигнал с частотой, в 32 раза превышающей наивысшую скорость передачи.

УСАПП не имеет никакого представления о биполярных уровнях интерфейса , поэтому на всех упомянутых линиях следует использовать драйверы и приемники уровней .

В течение десятилетий в качестве интерфейсных микросхем для уровней использовались классические модели биполярных счетверенных драйвера 1488 и приемника 1489; однако для нашего прибора мы выбрали КМОП-микросхему МАХ233 (сдвоенный драйвер/приемник), большим достоинством которой является наличие встроенных удвоителей напряжения и инверторов, что позволяет ограничиться единственным источником питания . Заметьте, что мы не связывались с линиями управления модемом (RTS, CTS, DSR, DTR); вообще их, как правило, игнорируют, используя вместо аппаратного программное квитирование (Ctrl-S, Ctrl-Q), включаемое в поток данных.

Таблица 11.6. Регистры микросхем Zilog 8530

Программное обеспечение. Как уже отмечалось, режимы работы УСАПП устанавливаются командами программы. Байт, посылаемый в УСАПП в командном режиме (сигнал имеет низкий уровень), интерпретируется УСАПП, как команда управления и устанавливает рабочий режим. Таким образом можно определить вид передачи (синхронная или асинхронная), число стоп-бит, контроль четности или нечетности и т.д. Простые УСАПП вчерашнего дня имели всего один управляющий регистр и программировались легко; хитроумные микросхемы вроде 8530 содержат буквально десятки регистров и для программирования требуют квалификации доктора философии. К сожалению, такова цена, которую вы платите за исключительную гибкость мощных БИС аппаратной поддержки микропроцессора.

Для иллюстрации сказанного рассмотрим последовательность команд инициализации микросхемы 8530 для работы в следующем режиме: асинхронная последовательная передача по каналу А, скорость 1200 бод, 8 бит, без контроля четности, 1 стоп-бит; кроме того, мы запретим прерывания. Полная процедура инициализации длинна и утомительна; мы приведем программу целиком, однако во всей красе рассмотрим лишь один-два важнейших командных байта. В табл. 11.6 перечислены регистры записи и чтения микросхемы 8530, доступ к которым, как мы уже объясняли, осуществляется в два этапа: сначала передается номер регистра в качестве команды в низком состоянии), а затем происходит запись в регистр (или чтение из него). Для буферов передачи и приема двухэтапная процедура не приемлема, так как эти регистры используются при пересылке каждого байта; для них достаточно простых операций чтения или записи при в высоком состоянии. Точно так же, байт состояния буфера требует непосредственного доступа, поскольку чтение его флага обычно осуществляется при каждой пересылке байта данных; в микросхеме 8530 предусмотрено чтение с помощью простой операции чтения команды/состояния в низком состоянии).

Ниже мы рассмотрим все это подробнее на основе простых программ на языке ассемблера.

Рис. 11.26. Два регистра, используемые для инициализации микросхемы Zilog 8530.

Каждый бит каждого регистра что-то означает. Например, на рис. 11.26 можно найти регистры , с помощью которых устанавливаются различные коммуникационные характеристики. В регистре к асинхронным операциям относятся только биты разрешения приемника, разрешения аппаратного квитирования (см. след, раздел) с помощью сигналов управления модемом CTS и DCD, а также два старших бита, определяющие число бит на символ. Остальные биты связаны с синхронными режимами, которые мы собираемся выключить соответствующим выбором . Таким образом, мы устанавливаем , т.е. в мы посылаем шестнадцатеричный байт Cl.

С помощью мы задаем режим генератора (минимальный делитель для асинхронных операций-УСАПП должен выполнять опрос сигнала каждого бита в его середине, поэтому частота входного генератора делается кратной частоте передачи), 1 стоп-бит на символ (используется всегда, за исключением устаревшего стандарта на телетайпную передачу со скоростью 110 бод), отсутствие контроля четности; получается шестнадцатеричный байт 44. Заметьте, что состояние битов не имеет значения, так как они управляют синхронной передачей; произвольно также состояние (контроль четности или нечетности), если (включение контроля) равен 0. Заметьте также, что установка 1 стоп-бита на символ (что имеет смысл только для асинхронного режима) автоматически выключает синхронный режим, а вместе с ним и все биты регистра управления, определяющие синхронные операции (например, в регистре ).

Таким же образом можно управиться и с остальными управляющими регистрами. Это довольно скучная работа, в процессе которой легко допустить ошибки. В табл. 11.7 приведены правильные, как мы надеемся, значения байтов (мы их тщательно проверили!). Обратите внимание на состояние XX (произвольное) для регистров, игнорируемых нами, в силу того, что мы не используем ни прерываний, ни синхронного режима. Регистр выполняет полный сброс микросхемы, который должен предшествовать любым другим командам. С помощью регистров устанавливается -разрядное значение делителя частоты передачи, которое для микросхемы 8530 дается выражением

Таким образом, при частоте генератора 4 МГц и режиме генератор для скорости передачи 1200 бод получаем делитель (фактически скорость передачи составит 1201,92 бод, что весьма близко к заданному значению). При выбранной нами частоте генератора возможны все стандартные скорости передачи вплоть до 9600 бод (для этой скорости делитель должен быть равен 13).

Таблица 11.7. Инициализация последовательного порта 8530

Заметьте, что в вашем распоряжении все многочисленные режимы работы УСАПП, устанавливаемые соответствующими последовательностями инициализирующих управляющих байт. Микросхема 8530, как и все УСАПП, обеспечивает также синхронную коммуникацию в различных режимах со скоростями до это особенно полезно для пересылки данных между двумя процессорами.

Для нашего прибора такой способ пересылки не имеет смысла в силу ограниченного объема оперативной памяти, однако он может оказаться полезным при подключении жесткого диска.

Обратите внимание на необходимость пересылки из ЦП в УСАПП правильной последовательности инициализирующих байт до того, как начнут передаваться какие-либо последовательные данные, как это было и в случае параллельного порта 8536; в нашем примере последовательный порт не использовался, так что мы опустили его инициализацию. Программа 11.4 дает понятие о процедуре инициализации. Сложность программы (включая декодирование таблиц с данными с целью определения управляющих байтов) - это цена, которую вы платите за исключительную гибкость БИС поддержки микропроцессора.

После того как с помощью управляющих регистров установлен режим работы УСАПП, можно передавать и принимать байты данных с помощью циклов ЦП записи и чтения при высоком уровне сигнала . С целью определения наличия нового, ожидающего приема в ЦП байта данных или возможности пересылки в УСАПП нового байта для его дальнейшей передачи следует опрашивать регистр состояния (при низком уровне ), конкретно D0 в регистре в первом случае, и в том же регистре во втором. В дополнение к этому по другим битам регистра состояния можно судить о фиксации ошибки четности, потере принимаемых данных и т.д. Часто эти страшные удары судьбы можно игнорировать и смело идти вперед. В программе 11.5 приведены фрагменты пересылки данных при том же, что и раньше, отображении регистров на адресное пространство.

Учтите, что эти примеры, в которых используется программный ввод-вывод с проверкой состояния (см. разд. ), иллюстрируют работу простейших программных драйверов. В них работа ЦП останавливается на время циклического опроса флага состояния.

Использование механизма прерываний позволяет повысить эффективность работы ЦП; это особенно справедливо для операций ввода. Микросхема 8530 может возбуждать прерывания по любому указанному условию; от нее даже можно получить в качестве подтверждения выбранный вами -битовый вектор, если использовать линии подтверждения прерывания (IEI, IEO, INTACK). Все эти возможности реализуются с помощью управляющих байтов инициализации.

Микросхемы параллельного ввода-вывода (РIO).

В состав нашего микропроцессорного прибора была включена многофункциональная микросхема параллельного порта (такого рода схемы часто объединяются с одним или несколькими таймерами). Использованная нами микросхема 8536 принадлежит тому же семейству, что и микросхема последовательного порта 8530 и использует схожие интерфейс с процессором и протокол настройки. Хорошие микросхемы параллельных портов позволяют программировать для каждого бита в отдельности направление передачи и режим (с фиксацией, с открытым стоком, с инверсией). Протокол передачи данных также можно запрограммировать; например, в микросхеме 8536 можно разрешить векторизуемые прерывания по любому сочетанию входных бит. Можно также выбрать один из четырех режимов квитирования (см. ниже).

Микросхемы , как и все периферийные БИС, разрабатываются на базе и КМОП-технологий, причем в новых разработках используется в основном последняя. С выходов таких схем можно снять, как правило, несколько , однако -схемы, в отличие от КМОП, обеспечивают лишь доли . Поэтому они обычно используются совместно с микросхемами мощных драйверов, позволяющих подключать к ним нагрузку, требующую значительных токов. Не пытайтесь подключать реле непосредственно к выходу микросхемы РIO (см. наши замечания относительно микросхем среднего уровня интеграции в разделе «Фиксаторы и -регистры»).

На рис. 11.27 показан пример реальной схемы, конкретно для управления -разрядным дисплеем. Конечно, вам придется написать программу для периодического вывода последовательных десятичных чисел, а также и «шагающего бита» через порт А, не забыв запретить прерывания на время вывода, чтобы предотвратить мерцание. Другой, более простой способ управления многоразрядным ЭЛД-дисплеем в микропроцессорной системе заключается в использовании чего-то вроде семейства «интеллектуальных дисплеев» фирмы -дисплейных секций, отображаемых на память, и выглядящих с точки зрения ЦП просто как участки памяти (см. рис. 9.24); поскольку такие дисплеи запоминают выводимые числа, запись в них требуется выполнять только при смене отображаемого числа.

Квитирование.

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

Рис. 11.27. Управление мультиплексированным дисплеем от РIO.

Вы хотите узнать, готов ли РIO принять следующий байт, т.е. извлечен ли процессором предыдущий байт. Для выполнения этой операции следует предусмотреть в РIO специальный выход «готов к приему данных» (ready for data, RFD), который сбрасывается РIO после получения от вас нового байта, и вновь устанавливается после того, как этот байт забирается центральным процессором. Другими словами, вы имеете право стробировать свои данные в любой момент, если только установлен .

Рис. 11.28. Квитирование.

На рис. 11.28 показано, как реализуется это «взаимное квитирование», которое является одним из четырех режимов квитирования, предусмотренных в микросхеме 8536. При вводе данных внешний источник может установить данные, но не устанавливает строб ACKIN (такое название этого вывода придумала фирма Zilog!) до обнаружения установленного сигнала RFD. Устройство снимает строб (и может снять данные), обнаружив сброс RFD, затем снова ожидает установки RFD. При выводе данных процессы протекают аналогично. РIO устанавливает сначала данные, затем сигнал DAV (data available, данные установлены). Внешнее устройство фиксирует данные, после чего устанавливает сигнал подтверждения ACKIN. Это заставляет РIO сбросить и данные, и DAV. Последнее воспринимается внешним устройством, как команда на сброс ACKIN, чем начинается новый цикл. Заметьте, что квитирование полностью взаимно, т.е. каждый участник передачи данных на каждом шаге ждет за вершения своей части операции вторым соучастником.

Такое полностью взаимное квитирование гарантирует отсутствие потерь данных. Иногда, однако, протокол можно упростить. В микросхеме 8536 предусмотрен режим «импульсного квитирования», в котором сигнал ACKIN не обязан ожидать разрешения на сброс; в этом случае сигнал ACKIN представляет собой импульс длительностью по меньшей мере 250 не, возбуждаемый, когда установлены RFD или DAV, как было описано выше.

Легко сообразить, что режим квитирования выбирается в процессе инициализации посылкой тех же всеобъемлющих управляющих байтов. Если выбран один из режимов квитирования, все или некоторые из четырех линий порта С используются в качестве ACKIN, DAV и RFD. Если вы не назначаете порту режим квитирования, линии порта С можно использовать, как обычные биты ввода-вывода, точно так же, как порты А и В.

Предупреждение: общий недостаток многих периферийных БИС, особенно с тактирующим входом, заключается в непомерно большом времени успокоения после каждой операции. Весьма показателен наш опыт работы с микросхемой 8530: при использовании МП 68000 на частоте 10 МГц пришлось между последовательными циклами вывода включить несколько команд NOP, потому что скорость, с которой ЦП мог посылать последовательные байты (интервал между байтами ) была выше скорости их приема микросхемой 8530 (минимальное значение «допустимого времени восстановления после доступа» для 8530 составляет . Учтите также своеобразные требования к синхронизации процессорного интерфейса. Вспомним, что в нашем микропроцессорном приборе периферийные схемы Zilog требовали необычно большого времени предустановки адреса по отношению к фронту строба чтения (80 не), что заставило нас добавить схемы для генерации задержанного сигнала RD. Эти особенности, с которыми вы не встретитесь при использовании простых цифровых схем среднего уровня интеграции, являются результатом необходимости тактирования внутренних состояний микросхемы, относительно низкой скорости работы КМОП-схем, или и того, и другого.

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

Аналого-цифровые и цифро-аналоговые преобразователи на микропроцессорной магистрали.

Ввиду широкого внедрения устройств сбора данных с микропроцессорным управлением (в противоположность автономным приборам) новейшие модели АЦП и ЦАП стали разрабатываться с учетом возможности их подключения к микропроцессорной магистрали. Например, «микропроцессорно-совместимые» ЦАП имеют шины передачи входных данных шириной 1 байт и два входных буфера, так что вы можете зафиксировать -разрядную величину, поступающую по -разрядной шине, за два цикла записи; двойная буферизация обеспечивает одновременное поступление на вход преобразователя всех 12 разрядов преобразуемой величины, что уменьшает переходные выбросы на выходе. Аналогично этому микропроцессорносовместимые АЦП комплектуются тристабильными выходными драйверами, организованными в группы шириной 8 бит. И АЦП, и ЦАП часто используют «магистрально-ориентированные» сигналы типа RD, WR и CS. Такие преобразователи можно непосредственно подключать к микропроцессорной магистрали, используя лишь незначительный объем «склеивающей» логики для декодирования адреса.

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

Несколько примеров. Микросхема фирмы Analog Devices представляет собой двухканальный -разрядный ЦАП с -битовой загрузкой (т.е. каждая -битовая величина загружается за два цикла магистрали, как со средствами одновременного обновления двух -разрядных каналов с двойной буферизацией (рис. 11.29); вариант снабжен входом, шириной 12 бит, предназначенным для -разрядных магистралей. Микросхема той же фирмы - это -разрядный АЦП, не требующий «склеивающих» схем, с возможностью параллельного вывода шириной 8 или 12 бит через тристабильные драйверы; эту схему можно легко подключить к микропроцессорным магистралям шириной как 8, так и 16 бит. Некоторые преобразователи, совместимые с магистралями, даже позволяют задавать выравнивание слова, меньшего по ширине, чем магистраль, влево или вправо. Выбирая преобразователь для подключения к микропроцессорной магистрали, остерегайтесь устройств с замедленной синхронизацией процессорного интерфейса (что не имеет никакого отношения к скорости преобразования), которая может заставить вас предусматривать состояния ожидания, задержанные стробы и т. д. Например, микросхема , во всех остальных отношениях превосходный автономный -разрядный АЦП, характеризуется минимальным временем упреждения данных по отношению к срезу сигнала WR 200 не, что требует, при использовании его с МП 68008, введения состояния ожидания.

При подключении к микропроцессору любого АЦП с разрешением 12 бит и более подумайте об изоляции выходов микросхемы АЦП от системной магистрали с помощью буферов (или даже опторазвязок); в противном случае переходные процессы в цифровых цепях и наводки от микропроцессора могут легко ухудшить разрешение. При высоком разрешении (16 бит и более) может оказаться необходимым разместить преобразователь вне корпуса, содержащего цифровую электронику. В качестве примера возможных неприятностей мы можем описать наш опыт работы с промышленной платой -разрядного АЦП, предназначенного для IBM PC. Модуль преобразователя размещался прямо на плате, внутри компьютера. Мы скептически отнеслись к возможности достижения максимального -битового разрешения, и перед покупкой платы осведомились, какова будет реакция АЦП на приложение к его аналоговым входам постоянного напряжения. В отделе технической поддержки фирмы-изготовителя нас заверили, что колебания будут «не более двух соседних цифровых кодов». Фактически выходные показания метались в пределах семи соседних кодов, что снижало разрешение до 14 бит. По предложению фирмы мы принесли им плату для испытаний, которые лишь подтвердили проблему шума. Когда мы спросили «как же , нам сказали, что введший вас в заблуждение сотрудник уже у них не работает. Нам сообщили, что все их платы работают точно так же; и, добавляя оскорбления к ущербу, пригрозили взыскать с нас стоимость «обслуживания», состоявшего в испытаниях платы.

<< Предыдущий параграф Следующий параграф >>
Оглавление