Хоровиц Пауль, Хилл Уинфилд «Искусство схемотехники» Том 2 (Главы 7–10) Издание 4-е переработанное и дополненное
THE ART OF ELECTRONICS
Second Edition
Paul Horowitz Harvard University
Winfield Hill Rowland Institute for Science, Cambridge, Massachusetts
CAMBRIDGE UNIVERSITY PRESS
Cambridge
New York Port Chester Melbourne Sydney
Глава 7 ПРЕЦИЗИОННЫЕ СХЕМЫ И МАЛОШУМЯЩАЯ АППАРАТУРА
Перевод Б. Н. Бронина
В предыдущих главах мы рассмотрели многие аспекты проектирования аналоговых схем, включая свойства пассивных элементов и транзисторов, ПТ и ОУ, обратную связь, а также рассмотрели ряд применений этих устройств и методов схемотехники. Но в этих рассуждениях не ставился вопрос о лучшем из возможных вариантов, например о минимизации ошибок усилителя (нелинейность, дрейф и т. д.), или об усилении слабого сигнала с наименьшим искажением за счет «шума» усилителя. Эти вопросы во многих случаях составляют существо дела, и поэтому они являются важной частью искусства схемотехники. Поэтому в данной главе мы рассмотрим методы проектирования прецизионных схем и проблемы шумов усилителя. При первом чтении всю эту главу можно пропустить, за исключением разд. 7.11, в котором вводится понятие «шум усилителя». Для понимания следующих глав материал данной главы несуществен.
Разаработка прецизионной аппаратуры на операционных усилителях
При измерении и управлении часто нужны высокопрецизионные схемы. Схемы управления должны быть точными, устойчивыми относительно времени и температуры, а их поведение - предсказуемым. Так же и ценность измерительного прибора зависит от его точности и стабильности. Почти во всех областях электроники существует желание сделать все более точно — можно назвать это стремлением к совершенству. Если вам и не нужна такая высочайшая точность, приятно иметь точные приборы, чтобы до конца понимать, что происходит.
7.01. Соотношение точности и динамического диапазона
Понятия точность и динамический диапазон легко спутать, поскольку иногда одна и та же аппаратура используется для достижения и того, и другого. Может быть, разницу можно лучше всего пояснить на ряде примеров: у 5-разрядного цифрового многошкального прибора — прецизионная точность; измерения напряжения им делаются с точностью 0,01 % и выше. Такое устройство также имеет широкий динамический диапазон — от миливольт до вольт на одной и той же шкале. Точный десятичный усилитель (например, с коэффициентом усиления, выбираемым из ряда значения 1, 10, 100) и прецизионный опорный источник напряжения могут иметь достаточную точность, но не обязательно широкий динамический диапазон. Примером устройства с широким динамическим диапазоном, но скромной точностью служит шестидекадный логарифмический усилитель (ЛУ), построенный на тщательно подогнанных ОУ, но с применением элементов, имеющих точность всего лишь 5 %; даже при использовании более точных элементов ЛУ может иметь ограниченную точность за счет несоответствия при крайних значениях тока характеристик используемого для преобразования транзисторного перехода логарифмической зависимости. Другой пример устройства с широким динамическим диапазоном (диапазон входного тока более чем 10000:1) при весьма скромной точности 1 % — это кулонометр, описанный в разд. 9.26. Вначале он был спроектирован для определения суммарного заряда электрохимического элемента — величины, которую достаточно знать с точностью 5 %, но которая образуется в результате действия тока, изменяющегося в широком диапазоне. Общее свойство устройств с широким динамическим диапазоном это то, что входное смещение должно быть тщательно отрегулировано для обеспечения пропорциональности при уровне сигнала, близком к нулю. При проектировании прецизионной аппаратуры это также необходимо, но там для удержания суммарной погрешности в рамках так называемого бюджета погрешности требуются также прецизионные элементы, устойчивые генераторы опорных напряжений, и внимание ко всем возможным источникам погрешностей.
7.02. Бюджет погрешностей схемы
Несколько слов о бюджете погрешности. Начинающие разработчики часто попадают в ловушку, считая, что несколько стратегически правильно расположенных прецизионных элементов дадут устройство с прецизионными параметрами. В каких-то редких случаях, может быть, так и получится. Но даже схема, битком набитая резисторами 0,01 % и дорогостоящими ОУ, не оправдывает ваших ожиданий, если на каком-то участке схемы смещение выходного тока, умноженное на сопротивление источника, даст погрешность смещения напряжения, например 10 мВ. Подобного рода погрешности встречаются почти в любой схеме, и важно их выявить, хотя бы для того, чтобы найти место, где требуется устройство с лучшими параметрами или где нужно изменить схему. Такой подсчет бюджета погрешности рационализирует проектирование, во многих случаях позволяет обойтись недорогими элементами и точно оценить характеристики схемы.
7.03. Пример схемы: прецизионный усилитель с автоматическим выбором нуля
Для иллюстрации предшествующих рассуждений мы спроектировали схему прецизионного декадного усилителя с автоматическим поиском начального уровня. Такое устройство позволяет зафиксировать некоторое значение входного сигнала и усиливать его последующие отклонения от этого уровня с коэффициентом, точно равным 10, 100 или 1000. Это окажется весьма удобным в эксперименте, при котором измеряется малое отклонение какой-нибудь величины (например, светопроницаемости или поглощения радиочастоты) при изменении условий эксперимента. Обычно трудно точно измерить малое изменение большого сигнала постоянного тока вследствие дрейфа и неустойчивости усилителя. В таком случае нужна схема с предельной прецизионностью и устойчивостью. Мы опишем методы и ошибки, которые мы допускали при проектировании этой конкретной схемы, в рамках общего описания процесса прецизионного проектирования и таким образом безболезненно изложим то, что иначе могло бы стать утомительным поучением. Одно предварительное замечание: заманчивой альтернативой к этой чисто аналоговой схеме могла бы стать цифровая аппаратура. (В следующих главах следите за захватывающими открытиями!). Проектируемая схема изображена на рис. 7.1.
Рис. 7.1. Лабораторный усилитель постоянного тока с автоподстройкой нуля.
Описание схемы. Основа схемы-повторитель (U1), подключенный ко входу неинвентирующего усилителя с переключаемым коэффициентом усиления (U2), выход которого смещается сигналом, приложенным к его неинвертирующему входу. Транзисторы Т1 и Т2 — это ПТ, они применяются как простые аналоговые ключи; Т3-Т5 используются для формирования необходимых уровней управления ключами от входного логического сигнала. Транзисторы Т1-Т5 можно заменить на реле или, если угодно, на выключатели. Можете представить их себе как простые однополюсные переключатели на одно направление (1П1Н).
В том случае когда логический входной сигнал имеет высокий уровень («хранение»), ключи замкнуты и U3 заряжает аналоговый конденсатор «памяти» (С1) до уровня, необходимого для поддержания нулевого выходного сигнала. При этом схема не делает «никаких попыток» отслеживать быстрые изменения выходного сигнала, поскольку в применениях, для которых предназначена эта схема, все сигналы - постоянного тока, и некоторое сглаживание является желательным свойством. Когда ключ размыкается, напряжение на конденсаторе фиксируется, в результате чего выходной сигнал оказывается пропорциональным последующему отклонению входного сигнала.
Перед дальнейшим детальным объяснением принципов работы данной прецизионной схемы следует остановиться на ее некоторых дополнительных особенностях, (a) U4 включен в схему первого порядка компенсации тока утечки конденсатора С1; конденсатор имеет тенденцию медленно разряжаться через собственное сопротивление утечки (минимум 100 ТОм, т. е. постоянная времени около двух недель!); при этом ток утечки компенсируется небольшим зарядным током через R15, пропорциональным напряжению на С1. (б) Вместо одинарного ПТ-ключа применены два ключа, которые соединены последовательно в «защищенное от утечки» устройство. Небольшой ток утечки Т2 в положении «выкл» проходит на землю через R23, поддерживая потенциал на всех выводах Т1 в пределах милливольт по отношению к земле. Так как нет сколько- нибудь заметного перепада напряжений на Т1, то нет и сколько-нибудь заметной утечки! (Подобные приемы см. в разд. 4.15 и на рис. 4.50.) (в) Запоминаемое напряжение с выхода ослабляется делителем напряжения на резисторах R11-R14 в соответствии с установленным коэффициентом усиления. Это делается, чтобы избежать трудностей с динамическим диапазоном и точностью U3, так как ошибки дрейфа в схеме, запоминающей начальный уровень, не усиливаются на U2 (подробности см. далее).
7.04. «Бюджет погрешностей» при проектировании прецизионной схемы
Для каждого вида схемной погрешности и соответствующей стратегии проектирования мы отведем несколько параграфов общей дискуссии, сопроводив их иллюстрацией предыдущей схемы. Схемные погрешности разделяются на следующие категории: а) погрешности элементов внешних цепей; б) погрешности ОУ или усилителей, связанные с входными схемами; в) погрешности ОУ, связанные с выходными схемами. Примерами таких категорий являются соответственно допуски резисторов, сдвиг входного напряжения и погрешности, связанные с конечной скоростью нарастания.
Давайте подсчитаем наш бюджет погрешности. В его основе лежит желание удержать погрешность, приведенную ко входу, в пределах 10 мкВ, дрейф выхода — ниже 1 мВ в 10 мин и точность коэффициента усиления — около 0,01 %. Как и в любом бюджете, отдельные составляющие получаются в процессе достижения компромисса между тем, что должно быть сделано и имеющейся технологией. В некотором смысле бюджет погрешности — это результат проектирования, а не его исходный пункт. Нам тем не менее удобней иметь его сейчас.
Бюджет погрешности (наихудшие значения)
1. Буферный усилитель U1.
Погрешности напряжения, приведенные ко входу:
· Погрешности напряжения, приведенные ко входу:
· Температура… 1,2 мкВ/4 °C
· Время… 1,0 мкВ/мес
· Источник питания… 0,3 мкВ/100 мВ изменения
· Ток смещения x Rи … 2,0 мкВ/1 кОм Rи
· Нагрев от тока нагрузки… 0,3 мкВ на полной шкале 10 В
2. Усилительный каскад U2.
Погрешности напряжения, приведенные ко входу:
· Температура… 1,2мкВ/4 °C
· Время… 1,0 мкВ/мес
· Источник питания… 0,3 мкВ/100 мВ изменения
· Токовый дрейф отклонения смещения… 1,6 мкВ/4 °C/1 кОм
· Нагрев током нагрузки… 0,3 мкВ при полной шкале (Rн >= 10 кОм)
3. Усилитель хранения U3.
Погрешности напряжения, приведенные в выходу:
· Температурный коэффициент сдвига… 60 мкВ/4 °C
· Источник питания… 10 мкВ/100 мВ изменения
· Потери в конденсаторе (см. бюджет тока)… 100 мкВ/мин
· Прохождение заряда 10 мкВ
Погрешности тока, протекающего через C1 (нужны для приведенного выше бюджета погрешности по напряжению):
Утечка конденсатора
— максимум (нескомпенсированная)… 100 пА
— типичная (компенсированная)… 10 пА
· Входной ток U3… 0,2 пА
· Сдвиг напряжения U3 и U4/R15 … 1.0 пА
· Утечка ΠΤ-ключа в состоянии «выкл»… 0,5 пА
· Утечка по печатной плате… 5,0 пА
Смысл различных «статей» этого бюджета будет выясняться по мере описания возможностей для выбора, возникающих при проектировании этой схемы. Будем следовать порядку перечисленных ранее категорий погрешностей: компоненты цепей, приведенные ко входу погрешности входного усилителя, погрешности выходного усилителя.
7.05. Погрешности внешних цепей
Степень точности источников опорного напряжения, источников тока, коэффициентов усиления усилителей и т. д. зависит от точности и стабильности резисторов, которые применяются во внешних цепях. Даже если прецизионность прямо не требуется, точность элементов все равно может дать значительный. эффект, например в подавлении синфазных помех в дифференциальном усилителе, собранном на ОУ (см. разд. 4.09), где отношения сопротивлении двух пар резисторов должны быть точно согласованы. Точность и линейность интеграторов и генераторов пилообразного напряжения зависят от свойств применяемых конденсаторов, равно как и характеристики фильтров, контуров настройки и т. д. Как мы увидим вскоре, в схеме существуют такие цепи, где точность значений компонент является критическим моментом, а есть и такие цепи, где она едва ли играет роль.
Элементы обычно специфицированы по начальной точности, а также по изменению значения параметров во времени (стабильность) и с температурой. Есть и дополнительные спецификации по коэффициенту напряжения (нелинейность) и необычным эффектам, таким как «память» и диэлектрическое поглощение (для конденсаторов). Полная спецификация включает также эффекты от циклических температурных изменений и пайки, ударов и вибраций, кратковременных перегрузок и влажности, полученные при точно определенных условиях измерений. У элементов с лучшей исходной точностью как правило остальные параметры также соответственно лучше, это делается с целью поднять общую стабильность на уровень, сравнимый с уровнем исходной точности. Общая погрешность, порождаемая остальными эффектами тем не менее, может превзойти указанный начальный допуск. Будьте бдительны!
Вот пример. Металлопленочный резистор RN55С с допуском 1 % имеет следующие паспортные данные: температурный коэффициент 5·10-5/°С в диапазоне от —55 до +175 °C; коэффициент стабильности по отношению к циклическим изменениям температуры и нагрузки, а также к пайке 0,25 %, к ударам и вибрации 0,1 %, к влажности 0,5 %. Для сравнения: у композитно-углеродистого резистора (фирма Allen-Bradley, тип СВ) эти параметры таковы: температурный коэффициент 3,3 % в диапазоне от 25 до 85 °C, пайка и циклическая нагрузка — соответственно +4 % и —6 %, удар и вибрация ±2 %, влажность 6 %. Из этих спецификаций становится очевидным, что нельзя просто отобрать (с помощью точного цифрового омметра) для работы в прецизионных цепях углеродистые резисторы, которые окажутся в пределах 1 % от нужного номинального значения, а нужно взять 1 %-ный резистор (или еще более точный), рассчитанный как на начальную точность, так и на долговременную стабильность. Для исключительно высокой точности следует применять ультрапрецизионные металлопленочные резисторы, такие как 5023Z фирмы Мерсо (5·10-6/°С и 0,025 %) или проволочные резисторы, выпускаемые с допуском 0,01 %. Дополнительную информацию о прецизионных резисторах см. в приложении Г.
«Нуль»-усилитель: погрешности элементов. В описываемой схеме (рис. 7.1) резисторы R3-R9 с допуском 0,01 %, примененные в цепи, устанавливающей коэффициент усиления, задают его очень точно. Как мы увидим далее, значение R3 выбирается путем компромисса, так как малые его значения уменьшают погрешность от тока сдвига U2, но увеличивают нагрев и тепловой дрейф U1. Когда задано R3, приходится усложнять цепь обратной связи для того, чтобы значения резисторов были меньше 301 кОм — наибольшего значения сопротивления доступных прецизионных резисторов с допуском 1 %. Этот прием обсуждался в разд. 4.19. Заметьте, что резисторы с допуском 1 % применены также в цепи аттенюатора начального отклонения (R11-R14); точность здесь несущественна, а металлопленочные резисторы взяты только из-за их хорошей стабильности.
Как показывает бюджет погрешности, в этой схеме наибольшую погрешность дает утечка конденсатора хранения С1. Конденсаторы, предназначенные для работы с малыми утечками, специфицируются по утечке — иногда в виде сопротивления утечки, иногда в виде постоянной времени (мегаом x микрофарада). В данной схеме С1 должен иметь значение не меньше по крайней мере нескольких микрофарад, чтобы была мала скорость заряда от токов погрешности других элементов (см. бюджет). В этом диапазоне емкостей наименьшей утечкой обладают полистиреновые, поликарбонатные и полисульфоновые конденсаторы.
Выбранный нами конденсатор имеет утечку по спецификации не более 1000 000 мегаом x микрофарад, т. е. параллельное сопротивление утечки составляет не менее 100000 МОм. Но даже при этом ток утечки при полном вых. напряжении (10 В) будет 100 пА; это соответствует скорости падения напряжения на выходе около 1 мВ/мин — составляющая погрешности, намного превышающая все остальные. Поэтому мы и добавили описанную выше схему компенсации тока утечки. Мы имеем право предположить, что действительная утечка может быть таким образом уменьшена до 0,1 от значения, указанного в паспорте конденсатора (на самом деле можно добиться намного большего улучшения). Большой стабильности от схемы компенсации утечки не требуется, поэтому наши требования здесь скромны. Как мы увидим при обсуждении влияния сдвигов напряжения, значение R15 намеренно выбирается большим, чтобы сдвиг напряжения U3 не создавал заметных погрешностей по току.
Говоря об ошибках, порождаемых внешними по отношению к самим усилителям элементами, следует отметить, что утечка у ПТ-ключа обычно лежит в диапазоне 1 нА — значение для данной схемы совершенно неприемлемое. Изящный и действенный метод борьбы с этим состоит в применении двух последовательно соединенных ПТ, где утечка Т2 создает на Т1 напряжение лишь в 1 мВ, а утечкой в суммирующей точке U3 можно пренебречь. Этот метод иногда используется в схемах интеграторов, (см. разд. 4.19). Мы также использовали его в усовершенствованной схеме пикового детектора в разд. 4.15. Как будет показано ниже, U3 выбирается таким, чтобы ток погрешности через конденсатор С1 оставался в пикоамперном диапазоне. Здесь всюду одинаковая философия: выбирайте конфигурацию схемы и типы элементов так, чтобы вписаться в бюджет погрешности. Иногда это очень трудная работа, требующая хитрых приемов, а в других случаях легко все решается стандартными способами.
Одним из таких источников погрешности в любой схеме с ПТ-ключами является перенос заряда с управляющего затвора в несущий сигнал канал: переходные процессы с затвора через емкостную связь передаются на сток и исток. Как мы отмечаем в гл. 3, суммарный переданный заряд не зависит от времени переходного процесса, а определяется лишь размахом напряжения на затворе и емкостью перехода затвор-канал: ΔQ = C3KΔU3. В данной схеме перенос заряда приводит к погрешности напряжения автоподстройки нуля, поскольку заряд преобразуется в напряжение на запоминающем конденсаторе С1. Эту погрешность легко оценить.
В паспорте на ПТ 3N156 заданы максимальные значения емкостей Сзс (затвор-сток) и Сзи (затвор-канал, в основном по отношению к истоку), соответственно равные 1,3 и 5 пФ. При этом перепад напряжения на затворе в 15 В вызовет перенос заряда, равный 75 пКл, что соответствует скачку напряжения ΔUс = ΔQ/C1 = 7,5 мкВ на конденсаторе С1,имеющем емкость 10 мкФ. Это в пределах нашего бюджета погрешностей; фактически мы скорее всего даже переоценили данный эффект, так как включили в расчет не только емкость стока, но и емкость истока, в то время как на каком-то этапе переключения затвора канал разрывается, отсекая исток от стока.
7.06. Входные погрешности усилителя
Отклонения входных характеристик ОУ от идеальных, обсуждавшиеся в гл. 4 (конечность значений входного сопротивления и входного тока, сдвиг напряжения, подавление синфазного сигнала и отклонений питания, дрейф этих величин с температурой и временем), создают, как правило, серьезные трудности при проектировании прецизионных схем и заставляют делать дополнительную работу при составлении конфигурации схемы, подборе элементов и выборе конкретного ОУ. Лучше всего это пояснить на примерах, что мы вскоре и сделаем. Заметим еще, что эти погрешности или им аналогичные существуют и у схем усилителей на дискретных компонентах.
Входное сопротивление. Давайте обсудим бегло только что перечисленные источники погрешностей. Входное сопротивление образует делитель напряжения с сопротивлением источника, от которого сигнал поступает на усилитель, поэтому коэффициент усиления по отношению к расчетному снижается. Чаще всего это не проблема, так как входное сопротивление значительно увеличивается за счет обратной связи. Например, операционный усилитель ОР-77Е с входным каскадом на биполярных, а не на полевых транзисторах имеет типовое значение «полного дифференциального входного сопротивления» 45 МОм. В схеме с достаточным петлевым усилением обратная связь поднимает входное сопротивление до значения «полного синфазного входного сопротивления» 200 000 МОм. Даже если этого мало, то можно воспользоваться ОУ с входным ПТ-каскадом, у которого Rвх достигает астрономических величин.
Входной ток смещения. Это более серьезная вещь. Здесь речь пойдет о наноамперных токах, что может вызвать микровольтные ошибки даже при малых полных сопротивлениях источника порядка 1 кОм. Снова на выручку приходят ПТ, но приходится мириться с большим возрастанием сдвига по напряжению как платой за улучшение ситуации с током. Биполярные ОУ со сверхвысоким β, такие как LT1012, 312 и LM11, также могут иметь исключительно малый входной ток. Для примера сравним прецизионный биполярный операционный усилитель ОР-77 с LT1012 (биполярный, оптимизированный для получения малого тока смещения), ОРА111 (на ПТ, прецизионный, с малым смещением), AD549 (ПТ со сверхмалым смещением) и ICH8500 (ОУ на МОП-транзисторах с исключительно малым смещением); это наилучшие типы на момент написания данной книги, и мы выбрали самые лучшие модификации каждого типа:
По сравнению с прецизионным ОР-77 у хорошо спроектированных ПТ-усилителей ток смещения крайне мал, но намного больше сдвиг напряжения. Так как сдвиг напряжения всегда можно настроить на нуль, гораздо большее значение имеет его температурный дрейф. В этом смысле ПТ-усилители имеют параметры в 3 или 6000 раз хуже. В операционных усилителях с наименьшими значениями входного тока в качестве входного каскада используются МОП-транзисторы. Они становятся популярными из-за доступности недорогих устройств, таких как 3440, 3160, серий TLC270 и ICL7610, а также устройств со сверхмалым током смещения, подобных названному ранее 8500А. Однако МОП-транзисторы в отличие от ПТ с p-n-переходом и биполярных транзисторов имеют очень большой дрейф сдвига напряжения со временем — эффект, который мы кратко обсудим. Поэтому выигрыш в погрешностях по току может быть потерян вследствие возрастания погрешностей по напряжению. В любой схеме, где ток смещения может дать значительный вклад в ошибку, имеет смысл убедиться в том, что в цепях обоих входов ОУ сопротивление источника одно и то же, как указывалось в разд. 4.12; после этого нас будет интересовать только такой параметр ОУ, как ток сдвига. Одно замечание по поводу компенсации тока смещения. В ряде прецизионных ОУ применяется схема «компенсации смещения», которая уменьшает входной ток почти до нуля, а тем самым делает меньше и соответствующую погрешность; чтобы посмотреть, как это делается, вернитесь к дополнительному упражнению 8 в конце гл. 2. Имея дело с такого типа ОУ, вы практически ничего не выиграете, согласуя сопротивления на обоих входах, поскольку остаточный ток смещения и ток сдвига у ОУ с компенсацией смещения сравнимы по величине.
Помимо сказанного, есть еще одно обстоятельство, которое надо помнить, применяя ОУ с ПТ-входом. Дело в том, что входной ток «смещения» есть на самом деле ток утечки затвора и что он резко растет при повышении температуры (грубо говоря, удваивается при повышении температуры на каждые 10 °C; см. рис. 3.30). А так как ОУ с ПТ-входом часто разогреваются (ИМС 356 рассеивает в покое 150 мВт), то истинный входной ток может быть значительно выше указанного в таблице при 25 °C. Для сравнения укажем, что входной ток ОУ с биполярным входным каскадом на самом деле есть ток базы, и с ростом температуры он падает (рис. 7.2).
Рис. 7.2. Температурная зависимость входного тока биполярного ОУ. а — логарифмическая шкала; б — линейная шкала.
Поэтому ОУ с ПТ-входом с его впечатляющими на бумаге данными по входному току может не дать большого улучшения по сравнению с хорошим биполярным устройством со сверхвысоким значением β. Пример: ОРА111 с входным током 1 пА при 25 °C будет иметь входной ток 10 пА при температуре кристалла 65 °C, а это больше, чем у LT1012 со сверхвысоким β при той же температуре. Популярная серия ОУ с ПТ-входом 355 имеет входной ток, который сравним с входным током LT1012 или LM11 при 25 °C, но во много раз больше при повышенной температуре. И наконец, при сравнении ОУ по входным токам остерегайтесь некоторых типов ПТ ОУ, у которых Iсм зависит от входного напряжения. В спецификациях обычно указывается только значение Iсм при 0 В (середина напряжения питания), однако в хороших паспортах на ОУ приводятся также графики (см. типичную зависимость Iсм от Uвх на рис. 7.3). Обратите внимание на отличные характеристики ОРА111, являющиеся следствием каскодной схемы входного каскада.
Рис. 7.3. Зависимость входного тока ПТ ОУ от синфазного входного напряжения.
Сдвиг напряжения. Сдвиг напряжения на входе усилителя — очевидный источник погрешности. У различных ОУ этот параметр сильно варьирует — от десятков микровольт у «прецизионных» ОУ до величин в 2–5 мВ у обычных бескорпусных ОУ, таких как LF411. К настоящему времени чемпионом по минимуму сдвига среди ОУ без стабилизации прерыванием является МАХ400М (Uсдв не превышает 10 мкВ). Мы ожидаем дальнейших достижений в этой области. Хотя большинство хороших одинарных ОУ (но не сдвоенные и не счетверенные) имеют выводы для регулировки сдвига, все же по ряду причин имеет смысл выбирать усилитель с малым начальным напряжением сдвига Uсдв. макс. Во-первых, у таким образом спроектированных ОУ наблюдается соответственно малый дрейф напряжения сдвига с температурой и временем. Во-вторых, достаточно точный ОУ не требует внешних элементов подстройки (подстроечный потенциометр занимает место, требует начальной подстройки, а со временем настройка может изменится). В-третьих, дрейф напряжения сдвига и подавление синфазных напряжений ухудшаются из-за разбаланса, вносимого потенциометром, регулирующим сдвиг. На рис. 7.4 показано, как регулировка сдвига увеличивает температурный дрейф.
Рис. 7.4. Типичная зависимость сдвига ОУ от числа оборотов регулирующего сдвиг многооборотного потенциометра для нескольких значений температуры.
Из рисунка видно, как зависит регулировка сдвига от оборотов потенциометра, с наилучшим разрешением в районе центра, особенно для больших значений сопротивления подстроечного потенциометра. Наконец, вы, как правило, обнаружите, что рекомендуемая внешняя цепь обеспечивает слишком большой диапазон настройки, а в результате почти невозможно уменьшить Uсдв до величины в несколько микровольт; но даже если это удастся сделать, настройка будет столь критичной, что вряд ли она останется надолго неизменной. И еще одно, о чем следует подумать, это то, что изготовителем прецизионного ОУ уже настроен нуль сдвига путем «лазерной подгонки» на стенде перед отправкой в продажу. Возможно, вам самим сделать это лучше не удастся. Наш совет: а) для прецизионных схем применяйте прецизионные ОУ и б) если вам требуется дополнительная подстройка сдвига, используйте схему тонкой подстройки, например одну из тех, что показана на рис. 7.5, где полный диапазон подстройки составляет ± 50 мкВ.
Рис. 7.5. Внешние цепи подстройки сдвига для прецизионных ОУ. а — инвертирующего; б — неинвертирующего.
Поскольку сдвиг напряжения может быть настроен на нуль, то в конечном итоге значение имеет лишь дрейф сдвига со временем, при изменении температуры и напряжения питания. Разработчики прецизионных ОУ много работают над минимизацией этих погрешностей. В этом смысле наилучшими параметрами обладают биполярные ОУ (в противоположность ОУ с ПТ-входом), но при их применении в бюджете погрешностей может начать доминировать входной ток. У лучших ОУ дрейф не превышает 1 мкВ/°С, а у наилучшего на сей момент ОУ без стабилизации прерыванием AD707 ΔUсдв. макс = 0,1 мкВ/°С.
Еще один фактор, который следует иметь в виду, это дрейф из-за самонагрева ОУ, когда он включен на низкоомную нагрузку. Чтобы исключить большие погрешности, вызываемые этим эффектом, часто приходится ограничивать нижнее значение сопротивления нагрузки 10 кОм. Как правило, это может ухудшать бюджет погрешностей следующего каскада — от тока смещения! Именно такого рода проблему мы встретим в нашем примере проектирования. Для тех схем, где важен дрейф в несколько микровольт, заметное влияние начинают оказывать температурный градиент (от расположенных вблизи выделяющих тепло компонентов) и термо-э. д. с. (от контактов разнородных металлов). Эти вопросы возникнут вновь, когда мы будем обсуждать в разд. 7.08 сверхпрецизионный усилитель со стабилизацией прерыванием.
В табл. 7.1 дано сравнение наиболее важных параметров семи наилучших прецизионных ОУ. Потратьте на нее некоторое время — это позволит вам хорошо почувствовать те компромиссы, на которые приходится идти при разработке высококачественных ОУ. Обратите внимание на противоречия между такими параметрами, как сдвиг напряжения (и его дрейф) и входной ток у биполярных ОУ и ОУ на ПТ с p-n-переходом. Вы получите также наименьшее напряжение шумов у биполярных ОУ, причем оно падает при увеличении тока смещения; ниже, при рассмотрении шумов в этой главе, увидим, почему это происходит. Однако желание получить низкий ток шумов всегда ведет к выбору ПТ ОУ, причины чего также будут ясны позднее. Вообще для получения малых входного тока и тока шумов выбирайте ПТ ОУ, а биполярные ОУ — для малых напряжения сдвига, дрейфа и напряжения шумов.
Среди ОУ с ПТ-входом доминируют ОУ на ПТ с p-n-переходом, особенно там, где нужна точность. В частности, МОП-транзисторы имеют уникальный ухудшающий их параметры эффект, который не наблюдается ни у биполярных транзисторов, ни у ПТ с p-n-переходом. Он выражается в том, что примесь ионов натрия в изолирующем затвор слое медленно перемещается под воздействием электрического поля, порожденного напряжением UЗИ(вкл), что приводит к дрейфу сдвига напряжения порядка 0,5 мВ за несколько лет. Этот эффект усиливается при повышении температуры и при большом сигнале на дифференциальном входе. Например, в паспорте ОУ с МОП-транзисторным входом СА3420 указано в качестве типичного изменение Uсдв 5 мВ за 3000 ч работы при 125 °C и входном напряжении 2 В. Эту натриево-ионную болезнь можно вылечить, вводя фосфор в область затвора. Например, фирма Texas Instruments использует в своих «линейных» КМОП-сериях ОУ (TLC270) и компараторов (TLC339 и TLC370) затворы из поликристаллического кремния, легированного фосфором. Это популярные недорогие устройства, выпускаемые в различных корпусах, с различными характеристиками по быстродействию и мощности и позволяющие получить приемлемый временной дрейф напряжения сдвига (50 мкВ сдвига на каждый вольт дифференциального входного напряжения).
Имеется важное исключение из общего правила, по которому ПТ ОУ, а особенно ОУ на МОП-транзисторах, имеют большее начальное напряжение сдвига и намного больший дрейф Uсдв с температурой и временем, чем биполярные ОУ. Это исключение касается так называемых усилителей с автоподстройкой нуля (или со стабилизацией прерыванием), в которых применяются аналоговые МОП-ключи и усилители для восприятия и корректировки остаточной погрешности сдвига обычного ОУ (который сам часто изготавливается на МОП-транзисторах на том же кристалле). ОУ со стабилизацией прерыванием дают даже более низкие напряжения сдвига и дрейф, чем наиболее точные биполярные ОУ — 5 мкВ (макс.) и 0,05 мкВ/°С (макс.) — но не бесплатно. Они имеют некоторые неприятные особенности, которые делают их неприемлемыми для многих применений. Мы детально обсудим эти особенности в разд. 7.08.
Коэффициент ослабления синфазных сигналов. Недостаточный коэффициент ослабления синфазных сигналов (КОСС) ухудшает точность схемы, так как появляется сдвиг напряжения, зависящий от уровня сигнала постоянного тока на входе. Обычно этим эффектом можно пренебречь: он эквивалентен малому изменению коэффициента усиления и в любом случае может быть преодолен за счет выбора конфигурации. Инвертирующий усилитель в отличие от неинвертирующего нечувствителен к КОСС операционного усилителя. Однако в измерительных усилителях часто выделяется малый дифференциальный сигнал на фоне большого синфазного смещения, поэтому большое значение КОСС является существенным параметром. В этих случаях надо тщательно продумывать конфигурацию схемы, а кроме того, выбирать ОУ с большим значением КОСС. И снова проблемы поможет решить ОУ высшего класса вроде ОР-77 с минимальным КОСС, равным 120 дБ (для сравнения: ОУ типа 411 обладают весьма умеренным КОСС в 70 дБ). Мы в дальнейшем кратко рассмотрим дифференциальные и измерительные усилители с высоким коэффициентом усиления и высоким КОСС.
Коэффициент ослабления изменений питания (КОИП). Изменение напряжения питания — причина небольших погрешностей ОУ. Как и большинство параметров ОУ, коэффициент ослабления изменений питания (КОИП) специфицируется по отношению к сигналу на входе. Например, ОР-77 по спецификации обладает КОИП равным ПО дБ на постоянном токе, т. е. изменение напряжения одного из источников питания на 0,3 В создает выходной сигнал, эквивалентный изменению сигнала на дифференциальном входе на 1 мкВ. КОИП резко падает с ростом частоты, и график, подтверждающий его безобразное поведение, часто приводится в паспортных данных. Например, у нашего фаворита ОР-77 спад КОИП начинается с 0,3 Гц и при 60 Гц он равен 83 дБ, а при 10 кГц-42 дБ. На самом деле это не создает больших трудностей, так как шум источника питания также падает при увеличении частоты, если источник питания как следует шунтирован емкостью. Правда, при использовании нестабилизированного источника питания могут доставить неприятности пульсации с частотой 100 Гц.
КОИП для источников питания положительной и отрицательной полярностей вообще говоря, различен, но это не играет никакой роли. Поэтому применение сдвоенного стабилизатора (разд. 6.19) может не дать никакого выигрыша.
«Нуль»-усилитель: входные погрешности. Схема усилителя на рис. 7.1 начинается с повторителя. Это сделано для обеспечения большого входного полного сопротивления. Здесь есть соблазн применить ПТ, но потери от большого Uсдв перекрывают выигрыш, даваемый малым значением входного тока, за исключением тех случаев, когда источник входного сигнала имеет большое полное сопротивление. Для ОУ ОР-77 ток смещения 2 нА создает погрешность 2 мкВ на 1 кОм полного сопротивления источника сигнала, a LT1055A на ПТ с p-n-переходом, хотя и дает пренебрежимо малую погрешность от тока, имеет дрейф сдвига напряжения порядка 16 мкВ/4 °C (4 °C принято за стандартный диапазон изменений температуры воздуха в лабораторных условиях). Входной повторитель снабжен настройкой нуля сдвига, поскольку начальное значение 25 мкВ (по спецификации) слишком велико. Как отмечалось выше, обратная связь увеличивает входное полное сопротивление до 200 000 МОм, и тем самым ошибка коэффициента усиления, порожденная конечным полным сопротивлением источника, меньшим 20 МОм будет меньше 0,01 %. Диоды Д1 и Д2 включены в схему защиты от перенапряжения на входе и должны иметь малую утечку (меньше 1 нА).
U1 управляет инвентирующим усилителем (U2), а значение R3 выбирается из соображений компромисса между погрешностью температурного сдвига U1 и погрешностью дрейфа тока смещения U2. Выбранное значение удерживает нагрев в пределах 5,6 мВт (при наихудших условиях 7,5 В на выходе), что ведет к повышению температуры на 0,8 °C (тепловое сопротивление ОУ около 0,14 °C/мВт, см. разд. 6.04) с соответственным сдвигом напряжения 0,3 мкВ. Сопротивление 10 кОм на входе U2 создает погрешность тока смещения, но так как U2 вместе с U3 охвачены петлей обратной связи, сводящей полный сдвиг к нулю, единственный существенный параметр — это температурный дрейф токовой погрешности. Для ОР-77 в паспорте приводятся данные о температурном дрейфе тока смещения (не часто указываемые изготовителями), из которых следует, что вклад дрейфа тока в бюджет погрешности равен 1,6 мкВ/4 °C. Снижение значения R3 уменьшит этот вклад, но ценой увеличения погрешности от нагрева U1.
Как было сказано выше в общем описании схемы, значение R3 таково, что требуется использование причудливого Т-образного звена в обратной связи, чтобы значения резисторов обратной связи оказались в диапазоне номиналов прецизионных проволочных резисторов. Если пользоваться обычный конфигурацией инвентирующего усилителя, то понадобятся резисторы на 100 кОм, 1 МОм и 10 МОм для коэффициента усиления 10, 100 и 1000 соответственно.
Входное полное сопротивление U2 может вызвать некоторые затруднения. При коэффициенте усиления, равном 1000, его дифференциальное входное сопротивление 25 МОм умножается благодаря следящей связи на A/1000 и составляет в замкнутой схеме 125000 МОм. К счастью, это более чем в миллион раз превосходит выходное сопротивление цепи, устанавливающей коэффициент усиления (9,4 кОм), поэтому погрешность будет намного меньше 0,01 %. Это один из худших случаев, который можно себе представить, но даже и здесь входное сопротивление ОУ не создает проблем. Отсюда видно, что входное сопротивление ОУ не создает никаких эффектов, которые стоило бы учитывать.
Дрейф напряжения сдвига U1 и U2 от времени, температуры и напряжения питания влияют на суммарную погрешность в равной степени, и их значения приведены в бюджете. Укажем, здесь что они автоматически компенсируются в каждом «обнуляющем» цикле, поэтому играет роль только кратковременный дрейф. Эти погрешности благодаря качеству ОУ лежат в микровольтовом диапазоне. U3 имеет несколько больший дрейф, но его приходится брать ПТ-типа, чтобы обеспечить малые значения тока утечки конденсатора. Так как выходной сигнал U3 ослабляется пропорционально выбранному коэффициенту, то эта погрешность, отнесенная ко входу, при больших коэффициентах усиления ослабляется. Это важный факт, поскольку большие коэффициенты усиления употребляются при низких уровнях сигнала, для которых требуется большая точность. Погрешности, создаваемые U3 на выходе, всегда одинаковы, поэтому они специфицируются в бюджете погрешностей как выходные погрешности (приведенные к выходу).
Обратите внимание на некоторые общие принципы проектирования, которые проясняются на этом примере: вы решаете некоторый набор задач, выбирая конфигурацию и элементы так, чтобы уменьшить погрешности до приемлемых значений. При этом необходимо идти на некоторые компромиссы и уступки, при этом их выбор зависит от внешних факторов (например, использование в качестве повторителя ОУ с ПТ-входом предпочтительнее, если полное сопротивление источника сигнала больше 50 кОм). В табл. 7.2 содержатся данные ОУ, которые можно использовать при проектировании прецизионных схем.
7.07. Выходные погрешности усилителя
Как указывалось в гл. 4, операционные усилители имеют существенные ограничения, связанные с их выходным каскадом. Ограниченная скорость нарастания, нелинейные искажения выходного сигнала (см. разд. 2.15), конечное выходное сопротивление разомкнутого контура могут причинить неприятности и, если их не учитывать, привести к ошеломляюще большим погрешностям прецизионной схемы.
Скорость нарастания: общие соображения. Как отмечалось в разд. 4.11, изменения напряжения выходного сигнала ОУ могут происходить со скоростью, не превышающей некоторого максимума. Этот эффект порождается схемой частотной коррекции ОУ, как увидим при более детальном анализе. Одним из следствий конечности скорости нарастания является ограничение амплитуды выходного сигнала на высоких частотах, равное, как было показано в разд. 4.12 и как видно на рис. 7.6, UПП = S/πf, где UПП — полный размах сигнала.
Рис. 7.6. Частотная зависимость максимального размаха сигнала на выходе ОУ.
Второе следствие лучше всего объяснить с помощью графика зависимости скорости нарастания от напряжения дифференциального входного сигнала (рис. 7.7).
Рис. 7.7. Для получения полной скорости нарастания ОУ требуется значительное дифференциальное входное напряжение.
Смысл его в том, что схема, требующая большой скорости нарастания, работает с существенными напряжениями между входными клеммами ОУ. Это может привести к катастрофическим последствиям в схеме, претендующей на высокую точность.
Чтобы понять, чем определяется скорость нарастания, заглянем внутрь операционного усилителя. Подавляющее большинство ОУ могут быть смоделированы схемой, изображенной на рис. 7.8.
Рис. 7.8. Типичная схема частотной коррекции ОУ.
Дифференциальный входной каскад, нагруженный на токовое зеркало, возбуждает каскад с большим коэффициентом усиления по напряжению и с корректирующим конденсатором между выходом и входом. Выходной каскад — пушпульный повторитель с единичным коэффициентом усиления. Корректирующий конденсатор выбирается так, чтобы коэффициент усиления разомкнутой петли усилителя становился равным единице раньше, чем сдвиг фазы, вызванный остальными каскадами усилителя, станет существенным.
Таким образом, С выбирается таким, чтобы fср, полоса частот единичного коэффициента усиления, была близка к полюсу, с которого начинается спад усиления следующего каскада, как описывалось в разд. 4.34. Входной каскад имеет очень высокое выходное сопротивление и для следующего каскада является источником тока.
В операционных усилителях возникает ограничение скорости нарастания, когда выходной сигнал возбуждает один из транзисторов дифференциального каскада почти до насыщения, действуя на следующий каскад полным током эмиттера в дифференциальной паре. Это происходит при дифференциальном входном напряжении около 60 мВ, при котором соотношение токов в дифференциальном каскаде равно 10:1. В этот момент напряжение коллектора Т5 изменяется с максимально возможной скоростью, а весь ток Iэ идет на заряд конденсатора С. Таким образом, Т5 и С образуют интегратор с ограниченной скоростью нарастания на выходе. Выведем выражение скорости нарастания.
Скорость нарастания: детальное рассмотрение. Прежде всего напишем выражение для коэффициента усиления разомкнутого контура по напряжению при малом сигнале переменного тока без учета сдвигов фаз:
АU = gmXC = g/2πfC,
откуда полоса единичного усиления (частота, при которой АU = 1) есть
fср = (1/2π)(gm/C).
Скорость нарастания определяется током Iэ, заряжающим конденсатор С:
S = dU/dt = Iэ/С.
Для обычного дифференциального усилителя без эмиттерных резисторов gm связано с Iэ соотношением
gm = 1/rэ = Iэ/2UT = Iэ/50 мВ.
Подставляя это выражение в формулу скорости нарастания, находим
S = 2UTgm/C,
т. е. скорость нарастания пропорциональна gm/C, как и ширина полосы единичного усиления. В самом деле, S = 4πUTfср = 0,3fср, где fср выражено в МГц, а S — в В/мкс. Это выражение не зависит от конкретных значений С, gm, Iэ и т. д. и дает хорошую оценку для скорости нарастания (классический ОУ 741, например, имеет fср ~= 1,5 МГц и скорость нарастания порядка 0,5 В/мкс). Отсюда ясно, что ОУ с большим значением произведения ширины полосы пропускания на коэффициент усиления (fср) будет иметь большую скорость нарастания. Нельзя улучшить быстродействие ОУ только увеличивая ток Iэ входного каскада, поскольку увеличение коэффициента усиления (за счет роста gm) требует соответственного увеличения значения С для частотной коррекции. Добавочное усиление в других каскадах ОУ также не помогает.
Из изложенного ясно, что увеличение fср за счет увеличения токов коллекторов, подбора более быстродействующих транзисторов и т. д. увеличивает скорость нарастания. Конечно, всегда желательно иметь большое значение fср, и это хорошо известно разработчику ИС, который конечно же сделал, проектируя кристалл, все, что мог. Тем не менее существует способ обойти ограничение S = 0,3fср, и он основан на том, что крутизна определяется значением Iэ (gm = Iэ/2UT). Можно использовать простой прием для увеличения Iэ (и соответственно скорости нарастания при фиксированном значении fср, а в силу этого и при фиксированной форме частотной характеристики).
Проще всего добавить некоторое сопротивление в эмиттерную цепь дифференциального входного каскада. Предположим, что мы сделали что-нибудь в этом роде, в результате чего Iэ вырос в m раз при постоянном значении gm. Повторив приведенные выше выкладки, получим S = 0,3mfср.
Упражнение 7.1. Покажите, что описанный прием дает указанный эффект.
Увеличение скорости нарастания. Итак, существует несколько способов получения высокой скорости нарастания: а) применить ОУ с большим fср; б) увеличить fср за счет уменьшения емкости конденсатора частотной коррекции; конечно, это возможно только в тех схемах, где коэффициент усиления при замкнутом контуре обратной связи больше единицы; в) уменьшить крутизну входного каскада gm, добавив в эмиттерную цепь дополнительные резисторы, а затем пропорционально увеличить Iэ или уменьшить С; г) изменить схему входного каскада.
Третий способ (уменьшение gm) применяется во многих ОУ. Например, НА2605 и НА2505 почти одинаковы, но НА2505. содержит эмиттерные резисторы во входном каскаде, которые увеличивают скорость нарастания ценой уменьшения коэффициента усиления разомкнутого контура. Это иллюстрируется приводимыми данными. ПТ ОУ с их малым gm входного каскада имеют более высокую скорость нарастания по тем же причинам.
Четвертый способ состоит в применении «перекрестно-сдвоенного уменьшения крутизны», для которого требуется введение в схему входного каскада целого дополнительного набора транзисторов, болтающихся без дела при малых значениях сигнала, но всегда готовых, если нужно, дать дополнительный ток. Это дает выигрыш в виде улучшения характеристик ОУ по шумам и смещению, достающийся ценой некоторого усложнения схемы по сравнению с простой добавкой эмиттерных резисторов. Данный прием применяется в изделиях фирм Harris НА5141 и НА5151, Raytheon 4531, Signetics 535 и 538 для увеличения скорости нарастания при больших дифференциальных входных сигналах. Зависимость скорости нарастания от входного дифференциального сигнала показана на рис. 7.9.
Рис. 7.9.
Полоса пропускания и время установления. Скорость нарастания — это показатель того, насколько быстро может изменяться напряжение выходного сигнала. Спецификация ОУ по скорости нарастания дается обычно в предположении большого дифференциального входного напряжения (60 мВ и более), что вполне оправдано: при обычно встречающихся на практике значениях петлевого усиления ОУ, выходное напряжение которого отличается от того, которое, должно быть, будет испытывать на входе сильное воздействие сигнала по цепи обратной связи. В высокоскоростных прецизионных схемах не менее важно время установления выходного сигнала на том значении, к которому оно стремится, следуя за изменением входного. Этот параметр — время установления (время, необходимое для установления выходного сигнала с заданной точностью на окончательное значение, см. рис. 7.10) — всегда приводится в паспортах таких устройств как цифро-аналоговые преобразователи, где точность — суть игры, а для ОУ он обычно не указывается.
Рис. 7.10. Определение времени установки. * Иногда определяется при Uвых = логический порог или при Uвых = 0,5Uконечн.
Мы сможем оценить время установления ОУ, рассмотрев вначале другую проблему, а именно: что произойдет с идеальным скачком напряжения в некоторой цепи, нагруженной на простой RC-фильтр низкой частоты (рис. 7.11).
Рис. 7.11. Время установления RС-фильтра нижних частот.
Несложно вычислить, что отфильтрованный сигнал будет иметь время установления, указанное на этом рисунке. Это действительно важный результат, поскольку часто мы ограничиваем при помощи фильтра полосу пропускания, чтобы уменьшить шум (об этом еще будет сказано в этой главе).
Распространяя этот простой результат на ОУ, достаточно вспомнить, что ОУ с частотной коррекцией имеет спад 6 дБ/октава, точно так же, как и НЧ-фильтр. При включении ОУ в схему с ОС, имеющую коэффициент усиления К, ее «полоса пропускания» (частота, на которой петлевое усиление падает до единицы) приближенно определяется выражением:
f-ЗдБ = fcp/K.
Как основной результат можно отметить, что система с полосой пропускания В имеет время реакции τ = 1/2πΒ; отсюда следует, что эквивалент «постоянной времени» ОУ равен
τ ~= K/2πfcp.
При этом время установления грубо можно оценить как 5τ ÷ 10τ.
Попробуем применить наш прогноз к реальности. ОР-44 производства фирмы PMI — это прецизионный быстродействующий некомпенсированный (К >= 3) ОУ с типичным значением fср 23 МГц. Наша простая формула дает оценку времени реакции, равную 21 нc, что соответствует времени установления 0,15 мкс (7τ) до 0,1 %. Это очень хорошо совпадает с реальным значением 0,2 мкс, приводимым в паспорте на ОУ в качестве типичного для точности установления 0,1 %.
Стоит отметить несколько моментов: (а) наша простая модель дает нам только нижнюю границу фактического значения времени установления в реальной схеме; всегда нужно проверить еще ограниченное скоростью нарастания время нарастания, которое может быть определяющим; (б) даже если скорость нарастания не создает проблем, время установления может быть много больше, чем в нашей идеализированной «однополюсной» модели; это зависит от схемы компенсации ОУ и запаса по фазе; (в) ОУ устанавливается тем быстрее, чем лучше применяемая схема частотной компенсации обеспечивает зависимость сдвига фазы от частоты в разомкнутой петле в виде прямой линии при логарифмическом масштабе (например, ОР-42, рис. 7.12);
Рис. 7.12. Частотные зависимости усиления и сдвига фазы ОР-42.
ОУ, имеющие колебания на фазово-частотной характеристике, более склонны к выбросам и пульсациям, вроде тех, что показаны на графике рис. 7.10; (г) быстрое установление с точностью до 1 % не обязательно гарантирует быстрое установление в пределах 0,1 %, может существовать «длинный хвост» (рис. 7.13); (д) прямая подстановка в реальный случай приводимого изготовителем значения времени установления не всегда пригодна.
В табл. 7.3 приведен ряд быстродействующих ОУ для применений, требующих большого значения fср, высокой скорости нарастания и малого времени установления.
Рис. 7.13. а — по мере подхода входной погрешности к зоне 60 мВ скорость нарастания уменьшается; б — установка с высокой точностью может длиться удивительно долго.
Погрешность коэффициента усиления. Существует еще одна погрешность, причиной которой является конечное значение коэффициента усиления без ОС, а именно: погрешность коэффициента усиления при замкнутой ОС из-за конечного петлевого усиления. В гл. 3 мы вывели выражение для коэффициента усиления реальный усилителя с замкнутой петлей ОС, К = А/(1 + АВ), где А — коэффициент усиления без ОС, а В — «усиление» цепи обратной связи. Можно было бы предположить, что величина коэффициента усиления ОУ без обратной связи А >= 100 дБ является вполне достаточной, но если мы попробуем сконструировать сверхпрецизионную схему, то здесь нас ожидает сюрприз. Из предыдущего выражения для коэффициента усиления нетрудно показать, что «погрешность усиления», определяемая как
σK = (Kидеальный — Kреальный)/Kидеальный
в точности равна 1/(A + АВ) и может изменяться в диапазоне от 0 при А = до 1 (100 %) при А = 0.
Упражнение 7.2. Выведите только что приведенное выражение для погрешности коэффициента усиления.
Результирующая величина частотно-зависимой погрешности коэффициента усиления далека от того, чтобы ей можно было пренебречь. Например, ОУ 411, у которого коэффициент усиления без ОС на низкой частоте составляет 106 дБ, будет давать погрешность усиления 0,5 % при включении его в схему с расчетным значением коэффициента усиления с замкнутой ОС 1000. Еще хуже то, что коэффициент усиления без ОС начиная с частоты 20 Гц падает со скоростью 6 дБ/октава, так что наш усилитель имел бы на частоте 500 Гц погрешность коэффициента усиления в 10 %! На рис. 7.14 даны кривые зависимости погрешности коэффициента усиления от частоты при значениях коэффициента усиления с ОС, равных 100 и 1000, для ОР-77, имеющего на низкой частоте исключительно высокий коэффициент усиления 140 дБ. Отсюда становится очевидным, что для сохранения точности даже на средних частотах необходимо иметь достаточно большой коэффициент усиления и высокое значение fcp.
Рис. 7.14. Погрешность усиления ОР-77.
Приведенные графики мы построили, используя данные в паспорте кривые частотной зависимости коэффициента усиления без ОС. Даже в том случае, если в спецификации на применяемый вами ОУ дан указанный график, лучше всего идти в обратном направлении — от паспортных значений fcp и коэффициента усиления по постоянному току, вычисляя величину коэффициента усиления без ОС на интересующей нас частоте, а отсюда и погрешность усиления как функцию частоты. Эта процедура приводит к следующему выражению:
где В, как обычно, — коэффициент передачи цепи обратной связи. Разумеется, в некоторых схемах, таких как фильтры, В может также зависеть от частоты.
Упражнение 7.3. Выведите представленное выше выражение для δκ(f).
Переходные нелинейные искажения и выходное сопротивление. Некоторые ОУ используют простой пушпульный выходной каскад без смещения баз на два диодных перепада в разные стороны, как описывалось в разд. 2.15. Это приводит к искажениям класса В при значениях выходного сигнала, близких к нулю, так как возбуждающий повторитель каскад должен давать напряжению баз приращение 2UБЭ каждый раз, когда выходной ток проходит через нуль (рис. 7.15).
Рис. 7.15. Переходные искажения класса В в пушпульном выходном каскаде.
Переходные искажения могут быть существенны, в частности, в области высоких частот, где петлевое усиление падает. Оно сильно уменьшается в тех ОУ, где выходная пушпульная схема смещена в состояние слабой проводимости (класс АВ). Примером последнего типа является популярная схема 741, в то время как у ее предшественника ОУ 709 используется простое смещение выходного каскада класса В. Прекрасная во всем остальном, схема 324 по этим причинам может давать большие искажения. Правильный выбор ОУ имеет колоссальное значение для получения высококачественных характеристик усилителей звуковых частот. Возможно, именно эти искажения дают существенный вклад в то, что любители звукозаписи относят к «шумам транзисторов». Некоторые современные ОУ, особенно те, что предназначаются для звукотехники, спроектированы так, чтобы получить исключительно малую величину переходных нелинейных искажений.
Примерами могут служить LT1028, LT1037 и LM833. LM833, в частности, имеет во всем диапазоне звуковых частот 20 Гц-20 кГц величину нелинейных искажений не более 0,002 %. (Правда, это всего лишь заявка, так что не будем слишком доверчивы!) Все эти усилители имеют также очень низкие значения напряжения шумов; фактически LT1028 на сегодня является мировым чемпионом по этому параметру, имея еш = 1,7 нВ/√Гц (макс.) при 10 Гц.
Выходное сопротивление разомкнутого ОУ будет наивысшим при значениях напряжения выходного сигнала, близких к нулю, поскольку выходные транзисторы работают при этом с наименьшими значениями тока. Выходное полное сопротивление растет также на высоких частотах с падением коэффициента усиления транзисторов (из-за частотной коррекции) и может слегка увеличиваться и на очень низких частотах благодаря температурной обратной связи через кристалл.
Можно легко отмахнуться от эффекта конечности выходного полного сопротивления разомкнутого усилителя, считая, что обратная связь все спишет. Но если учесть, что некоторые ОУ имеют выходное сопротивление в разомкнутом состоянии порядка сотен ом, то станет ясно, что этим пренебрегать нельзя, особенно при малых и средних коэффициентах петлевого усиления. На рис. 7.16 показаны типичные графики выходных полных сопротивлений ОУ с обратной связью и без нее.
Рис. 7.16. а — измеренные частотные зависимости полного выходного сопротивления без ОС для некоторых популярных ОУ; б — частотная зависимость полного выходного сопротивления ОУ 411 и ОР-27 при замкнутой ОС.
Работа на емкостные нагрузки. Конечное значение выходного сопротивления разомкнутого ОУ может явиться причиной серьезных затруднений при попытке работы на емкостную нагрузку. Это связано с запаздыванием сигнала или сдвигом фазы, вызванным комбинацией выходного сопротивления и емкостной нагрузки, подключенной на землю. Такая ситуация может привести к неустойчивости схемы с обратной связью, если значению спада усиления на 3 дБ указанной цепи соответствует достаточно низкая частота, так как появляется существенная добавка к сдвигу фазы в 90°, уже имеющемуся из-за частотной компенсации. Для примера допустим, что в качестве нагрузки для ОУ с выходным сопротивлением 200 Ом служит тридцатиметровый коаксиальный кабель. Нагрузка эквивалентна конденсатору емкостью 3000 пФ и образует RC-фильтр нижних частот с точкой, отвечающей значению —3 дБ, на частоте 270 кГц. Это намного меньше частоты единичного усиления для типичного ОУ, поэтому автоколебания будут весьма вероятны при высоком коэффициенте петлевого усиления (например, у повторителя).
Существуют два способа решения этих вопросов. Один из них состоит в добавлении последовательно выходу резистора и введении обратной связи на высоких частотах непосредственно с выхода ОУ, а на низких частотах и постоянном токе — от точки присоединения кабеля (рис. 7.17). Конкретные значения параметров, указанные на второй схеме, характерны для данного ОУ и схемы его включения и дают представление о том, какая емкость может служить нагрузкой. Но такой прием ухудшает высокочастотные характеристики, так как обратная связь на высоких частотах не влияет на сигнал на кабеле.
Рис. 7.17.
Буферные усилители мощности с единичным коэффициентом усиления. Если метод расщепления цепи обратной связи нельзя применить, то лучшее, что можно сделать, — это добавить буферный каскад сильного тока с единичным коэффициентом усиления внутрь петли (рис. 7.18).
Рис. 7.18.
Указанные на схеме устройства имеют коэффициент усиления по напряжению, близкий к единице, малое выходное сопротивление и могут дать выходной ток до 250 мА. Они не дают сколько-нибудь значительного сдвига фазы вплоть до частоты единичного коэффициента усиления fср большинства ОУ, и их можно включать в контур обратной связи без дополнительной частотной компенсации. В табл. 7.4 приведен краткий список буферных усилителей. Конечно же, эти «мощные бустеры» можно использовать для работы с нагрузками, требующими больших токов, независимо от того, есть проблемы с емкостной нагрузкой или нет. К сожалению, большинство буферных усилителей не содержат встроенных цепей ограничения по току или предотвращения теплового пробоя, поэтому их применение требует осторожности. Устройства, являющиеся исключением из этого правила и имеющие встроенную в кристалл защиту, перечислены в табл. 7.4, например, LT1010.
Заметим, что приведенный пример выглядел бы иначе, если бы кабель был включен на свое характеристическое сопротивление. Он действовал бы как чисто активное сопротивление в пределах от 50 до 100 Ом в зависимости от типа кабеля. В этом случае буферный усилитель был бы обязателен и должен был давать ток ±200 мА для создания сигнала +10 В на нагрузке с полным сопротивлением 50 Ом. Более детально этот вопрос обсуждается в разд. 13.09.
На схему из предыдущего примера не влияют выходные параметры ОУ, поскольку она работает, в сущности, на постоянном токе.
7.08. Усилители с автоподстройкой нуля (стабилизированные прерыванием)
Даже наилучшие прецизионные ОУ, обладающие малым сдвигом, не могут сравниться по этому параметру с имеющими ошеломляюще низкое Uсдв так называемыми «стабилизированными прерыванием» или «автоматически выбирающими нуль» операционными усилителями. Ирония заключается в том, что эти интересные усилители построены на КМОП-транзисторах, во всех остальных случаях отличающихся своей посредственностью в том, что касается напряжения сдвига или дрейфа. Примененный, здесь трюк состоит в том, что в кристалл встроены второй ОУ (настраивающий нуль), а также несколько аналоговых МОП-ключей и запоминающих погрешность сдвига конденсаторов (рис. 7.19).
Рис. 7.19. Стабилизированные прерыванием ОУ типа 7650.
Основной ОУ действует как обычный несовершенный усилитель. Работа нуль-усилителя состоит в отслеживании входного сдвига основного ОУ и подстройке по мере необходимости медленно изменяющегося корректирующего сигнала с тем, чтобы попытаться привести входной сдвиг точно к нулю. Поскольку нуль-усилитель сам имеет ошибку сдвига, имеется еще один цикл работы, во время которого нуль-усилитель корректирует собственное напряжение сдвига.
Итак, цикл автоподстройки нуля протекает следующим образом: (а) нуль-усилитель отключается от входа, его входные клеммы закорачиваются, а выход соединяется с C1, конденсатором, хранящим корректирующий сигнал; при этом сдвиг нуль-усилителя становится равным нулю; (б) вход нуль-усилителя подключается ко входу схемы, а выход — к конденсатору C2, хранящему корректирующий сигнал основного усилителя; теперь становится равным нулю сдвиг основного усилителя. Аналоговые МОП-ключи управляются встроенным в кристалл генератором с типичным значением частоты в несколько сотен герц. Конденсаторы хранения напряжения ошибки имеют типичное значение емкости 0,1 мкФ и в большинстве случаев являются навесными компонентами; фирмы LTC, Maxim и Teledyne выпускают ряд удобных усилителей с автоподстройкой нуля, в которых дискретные конденсаторы встроены прямо в корпус ИМС.
ОУ с автоматической настройкой нуля наилучшим образом делает то, для чего он и был сконструирован, а именно: обеспечивает значения Uсдв (и температурного коэффициента) в пять раз лучшие, чем у наилучших прецизионных биполярных ОУ (см. табл. 7.2). Более того, они делают это, полностью сохраняя скорость и полосу пропускания ОУ, в отличие от применявшихся ранее синхронных усилителей, которые также называли «усилители с прерыванием», но которые имели полосу пропускания, ограниченную долями частоты таймера прерывателя (см. ниже).
Это хорошие новости. Плохие же заключаются в том, что усилители с автоподстройкой нуля имеют ряд «недугов», которые нам необходимо знать. Прежде всего, будучи устройствами КМОП-типа, большинство из них серьезно ограничены по величине питания (типичное полное напряжение питания 15 В) и поэтому не могут работать от обычных источников питания ±15 В. Исключением из этого правила являются «высоковольтные» ОУ с автоподстройкой нуля фирм Maxim МАХ430/2 и Teledyne TSC915 и TSC76HV52, работающие при напряжении питания +15 В. Во-вторых, большинство такого рода ОУ требуют внешних (навесных) конденсаторов (исключения: LTC1050, Maxim МАХ430/2, Teledyne TSC911/13/14). Третья проблема со многими усилителями данного типа (особенно с теми, у которых ограничено напряжение питания) состоит в том, что у них значительно ограничен диапазон входного синфазного сигнала; например, популярный ОУ ICL7650 имеет гарантированный диапазон синфазного входного сигнала от — 5 до +1,5 В, когда он запитан от обычного для него источника питания ± 5 В (для усовершенствованного ОУ ICL7652 этот диапазон составляет от -4,3 до +3,5 В; это более широкий диапазон, но поскольку он не включает потенциала минусового источника питания, данный усилитель нельзя запитывать от «однополярного» источника). Намного лучше обстоит дело с высоковольтными усилителями - например, МАХ432 имеет гарантированный диапазон синфазного сигнала от —15 до +12 В при питании от источника ±15 В. В табл. 4.1 показано, какие усилители с прерыванием имеют диапазон синфазного входного сигнала, ограниченный снизу напряжением питания; хотя популярный ICL7652 не входит в этот перечень, однако улучшенные версии фирм LTC (LTC1052) и Maxim (ICL7652B) в него входят, что позволяет использовать для их питания обычный однополярный источник.
Четвертый недостаток ОУ КМОП-типа — их слабый выход по току, иногда составляющий всего лишь 1–2 мА. Превосходный во всех остальных отношениях, МАХ432 может выдать ток не более 0,5 мА! Пятой в перечне недостатков, но часто первой по важности, является проблема шумов от тактового генератора. Она возникает из-за емкостной связи в МОП-ключах (см. разд. 3.12), что приводит к резким выбросам сигнала на выходе. Спецификации здесь часто вводят в заблуждение, так как в них обычно оговаривается величина отнесенного ко входу шума при Rи = 100 Ом, а кроме того, его величина дается только для очень низких частот; например, типичное значение отнесенного ко входу шума составляет 0,2 мкВ (от постоянного тока до 1 Гц, при Rи = 100 Ом). Однако при нулевом входном сигнале на выходе может наблюдаться последовательность импульсов чередующейся полярности длительностью 5 мкс и величиной 15 мВ! В низкочастотных схемах можно (и необходимо) ставить на выходе RC-фильтр, который ограничит полосу пропускания до нескольких сотен герц и устранит указанные выбросы. Такого рода импульсный шум не имеет также никакого значения для интегрирующих схем (например, для интегрирующего АЦП, см. разд. 9.21) или для такого рода схем, в которых выходной сигнал изменяется медленно (например, в схеме с термопарой на входе и вольтметром на выходе). Итак, если все, что нам нужно — это отследить очень медленно изменяющийся сигнал, и если исходя из этого мы отфильтруем выходной сигнал фильтром нижних частот до очень малых значений частоты (ниже 1 Гц), то усилитель с прерывателем действительно даст нам меньший шум, чем обычный малошумящий ОУ; см. рис. 7.20.
Рис. 7.20. На очень низких частотах стабилизированные прерыванием ОУ имеют шумы меньше, чем обычные малошумящие ОУ. Шумы измерены в полосе частот от 0 до указанного значения.
(Maxim Integrated Products, Inc)
Последняя проблема, связанная с усилителями с автоподстройкой нуля, — их катастрофические характеристики по насыщению. Происходит следующее. Автоматически настраивающая нуль схема при попытке привести разностное напряжение на входе к нулю действует так, как если бы в полной мере работала обратная связь. Если выход усилителя насыщен (или если отсутствует внешняя цепь, обеспечивающая обратную связь), то на входе будет большое дифференциальное напряжение, которое нуль-усилитель воспримет как входную погрешность сдвига; при этом он слепо выдаст большое корректирующее напряжение, которое будет подзаряжать корректирующие конденсаторы до тех пор, пока нуль-усилитель сам не войдет в насыщение. Восстановление длится невероятно долго — до секунды!
«Лекарство» такое: чувствовать, когда выход подходит к насыщению и фиксировать вход, чтобы предотвратить насыщение. Большинство ОУ с автоподстройкой нуля с этой целью снабжены «фиксатором» выхода, который для предотвращения насыщения подключается назад к инвертирующему входу. Не допустить насыщения в усилителе с прерыванием, не имеющем «фиксирующего» вывода (а также и в обычном ОУ), можно, подключив параллельную цепь обратной связи из двунаправленного стабилитрона (два встречно-последовательно соединенных стабилитрона), которая фиксирует выход на уровне напряжения пробоя стабилитрона, не позволяя ему достигать напряжения питания; лучше всего такой проем работает в инвертирующей схеме.
Кое-что еще о схемах с прерыванием
Усилитель со связью по переменному току. Рассматривая описанные выше усилители с автоподстройкой нуля с помощью прерывателя, не спутайте этот способ с другим методом «прерывания», а именно: с традиционным узкополосным усилителем с прерывателем, в котором малый сигнал постоянного тока преобразуется («прерывается» с известной частотой) в сигнал переменного тока, усиливается усилителями переменного тока и, наконец, демодулируется путем наложения на него сигнала той же формы, что использовалась первоначально для прерывания исходного сигнала (рис. 7.21). Данная схема совершенно отлична от только что рассмотренного нами метода автоподстройки нуля с полной полосой пропускания, что особенно проявляется в ее раскачке при подходе частоты сигнала к частоте тактового генератора, составляющей обычно всего несколько сотен герц. Иногда это можно наблюдать с помощью самописца или другого низкочастотного измерительного прибора.
Рис. 7.21. Усилитель с прерывателем и связью по переменному току.
Температурные сдвиги. При построении усилителей постоянного тока с субмикровольтными напряжениями сдвига необходимо полностью отдавать себе отчет в возможности появления температурных сдвигов, которые создают небольшие термоэлементы, образуемые соединением разнородных металлов (см. разд. 15.01). В случае если пара таких соединений имеет разную температуру, мы получаем эффект Зеебека («термо-э. д. с.»). На практике обычно имеются точки соединения проводников с различным покрытием; температурный градиент или даже небольшой поток воздуха легко может вызвать появление напряжения в несколько микровольт. Даже однотипные провода разных изготовителей могут давать термо-э. д. с. величиной 0,2 мкВ/°С, в четыре раза больше, чем паспортное значение дрейфа МАХ432! Наилучший способ исключить влияние тепловых потоков и градиентов — в симметричном, насколько это возможно, расположении проводников и компонентов на печатной плате.
Внешняя настройка нуля. Фирма National выпускает превосходный чип «автоподстройки нуля» (LMC669), который можно использовать как внешний нуль-усилитель, превращающий любой выбранный нами ОУ в усилитель с автоподстройкой нуля (рис. 7.22).
Рис. 7.22. ИМС LM669 для внешней автоподстройки нуля.
Наиболее естественным является включение этого кристалла в инвертирующую схему, при котором он, как показано, задает на неинвертирующем входе такое напряжение, которое приводит входной сдвиг к нулю. Работает эта схема не столь хорошо, как рассмотренные ранее специально предназначенные для этих целей усилители с автоподстройкой нуля: Uсдв составляет 5 мкВ (тип.) или 25 мкВ (макс). Однако она позволяет нам использовать метод автоподстройки нуля с любым ОУ. Можно, например, применить его для установки нуля непрецизионного, но мощного или высокоскоростного ОУ. Представленные на схемах типы ИМС-хорошие примеры. LM675 — превосходный мощный ОУ (выходной ток 3 А, сложная встроенная в кристалл схема токовой и тепловой защиты), имеющий, однако, напряжение сдвига до 10 мВ (макс). Автоподстройка нуля уменьшает его примерно в 1000 раз. В свою очередь, LM6364-быстродействующий усилитель (fср = 175 МГц, скорость нарастания составляет 350 В/мкс) с напряжением сдвига 9 мВ (макс), которое уменьшается здесь раз в 400. Обратите внимание на фильтрующие RС-цепочки как на входе, так и на выходе схемы автоподстройки нуля: они необходимы, чтобы подавить шумы прерывателя в этой (медленной) корректирующей петле, когда данный метод используется для усиления малых сигналов и с такими малошумящими устройствами, каковым является LM6364 (8 нВ/√Гц).
Измерительный усилитель. Еще один метод «прерывания», так называемый «коммутируемый с автоподстройкой нуля» (или КАН) усилитель, первоначально был применен фирмой Intersil. В этом методе, который был воплощен в ИМС ICL7605 измерительного усилителя с «плавающим конденсатором», МОП-транзисторные ключи дают возможность запомнить дифференциальный входной сигнал на конденсаторе, а затем усилить его с помощью неинвертирующего усилителя, стабилизированного прерыванием (рис 7.23).
Рис. 7.23. Дифференциальный усилитель ICL7605 с «плавающим конденсатором» и высоким КОСС.
Как и у стандартного усилителя с автоподстройкой нуля, здесь также имеются обусловленные зарядовой связью выбросы с тактовой частотой, которые налагают на КАН-метод те же ограничения, которые мы видели ранее. Хотя в первом издании мы с энтузиазмом говорили о КАН-усилителях, что «… представляется хороший случай коренным образом улучшить точность ОУ и технологию измерительных усилителей», однако их превзошли улучшенные схемы автоподстройки нуля, в которых сигнал всегда проходит через один усилитель. Тем не менее, отдавая должное КАН-усилителю, необходимо отметить, что примененный в ИМС 7605 метод «плавающего конденсатора» имеет ряд уникальных достоинств, в том числе диапазон синфазного входного напряжения, на 0,3 В превышающий оба напряжения питания, минимальное значение КОСС 100 дБ даже при единичном усилении, а также самое малое среди всех монолитных усилителей напряжение сдвига. При использовании этих усилителей, однако, нельзя забывать, что необходима фильтрация шума на выходе, напряжение питания ограничено величиной ± 8 В, а полное сопротивление нагрузки должно быть высоким, поскольку полное выходное сопротивление периодически (с тактовой частотой) возрастает.
Готовый блок «плавающего конденсатора» LTC1043 позволяет вам самим изготовить дифференциальный усилитель с высоким КОСС. Измерительные усилители подробно рассматриваются в следующем разделе. Большинство выпускаемых в настоящее время ОУ с автоподстройкой нуля включены в таблицу прецизионных операционных усилителей (табл. 7.2).
Дифференциальные и измерительные усилители
Термином «измерительный усилитель» обозначают дифференциальный усилитель со связями по постоянному току, высоким коэффициентом усиления, высоким входным полным сопротивлением и большим КОСС. Такие усилители используются для усиления малых дифференциальных сигналов, приходящих от датчиков, к которым могут быть примешаны большие синфазные сигналы или постоянные уровни.
Примером таких датчиков является тензодатчик — резисторный мост, у которого, деформация (удлинение материала, к которому он прикреплен) вызывает изменение сопротивления (см. разд. 15.03). В результате изменяется выходное дифференциальное напряжение моста, возбуждаемого фиксированным постоянным смещением +10 В (рис. 7.24).
Рис. 7.24. Мост из тензодатчиков, подключенный к усилителю.
У всех резисторов примерно одно и то же сопротивление (типичное значение 350 Ом), но они подвергаются различной деформации. Чувствительность по всей шкале обычно равна 2 мВ на 1 В, поэтому диапазон изменения выходного сигнала будет равен 20 мВ при постоянном возбуждении 10 В. Это небольшое дифференциальное выходное напряжение пропорционально деформации и наложено на постоянный уровень 5 В. Дифференциальный усилитель должен обладать исключительно большим КОСС для усиления милливольтового дифференциального сигнала при одновременном подавлении синфазной помехи ~ 5 В. Предположим, например, что мы хотим иметь максимальную ошибку 0,1 %. Так как 0,1 % от полной шкалы есть 0,02 мВ, наложенные на 5000 мВ, КОСС должен превосходить 250000:1, т. е. ~ 108 дБ.
Способы, применяемые для создания хороших измерительных усилителей и вообще дифференциальных усилителей с высоким коэффициентом усиления, подобны только что обсуждавшейся схемотехнике. Существенными являются погрешности тока смещения, сдвига и КОСС. Начнем с обсуждения дифференциальных усилителей для некритичных применений, чтобы оценить требования к ним и схемные пути их удовлетворения.
7.09. Простой разностный усилитель
Типичная ситуация, в которой достаточно умеренное значение подавления синфазного сигнала, показана на рис. 7.25.
Рис. 7.25. Стабилизатор тока.
Эта токочувствительная схема применяется как часть источника питания постоянного тока для создания неизменного тока в нагрузке. Падение напряжения на четырехпроводном прецизионном мощном резисторе 0,01 Ом пропорционально току нагрузки. Хотя один конец резистора R5 присоединен к земле, глупо было бы использовать одновходовый усилитель, поскольку миллиомное сопротивление соединения даст ошибку в 10 %! Очевидно, что нужен дифференциальный усилитель, но от него не требуется особенно высокий КОСС, поскольку синфазные помехи будут малы. ОУ включен в обычную конфигурацию разностного усилителя, как было описано в разд. 4.09. Резисторы R1, R2 и R5 — прецизионные проволочные резисторы для максимальной стабильности коэффициента усиления, a R3 и R4, определяющие КОСС, — простые однопроцентные металлопленочные резисторы. Таким образом, вся схема имеет точность коэффициента усиления, близкую к точности токочувствительного резистора, и имеет КОСС порядка 40 дБ.
Прецизионный дифференциальный усилитель. Для таким применений, как усиление сигналов тензодатчиков, термопар и т. п., КОСС, равного 40 дБ, совершенно недостаточно, а нужны значения вроде 100 или 120 дБ. В предыдущем примере с тензодатчиком у нас мог быть дифференциальный сигнал небаланса порядка 2 мВ на 1В. Если требуется точность 0,05 %, то нужно подавление синфазного сигнала, как минимум, 114 дБ. (Заметьте, что это требование может быть значительно смягчено в том случае, когда «нуль» усилителя равен синфазному напряжению, как это можно получить в лабораторных условиях.) Напрашивающееся решение для улучшения КОСС — увеличить точность резисторов разностной схемы (рис. 7.26).
Рис. 7.26
Значения резисторов выбираются так, чтобы сопротивления больших резисторов обратной связи лежали в диапазоне номиналов доступных прецизионных проволочных резисторов. При использовании резисторов с допуском 0,01 % КОСС будет около 80 дБ (68 дБ в худшем случае), если ОУ имеет большое КОСС. Для получения нулевой чувствительности к синфазным помехам нужен, как показано, только один подстроечный потенциометр. При указанных параметрах можно подстройкой свести суммарную ошибку к величине 0,05 % (чуть больше максимальной ошибки резистора). Причудливая цепь, показанная на рисунке, применена потому, что подстроечные потенциометры с малым значением сопротивления со временем могут терять настройку, и лучше обойтись без них.
Замечание о подавлении синфазной помехи переменного тока. Использование хорошего ОУ и тщательная подстройка позволяют достичь КОСС в 100 дБ и более на постоянном токе. Но проволочные резисторы, которые нужны для стабильности, имеют некоторую индуктивность, из-за которой КОСС ухудшается с частотой. Этот эффект, общий для всех схем, которые мы будем рассматривать, можно уменьшить применением безындуктивных проволочных резисторов (типа Aryton-Perry). Заметим также, чтобы получить хороший КОСС на высоких частотах, необходимо сбалансировать емкости схемы. Это может потребовать строгого зеркально-симметричного расположения элементов.
Фирма Burr-Brown выпускает ряд прецизионных дифференциальных усилителей, укомплектованных подогнанными друг к другу резисторами, в очень удобном 8-штырковом корпусе мини-DIP. ΙΝΑ 105 — усилитель с единичным усилением (максимальная погрешность коэффициента усиления ±0,01 %), входным сопротивлением 25 кОм, a ΙΝΑ 106 имеет коэффициент усиления 10 с такой же точностью и входное сопротивление 10 кОм. КОСС последнего не меньше 94 дБ, Uсдв максимум 100 мкВ и он устойчив при работе на емкостную нагрузку до 1000 пФ. Фирма Burr-Brown выпускает также вариант схемы, имеющей большой диапазон входного синфазного напряжения (±200 В) и описанной ниже.
Высоковольтный дифференциальный усилитель. На рис. 7.27 показан разумный способ расширения диапазона синфазного напряжения входа в схеме разностного усилителя за границы напряжения питания без соответствующего уменьшения дифференциального коэффициента усиления.
Рис. 7.27. Дифференциальный усилитель с большим допустимым синфазным напряжением, построенный на низковольтных ОУ.
U2 воспринимает синфазный сигнал, имеющийся на входе U1, и возвращает его с инверсией через R5 и R6. Так как тем самым синфазный сигнал на входах U1 и U2 полностью подавляется, то КОСС этих ОУ является несущественным. Окончательное значение КОСС этой схемы определяется точностью согласования отношений резисторов R1/R5 — R3/R6 без особых требований к точности R2 и R4.
Схема имеет диапазон синфазного входного напряжения ±200 В, КОСС-80 дБ и дифференциальный коэффициент усиления 1,0. В усилителе с единичным усилением INA117 фирмы Burr-Brown для получения большого диапазона синфазных напряжений использован другой прием, а именно резистивный делитель напряжения 200:1 для того, чтобы привести входной сигнал ± 200 В к обычному диапазону синфазного напряжения ОУ ± 10 В (рис. 7.28). Эта схема проще, чем схема на рис. 7.27, но здесь существенно хуже параметры сдвига и шумов: Uсдв = 1000 мкВ (у ΙΝΑ 105–250 мкВ), а напряжение выходных шумов (полная амплитуда в диапазоне 0,01–10 Гц) достигает 25 мкВ — против 2,4 мкВ у ΙΝΑ 105.
Рис. 7.28. Дифференциальный усилитель ΙΝΑ117 с диапазоном входного синфазного напряжения +200 В.
Увеличение входного сопротивления. Разностная схема с тщательно подстроенными значениями резисторов, казалось бы, должна дать нужные рабочие параметры, но это впечатление проходит, если посмотреть на ограничения, накладываемые на сопротивления источников. Для получения точности коэффициента усиления 0,1 % с помощью схемы рис. 7.26 сопротивление источника сигналов должно быть меньше 0,25 Ом! Более того, для получения КОСС 100 дБ внутреннее полное сопротивление источника на двух его выводах должно быть согласовано с точностью до 0,0025 Ом. Это следует из рассмотрения эквивалентной схемы (рис. 7.29).
Рис. 7.29.
Треугольниками обозначены целиком разностные усилители или вообще любые дифференциальные или измерительные усилители, а Rи1 и Rи2 - эквивалентные сопротивления источника на каждом выводе. Вся схема усилителя для синфазных сигналов включает в себя эти сопротивления источника, соединенные последовательно с входными резисторами R1 и R3 (рис. 7.26 и 7.27), поэтому КОСС зависит от согласованности Rи1 + R1 с Rи2 + R3. Конечно, требования, которые предъявляются этой схемой к полному сопротивлению источника, как показано выше, оказываются слишком жесткими.
Некоторого улучшения можно добиться за счет увеличения значений резисторов, применяя Т-образную цепь для резисторов обратной связи, показанную на рис. 7.30.
Рис. 7.30. Дифференциальные усилители с Т-образными цепями, обеспечивающими большие значения полного входного сопротивления при меньших сопротивлениях резисторов обратной связи.
Этот вариант Т-образной цепи для дифференциального усилителя обсуждался в разд. 7.06 и 4.19. При обозначенных на рис. 7.30 значениях резисторов усиление дифференциального напряжения будет около 1000 (60 дБ). Для точности коэффициента усиления 0,1 % полное сопротивление источника должно быть меньше 25 Ом и согласовано (на выводах источника) до 0,25 Ом, чтобы получить КОСС 100 дБ. Это по-прежнему неприемлемые требования к источникам в большинстве применений. Например, тензодатчик имеет полное внутреннее сопротивление около 350 Ом.
Радикальное решение этой проблемы заключается в использовании повторителей или неинвертирующих усилителей для получения высокого полного входного сопротивления. Наиболее простой способ — это добавить повторители к обычному дифференциальному усилителю (рис. 7.31).
Рис. 7.31. Дифференциальный усилитель с высоким Zвх.
При получающихся колоссальных значениях входного полного сопротивления вопросы полного сопротивления нас уже не волнуют, по крайней мере на постоянном токе. На более высоких частотах снова важно иметь согласованные полные сопротивления источника для синфазных сигналов, так как входная емкость схемы в комбинации с сопротивлением источника образует делитель напряжения. Под «высокими частотами» часто имеется в виду просто частота напряжения сети, поскольку наводка синфазной помехи от сети питания схемы — это обычная неприятность; на такой частоте входная емкость в несколько пикофарад неважна.
7.10. Стандартный измерительный усилитель на трех ОУ
Одним из недостатков описанной схемы с повторителями на рис. 7.31 является то, что в ней требуется большой КОСС и в повторителях, и в выходном ОУ. Поскольку входные буферные усилители работают с единичным усилением, все подавление синфазных помех должно происходить в выходном усилителе, что требует, как было указано, прецизионного согласования резисторов. Схема, изображенная на рис. 7.32 в этом смысле значительно лучше. Она представляет собой стандартную конфигурацию измерительного усилителя.
Рис. 7.32. Классический измерительный усилитель.
Входной каскад является удачным сочетанием двух ОУ, обеспечивающим большой дифференциальный коэффициент усиления и единичный коэффициент усиления синфазных сигналов без какого-либо особо точного согласования резисторов. Его дифференциальный выход представляет собой сигнал с существенно уменьшенной (относительно) синфазной составляющей и используется для возбуждения схемы обычного дифференциального усилителя. Последний часто бывает включен с единичным коэффициентом усиления, и его задача — получение однополюсного выходного сигнала и подавление остаточного синфазного сигнала. В результате отпадает надобность в том, чтобы выходной ОУ имел большой КОСС, и не требуется прецизионного согласования резисторов в схеме обвязки U3. Настройка нуля сдвига для всей схемы может быть сделана, как показано, на одном из входных ОУ. Эти входные ОУ должны, однако, иметь высокий КОСС, и выбирать их следует тщательно.
В виде гибридных ИМС измерительные усилители с описанной стандартной конфигурацией выпускаются несколькими фирмами. Все компоненты, кроме резистора R1, встроены, а коэффициент усиления устанавливается единственным внешним резистором R1. Типичными примерами таких модулей являются микромошный ΙΝΑ 102, высокоскоростной ΙΝΑ ПО и прецизионный AD624. У всех этих усилителей коэффициент усиления имеет диапазон от 1 до 1000, КОСС — около 100 дБ и входное полное сопротивление более 100 МОм. Микромощный гибридный модуль LH0036 может работать от такого низкого напряжения питания, как +1 В. AD624 имеет линейность коэффициента усиления около 0,001 %, начальный сдвиг напряжения менее 25 мкВ и дрейф напряжения сдвига не более 0,25 мкВ/°С; предусмотрена и возможность внешней настройки нуля напряжения сдвига. Некоторые измерительные усилители (например, высокоточный ΙΝΑ 104) имеют возможность регулировки КОСС. Не путайте эти модули с «измерительным операционным усилителем» 725, который представляет собой просто хороший ОУ, предназначенный для использования в схемах измерительных усилителей. На рис. 7.33 приведена полная схема измерительного усилителя, как она обычно строится.
Рис. 7.33. Измерительный усилитель с выводами защиты, измерительным и опорного напряжения.
Несколько замечаний об этой схеме измерительного усилителя: (а) Усиленный (по мощности) синфазный сигнал с выхода U4 может быть использован как «защитное» напряжение для ослабления эффектов емкости кабеля и утечек. При таком включении защитный выход должен быть соединен с экраном входного кабеля. Если резистор установки коэффициента усиления (R1) не установлен непосредственно рядом с усилителем (существует отдельная панель регулировки — компоновка, которой следует избегать), то его (резистора R1) соединения также должны быть экранированы и защищены, (б) Выводы ИЗМЕРЕНИЕ и ОПОРНЫЙ дают возможность измерять выходное напряжение непосредственно на нагрузке, так что благодаря обратной связи можно исключить потери в соединительных проводах, идущих к внешней схеме. К тому же ОПОРНЫЙ вывод позволяет смещать выходной сигнал постоянным напряжением (или другим сигналом); однако полное сопротивление между этим выводом и землей должно быть малым, иначе упадет КОСС. (в) Для всех такого вида измерительных усилителей необходимо формировать цепь для прохождения входного тока; нельзя, например, просто подсоединить к входу термопару. На рис. 7.34 показана простая схема включения ИМС измерительного усилителя с использованием выводов защиты входа, измерения и опорного.
Рис. 7.34. ИМС измерительного усилителя.
Следящая связь по питанию. КОСС входных ОУ может оказаться лимитирующим фактором для подавления синфазных помех во всей схеме. Если нужны значения КОСС около 120 дБ, то можно применить прием, иллюстрируемый рис. 7.35. U4 измеряет уровень синфазного сигнала и управляет общей точкой маломощного плавающего расщепленного источника питания для U1 и U2. Эта схема следящей связи эффективно гасит синфазный сигнал для U1 и U2, так как на их входах нет синфазных колебаний относительно их собственного питания. U3 и U4 питаются от общего источника питания, как обычно. Эта схема может творить чудеса с КОСС, по крайней мере на постоянном токе. С возрастанием частоты приходится иметь дело с обычными проблемами согласования полных сопротивлений и входных емкостей.
Рис. 7.35. Измерительный усилитель со следящей связью по питанию для повышения КОСС.
Конфигурация с двумя ОУ. На рис. 7.36 показана схема, которая обеспечивает большое полное сопротивление с помощью только двух ОУ. Поскольку подавление синфазного сигнала происходит здесь не в два этапа, как в схеме с тремя ОУ, для получения хорошего КОСС необходимо прецизионное согласование резисторов, подобно тому как это было в стандартной схеме разностного усилителя.
Рис. 7.36. Схема измерительного усилителя с двумя ОУ.
Специализированные ИМС измерительных усилителей. Существует несколько интересных конфигураций измерительных усилителей, выпускаемых в виде монолитных (и поэтому недорогих) ИМС; некоторые из них имеют очень хорошие рабочие параметры. В них применяются другие методы, чем в рассматривавшихся ранее схемах.
Дифференциальные усилители с преобразованием проводимости (в цепи обратной связи). В этих схемах, представителями которых являются LM363, AD521 и выполненный на ПТ с p-n-переходом АМР-05, большое значение КОСС достигается без согласования внешних сопротивлений. Фактически только коэффициент усиления устанавливается отношением пары навесных резисторов. На рис. 7.37 показана функциональная схема АМР-01. В ней используются две пары дифференциальных усилителей — преобразователей проводимости с одним навесным резистором, устанавливающим в каждом случае коэффициент усиления. Одна пара усилителей управляется входным сигналом, а другая — выходным сигналом, отсчитываемым относительно входа опорного напряжения. В АМР-05 используются ПТ для поддержания низкого уровня входных токов, а в АМР-01 используются биполярные транзисторы для достижения малого напряжения сдвига и малого дрейфа (табл. 7.5). В прецизионной схемотехнике исключительно полезными могут быть методы с использованием микропроцессорной обработки; см. разд. 13.24.
Рис. 7.37. Функциональная схема интегральной схемы измерительного усилителя АМР-01.
Шумы усилителей
Почти в любой области измерений значение предельно различимого слабого сигнала определяется шумом-мешающим сигналом, который забивает полезный сигнал. Даже если измеряемая величина и не мала, шум снижает точность измерения. Некоторые виды шума неустранимы принципиально (например, флуктуации измеряемой величины), и с ними можно бороться только методами усреднения сигнала и сужения полосы, которые мы обсудим в гл. 15. Другие виды шума (например, помехи на радиочастоте и «петли заземления») можно уменьшить или исключить с помощью разных приемов, включая фильтрацию, а также тщательное продумывание расположения проводов и элементов схемы. И наконец, существует шум, который возникает в процессе усиления, и его можно уменьшить применением малошумящих усилителей. Хотя техника осреднения сигнала часто применяется для извлечения сигнала, маскируемого шумом, имеет смысл для начала убедиться, что система свободна от всех устранимых помех и обладает наименьшим, практически возможным шумом усилителя.
Мы начнем с разговора об источниках происхождения и характеристиках различных видов шумов, от которых страдают электронные схемы. Затем мы займемся обсуждением шумов биполярных и полевых транзисторов, включая методы проектирования малошумящих схем при заданном источнике питания. Приведем несколько конструктивных примеров. После небольшого обсуждения шумов дифференциального усилителя и усилителя с обратной связью мы посвятим заключительный раздел обсуждению надлежащего заземления и экранирования, а также исключению помех и наводок (см. также разд. 13.24, посвященный методам моделирования аналоговых схем).
7.11. Происхождение и виды шумов
Термин «шум» применяется ко всему тому, что маскирует полезный сигнал, поэтому шумом может оказаться какой-нибудь другой сигнал («помеха»); но чаще всего этот термин означает «случайный» шум физической (чаще всего тепловой) природы. Шум характеризуется своим частотным спектром, распределением амплитуд и источником (происхождением). Мы назовем основных «возмутителей спокойствия».
Джонсоновский шум. Любой резистор на плате генерирует на своих выводах некоторое напряжение шума, известное как «шум Джонсона» (тепловой шум). У него горизонтальный частотный спектр, т. е. одинаковая мощность шума на всех частотах (разумеется, до некоторого предела). Шум с горизонтальным спектром называют «белым шумом». Реальное напряжение шума в незамкнутой цепи, порожденное сопротивлением R, находящимся при температуре Т, выражается формулой
Uш. эфф = UшR = (4kTRB)1/2,
где k — постоянная Больцмана, Т — абсолютная температура в Кельвинах (К = °С + 273,16), B — полоса частот в Гц.
Таким образом, Uш. эфф — это то, что получится на выходе совершенно бесшумного фильтра с полосой пропускания В, если подать на его вход напряжение, порожденное резистором при температуре Т. При комнатной температуре (68 °F = 20°С = 293К)
4kТ = 1,62·10-20В2/(ГцОм),
(4kTR)1/2 = 1,27·10-10R1/2 В/Гц1/2 = 1,27·10-4R1/2 В/Гц1/2.
Например, резистор на 10 кОм при комнатной температуре имеет среднеквадратичное напряжение шума в разомкнутой цепи порядка 1,3 мкВ, измеренное в полосе 10 кГц (измерять можно, например, подсоединив резистор ко входу высококачественного усилителя и наблюдая напряжение на выходе усилителя вольтметром). Сопротивление источника этого напряжения шума равно просто R. На рис. 7.38 дан график простой зависимости плотности напряжения шума Джонсона (среднеквадратичное напряжение на корень квадратный из ширины полосы) от сопротивления источника.
Рис. 7.38. Зависимость напряжения теплового шума от сопротивления.
Амплитуда напряжения шума Джонсона, вообще говоря, в данный конкретный момент непредсказуема, но она подчиняется закону распределения Гаусса (рис. 7.39), где p(U)dU — вероятность того, что мгновенное значение напряжения заключено между U и U + dU, а Uш — определенное выше среднеквадратичное (эффективное) напряжение шума.
Рис. 7.39. p(U, U + dU) = (1/Uш√(2π))e-(U^2/Uш^2)dU, где Uш есть эффективный шум. Площадь заштрихованной области равна вероятности нахождения мгновенного значения напряжения между U и U + ΔU.
Шум Джонсона устанавливает нижнюю границу напряжения шумов любого детектора, источника сигнала или усилителя, имеющего резистивные элементы. Активная составляющая полного сопротивления источника порождает шум Джонсона; так же действуют резисторы цепей смещения и нагрузки усилителя. Скоро мы увидим, как это происходит.
Интересно отметить, что любой физический аналог сопротивления (любой механизм потерь энергии в физической системе, например, вязкое трение малых частиц жидкости) имеет связанные с ним флуктуации соответствующей физической величины (в приведенном примере — это флуктуации скоростей частиц, проявляющиеся как хаотическое броуновское движение). Шум Джонсона — это просто специальный случай такого флуктуационно-диссипативного явления.
Шум Джонсона не следует путать с дополнительным шумовым напряжением, который возникает из-за эффекта флуктуации сопротивления, когда приложенный извне ток проходит через резистор. Этот «избыточный шум» имеет спектр приблизительно 1/f, и он сильно зависит от конкретной конструкции резистора. Мы об этом поговорим позже.
Дробовой шум. Электрический ток представляет собой движение дискретных зарядов, а не плавно непрерывное течение. Конечность (квантованность) заряда приводит к статистическим флуктуациям тока. Если заряды действуют независимо друг от друга, то флуктуирующий ток определяется формулой
Iш. эфф = IшR = (2qI=B)1/2,
где q — заряд электрона (1,6·10-19 Кл), I= — постоянная составляющая («установившееся» значение) тока, а В — ширина полосы частот измерения. Например, «установившийся» ток в 1 А фактически имеет флуктуации со среднеквадратичным значением 57 нА в полосе шириной 10 кГц, т. е. он отклоняется примерно на 0,000006 %. Относительные флуктуации больше для меньших токов: «установившийся» ток в 1 мкА имеет флуктуации (среднеквадратичные) в той же полосе частот 0,006 %, т. е. — 85 дБ. При постоянном токе 1 пА среднеквадратичные флуктуации тока (полоса та же) будут составлять 56 фА, т. е. отклонение на 5,6 %! Дробовой шум — это «шум дождя на жестяной крыше». Как и резистивный шум Джонсона, это гауссовский белый шум.
Приведенная выше формула для дробового шума выведена в предположении, что создающие ток носители заряда действуют независимо друг от друга. Это справедливо, когда заряды преодолевают некоторый барьер, как например, в случае тока через диодный переход, где заряды перемещаются за счет диффузии, однако это не так в таком важном случае, когда мы имеем дело с металлическими проводниками, где между носителями заряда существует тесная корреляция. Таким образом, ток в простой резистивной схеме имеет намного меньшую шумовую составляющую, чем это предсказывает формула для дробового шума. Другое важное исключение для этой формулы дает наша стандартная транзисторная схема источника тока (рис. 2.21), в которой отрицательная обратная связь сводит дробовой шум на нет.
Упражнение 7.4. Пусть в качестве коллекторной нагрузки в малошумящем усилителе используется резистор; коллекторный ток Iк сопровождается при этом дробовым шумом. Покажите, что в выходном шуме напряжения доминирует дробовой тлум (а не тепловой шум резистора), начиная с момента, когда падение напряжения в установившемся режиме на резисторе нагрузки становится больше 2kT/q (50 мВ при комнатной температуре).
Шум 1/f (фликкер-шум). Дробовой и тепловой шумы — это неуменьшаемые виды шума, возникающие в соответствии с законами физики. Самый дорогой и тщательно изготовленный резистор имеет тот же тепловой шум, что и дешевый углеродный резистор с тем же сопротивлением. Реальные устройства, кроме того, имеют различные источники «избыточных шумов». Реальные резисторы подвержены флуктуациям сопротивления, которые порождают дополнительное напряжение шума (которое складывается с постоянно присутствующим напряжением теплового шума), пропорциональное протекающему через резистор постоянному току. Этот шум зависит от многих факторов, связанных с конструкцией конкретного резистора, включая резистивный материал и особенно концевые соединения. Вот типичные значения избыточного шума различных типов резисторов, выраженные в микровольтах на вольт приложенного к резистору напряжения (приводится среднеквадратичное значение, измеренное на одной декаде частоты):
Углеродно-композитные… От 0,10 до 3,0 мкВ
Углеродно-пленочные… От 0,05 до 0,3 мкВ
Металлопленочные… От 0,02 до 0,2 мкВ
Проволочные… От 0,01 до 0,2 мкВ
Этот шум имеет спектр, примерно описываемый зависимостью 1/f (постоянная мощность на декаду частоты) и иногда называется «розовым шумом». Шум, возникающий по другим причинам, также часто имеет спектр 1/f; примерами таких шумов являются шум тока базы у транзистора и шум катодного тока в электронных лампах. Любопытно, что шум вида 1/f встречается в природе в самых неожиданных проявлениях, например, скорости океанических течений, потоке песка в песочных часах, пассажирских потоках на скоростных железных дорогах в Японии, а также годовом стоке Нила за последние 2000 лет. Если построить график громкости звучания какого-нибудь произведения классической музыки, то опять-таки получится спектр 1/f! Общего принципа, объясняющего происхождение шумов со спектром 1/f, не найдено, хотя он, казалось бы, носится в воздухе, но в каждом отдельном случае часто можно определить источник такого шума.
Помехи. Как уже говорилось, одной из форм шумов являются мешающие сигналы или паразитные наводки. В этом случае спектр и амплитудные характеристики зависят от мешающего сигнала. Например, наводка от сети 50 Гц имеет спектр в виде пика (или ряда пиков) и относительно постоянную амплитуду, а шум зажигания автомобиля, шум грозовых разрядов и другие шумы импульсных источников имеют широкий спектр и всплески амплитуды. Другим источником помех являются радио- и телепередающие станции (особенно серьезна эта проблема вблизи больших городов), окружающее электрооборудование, моторы, лифты, метро, выключатели, переключательные стабилизаторы, телевизоры. Все эти проблемы существуют в слегка измененном виде во всех тех случаях, когда что-нибудь влияет на измеряемый вами параметр. Например, оптический интерферометр восприимчив к вибрации, а на чувствительные измерения радиочастот (например, в ЯМР-спектроскопии) может повлиять внешний радиочастотный сигнал. Многие схемы, равно как детекторы или даже кабели, чувствительны к вибрациям и звуку, и они, по торговой терминологии, страдают «микрофонным эффектом».
От многих из этих источников шума можно отделаться путем тщательного экранирования и фильтрации, как будет сказано в этой главе ниже. Иногда приходится принимать совершенно драконовские меры, включая монолитные каменные столы (для виброизоляции), комнаты с постоянной температурой, звукопоглощающие камеры и комнаты с электрической экранировкой.
7.12. Отношение сигнал/шум и коэффициент шума
Перед тем как начать детальное рассмотрение шума усилителя и проектирования малошумящих схем, нам нужно определить несколько терминов, которые часто употребляются для описания шумовых характеристик усилителей. Речь идет о количественных показателях напряжений шумов, измеренных в одной и той же точке схемы. Обычно напряжения шумов приводятся ко входу усилителя (хотя измерения обычно производятся на выходе), т. е. шумы источника сигнала и усилителя описываются через эквивалентные напряжения шумов на входе, которые могли бы дать на выходе наблюдаемый шум. Это имеет смысл тогда, когда вы хотите оценить относительный шум, добавленный усилителем к шуму источника сигнала, независимо от коэффициента усиления; это вполне практично, так как основной шум усилителя обычно порождается входным каскадом. Если не оговорено противное, напряжение шума всегда будет отнесено ко входу.
Плотность мощности шума и ширина полосы. При рассмотрении теплового и дробового шумов было показано, что величина измеренного напряжения шума зависит и от полосы частот измерения (чем шире смотришь, тем больше видишь), и от переменных параметров (R и I) самого источника шума. Поэтому естественно говорить о среднеквадратичной плотности напряжения шума vш:
Uш. эфф = vшB1/2 = (4kTR)1/2B1/2
где Uш. эфф — среднеквадратичное напряжение шума, измеренное в полосе ширины В. У источника белого шума vш не зависит от частоты, а розовый шум, например, имеет спад vш в 3 дБ/октава. Часто используется среднее значение квадрата плотности шума v2ш. Поскольку vш всегда относится к среднеквадратичному значению, а v2ш — к среднему значению квадрата, для получения v2ш достаточно возвести в квадрат vш. Это звучит просто (и по сути просто), но мы хотим быть уверены, что вы не запутаетесь.
Заметьте, что величины В и В1/2 являются множителями для перехода от величин, обозначаемых строчными буквами, к величинам, обозначаемым прописными буквами. Например, для теплового шума резистора R имеем
vшRэфф = (4kTR)1/2 B/Гц1/2,
v2шR = 4kTR B2/Гц,
Uш. эфф = vшRB1/2 = (4kTRB)1/2 B,
U2ш. эфф = v2шRB = 4kTRB B2
В данных изготовителя даются графики vш или v2ш, соответственно в единицах «нановольт на корень из герца» или «вольт в квадрате на герц». Величины еш и iш, которые скоро будут введены, используются точно так же.
При сложении двух некоррелированных сигналов (два шума или сигнал и шум) складываются квадраты амплитуд: v = (ν2c + v2ш)1/2, где v — эффективное (среднеквадратичное) значение сигнала, полученного сложением сигнала с эффективным значением vc и шума с эффективным значением vш. Эффективные значения нельзя суммировать!
Отношение сигнал/шум. Отношение сигнал/шум (С/Ш) определяется по формуле
С/Ш = 10·lg(U2с/U2ш) дБ,
где для напряжений указаны эффективные значения, а ширина полосы и некоторая центральная полоса оговорены, т. е. это есть отношение (в децибелах) эффективного напряжения полезного сигнала к эффективному напряжению имеющегося шума. «Сигнал» может быть синусоидальным, или несущей частотой с модуляцией, или даже шумоподобным сигналом. Если сигнал имеет узкополосный спектр, то существенно, в какой полосе измеряется отношение С/Ш, так как оно падает, если полоса измерений становится шире полосы, содержащей спектр сигнала: с расширением полосы энергия шума увеличивается, а энергия сигнала остается постоянной.
Коэффициент шума. Любой реальный источник сигнала или измерительный прибор генерирует шум из-за наличия теплового шума во внутреннем сопротивлении источника (реальная часть комплексного полного сопротивления). Конечно, могут быть и дополнительные источники шума от других причин. Коэффициент шума (КШ) усилителя — это просто отношение в децибелах выходного сигнала реального усилителя к выходному сигналу «совершенного» (бесшумного) усилителя с тем же коэффициентом усиления; входным сигналом в обоих случаях является тепловой шум подключенного ко входу усилителя резистора:
КШ = 10·lg[(4kTRи + v2ш)/4kTRи] = 10·lg(1 + v2ш/4kTRи) дБ
где v2ш - средний квадрат напряжения шума на герц, даваемого усилителем с бесшумным (холодным) резистором Rи на входе. Значение Rи существенно, так как напряжение шума, порождаемого усилителем, как вы вскоре увидите, сильно зависит от сопротивления источника (рис. 7.40).
Рис. 7.40. Зависимость эффективного напряжения шума от коэффициента шума и сопротивления источника.
(National Semiconductor Corp.).
Коэффициент шума — удобная характеристика качества усилителя, если при заданном активном сопротивлении источника вы хотите сравнить усилители (или транзисторы, для которых также определяется КШ). Коэффициент шума изменяется с изменением частоты и сопротивления источника, поэтому он часто задается графически в виде линий уровня КШ относительно частоты и Rи. Он может быть указан также в виде набора графиков его зависимости от частоты — одна кривая на каждое значение тока коллектора или аналогичного набора графиков зависимости КШ от Rи - также одна кривая на каждое значение тока коллектора. Обратите внимание на следующее. Приведенная выше формула для КШ выведена в предположении, что полное входное сопротивление усилителя во много раз больше полного сопротивления источника, т. е. Zвх >> Rи. Однако в особом случае для усилителей радиочастоты мы обычно имеем Rи = Zвх = 50 Ом, и КШ определен соответствующим образом. В этом специальном случае согласованных полных сопротивлений необходимо просто убрать коэффициент 4 в предыдущих выражениях.
Огромное заблуждение: не пытайтесь улучшить положение добавлением последовательного резистора к источнику сигнала для попадания в область минимального КШ. Все, чего вы добьетесь, стараясь, чтобы усилитель выглядел лучше, — это добавите шума в источник! Коэффициент шума может быть весьма обманчив в этом случае; обманчив он еще и потому, что спецификация КШ (например, 2 дБ) для биполярного или полевого транзистора всегда дается при оптимальной комбинации Rи иIк Ic). Об истинных рабочих характеристиках эта величина говорит мало, кроме разве того, что изготовитель считает полезным похвастаться малой величиной КШ.
Вообще говоря, при оценке характеристик усилителя легче всего не запутаться, если придерживаться отношения С/Ш, подсчитанного для данного напряжения и полного сопротивления источника. Вот как надо перейти от КШ к отношению
С/Ш:
С/Ш = 10·lg(v2c/4kTRи) — КШ (дБ)
(при Rи),
где vc — среднеквадратичная амплитуда сигнала, Rи — полное сопротивление источника, а КШ — коэффициент шума усилителя при данном Rи.
Температура шума. Иногда вместо коэффициента шума для выражения шумовых характеристик усилителя используется температура шума. Оба способа несут одну и ту же информацию, а именно дополнительный вклад в шум усилителя, возбуждаемого источником сигнала с полным сопротивлением Rи; в этом смысле они эквивалентны.
Взгляните на рис. 7.41, чтобы понять, как работает температура шума: вначале вообразим себе, что имеется реальный (шумящий) усилитель, подключенный к бесшумному источнику с полным сопротивлением Rи (рис. 7.41, а). Если вы затрудняетесь представить бесшумный источник, вообразите резистор с сопротивлением Rи, охлажденный до абсолютного нуля. Однако, хотя источник и бесшумный, на выходе будет некоторый шум, поскольку усилитель имеет шумы. Теперь представьте конструкцию рис. 7.41, б, в которой мы волшебным образом сделали усилитель бесшумным и привели источник Rи к некоторой температуре Тш такой, что выходное напряжение шума стало таким же, как и на рис. 7.41, а.
Рис. 7.41.
Тш называется температурой шума данного усилителя для полного сопротивления источника Rи. Как мы отмечали ранее, коэффициент шума и температура шума представляют собой просто разные способы выражения одной и той же информации. В самом деле, можно показать, что они связаны друг с другом следующими соотношениями:
Тш = Т(10КШ(дБ)/10 — 1),
КШ(дБ) = 10·lg(Тш/Т + 1),
где T — температура окружающей среды, обычно принимаемая равной 290 К.
Вообще говоря, хорошие малошумящие усилители имеют температуру шума гораздо ниже комнатной (или это эквивалентно тому, что коэффициент шума у них много меньше 3 дБ). Позже в этой главе мы объясним, как можно измерить коэффициент (или температуру) шума усилителя. Вначале, однако, нам нужно разобраться в шумах транзисторов и методах проектирования малошумящих схем. Мы надеемся, что последующие рассуждения прояснят то, что часто покрыто мраком непонимания. Мы уверены, что, прочитав следующие два раздела, вы никогда больше не будете введены в заблуждение коэффициентом шума!
7.13. Шум тока и напряжения транзисторного усилителя
Шум, порождаемый усилителем, легко описать с помощью простой модели, достаточно точной для многих целей. На рис. 7.42 еш обозначает источник шума напряжения, последовательный по отношению к входному сигналу, а iш обозначает шум входного тока. Транзистор (и вообще усилитель) предполагается бесшумным и просто усиливает напряжение входного шума, которое приходит к нему.
Рис. 7.42. Модель шумов транзистора.
Таким образом, усилитель дает полное напряжение шума еу, которое, будучи отнесено ко входу, равно
eу. эфф = [е2ш+ (Rиiш)2]1/2 В/Гц1/2
Два слагаемых в скобках — это просто входное напряжение шума и напряжение шума, порождаемое прохождением шума входного тока усилителя через сопротивление источника. Так как эти два шума обычно не коррелированы, то, складывая квадраты их амплитуд, получим эффективное напряжение шума, поступающего на усилитель. При малом сопротивлении источника преобладает шум напряжения еш, а при большом — шум тока iш.
На рис. 7.43 для иллюстрации приведены кривые зависимости еш и iш от IK и f для 2N5087. Сейчас мы постараемся вникнуть в некоторые детали, описывая эти величины и демонстрируя, как вести проектирование для минимизации шума. Стоит отметить, что шум напряжения и тока для транзистора лежит в диапазоне нановольт и пикоампер на корень из герца.
Рис. 7.43. Зависимость эквивалентного среднеквадратичного входного напряжения шума еш и входного тока шума iш от коллекторного тока для p-n-транзистора 2N5087.
(Fairchild Camera and Instrument Corp.).
Шум напряжения еш. Эквивалентный генератор шумового напряжения рассматривают как включенный последовательно с базой транзистора. Этот генератор представляет сумму теплового шума, порожденного объемным сопротивлением базы rб, и дробового шума коллекторного тока, порождающего шум напряжения на дифференциальном сопротивлении эмиттера rЭ. Эти два слагаемых имеют следующий вид:
е2ш = 4kTrб + 2qIKr2Э = 4kTrб + 2(kT)2/(qIK) В2/Гц
Они являются гауссовскими белыми шумами. В дополнение к этому существует некоторый фликкер-шум, порожденный прохождением тока базы через rб. Он существен только при больших токах базы, т. е. при больших токах коллектора. Поэтому величина еш постоянна в большом диапазоне значений тока коллектора; она увеличивается при малых токах (дробовой шум тока через возрастающее сопротивление rЭ) и при достаточно больших токах (шум фликкер-эффекта от прохождения IБ через rб. Последний эффект существен только на низких частотах из-за зависимости 1/f. Например: на частотах свыше 10 кГц у 2N5087 еш равно 5 нВ/Гц1/2 при IK = (10 мкА и 2 нВ/Гц1/2 при IK = 100 мкА. На рис. 7.44 показаны кривые зависимости еш от частоты и тока для малошумящей дифференциальной nрn-пары LM394 и малошумящего 2SD786 производства фирмы Toyo-Rohm. В последнем используется специальная геометрия для достижения необычайно низкого rб = 4 Ом, что позволяет получить самые низкие на сегодня значения еш.
Рис. 7.44. Зависимость входного напряжения шума еш от коллекторного тока для двух малошумящих биполярных транзисторов.
Шум тока iш. Шумовой ток следует учитывать, так как он порождает дополнительный шум напряжения на полном сопротивлении источника сигнала. Основным источником шума тока являются флуктуации дробового шума в установившемся токе базы, складывающиеся с флуктуациями за счет фликкер-шума в rб. Вклад дробового шума — это шум тока, возрастающий пропорционально корню квадратному из IБ (или IK) и имеющий плоский частотный спектр, в то время как составляющая фликкер-шума растет с IK быстрее и имеет обычную частотную зависимость вида 1/f. Взяв опять для примера 2N5087 на частотах свыше 10 кГц, имеем iш около 0,1 пА/Гц1/2 при IK = 10 мкА и 0,4 пА/Гц1/2 при IK = 100 мкА. Шум тока растет, а шум напряжения спадает при увеличении IK. В следующем разделе мы увидим, как это обстоятельство определяет выбор значений рабочих токов в малошумящих схемах. На рис. 7.45 показаны графики зависимости iш от частоты и тока для малошумящей пары LM394.
Рис. 7.45. Входной ток шума для биполярного транзистора LM394. а — зависимость от тока коллектора; б — зависимость от частоты.
7.14. Проектирование малошумящих схем на биполярных транзисторах
Факт, что еш падает, а iш растет с ростом тока IK, дает возможность оптимизировать рабочий ток транзистора для получения минимального шума при данном источнике сигнала. Снова взглянем на модель (рис. 7.46).
Рис. 7.46. Модель шумов усилителя.
«Бесшумный» источник сигнала uи имеет добавку в виде генератора напряжения шума (теплового шума его внутреннего сопротивления) e2Rи = 4kTRи В2/Гц. Усилитель добавляет сюда свой собственный шум:
е2у = е2ш + (iшRи)2 В2/Гц.
Таким образом, напряжение шума усилителя добавляется к входному сигналу и кроме того шум тока усилителя порождает шум напряжения на внутреннем сопротивлении источника. Эти два шума не коррелированы (за исключением очень высоких частот) и их квадраты складываются. Наша цель-как можно сильнее уменьшить общий шум усилителя. Это легко сделать, если известно Rи, так как достаточно посмотреть на зависимость еш и iш от IK на частотах сигнала и выбрать IK, минимизирующее е2ш + (iшRи)2. Если вам повезло и у вас есть карта линий уровня коэффициента шума на поле IK и Rи, то вы быстро сможете определить оптимальное значение IK.
Пример расчета коэффициента шума. Для примера предположим, что у нас есть малый сигнал с частотой около 1 кГц, сопротивлением источника около 10 кОм и мы хотим построить усилитель на базе 2N5087. Из кривых еш-iш (рис. 7.47) можно видеть, что сумма вкладов напряжения и тока (при сопротивлении источника 10 кОм) будет минимальной при токе коллектора 10–20 мкА.
Рис. 7.47. Линии уровня коэффициента узкополосного шума для транзистора 2N5087. (Fairchild Camera and Instrument Corp.). UKЭ = -5 B; f = 1,0 кГц, ширина полосы 150 Гц.
Так как с уменьшением IK шум тока падает быстрее, чем растет шум напряжения, разумно использовать несколько меньший ток коллектора, особенно если предвидится работа на более низких частотах (iш резко растет при уменьшении частоты). Можно независимо оценить коэффициент шума, используя значения iш и еш на частоте 1 кГц:
КШ = 10·lg {1 + [е2ш + (iшRи)2]/(4kTRи)} дБ.
При IK = 10 мкА, еш = 3,8 нВ/Гц1/2, iш = 0,29 пА/Гц1/2, а 4kTRи = 1,65·10-16 В2/Гц для сопротивления источника 10 кОм; вычисленный таким образом коэффициент шума равен 0,6 дБ. Этот результат совпадает с графиком зависимости КШ от частоты (рис. 7.48) при выборе кривой IK = 20 мкА, Rи = 10 кОм. Указанный выбор коллекторного тока примерно совпадает также с результатом, который можно было бы получить из графика рис. 7.47 (линии уровня коэффициента шума при частоте 1 кГц), хотя реальный коэффициент шума по этим линиям оценить трудно-можно только сказать, что он меньше 2 дБ.
Упражнение 7.5. Найдите оптимальное значение Iк и соответствующий коэффициент шума при Rи = 100 кОм и f = 1 кГц, используя график на рис. 7.43.
Проверьте ответ по кривым линий уровня коэффициента шума (рис. 7.47). Для других схем усилителя (повторитель, усилитель с заземленной базой) коэффициент шума при данных Rи и IK будет в сущности тот же самый, поскольку еш и iш не изменяются. Конечно, усилитель с единичным коэффициентом усиления (повторитель) просто «передает» проблемы уменьшения шума следующему каскаду, так как сигнал не будет усилен до такой степени, которая позволяет не думать о снижении шумов в следующих каскадах.
Рис. 7.48. Зависимость коэффициента шума (КШ) от частоты для трех значений IK и Rи у транзистора 2N5087. (Fairchild Camera and Instrument Corp.). UKЭ = -5 B; 1 — IК = 500 мкА, Rи = 1,0 кОм; 2 — IК = 250 мкА, Rи = 5 кОм; 3 — IК = 20 мкА, Rи = 10 кОм.
Графический метод оценки шума усилителя по еш и iш. Только что представленная техника расчета шумов, хотя и ведет непосредственно к получению результата, однако не исключает возможности появления в процессе проектирования ужасных ошибок. Достаточно, например, поставить не на то место постоянную Больцмана, и мы вдруг получаем усилитель с коэффициентом шума 10000 дБ! В этом разделе мы опишем очень полезную упрощенную технику оценки шума. Метод состоит в том, что сначала выбирается интересующая нас частота, чтобы можно было выбрать из паспортных данных транзистора значения еш и iш в зависимости от IК. Затем при заданном токе коллектора строится график зависимости еу (как суммы вкладов еш и iш в шум) от сопротивления источника Rи. На рис. 7.49 показано, как он выглядит при частоте 1 кГц для дифференциального входного каскада, использующего согласованную транзисторную пару LM394 со сверхвысоким β, работающую при коллекторном токе 50 мкА.
Рис. 7.49. Зависимость напряжения входного шума усилителя еу как суммы параметров еш и iшRи от сопротивления источника сигнала. Шум для входного каскада LM394 на частоте 1 кГц при IК = 50 мкА; еш = 2,5 нВ/Гц1/2; iш = 0,16 пА/Гц1/2; Rи = еш/v = 15 кОм.
Шум напряжения еш постоянный, а напряжение iшRи возрастает пропорционально Rи, т. е. с наклоном 45°. Линия шума усилителя строится так, как показано на рисунке, надо причем тщательно следить за тем, чтобы она проходила через точку на 3 дБ (отношение напряжений около 1,4) выше точки пересечения отдельно построенных линий шума напряжения еш и тока iшRи. Кроме того, строится линия напряжения шума сопротивления источника, которая оказывается линией уровня коэффициента шума 3 дБ. Другие линии уровня КШ — это прямые, ей параллельные, как вскоре будет показано на примерах.
Наилучший коэффициент шума (0,2 дБ) при этом коллекторном токе и этой частоте наблюдается при сопротивлении источника 15 кОм, и легко видеть, что коэффициент шума меньше 3 дБ будет при сопротивлении источника между 300 Ом и 500 кОм, — точки, в которых линия уровня коэффициента шума 3 дБ пересекает график шума усилителя.
Следующий шаг — построение других кривых шума на том же графике при различных токах коллектора и частотах, а возможно и для других типов транзисторов, с целью оценки параметров усилителя. Перед тем как двигаться в этом направлении дальше, покажем, как можно к одному и тому же усилителю применять два различных параметра, характеризующие шум: шумовое сопротивление Rш и коэффициент шума КШ (при Rш), которые оба получаются непосредственно из графиков.
Шумовое сопротивление. Наименьший коэффициент шума в этом примере получается, когда сопротивление источника 15 кОм, что равно отношению еш к iш. Так определяется шумовое сопротивление Rш = еш/iш. Коэффициент шума источника с таким сопротивлением находится из приведенного ранее выражения:
КШ (при Rш) = 10·lg[1 + 1,23·1020(e2ш/Rш)] дБ ~= 0,2 дБ.
Шумовое сопротивление не существует реально в транзисторе или где-то еще. Это параметр, который помогает быстро определить сопротивление источника, дающее минимальный коэффициент шума, так что в идеале надо менять ток коллектора таким образом, чтобы подогнать Rш как можно ближе к реальному сопротивлению источника. Rш отвечает точке, в которой пересекаются графики еш и iш.
Коэффициент шума для сопротивления источника, равного Rш, находится по приведенной выше формуле.
Альтернатива: биполярный транзистор или ПТ. Давайте поиграем с этой методикой. Постоянным яблоком раздора среди инженеров является вопрос о том, что «лучше»: биполярные или полевые транзисторы? Мы покорно предоставим решение этого вопроса единоборству лучших представителей двух состязающихся сторон. Мы позволим в интересах честной борьбы сражаться двум командам National Semiconductor, выбрав двух единоборцев.
Итак, в биполярном углу — великолепный монолитный LM394 — согласованная пара со сверхвысоким β,- уже готовый к состязаниям (см. выше). Он работает на частоте 1 кГц с током коллектора от 1 мкА до 1 мА (рис. 7.50).
Рис. 7.50. Полное напряжение входного шума еу усилителя на биполярном транзисторе LM394 при различных условиях в сравнении с ПТ с р-n-переходом 2N6483. Монолитная согласованная пара nрn-биполярных транзисторов LM394 при 1 кГц и IК = 1 мкА — 10 мА.
Команда ПТ представлена монолитной парой согласованных n-канальных ПТ с p-n-переходом 2Ν6483, знаменитой своим потрясающе низким уровнем шумов и превосходящей, как принято считать, по этим параметрам биполярные транзисторы. Согласно паспортным данным, она рассчитана только на диапазон тока стока от 100 до 400 мкА (рис. 7.51).
Рис. 7.51. Полное напряжение входного шума еу для ПТ с p-n-переходом 2Ν6483 в сравнении с биполярным транзистором LM394. Монолитная согласованная пара n-канальных ПТ с p-n-переходом 2Ν6483 при 1 кГц и Ic = 100÷400 мкА, Uсз = 2÷25 В.
Кто же победитель? Решение оказывается двойственным. Полевой транзистор набирает очки по минимизации коэффициента шума КШ(Rш), достигая феноменального значения 0,05 дБ и держась намного ниже 0,2 дБ при полном сопротивлении источника от 100 кОм до 100 МОм. В области больших сопротивлений источника ПТ непобедимы. Биполярные транзисторы опережают при малых сопротивлениях источника, в частности меньших 5 кОм, и могут достигать 0,3 дБ КШ при Rи = 1 кОм при соответствующем выборе тока коллектора. Для сравнения: ПТ имеют КШ при сопротивлении источника 1 кОм не лучше 2 дБ из-за большего шума напряжения еш.
Как и в боксе, где быть лучшим в драке еще не означает иметь шанс на участие в чемпионате мира, так и здесь имеются несколько юных претендентов на звание лучшего малошумящего транзистора. Например, в комплементарных ПТ с р-n-переходом 2SJ72 и 2SK147 фирмы Toshiba используется ячеистая геометрия затвора, что позволяет получить феноменально низкое значение еш 0,7 нВ/Гц1/2 при Iс = 10 мА (это эквивалентно тепловому шуму 30-омного резистора!). Но ведь это ПТ с их малым входным током (и поэтому малым iш), а отсюда и то, что шумовое сопротивление примерно равно 10 кОм. При использовании их в усилителе при сопротивлении источника, равном их шумовому сопротивлению (т. е. при Rи = 10 кОм), эти транзисторы непобедимы — температура шума составляет всего 2 К!
Перед тем как бежать покупать мешок этих замечательных ПТ, выслушайте несколько критических замечаний, которые заставят усомниться в безграничности их возможностей, — эти ПТ имеют высокую входную емкость и большую емкость обратной связи (85 и 15 пФ соответственно), что делает их ограниченно годными на высоких частотах. Их родственник 2SK117 в данном отношении лучше, но у него выше еш. Те же критические аргументы справедливы для биполярных комплементарных пар 2SD786 и 2SB737 фирмы Тоуо — Rohm, у которых при еш по крайней мере не выше 0,55 нВ/Гц1/2 при умеренных значениях полного сопротивления источника и частоты можно получить даже лучшие рабочие параметры.
Малое полное сопротивление источника. Биполярно-транзисторные усилители обеспечивают очень хорошие шумовые параметры в диапазоне полного сопротивления источника от 200 Ом до 1 МОм; соответствующий оптимальный ток коллектора лежит обычно в диапазоне от нескольких миллиампер до 1 мкА, т. е. токи коллектора, используемые во входном каскаде малошумящего усилителя, несколько меньше, вообще говоря, чем в не оптимизированных по уровню шума усилительных каскадах. При очень малых полных сопротивлениях источника (например, 50 Ом) всегда будет преобладать шум напряжения транзистора и коэффициент шума будет неудовлетворительным. В этом случае лучше всего использовать трансформатор для увеличения уровня (и сопротивления источника) сигнала, рассматривая при этом сигнал на вторичной обмотке как сигнал источника. Высококачественные преобразователи сигнала выпускаются фирмами James и Princeton Applied Research. Например, выпускаемая последней фирмой модель ПТ-предусилителя 116 имеет такие шумы напряжения и тока, что наименьший коэффициент шума наблюдается при полном сопротивлении источника сигнала около 1 МОм. Сигналы частоты 1 кГц с полным сопротивлением источника порядка 100 Ом плохо согласуются с таким усилителем, так как шум напряжения усилителя будет намного больше теплового шума источника сигнала; в результате, если такой сигнал подать прямо на усилитель, коэффициент шума будет равен 11 дБ. Если же использовать встроенный (необязательный) повышающий трансформатор, то уровень сигнала повышается вместе с полным сопротивлением источника, превышая шум напряжения усилителя, и коэффициент шума становится равным 1,0 дБ.
На радиочастотах, начиная к примеру, приблизительно от 100 кГц, хороший трансформатор сделать довольно легко как для «настраиваемых» (узкополосных), так и для широкополосных сигналов. При таких частотах легко построить «трансформаторную линию передачи» с широкой полосой частот и очень хорошими параметрами. Некоторые пути для этого мы рассмотрим в гл. 13, т. 2. А вот на низких частотах (звуковых и ниже) применение трансформаторов проблематично.
Три замечания: (а) Напряжение растет пропорционально отношению числа витков в обмотках, а полное сопротивление - пропорционально квадрату этого отношения. Поэтому выходное полное сопротивление трансформатора, повышающего напряжение в два раза, превосходит входное полное сопротивление в четыре раза (за счет запасания энергии), (б) Трансформаторы несовершенны. При низких частотах сигнала может доставить хлопоты магнитное насыщение, при высоких-емкость и индуктивность обмоток, и всегда наблюдаются потери из-за магнитных свойств сердечника и сопротивления обмоток. Последнее к тому же является источником теплового шума. Тем не менее при работе с источником сигнала, имеющим очень малое полное сопротивление, выбора у вас нет, а применение трансформатора, как показывает предыдущий пример, дает огромный выигрыш. Чтобы улучшить режим работы с малым уровнем сигнала и малым сопротивлением его источника, можно применять и экзотическую аппаратуру вроде охлаждаемых трансформаторов, сверхпроводящих трансформаторов, а также СКИП (Сверхпроводящие Квантовые Интерференционные Приборы). С помощью СКИПов можно измерять напряжение порядка 10-15 В! (в) И снова предупреждаем: не пытайтесь улучшить режим работы, добавляя последовательный резистор к источнику сигнала с малым полным сопротивлением. Вы просто окажетесь очередной жертвой распространенного заблуждения насчет коэффициента шума.
Большое полное сопротивление источника. При больших значениях полного сопротивления источника, превышающих, скажем, 100 кОм, преобладает шум тока транзистора и лучшим устройством для усиления с малыми шумами будет ПТ. Хотя у него шум напряжения обычно больше, чем у биполярного транзистора, но ток затвора и его шум исчезающе малы, поэтому ПТ являются идеальными устройствами для усилителей, работающих с источником сигнала с большим полным сопротивлением и дающих малый шум. В связи с этим иногда полезно трактовать тепловой шум как шум тока iш = еш/Rи, что позволяет сравнивать вклад шума источника и шум тока усилителя (рис. 7.52).
Рис. 7.52. Зависимость плотности напряжения теплового шума от сопротивления при температуре 25 °C. Показана также плотность тока шума в режиме короткого замыкания.
7.15. Шум ПТ
Для ПТ можно использовать ту же модель шума усилителя, что и для биполярного транзистора, т. е. последовательно со входом соединить источник шума напряжения и параллельно присоединить источник шума тока. При этом анализировать шумовые параметры можно так же, как это делалось для биполярных транзисторов (см., например, рис. 7.51 в разделе, посвященном сравнению ПТ и биполярных транзисторов).
Шум напряжения ПТ с p-n-переходом. Для ПТ с p-n-переходом шум напряжения есть, в сущности, тепловой шум сопротивления канала, который приближенно описывается формулой
е2ш = 4kT[(2/3)(1/gm)] В2/Гц,
где величина, обратная крутизне, играет роль сопротивления в формуле теплового шума. Так как крутизна растет вместе с током стока (как √Ic), для снижения шума напряжения имеет смысл, чтобы ПТ работали с большим током стока. Однако, поскольку еш представляет собой тепловой шум, пропорциональный 1/√gm, а крутизна, в свою очередь, пропорциональна √Ic, то еш в конечном счете пропорциональна Ic-1/4. При столь слабой зависимости еш от Ic не следует сильно увеличивать ток стока, так как это ухудшит другие параметры усилителя. В частности, ПТ, работая при большом токе, нагревается, что (а) уменьшает gm, (б) увеличивает дрейф напряжения сдвига и КОСС и (в) драматическим образом увеличивает ток утечки затвора; последний эффект фактически может увеличить шум напряжения за счет некоторого вклада в еш фликкер-шума, связанного с током утечки затвора.
Существует другой путь для увеличения gm, а тем самым для уменьшения шума напряжения ПТ с p-n-переходом: включив параллельно два ПТ, мы будем иметь вдвое большую gm, при этом, конечно, удваивается и Ic. Однако теперь, если мы сохраним предыдущее значение Ic, то при этом мы все же получим увеличение gm в √2 раз. На практике мы можем просто включить в параллель несколько согласованных ПТ с p-n-переходом либо обратиться к ПТ с усложненной геометрией, таким как упомянутые выше 2SJ72 и 2SK147.
При этом, однако, приходится платить. Все емкости соединяемых параллельно ПТ складываются, в результате чего высокочастотные характеристики (включая коэффициент шума) ухудшаются. На практике подключение дополнительных транзисторов необходимо прекратить, как только входная емкость схемы сравняется с емкостью источника. Если вас волнуют характеристики на высоких частотах, выбирайте ПТ с большой gm и малой С3C; можно рассматривать отношение gm/С3C как меру качества на высоких частотах, Следует отметить, что важную роль может играть также конфигурация схемы; например, чтобы исключить эффект Миллера (умножение за счет коэффициента усиления) относительно С3C, можно применить каскодную схему.
МОП-транзисторы обычно имеют намного большие значения шума напряжения, чем ПТ с p-n-переходом, причем преобладает шум 1/f, так как спад 1/f лежит у них в диапазоне достаточно высоких частот: от 10 до 100 кГц. По этой причине МОП-транзисторы обычно не используют в малошумящих усилителях на частотах, меньших 1 МГц.
Шум тока ПТ с p-n-переходом. На низких частотах шум тока /ш крайне мал; он возникает из дробового шума тока утечки затвора (рис. 7.53):
iш. эфф = (3,2·10-19I3утB)1/2 А.
Рис. 7.53. Зависимость входного тока шума от тока утечки затвора для ПТ с p-n-переходом.
(National Semiconductor Corp.)
Кроме того, в некоторых ПТ присутствует компонента фликкер-шума. Шум тока растет с ростом температуры, как ток утечки затвора. Обратите внимание на быстрый рост утечки затвора у n-канального ПТ с p-n-переходом, при больших значениях UC3 (см. разд. 3.09).
На средних и высоких частотах есть еще одна компонента шума, а именно действительная часть входного полного сопротивления со стороны затвора. Эта составляющая обусловлена действием емкости обратной связи (эффектом Миллера) при сдвиге фазы на выходе, порожденном емкостью нагрузки; иначе говоря, часть выходного, сигнала, сдвинутая по фазе на 90°, проходя через емкость обратной связи С3C, создает эффективное сопротивление на входе
R = (1 + ωCнRн)/(ω2gmC3CCнR2н) Ом.
Например, p-канальный ПТ с p-n-переходом 2N5266 имеет ток шума 0,005 пА/Гц1/2 и напряжение шума еш 12 нВ/Гц1/2 - то и другое при IСИ нас и на частоте 10 кГц. Ток шума начинает ползти вверх при частоте около 50 кГц. Эти значения примерно в 100 раз лучше по iш и в 5 раз хуже по еш, чем соответствующие значения рассмотренного ранее 2N5087.
С помощью ПТ можно получить хорошие шумовые параметры в диапазоне полного сопротивления от 10 кОм до 100 МОм. Предусилитель фирмы PAR модели 116 имеет коэффициент шума 1 дБ и лучше при полном сопротивлении источника от 5 кОм до 10 МОм в диапазоне частот от 1 до 10 кГц. Этот предусилитель на умеренных частотах имеет напряжение шумов 4 нВ/Гц1/2 и ток шумов 0,013 пА/Гц1/2.
7.16. Выбор малошумящих транзисторов
Как упоминалось раньше, биполярные транзисторы из-за малого входного шума напряжения имеют наилучшие шумовые параметры при малых значениях сопротивления источника. Шум напряжения еш уменьшается путем выбора транзистора с малым объемным сопротивлением базы rб и режима работы с большим током коллектора (пока h21Э остается большим). При больших сопротивлениях источника надо, наоборот, уменьшать шум тока путем снижения тока коллектора.
При большом сопротивлении источника лучшим выбором является ПТ. Его шум напряжения может быть уменьшен увеличением тока стока до такого значения, когда крутизна будет наибольшей. ПТ, предназначенные для работы в малошумящих устройствах, имеют большое значение k (см. разд. 3.04), что обычно означает большую входную емкость.
Например, у малошумящего 2N6483 емкость Сзи = 20 пФ, а у слаботочного ПТ 2N5902 емкость Сзи = 2 пФ. На рис. 7.54 и 7.55 показаны сравнительные шумовые характеристики некоторых распространенных и широко используемых транзисторов.
Рис. 7.54. Входные шумы для некоторых популярных биполярных транзисторов. а — зависимость входного напряжения шума еш от тока коллектора; б — зависимость входного тока шума iш от тока коллектора; в — зависимость входного тока шума от частоты.
Рис. 7.55. Входные шумы некоторых популярных ПТ. а — зависимость входного напряжения шума еш от тока стока Iс; б — зависимость входного напряжения шума iш от частоты; в — зависимость входного тока шума iш от частоты.
7.17. Шум дифференциальных усилителей и усилителей с обратной связью
Малошумящие усилители часто делают дифференциальными, чтобы получить обычные преимущества в виде малого дрейфа и хорошего подавления синфазных сигналов. Когда подсчитываются шумовые характеристики дифференциального усилителя, надо помнить: а) следует убедиться, что для извлечения еш и iш из паспорта изготовителя берется отдельный ток коллектора, а не их сумма; б) iш, приходящийся на каждый входной зажим, тот же, что и для одновходового усилителя; в) еш, приходящееся на один вход при заземленном другом, будет на 3 дБ (т. е. в √2 раз) больше, чем в случае отдельного транзистора.
В усилителях с обратной связью мы хотим найти эквивалентные источники шума еш и iш независимо от того, есть ли цепь обратной связи, чтобы их можно было использовать, как и раньше, при подсчете шумовых характеристик с заданным источником сигнала. Обозначим шумы схемы с обратной связью через еу и iу как шумы усилителя. Тогда шум, вносимый усилителем в сигнал при сопротивлении источника Rи, будет
е2 = е2у + (Rиiу)2 B2/Гц.
Рассмотрим отдельно два вида обратной связи.
Неинвертирующий усилитель. Для неинвертирующего усилителя (рис. 7.56) источники шума на входе будут
i2у = i2ш
e2у = e2ш + 4кТ R'' + (iшR'')2,
Рис. 7.56.
где еш - это «полный» шум напряжения дифференциальной схемы, т. е. на 3 дБ больший, чем для одиночного транзисторного каскада. Дополнительный вклад в шум дают тепловой шум и шум тока входного каскада в резисторах обратной связи. Заметим, что теперь эффективные значения шума напряжения и шума тока не будут абсолютно не коррелированными, следовательно, сложение их квадратов может привести к ошибке (не более чем в 1,4 раза).
Для повторителя R2 = 0, поэтому эквивалентные источники шума будут такими же как у отдельно взятого дифференциального усилителя.
Инвертирующий усилитель. Для инвертирующего усилителя (рис. 7.57) источники входного шума будут следующие:
i2у = i2ш + 4кТ/R2
e2у = e2ш + R21(i2ш + 4кТ/R2) = e2ш + R21i2у
Рис. 7.57.
График для выбора ОУ. Сейчас вы уже владеете всем необходимым аппаратом для анализа входных цепей ОУ. Их шум задается в виде еш и iш для биполярных и для полевых транзисторов. Вам не надо ничего выдумывать, надо только их правильно использовать. Вообще говоря, паспортные данные иногда несколько пикантны. Например, импульсный шум ("popcorn noise")[1] определяется как скачки сдвига в случайные моменты случайной длительности. Этот термин в приличном обществе употреблять не принято.
На рис. 7.58 изображены шумовые характеристики нескольких популярных ОУ.
Рис. 7.58. Входные шумы некоторых популярных ОУ. а — зависимость входного напряжения шума еш от частоты; б — зависимость входного тока шума iш от частоты.
Широкополосный шум. Операционные схемы обычно имеют связь по постоянному току, область их рабочих частот простирается до некоторой верхней граничной частоты fср. Поэтому интересно знать полное напряжение шума во всей этой полосе, а не просто плотность мощности шума. На рис. 7.59 представлены графики, показывающие среднеквадратичное напряжение шума в полосе, которая простирается от постоянного тока до указанной частоты; они найдены путем интегрирования кривых мощности шума для различных операционных усилителей.
Рис. 7.59. Напряжение широкополосного шума некоторых популярных ОУ.
Выбор малошумящего ОУ. Выбрать ОУ, который минимизировал бы шумы в некотором диапазоне частот при данном сопротивлении источника сигнала Rc, как он видится со стороны усилителя (т. е. включающем влияние компонентов обратной связи, как это было описано выше), достаточно просто. Вообще говоря, желательны ОУ с малым iш для больших сопротивлений сигнала и с малым еш для малых сопротивлений сигнала. Приняв, что источник сигнала находится при комнатной температуре, определим суммарную плотность отнесенного ко входу напряжения шума как
е2у = 4kTRc + е2ш+ i2шR2c
где первое слагаемое — тепловой шум, а два последних возникают за счет напряжения и тока шума ОУ. Очевидно, что тепловой шум является нижним пределом отнесенного ко входу шума. На рис. 7.60 даны графики величин еу (при 10 кГц) как функции Rc для наиболее бесшумных ОУ, которые мы могли найти. Для сравнения мы включили также бескорпусный ПТ ОУ LF411 и микромощный биполярный ОР-90. Последний, хотя и является превосходным микромощным операционным усилителем, имеет большое напряжение шума (входные транзисторы работают при малом токе коллектора, а отсюда высокое значение rЭ и, как следствие, большой тепловой шум), а также большой ток шума (биполярный вход имеет существенный ток базы). Это еще раз подтверждает, насколько действительно хороши призеры.
7.60. Полный шум (резистор источника плюс усилитель при 10 Гц) высококачественного ОУ.
Малошумящие предусилители. В дополнение к малошумящим ОУ имеется несколько превосходных ИМС малошумящих предусилителей. В отличие от ОУ они обычно имеют фиксированный коэффициент усиления, хотя в некоторых моделях можно подключать внешний резистор установки усиления. Иногда их называют «видеоусилителями», поскольку они зачастую имеют полосу пропускания в десятки мегагерц, хотя их можно использовать также в низкочастотных схемах. В качестве примеров можно указать на SL561B фирмы Plessey и несколько моделей фирмы Analog Systems. Эти усилители типично имеют еш менее 1 нВ/Гц1/2, что достигается (ценой повышения входного тока шума iш) за счет работы входного транзистора в режиме относительно большого коллекторного тока.
Измерение шума и источники шума
Определение эквивалентного напряжения шума, тока шума, а отсюда и коэффициента шума и отношения сигнал/шум для любого заданного источника — довольно примитивный процесс. Из него получаются все данные о шуме усилителя, которые могут вас интересовать. В основном этот процесс состоит в приложении ко входу известного шумового сигнала, а затем-в измерении амплитуды на выходе в определенной полосе частот. В некоторых случаях (например, при согласованном входном полном сопротивлении источника и устройства, как это бывает в усилителях радиочастоты) источник сигнала можно заменить генератором с точно известной и управляемой амплитудой колебаний.
Ниже мы обсудим методы и аппаратуру, которые понадобятся для измерения выходного напряжения и ограничения полосы измерения, а сейчас предположим, что вы можете измерять эффективное значение выходного сигнала при той полосе измерений, которую вы выберете.
7.18. Измерение без источника шума
В каскаде усилителя на биполярных или полевых транзисторах, предназначенного для работы на низких и средних частотах, желательно большое входное сопротивление. Мы хотим знать еш и iш, чтобы уметь предсказать отношение сигнал/шум для источника сигнала с произвольным уровнем и внутренним сопротивлением, как обсуждалось выше. Процедура эта проста. Во-первых, путем непосредственного измерения определяется коэффициент усиления по напряжению KU для сигналов интересующего нас частотного диапазона. Амплитуда их должна быть достаточна, чтобы сделать незаметным собственный шум усилителя, но не настолько велика, чтобы привести усилитель в насыщение.
Во-вторых, закорачивается вход усилителя и измеряется среднеквадратичное напряжение шума на выходе ек. з. Получаем напряжение входного шума на корень из герца по выражению
iш = ек. з/(KUB1/2) В/Гц1/2,
где В — ширина полосы измерения (см. разд. 7.21).
В-третьих, присоединив к входным клеммам резистор R, измеряем новое значение среднеквадратичного напряжения шума на выходе еr. Значение сопротивления резистора должно быть достаточно большим, чтобы была заметна величина появившегося шума тока, но не настолько, чтобы доминировало входное сопротивление усилителя. (Если это практически невозможно, то оставьте вход разомкнутым и используйте в качестве R входное сопротивление усилителя.) Измеренное напряжение на выходе удовлетворяет соотношению
е2r = [е2ш + 4kTR + (iшR)2]BK2U,
откуда находится iш
iш = (1/R)[(е2r/BK2U) — (е2ш + 4kTR)]1/2
Если «немножко повезет», то иметь значение будет лишь первое слагаемое под корнем (т. е. шум тока преобладает над шумом напряжения усилителя и над тепловым шумом резистора, вместе взятыми). Теперь найдем отношение сигнал/шум для сигнала Uи с полным сопротивлением источника Rи
где числитель — квадрат напряжения сигнала (предполагается, что он лежит внутри полосы В), а слагаемые знаменателя — это квадраты напряжения шума усилителя, тока шума усилителя, проходящего через сопротивление Rи, и теплового шума Rи. Заметьте, что расширение полосы пропускания усилителя сверх пределов, необходимых для прохождения сигнала Uи, только уменьшает окончательное значение отношения сигнал/шум. Но если сигнал Uи широкополосный (например, он сам является шумом), то окончательное значение отношения сигнал/шум не зависит от ширины полосы усилителя. Во многих случаях в приведенном выражении преобладает одно из слагаемых.
7.19. Измерение с источником шума
Описанная техника измерения шумовых характеристик усилителя обладает тем преимуществом, что для нее не требуется точного и регулируемого источника шума, но зато нужен точный вольтметр и фильтр, а также должна быть известна частотная характеристика коэффициента усиления усилителя при данном сопротивлении подключенного источника. В альтернативном методе измерения шума предполагается подача на вход широкополосного шумового сигнала известной амплитуды и наблюдение за возрастанием напряжения выходного шума. Хотя эта методика требует точно калиброванного источника шума, зато не нужно никаких предположений о свойствах усилителя, так как характеристики шума измеряются прямо в интересующей нас точке — на входе.
Опять-таки необходимые измерения проводятся относительно просто. Генератор шума вы подсоединяете ко входу усилителя, будучи уверенными в том, что его полное сопротивление Rг — то самое, которое будет у источника, намеченного для работы с этим усилителем. Сначала вы определяете эффективное выходное напряжение шума усилителя при ослаблении источника шума до уровня нулевого выходного сигнала, затем увеличиваете среднеквадратичную амплитуду напряжения источника шума Uг до тех пор, пока выходной сигнал усилителя не увеличится на 3 дБ; это соответствует умножению среднеквадратичного напряжения на 1,414. Значение напряжения входного шума в полосе измерения при данном значении сопротивления источника равно значению добавленного сигнала. Таким образом усилитель имеет коэффициент шума
КШ = 10·lg(U2г/4kTRг).
Отсюда можно получить значение отношения сигнал/шум для сигнала любой амплитуды с тем же сопротивлением источника, пользуясь формулой, приведенной в разд. 7.12:
С/Ш = 10·lg(U2и/4kTRи) — КШ(Rи) дБ.
Существуют хорошие доступные калиброванные источники шума, большинство из которых предоставляют возможность ослабления до прецизионного уровня в микровольтовом диапазоне. Отметим еще раз: в приведенных формулах предполагается, что Rвх >> Rи. С другой стороны, если измерение коэффициента шума производится с согласованным источником сигнала, т. е. если Rи = Zвх, то в предыдущих выражениях необходимо опустить коэффициент 4.
Заметим, что этим способом еш и iш прямо не определяются, находится только определенная комбинация для источника с сопротивлением, равным сопротивлению возбуждающего генератора, который используется при измерении. Конечно, после нескольких таких измерений с разными сопротивлениями источника вы можете в результате вывести значения еш и iш.
Превосходной вариацией этого метода является использование теплового шума резистора в качестве «источника шума». Это излюбленный прием разработчиков усилителей радиочастоты с очень малым уровнем шума (в которых обычно полное сопротивление источника сигнала равно 50 Ом, и оно согласовано с полным входным сопротивлением усилителя). Делается это обычно следующим образом. В сосуд Дьюара с жидким азотом помещается 50-омная «заглушка» (так на профессиональном жаргоне называется хорошо спроектированный резистор с пренебрежимо малой индуктивностью или емкостью), так что она имеет температуру кипящего азота 77 К; вторая заглушка 50 Ом находится при комнатной температуре. Вход усилителя попеременно подключается к этим двум резисторам (обычно с помощью высококачественного коаксиального реле), в то время как мощность шума на выходе (на некоторой центральной частоте при некоторой полосе измерения) измеряется с помощью измерителя мощности радиочастоты. Назовем результаты этих двух измерений мощности выходных шумов для холодного и теплого резисторов соответственно Rхол и Rтепл. Легко показать, что температура шума усилителя на частоте измерения равна
Tш = (Tтепл - Tхол)/(Y — 1),
где Υ = Rтепл/Rхол есть отношение мощностей шума. Отсюда, воспользовавшись формулой из разд. 7.12, имеем для коэффициента шума
КШ(дБ) = 10·lg(Тш/290 + 1).
Упражнение 7.6. Выведите предыдущее выражение для температуры шума. Подсказка: для начала примите, что Rтепл = α(Тш + Tтепл) и Rхол = α(Тш + Tхол), где α — константа, которая скоро сократится; обратите внимание также на то, что вклад шума усилителя, обозначенный как температура шума, добавляется к температуре шума резистора источника. Вычтите ее отсюда.
Упражнение 7.7. Температура шума (или коэффициент шума) усилителя зависит от величины полного сопротивления источника сигнала Rи. Покажите, что усилитель, характеризующийся величинами еш и iш (как на рис. 7.46), имеет минимум температуры шума при полном сопротивлении источника Rи = еш/iш. Покажите, далее, что при этом значении Rи температура шума определяется формулой Тш = еш·iш/2k.
Усилители с согласованным входным сопротивлением. Последний способ идеален для измерения шума усилителей, спроектированных в расчете на согласованное сопротивление источника сигнала. Наиболее частыми примерами таких усилителей являются радиочастотные усилители или приемники для работы с полным сопротивлением источника сигнала около 50 Ом и сами имеющие входное сопротивление 50 Ом. В гл. 13 мы обсудим причины отступления от нашего обычного критерия, который гласит, что источник сигнала должен иметь малое внутреннее полное сопротивление по сравнению с полным сопротивлением нагрузки, на которую он работает. В этом случае еш и iш по отдельности не важны, имеет значение только общий (с согласованным источником) коэффициент шума или некоторое специфицированное значение отношения сигнал/шум с согласованным источником сигнала оговоренной амплитуды.
Иногда шумовые параметры выражаются явно в виде амплитуды узкополосного сигнала, необходимого для получения определенного отношения сигнал/шум на выходе. Обычный радиоприемник может иметь специфицированное отношение сигнал/шум 10 дБ при среднеквадратичном напряжении входного сигнала 0,25 мкВ и ширине полосы 2 кГц. В этом случае процедура состоит в измерении среднеквадратичного напряжения выходного сигнала приемника в условиях возбуждения входа согласованным (по сопротивлению) источником синусоидального сигнала, вначале выведенным на ноль, а потом дающим возрастающий (синусоидальный) сигнал до тех пор, пока среднеквадратичный выходной сигнал не достигнет уровня 10 дБ; в обоих случаях ширина полосы приемника 2 кГц. Важно, чтобы используемый измерительный прибор давал истинное среднеквадратичное напряжение, когда шум и сигнал смешаны (подробнее об этом см. далее). Заметим, что при измерении радиочастотных шумов часто требуется работа с выходными сигналами звукового диапазона.
7.20. Генераторы шумов и сигналов
Широкополосный шум может генерироваться с помощью указанных ранее эффектов, а именно за счет теплового и дробового шума. Дробовой шум вакуумного диода является классическим источником широкополосного шума, который особенно удобен в работе, поскольку напряжение шума можно точно предсказать. С недавних пор в качестве источника шума все чаще применяется стабилитрон. Шумы обоих этих источников имеют спектр частот от нуля до очень больших значений, поэтому они полезны и при измерениях в звуковом диапазоне, и в радиодиапазоне.
Интересный источник шума можно построить с помощью цифровой аппаратуры, в частности длинных сдвиговых регистров, в которых на вход подается результат сложения по модулю 2 нескольких фиксированных разрядов (разд. 9.33). В результате образуется выходной сигнал в виде псевдослучайной последовательности нулей и единиц, которая после цифро-аналогового преобразования и прохождения через фильтр нижних частот порождает аналоговый сигнал в виде белого шума со спектром, простирающимся до точки среза фильтра; эта точка должна быть намного ниже частоты, с которой сдвигается регистр. Такие генераторы могут работать на очень высоких частотах, генерируя шум до 100 и более килогерц.
Этот «шум» обладает интересным свойством: по прошествии некоторого времени, определяемого длиной регистра, он в точности повторяется (регистр максимальной длины n бит перед повторением проходит через 2n — 1 состояний). Этот период без особого труда можно продлить на месяцы или годы, хотя секунд, как правило, достаточно. Например, 50-разрядный регистр, сдвигаемый с частотой 10 МГц, генерирует белый шум со спектром до 100 кГц и временем повторения 3,6 года. Аппаратура для генерации псевдослучайного шума на базе этого метода описана в разд. 9.36.
Некоторые источники шума могут генерировать и белый, и розовый шум. У розового шума равные мощности на каждой октаве, а не на каждой частоте. Плотность его мощности (мощность на герц) имеет спад 3 дБ/октава, и, поскольку RС-фильтр имеет спад 6 дБ/октава, для генерации розового шума из белого необходим довольно сложный фильтр. Схема, представленная на рис. 7.61, работает от ИМС 23-разрядного цифрового генератора белого шума и дает на выходе розовый шум с точностью ±0,25 дБ от 10 Гц до 40 кГц.
Рис. 7.61. Источник розового шума (— 3 дБ/октава, ±0,25 дБ от 10 Гц до 40 кГц).
Выпускаются самые разнообразные источники сигнала с прецизионно-регулируемой амплитудой выходного сигнала (вплоть до микровольтового диапазона и ниже) и частотой от долей герца до гигагерц. Некоторые из них могут программироваться по цифровой «шине». В качестве примера — синтезирующий генератор сигнала, модель 8660 Hewlett-Packard, с частотой выходного сигнала от 0,01 до 110 МГц и амплитудой выходного сигнала, калиброванной от 10 нВ до 1В (среднеквадратичное напряжение), с удобным цифровым дисплеем, шиной внешних соединений (интерфейсом) и шикарными приставками для расширения полосы частот до 2,6 ГГц для модуляции и качания частоты. Это несколько больше, чем обычно нужно для работы.
7.21. Ограничение полосы частот и измерение среднеквадратичного (эффективного) напряжения
Ограничение полосы частот. Во всех измерениях, о которых говорилось, предполагается, что шум на выходе рассматривается в ограниченной полосе частот. В некоторых случаях усилитель может иметь приспособления для такого ограничения, что облегчает работу. Если это не так, то приходится присоединять к выходу усилителя какой-нибудь фильтр, и уже потом измерять напряжение шума на выходе фильтра.
Проще всего использовать обычный RС-фильтр с точкой, отвечающей значению — 3 дБ, установленной примерно на край нужной полосы. Для точного измерения шума необходимо знать эквивалентную «полосу шума», т. е. ширину полосы совершенного «прямоугольного» фильтра нижних частот, через который бы проходило такое же напряжение шума (рис. 7.62).
B = (π/2)f_3 дБ = 1,57/f_3 дБ.
Рис. 7.62. Эквивалентная «прямоугольному фильтру» полоса шума RС-фильтра нижних частот. 1 — RC-фильтр (20 дБ/декада); 2 — эквивалентная идеальная характеристика.
Значение ширины этой полосы подставляется вместо В в приведенных выше выражениях. После несложных выкладок находим: Для пары каскадно соединенных RC-фильтров (развязанных таким образом, чтобы они не нагружали друг друга) магическим выражением будет В = 1,22/f_3 дБ. Для фильтра Баттерворта, описанного в разд. 5.05, ширина полосы шумов такова:
В = 1,57·f_3 дБ … 1 полюс
В = 1,11·f_3 дБ … 2 полюса
В = 1,05·f_3 дБ … 3 полюса
В = 1,025·f_3 дБ … 4 полюса
Если вы хотите провести измерения в ограниченной полосе частот около некоторой средней частоты, то можете использовать просто пару RС-фильтров (рис. 7.63); в этом случае полоса частот будет иметь указанный вид.
Рис. 7.63. Эквивалентная «прямоугольному фильтру» полоса шума полосового RС-фильтра.
Если у вас уже есть опыт контурного интегрирования, можете попробовать сделать следующее упражнение:
Упражнение 7.8. (Факультативное.) Выведите предыдущий результат прямо из свойств характеристик RС-фильтров. Предположите, что мощность входного сигнала равна единице на герц и проинтегрируйте выходную мощность от нуля до бесконечности. Контурный интеграл и будет искомым ответом.
Другой способ изготовить полосовой фильтр для измерения шума — это использовать RLC-схему. Это лучше, чем пара каскадно соединенных RС-фильтров верхних и нижних частот, если вы хотите провести измерения в полосе, узкой в сравнении с центральной частотой (т. е. с высоким Q). На рис. 7.64 показаны как параллельная, так и последовательная RLС-схема, а также точные формулы, определяющие их полосы пропускания; для обеих схем резонансная частота f0 = 1/2π√(LC)
Рис. 7.64. Эквивалентная «прямоугольному фильтру» полоса шума полосового RLC-фильтра.
Вы можете сформировать схему полосового фильтра в виде параллельной коллектору (или стоку) RLС-нагрузки; в этом случае используются приведенные выражения. Другой вариант: можно ввести фильтр, как показано на рис. 7.65; с точки зрения пропускания шумов в определенной полосе эта схема в точности эквивалентна параллельной RLC-цепи при R = R1||R2.
Измерение напряжения шума. Наиболее точный способ измерения выходного шума — использование выверенного вольтметра среднеквадратичного (эффективного) напряжения. Он работает путем измерения нагрева, производимого соответственно усиленным сигналом, или с использованием аналоговой схемы возведения в квадрат с последующим усреднением. Если вы пользуетесь измерителем истинного среднеквадратичного значения, то сначала проверьте, рассчитан ли он на те частоты, на которых проводятся измерения, потому что некоторые такие приборы имеют частоту всего несколько килогерц. Измерители истинного среднеквадратичного напряжения специфицируются также по пик-фактору, т. е. предельному отношению пикового напряжения к среднеквадратичному, при котором нет больших потерь точности. При измерении нормальных (гауссовских) шумов достаточно иметь пик-фактор от трех до пяти.
При отсутствии среднеквадратичного вольтметра можно воспользоваться простым осредняющим вольтметром переменного тока. Но в этом случае показания прибора приходится корректировать. Дело в том, что все осредняющие вольтметры (VOM, DMM и т. п.) изначально настроены так, что показывают не среднее напряжение, а среднеквадратичное напряжение в предположении синусоидальности сигнала. Например, если измерить напряжение электросети в США, то вольтметр покажет приблизительно 117 В. Это прекрасно, но, так как вы измеряете гауссовский шум, то придется применить дополнительную коррекцию. Правило здесь такое: чтобы получить среднеквадратичное напряжение гауссовского шума, следует показания осредняющего вольтметра переменного тока умножить на 1,13 или добавить 1 дБ.
Предупреждение: это правило хорошо работает, если измеряется чистый шум (т. е. выходной сигнал усилителя с резистором или генератором шума на входе), но оно не дает точного значения, если к шуму добавлен синусоидальный сигнал.
Третий метод (не очень точный) состоит в наблюдении шумовой картины на экране осциллографа: среднеквадратичное напряжение равно от 1/6 до 1/8 значения разности пиков (разброс зависит от вашей субъективной оценки этой величины). В этом методе хотя и неточном, не возникает проблем с получением достаточной полосы измерения.
7.22. Попурри на тему шумов
Вот подборка интересных и, возможно, полезных фактов.
1. Время осреднения, необходимое для того, чтобы в показывающем приборе флуктуации выпрямленного шумового сигнала уменьшились до требуемого уровня при заданной полосе шумов, равно
τ ~= 1600/Bσ2 с,
где τ — постоянная времени показывающего прибора, необходимая для того, чтобы создать на выходе линейного детектора, возбуждаемого на входе шумом с полосой В, флуктуации со стандартным отклонением σ процентов.
2. Для белого шума с ограниченной полосой ожидаемое количество максимумов в секунду равно
где f1 и f2 - нижняя и верхняя границы полосы. Для f1 = 0 N = 0,77f2 ; для узкополосного шума (f1 ~= f2) N ~= (f1 + f2)/2.
3. Отношение среднеквадратичного значения к среднему составляет: для гауссовского шума эфф/ср = √(π/2) = 1,25= 1,96 дБ,
для синусоидального сигнала эфф/ср = π/23/2 = 1,11 =0,91 дБ, для прямоугольного сигнала эфф/ср = 1 = 0 дБ.
4. Частоты появления амплитуд в гауссовском шуме. Рис. 7.66 показывает долю времени, когда данный уровень амплитуды превышается гауссовским шумом (мгновенным значением), имеющим эффективное значение 1 В.
Рис. 7.66. Относительная наблюдаемость амплитуд в гауссовском шуме.
Помехи: экранирование и заземление
«Шум» в виде мешающего сигнала, т. е. наводки сети, сигналов, приходящих по связям с источником питания и путям заземления, на практике может иметь более важное значение, чем рассматривавшийся ранее внутренний шум. Эти мешающие сигналы могут быть уменьшены до незаметных значений (в отличие от теплового шума) путем правильного размещения и конструирования схем. В упорных случаях можно включать комбинацию из фильтрации на линиях входа и выхода, тщательно продуманного расположения заземления, а также дорогостоящую электростатическую и магнитную экранировку. В ближайших разделах мы попытаемся осветить эту темную область искусства схемотехники.
7.23. Помехи
Сигнал помехи может попасть в электронный прибор по входам, линий питания или по линиям ввода и вывода сигнала. Помехи могут попасть в схему и через емкостную связь с проводами (электростатическая связь-наиболее серьезный эффект для точек схемы с большим полным сопротивлением) или через магнитную связь с замкнутыми контурами внутри схемы (независимо от уровня полного сопротивления), или электромагнитную связь с проводами, работающими как небольшие антенны для электромагнитных волн. Любой из этих механизмов может передавать сигнал из одной части схемы в другую. И наконец, токи сигнала в одной части могут влиять на другую часть схемы при падении напряжения на путях заземления и линиях питания.
Исключение помех. Для решения этих часто встречающихся вопросов борьбы с помехами придумано много эффективных приемов. Однако следует помнить, что все эти приемы направлены на уменьшение сигнала (или сигналов) помехи, редко когда помеха уничтожается совсем. Поэтому имеет смысл повысить уровень сигнала просто для увеличения отношения сигнал/шум. Кроме того, надо ясно представлять себе, что внешние условия могут быть в смысле помех очень разными - прибор, который безукоризненно работает на стенде, может вести себя безобразно на том месте, для которого он предназначен. Перечислим некоторые внешние условия, которых следует избегать: а) соседство радио- и телестанций (РЧ-помехи), б) соседство линий метро (импульсные помехи и «мусор» в линии питания), в) близость высоковольтных линий (радиопомехи, шипение), г) близость лифтов и электромоторов (всплески в линии питания), д) здания с регуляторами освещения и отопления (всплески в линии питания), е) близость оборудования с большими трансформаторами (магнитные наводки) и ж) особенно близость электросварочных аппаратов (наводки всех видов неимоверной силы). При сем прилагается ряд советов, технических приемов и заклинаний из области черной магии.
Сигналы, связанные через входы, выходы и линии питания. В борьбе с шумами, идущими по линии питания, лучше всего комбинировать линейные РЧ-фильтры и подавители переходных процессов в линии переменного тока. Этим способом можно добиться ослабления помех на 60 дБ при частотах до нескольких сот килогерц, а также эффективного подавления повреждающих всплесков.
С входами и выходами дело сложнее из-за уровней полного сопротивления и потому, что надо обеспечить прохождение полезных сигналов, которые могут иметь тот же частотный диапазон, что и помехи. В устройствах типа усилителей звуковых частот можно использовать фильтры нижних частот на входе и на выходе (многие помехи от близлежащих радиостанций попадают в схему через провода громкоговорителя, выполняющие роль антенн). В других ситуациях необходимы, как правило, экранированные провода. Провода с сигналами низкого уровня, в частности при высоком уровне полного сопротивления, всегда нужно экранировать. То же относится к внешнему корпусу прибора.
Ёмкостная связь. Внутри прибора сигналы могут прекрасно проходить всюду путем электростатической связи: в какой-нибудь точке в приборе происходит скачок сигнала 10 В и на расположенном рядом входе с большим полным сопротивлением произойдет тот же симпатичный скачок. Что тут можно сделать? Лучше всего уменьшить емкость между этими точками, нарушителями порядка (разнеся их), добавить экран (цельнометаллический футляр или даже металлическая экранирующая оплетка исключает этот вид связи), придвинуть провода вплотную к плате заземления (которая «глотает» электростатические пограничные поля, в огромной степени ослабляя связь) и, если возможно, снизить полное сопротивление насколько удастся. Входы операционного усилителя в отличие от выходов легко подхватывают помеху. Более подробно об этом см. далее.
Магнитная связь. К сожалению, низкочастотные магнитные поля не ослабляются существенно металлической экранировкой. Проигрыватель, магнитофон, микрофон или другая чувствительная схема, расположенная вблизи большого силового трансформатора, будет иметь очень большие наводки сетевой частоты. Лучший способ борьбы с этим явлением — следить, чтобы каждый замкнутый контур внутри схемы имел минимальную площадь, и стараться, чтобы схема не имела проводов в виде петли. Эффективны в борьбе с магнитной наводкой витые пары, так как площадь каждого витка мала, а сигналы, наведенные в следующих друг за другом витках, компенсируются.
При работе с сигналами очень низкого уровня, или устройствами, очень чувствительными к магнитным наводкам (головки магнитофонов, катушки индуктивности, проволочные сопротивления), может оказаться желательным магнитное экранирование. «Экраны из мю-металла» выпускаются в виде готовых форм или гибких листов. Если внешнее магнитное поле велико, то лучше всего применять экран из материала с высокой магнитной проницаемостью, окруженный экраном с низкой магнитной проницаемостью (например, из обычного железа) для того, чтобы предотвратить магнитное насыщение внутреннего экрана. Конечно, наиболее простым решением часто является удаление мешающего источника магнитного поля. Иногда бывает необходимо убирать большие силовые трансформаторы, так сказать, с переднего края. Тороидальные трансформаторы имеют меньшую величину излучаемого магнитного поля по сравнению с обычными прямоугольными.
Радиочастотные помехи. Наводки радиочастоты могут быть очень коварными, поскольку невинная на взгляд часть схемы может работать как эффективный резонансный контур с огромным резонансным пиком. Кроме общего экранирования, желательно все провода делать как можно короче и избегать образования петель, в которых может возникнуть резонанс. Если речь идет об очень высоких частотах, то тут могут помочь ферритовые кольца-бусины. Классической ситуацией паразитного приема высоких частот является пара шунтирующих конденсаторов (один танталовый, другой дисковый керамический), что часто рекомендуется для улучшения шунтирования питания. Такая пара образует отличный паразитный настроенный контур где-то в области от ВЧ до СВЧ (от десятков до сотен мегагерц), да еще и самовозбуждающийся (при наличии усиления)!
7.24. Сигнальное заземление
Провода заземления и заземленные экраны могут доставить много неприятностей, и по этому поводу существует много недоразумений. В двух словах сущность проблемы такова: ток (о котором мы забыли), протекая по линии заземления, может возбудить сигнал, который воспринимает другая часть схемы, сидящая на том же проводе заземления. Часто делают «Мекку» заземления — это точка, в которой сходятся все линии заземления схемы, но это-решение в лоб; при мало-мальском понимании сути проблемы вы сможете в большинстве ситуаций найти более разумное решение.
Обычные ошибки заземления. Общая ситуация представлена на рис. 7.67.
Рис. 7.67. Схема заземления для сигналов низкого уровня. а — правильно; б — неправильно.
В одном приборе находятся усилитель низкого уровня и мощный усилитель (драйвер) с большим потребляемым током. Первая схема сделана правильно: оба усилителя присоединены непосредственно к измерительным выводам стабилизатора напряжения питания, поэтому падение напряжения I·R на проводах, идущих к мощному каскаду, не оказывает влияния на напряжение питания усилителя низкого уровня. К тому же ток нагрузки, проходя на землю, не появляется на входе низкого уровня; вообще, никакой ток не идет по проводу заземления входа усилителя низкого уровня к схемной «Мекке» (в качестве которой может быть выбрано соединение с корпусом возле входного коаксиального разъема BNC).
Во второй схеме имеются две грубые ошибки. Флуктуации напряжения питания, порожденные токами нагрузки каскада высокого уровня, отражаются на напряжении питания каскада низкого уровня. Если входной каскад имеет недостаточно высокий коэффициент ослабления флуктуации питания, то это может привести к возникновению автоколебаний. Дальше и того хуже: ток нагрузки, возвращаясь к источнику питания, вызывает флуктуации потенциала на «земле» корпуса по отношению к заземлению источника питания. Входной каскад оказывается привязанным к этой «переменной земле», а это, очевидно, плохо.
Мораль состоит в том, что надо следить, где протекают большие токи сигнала, и смотреть, чтобы вызываемые ими падения напряжения не влияли на вход. В некоторых случаях разумно отделить источник питания от каскада низкого уровня небольшой RС-цепью (рис. 7.68). В особо трудных случаях с развязкой источника питания можно попробовать в цепь питания каскада низкого уровня поставить стабилитрон или трехвыводной стабилизатор для дополнительной развязки.
7.25. Межприборное заземление
Идея главной точки заземления внутри одного прибора хороша, но что делать, если сигнал идет из одного прибора в другой и у каждого из них свое представление о «земле»? Рекомендуем несколько предложений.
Сигналы высокого уровня. Если сигналы имеют напряжение несколько вольт или это логические сигналы высокого уровня, то просто соедините то, что нужно, и забудьте об этом (рис. 7.69).
Источник напряжения (обозначен между двумя заземлениями) представляет собой разность потенциалов между двумя выводами линий питания в одной и той же комнате или (что хуже) в разных комнатах здания. Эта разность потенциалов состоит частично из напряжения, наведенного от сети, гармоник частоты сети, радиочастотных сигналов (силовые линии питания — хорошая антенна), разных всплесков и прочего «мусора». Если ваши сигналы достаточно велики, то со всем этим вы можете жить.
Малые сигналы и длинные линии. Для малых сигналов такая ситуация нетерпима, и вам придется сделать некоторые усилия, чтобы ее улучшить. Несколько идей для этой цели содержит рис. 7.70.
Рис. 7.70. Цепи заземления с экранированными кабелями для сигналов низкого уровня.
На первой схеме коаксиальный экранированный кабель присоединен к корпусу и схемному заземлению источника сигнала, но изолирован от корпуса приемника (используйте изолированный разъем BNC Bendix 4890-1 или Amphenol 31-010). Благодаря дифференциальному усилителю для буферизации входного сигнала подавляется синфазный сигнал в цепи заземления, выделяющийся на экране. Также полезно подключить резистор с малым сопротивлением и шунтирующий конденсатор на землю для ограничения сдвига «напряжения заземления» и предупреждения повреждений входного каскада. Еще одна схема приемника на рис. 7.70 демонстрирует использование «псевдодифференциального» входного включения для усилительного каскада с одним выходом (это может быть, например, стандартный неинвертирующий ОУ, как по схеме). Сопротивление 10 Ом включенного между общей точкой усилителя и схемной землей резистора достаточно велико (во много раз больше полного сопротивления заземления источника), так что потенциал в этой точке задает опорная земля источника сигнала. Разумеется, любой шум, присутствующий в этом узле схемы, появится также на выходе, однако это становится неважным, если каскад имеет достаточно высокий коэффициент усиления ΚU, поскольку отношение полезного сигнала к шумам заземления увеличивается в ΚU раз. Таким образом, хотя данная схема не является подлинно дифференциальной (обладающей бесконечным КОСС), тем не менее работает она достаточно хорошо (с эффективным КОСС, равным ΚU). Такой прием псевдодифференциального включения с отслеживанием потенциала земли можно использовать также для сигналов низкого уровня внутри самого прибора, когда возникают проблемы с шумами заземления.
Во второй схеме используется экранированная витая пара, экран которой присоединен к корпусу на обоих концах. Это не опасно, так как по экрану сигнал не идет. Дифференциальный усилитель используется, как и раньше, на приемном конце. Если передается логический сигнал, то имеет смысл передавать дифференциальный сигнал (сигнал и его инверсию), как показано на рисунке. Во входных каскадах приемной стороны можно применять обычные дифференциальные усилители или, если очень сильны помехи от земли, специальные «изолированные» усилители (выпускаются фирмами Analog Devices и Burr-Brown). Последние могут работать при киловольтных синфазных сигналах. Также работают оптоэлектронные изолирующие модули, в некоторых случаях — это удобное решение для передачи цифровых сигналов.
На радиочастотах подходящий способ подавления синфазного сигнала на приемном конце дает трансформаторная связь; она также облегчает получить дифференциальный биполярный сигнал на передающем конце. Трансформаторы также популярны в звуковой аппаратуре, хотя они громоздки и ведут к некоторому искажению сигнала.
Для очень длинных кабельных линий (измеряемых милями) полезно принять меры против больших токов в экранах на радиочастотах. Способ достижения этого показан на рис. 7.71.
Рис. 7.71. Схема защиты входа приемника сигналов с очень длинной линии.
Как было показано выше, дифференциальный усилитель работает с витой парой и на него не влияет напряжение экрана. Путем связи экрана через небольшую катушку индуктивности с корпусом удается сохранить малое напряжение постоянного тока, а большие радиочастотные токи исключить. На этой схеме показана также защита от выхода синфазного напряжения за пределы ±10 В.
Хорошая схема защиты многопроводного кабеля, в котором требуется исключить синфазные наводки, показана на рис. 7.72.
Рис. 7.72. Подавление синфазной помехи при пользовании длинным многожильным кабелем.
Так как у всех сигналов эта наводка одна и та же, то единственный провод, подключенный к земле на передающем конце, служит для компенсации синфазных сигналов во всех n проводах сигнала. Просто этот сигнал считывается по отношению к земле на приемном конце и используется как опорный входной сигнал для всех n дифференциальных усилителей, работающих с остальными сигналами.
Приведенные схемы хорошо подавляют синфазные помехи на низких и средних частотах, но против радиочастотных помех они могут оказаться неэффективными из-за низкого КОСС в приемном дифференциальном усилителе. Одной из возможностей здесь оказывается закрутка кабеля целиком вокруг ферритового тора (рис. 7.73).
Это увеличивает последовательную индуктивность кабеля в целом, повышает полное сопротивление синфазному сигналу на высокой частоте и облегчает возможность шунтирования его на дальнем конце парой конденсаторов малой емкости на землю. Эквивалентная схема показывает, почему это происходит без ослабления дифференциального сигнала: у вас есть последовательные индуктивности, включенные в сигнальные линии и экран, но поскольку они образуют трансформатор с единичным отношением числа витков, дифференциальный сигнал не изменяется. Это есть на самом деле «1:1 продольный трансформатор», который описывается в разд. 13.10.
Плавающий источник сигнала. Та же несогласованность напряжений заземления в разных местах проявляется еще более серьезно на входах низкого уровня, поскольку там сигналы очень малы. Примером является головка магнитофона или другой источник сигнала, для которого нужна экранированная сигнальная линия. Если заземлить экран на обоих концах, то разность напряжений заземления появится в качестве сигнала на входе усилителя. Лучше всего отделить экран от заземления в источнике (рис. 7.74).
Изолирующие усилители. Другим решением серьезных проблем, связанных с заземлением, является использование «изолирующего усилителя». Изолирующие усилители — это готовые устройства, предназначенные для передачи аналогового сигнала (с полосой частот, начинающейся с постоянного тока) от схемы с одним опорным уровнем заземления к другой схеме, имеющей совершенно другую землю (рис. 7.75).
Рис. 7.75. Концепция изолирующего усилителя.
На практике в некоторых экзотических ситуациях потенциалы этих «земель» могут отличаться на много киловольт! Применение изолирующих усилителей обязательно в медицинской электронике - там, где электроды прикладываются к телу человека, с тем, чтобы полностью изолировать такие контакты от измерительных схем, запитанных непосредственно от сети переменного тока. В выпускаемых в настоящее время изолирующих усилителях используется один из следующих трех методов:
1. Трансформаторная изоляция (развязка) несущего сигнала высокой частоты, подвергнутого частотной или широтно-импульсной модуляции относительно узкополосным сигналом (с частотой от 0 до 10 кГц или около того), который необходимо изолировать (рис. 7.76).
Рис. 7.76. Изолирующий усилитель AD295 с трансформаторной связью. (Analog Devices).
Этот метод применяется во всех изолирующих усилителях фирмы Analog Devices, а также в ряде устройств фирмы Burr-Brown. Изолирующие усилители с трансформаторной развязкой имеют удобную особенность: питание постоянного тока подается только на одну сторону (передающую или приемную); у всех у них в корпусе встроен преобразователь постоянного напряжения в постоянное напряжение с трансформаторной связью. Усилители такого типа обеспечивают изоляцию до 3,5 кВ и имеют типичную полосу пропускания порядка 2 кГц, хотя некоторые устройства работают с сигналами до 20 кГц.
2. Оптоэлектронная передача сигнала через светодиод на передающем конце и фотодиод на стороне приемника. Типичным примером использования этого метода служит ISO100 фирмы Burr-Brown. Здесь не требуется высокочастотной несущей, поскольку сигналы, будь они даже постоянного тока, можно передавать оптически. Для того чтобы добиться хорошей линейности, Burr-Brown использовала изящный ход: свет от светодиода падает также на второй (согласованный с первым) фотодиод, включенный на передающем конце по схеме обратной связи, так что нелинейности свето- и фотодиода взаимно уничтожаются; см. рис. 7.77. ISO100 требует источников питания на обоих концах, изолирует до 750 В и имеет полосу 60 кГц.
Рис. 7.77. Аналоговый изолирующий усилитель с оптической связью.
3. Изоляция за счет емкостной связи по высокочастотной несущей, модулированной по частоте сигналом, который необходимо изолировать (рис. 7.78).
Рис. 7.78. Изолирующий усилитель с емкостной связью.
Представителями этого метода являются ISO102, ISO106 и ISO122 фирмы Burr-Brown (рис. 7.79).
Рис. 7.79. Изолирующий усилитель ISO106 фирмы Burr-Brown.
(Burr-Brown Corporation).
Здесь нет обратной связи, как и при трансформаторной изоляции, но для большинства моделей нужны источники питания на обоих концах. Это обычно не доставляет трудностей, поскольку у вас, скорее всего, должны быть электронные схемы на обоих концах, генерирующие и использующие сигнал. Если это не так, то вы можете достать изолированный преобразователь постоянного напряжения для использования его в такого рода усилителе. ISO106 обеспечивает изоляцию до 3,5 кВ и имеет полосу пропускания 70 кГц.
Все изолирующие усилители такого рода предназначены для работы с аналоговыми сигналами и обладают умеренной полосой пропускания; стоимость каждого из них лежит в пределах от 25 до 100 долл. Такого же плана проблемы заземления могут возникать и в цифровых схемах, где они решены просто и эффективно: выпускаются изоляторы с оптической связью (оптоизоляторы) с большим выбором полосы (до 10 МГц и более), изолирующие разность потенциалов в несколько киловольт и имеющие низкую стоимость (1–2 долл.). Мы познакомимся с ними в гл. 9.
Защита сигнала. К этому вопросу тесно примыкает защита сигнала — изящный способ уменьшения эффектов входной емкости и утечек при малых сигналах и большом полном сопротивлении. Если вы работаете с сигналами от микроэлектродов или емкостных датчиков с внутренним полным сопротивлением в сотни мегаом, то даже входная емкость в несколько пикофарад может в этом случае совместно с этим сопротивлением образовать фильтр нижних частот со спадом, начинающимся с нескольких герц! К тому же конечное значение сопротивления изоляции в соединительном кабеле легко может на порядки ухудшить рабочие параметры усилителя со сверхнизким током входного сигнала (ток смещения меньше пикоампера) за счет утечек. Обе эти проблемы разрешаются путем использования защитного электрода (рис. 7.80).
Рис. 7.80. Применение «защитного» экрана для увеличения входного полного сопротивления.
Внутренний экран соединен с повторителем; это эффективно исключает токи и резистивных, и емкостных утечек за счет нулевой разности потенциалов между сигнальным проводом и его окружением. Внешний заземленный экран предохраняет от помех защитный электрод; не доставляет хлопот работа повторителя на емкость и утечку между экранами, так как у повторителя малое полное выходное сопротивление. Однако не следует применять этот прием чаще, чем это необходимо; имеет смысл ставить повторитель как можно ближе к источнику сигнала, защищая лишь небольшой отрезок кабеля, соединяющий повторитель и источник. Передавать сигнал после повторителя с его низким выходным полным сопротивлением к отдаленному усилителю можно и по обычному экранированному кабелю. Защиту сигнала мы рассмотрим в разд. 15.08 в связи с микроэлектродами с большим полным сопротивлением.
Влияние на выходные сигналы. Как правило, выходное сопротивление ОУ настолько мало, что не надо заботиться о емкостных наводках на выходной сигнал. Однако в случае наличия высокочастотной или быстропереключающейся помехи основание для беспокойства имеется, особенно если от выходного сигнала требуется более или менее приличная точность. Рассмотрим пример на рис. 7.81.
Рис. 7.81. Схема образования помех от цифровых схем в линейном аналоговом сигнале.
Прецизионный сигнал усиливается с помощью ОУ и проходит через область пространства, содержащую логические элементы с сигналами, дискретно изменяющимися со скоростью нарастания 0,5 В/нс. Выходное полное сопротивление замкнутого ОУ повышается с частотой, достигая значений от 10 до 100 Ом на частоте 1 МГц (см. разд. 7.07). Какой должна быть наибольшая допустимая паразитная емкость связи, если влияние помехи должно быть меньше разрешения аналогового сигнала 0,1 мВ? Удивительный ответ — 0,02 пФ.
Есть несколько решений этого вопроса. Лучше всего держать ваш маленький аналоговый сигнал подальше от скопления быстропереключающихся сигналов. Средней величины конденсатор, шунтирующий выход ОУ (возможно, с небольшим последовательным резистором для обеспечения устойчивости ОУ), может исправить положение, хотя и снизит скорость нарастания. Грубо говоря, конденсатор снижает частоту воспринимаемых помех до такого значения, при котором обратная связь усилителя может их подавить. Несколько сот пикофарад на землю придадут достаточную устойчивость аналоговому сигналу высокой частоты (представьте себе емкостный делитель напряжения). Еще одна возможность — это применить буферный усилитель с низким полным выходным сопротивлением, как LT1010, или мощный ОУ типа LM675. Не пренебрегайте также возможностью использовать экранирование, витые пары и близость к платам заземления для уменьшения влияний.
Схемы, не требующие пояснений
7.26. Удачные схемы
На рис. 7.82 показаны некоторые идеи построения схем, имеющие отношение к теме данной главы.
Рис. 7.82. а — схема измерения напряжения сдвига ОУ;
Рис. 7.82. б — схема измерения низкочастотного шума ОУ;
Рис. 7.82. в — схема измерения времени установления;
Рис. 7.82. г — схема для работы на большую емкостную нагрузку;
Рис. 7.82. д — схемы защиты от помех входов сигналов низкого уровня с высоким Z. (R компенсирует выходное сопротивление источника);
Рис. 7.82. е - схемы подстройки сдвига (I — традиционная; II — улучшенная с потенциометром со средней точкой. Эта схема, предоставленная фирмой Bourns, имеет меньшую зависимость от небаланса напряжений питания);
Рис. 7.82. ж — интегратор с ограничителем из стабилитронов с малой утечкой;
Рис. 7.82. з — сверхпрецизионный источник тока;
Рис. 7.82. и — уменьшение «усиления шума» в усилителе сигналов низкого уровня — преобразователе полного сопротивления (из сборника по применению фирмы Burr-Brown);
Рис. 7.82. к — прецизионный интегратор с компенсацией утечки конденсатора (потенциометр П1 используется для установления нулевого дрейфа в момент, когда напряжение на выходе близко к нулю, а П2 — когда выход близок к +10 В);
Рис. 7.82. л — измерительный усилитель (коэффициент усиления задается выбором R5);
Рис. 7.82. м — малошумящий с малым дрейфом усилитель; шум составляет 60 нВ (дв. ампл.) в диапазоне частот 0,1-10 Гц — сравните с большим значением шума усилителя с прерыванием (1,5 мкВ двойной амплитуды);
Рис. 7.82. н — активный выпрямитель (симметричная схема);
Рис. 7.82. о — малошумящий предусилитель, рассчитанный на работу с Rи < 600 Ом (разработано Бобом Видларом для фирмы NSC);
Рис. 7.82. п — программируемый источник тока, использующий измерительный усилитель;
Рис. 7.82. р — ОУ, обеспечивающий высокую точность по постоянному току, высокое быстродействие или большую мощность;
Рис. 7.82. с — ОУ со сверхмалым шумом (фирма PMI, заметка по применению 102).
Дополнительные упраженения
(1). Докажите, что С/Ш = 10·lg(v2и/4kTRи) — КШ (дБ) (при Rи).
(2). Синусоидальный сигнал 100 Гц с эффективным напряжением 10 мкВ проходит через резистор 1 МОм при комнатной температуре. Какое будет отношение сигнал/шум в полученном в результате сигнале (а) в полосе шириной 10 Гц с центром на частоте 100 Гц? (б) В полосе частот от 0 до 1 МГц?
(3). Транзисторный усилитель, в котором применен 2N5087, работает при токе коллектора 100 мкА и возбуждается источником сигнала с полным сопротивлением 2000 Ом. (а) Найдите коэффициент шума при 100 Гц, 1 кГц и 10 кГц. (б) Найдите отношение сигнал/шум на каждой из названных частот для входного сигнала 50 нВ (среднеквадратичное) и полосы пропускания усилителя 10 Гц.
(4). Были произведены измерения на промышленном усилителе для определения его эквивалентного шума еш и iш при частоте 1 кГц (Zвх = 1 МОм). Выходной сигнал усилителя был пропущен через фильтр с крутым спадом частотной характеристики и полосой пропускания шириной 100 Гц, и входной сигнал 10 мкВ дал выходной сигнал 0,1 В. При таком уровне вклад шума усилителя пренебрежимо мал. Среднеквадратичное напряжение шумов на выходе равно 0,4 мВ при закороченном входе. При разомкнутом входе выходной шум возрастает до 50 мВ эфф. (а) Найдите еш и iш для этого усилителя на частоте 1 кГц. (б) Найдите коэффициент шума этого усилителя на частоте 1 кГц при сопротивлениях источника 100 Ом, 10 кОм и 100 кОм.
(5). На некотором усилителе производились измерения с помощью калиброванного источника шума с выходным полным сопротивлением 50 Ом. Выход генератора должен был быть увеличен до 2 нВ/Гц1/2 для того, чтобы удвоить мощность выходного шума усилителя. Каков коэффициент шума при сопротивлении источника 50 Ом?
(6). Напряжение выходного шума у генератора белого шума измеряется с помощью схемы, показанной на рис. 7.83. При некотором уровне выходного сигнала генератора вольтметр переменного тока показывает 1,5 В эфф. Какова будет плотность шума (среднеквадратичная, в вольтах на корень из герца) на выходе генератора?
Рис. 7.83.
Глава 8 ЦИФРОВЫЕ СХЕМЫ
Основные логические понятия
Перевод Ю.В. Чечёткина
8.01. Цифровые и аналоговые сигналы
Мы рассматривали до сих пор главным образом схемы, входные и выходные напряжения которых могли изменяться в определенном диапазоне значений: RC-цепи, интеграторы, выпрямители, усилители и т. п. Когда сигналы, с которыми приходится иметь дело, либо являются непрерывными по самой своей природе (например, звуковые), либо представляют собой непрерывно меняющиеся напряжения, поступающие от измерительных приборов (например, от устройств для измерения температуры или обнаружения светового излучения, биологических или химических зондов), это естественно.
Входной сигнал по своей природе может быть и чисто дискретным, например импульсы в детекторе частиц или «биты» информации, поступающие от ключа, клавиатуры или ЭВМ. В подобных случаях естественно и удобно использовать цифровую электронику, т. е. схемы, которые имеют дело с информацией, представленной в виде «единиц» или «нулей». Для того чтобы непрерывную (аналоговую) информацию можно было обрабатывать на ЭВМ или хранить в виде чисел, ее необходимо преобразовать в цифровую форму и наоборот (с помощью цифро-аналоговых ЦАП и аналого-цифровых АЦП-преобразователей). Характерным примером служит ситуация, в которой микропроцессор или ЭВМ воспринимает сигналы от экспериментальной или промышленной установки, на основе полученных данных управляет параметрами эксперимента и хранит полученные результаты для последующего использования в процессе эксперимента.
Другим интересным примером, который демонстрирует возможности цифровых методов, является передача аналоговых сигналов без искажений, связанных с воздействием помех. Например, звуковые и видеосигналы, передаваемые по кабелю или с помощью радиоволн, воспринимают «шум», который потом нельзя отделить от полезного сигнала. Если же передаваемый сигнал преобразовать в ряд чисел, определяющих его амплитуду в последовательные моменты времени, а затем эти числа передавать в виде цифровых сигналов, то аналоговый сигнал, восстановленный на приемной стороне (с помощью ЦАП), не будет содержать ошибок, если уровень шума в канале связи не настолько высок, чтобы помешать правильному распознаванию «единиц» и «нулей». Этот метод, известный под названием импульсно-кодовой модуляции (ИКМ), особенно эффективен в том случае, когда сигнал должен проходить через ряд ретрансляторов, например, при межконтинентальной телефонной связи, так как восстановление цифрового сигнала в каждом пункте ретрансляции гарантирует помехоустойчивую передачу. Космические зонды с помощью ИКМ передают на землю данные и изображения. Цифровая звукозапись в вашем доме размещается на 12-см оптических «компакт-дисках», которые хранят стереомузыкальные произведения в виде 16 разрядов каждые 23 мкс, порядка 6 млрд. бит информации на все.
Возможности цифровой аппаратуры настолько велики, что задачи, предназначенные, казалось бы, исключительно для аналоговых методов, гораздо лучше зачастую решаются цифровым путем. Например, в аналоговом измерителе температуры можно установить микропроцессор и память, в результате этого повысится точность измерений за счет компенсации нелинейности прибора. Подобные применения микропроцессоров стали обычным делом. Ввиду их широкой доступности. Однако вместо того, чтобы пытаться перечислить все случаи, где может применяться цифровая электроника, лучше перейдем к ее изучению, в процессе которого примеры будут возникать сами собой.
8.02. Логические состояния
Под цифровой электроникой мы имеем в виду схемы, для каждой точки которых можно определить, как правило, только два состояния, например транзистор может быть либо закрыт, либо насыщен. В качестве параметра обычно выбирают не ток, а напряжение, уровень которого может быть ВЫСОКИМ или НИЗКИМ. Эти два состояния могут представлять различные «биты» (binary digits — двоичные разряды) информации, например, следующим образом: один бит числа: ключ замкнут или разомкнут, присутствует или отсутствует сигнал, уровень аналогового сигнала выше или ниже заданного предела, некоторое событие произошло или не произошло, требуется или не требуется выполнять некоторые действия и т. п.
Высокий и низкий уровни. Состояния ВЫСОКОГО и НИЗКОГО уровней определяют некоторым заданным образом «истинные» и «ложные» значения в булевой алгебре. Если в какой-либо точке схемы истинное значение определяет ВЫСОКИЙ уровень, то говорят, что эта сигнальная линия использует «положительную логику» и наоборот. Пример «отрицательной логики» показан на рис. 8.1.
Рис. 8.1.
Когда состояние КЛЮЧ ЗАМКНУТ истинно, выход имеет НИЗКИЙ уровень. Выходной сигнал таким образом соответствует «отрицательной логике» (более правильным было бы название «нулевая логика», поскольку отрицательное напряжение в схеме отсутствует) и может быть обозначен, как показано на рисунке. (Черта над символом означает операцию НЕ, т. е. данная линия имеет ВЫСОКИЙ уровень, когда ключ не замкнут.) Запомните, что наличие или отсутствие черты отрицания над обозначением говорит о том, какой уровень (ВЫСОКИЙ или НИЗКИЙ) будет иметь данный провод, когда заданное условие (КЛЮЧ ЗАМКНУТ) истинно.
Цифровая схема «знает», что за сигнал она представляет по тому, откуда поступает этот сигнал, так же как в аналоговой схеме выход какого-либо операционного усилителя «представляет» определенную величину. Цифровые схемы, однако, обладают дополнительной гибкостью: иногда одни и те же сигнальные линии используются для передачи различных видов информации и для посылки ее в разных направлениях в различные моменты времени. Для того чтобы выполнить это «мультиплексирование», необходимо посылать дополнительную информацию (адресные биты или биты состояния). Далее будет показано много примеров, в которых используется это полезное свойство цифровой электроники, а пока будем считать, что любая схема предназначена для выполнения одной заданной функции и она «знает», откуда поступают входные и куда идут выходные сигналы.
Введем понятия 1 и 0, внеся некоторую путаницу в эту простую по существу операцию. Эти символы используются в булевой алгебре для обозначения утверждений ИСТИНА и ЛОЖЬ соответственно. В том же значении они иногда используются и в электронике, но, к сожалению, здесь они применяются также и в другом смысле, а именно: 1 означает ВЫСОКИЙ уровень, а 0 — НИЗКИЙ уровень. В этой книге мы постараемся избежать какой либо двусмысленности, будем использовать для обозначения логических состояний слова ВЫСОКИЙ уровень (или символ В) и НИЗКИЙ уровень (или символ Н) метод, который широко используется в электронной промышленности, а обозначения 1 и 0 будут применяться лишь в тех случаях, где их двусмысленное толкование исключается.
Диапазон напряжений высокого и низкого уровней. Как упоминалось в разд. 1.10, значения напряжений, соответствующих ВЫСОКИМ и НИЗКИМ уровням, могут колебаться в некотором диапазоне. Например, для высокоскоростной КМОП («НС») логики входные напряжения от уровня земли до 1,5 В представляются как НИЗКИЙ уровень, а напряжения в пределах 1,5 В от напряжения питания +5 В — как ВЫСОКИЙ уровень. Типичные напряжения НИЗКОГО и ВЫСОКОГО состояний составляют десятую долю В выше 0 и ниже 5 В соответственно (остаточное напряжение одного МОП-транзистора).
Такие широкие диапазоны выбраны для того, чтобы изготовитель микросхем имел в своем распоряжении определенный допуск, в пределах которого параметры схемы могли бы колебаться за счет изменения температуры, нагрузки, напряжения питания, а также под воздействием шумов, т. е. разнообразных паразитных сигналов, которые добавляются к рабочему сигналу при его прохождении через схему (за счет емкостных связей, внешних наводок и т. п.). Схема, получив сигнал, определяет, каков его уровень (ВЫСОКИЙ или НИЗКИЙ), и действует соответствующим образом. Если помеха не превращает 1 в 0 или наоборот, то все прекрасно и любые помехи отсеиваются на каждой ступени, поскольку на выходе схемы восстанавливаются «чистые» значения 1 или 0. Цифровая электроника в этом смысле не подвержена влиянию помех и является идеальной.
Термин помехоустойчивость используется здесь для обозначения максимального уровня помехи, которая, будучи добавлена к логическому сигналу при самых неблагоприятных условиях, не будет еще приводить к ошибочной работе схемы. Например, для элементов ТТЛ помехоустойчивость составляет 0,4 В, так как любой сигнал ниже 0,8 В интерпретируется ими как НИЗКИЙ уровень, а любой сигнал выше 2,0 В — как ВЫСОКИЙ, в то время как уровни выходных сигналов составляют в самом неблагоприятном случае +0,4 и +2,4 В соответственно (см. таблицу логических уровней в гл. 1). В действительности помехоустойчивость этих схем значительно выше приведенной величины, поскольку типичные значения ВЫСОКОГО и НИЗКОГО напряжений составляют +0,2 и 3,4 В, а входной порог принятия решения равен ~ 1,3 В. Однако необходимо помнить, что хорошая схема рассчитана на самый неблагоприятный случай. Не следует также забывать о том, что различные семейства логических элементов обладают различной помехоустойчивостью. Элементы КМОП имеют по сравнению с ТТЛ более высокую помехоустойчивость, а быстродействующие элементы ЭСЛ — более низкую. Конечно, восприимчивость к шуму цифровых систем зависит также от амплитуды шума, которая в свою очередь зависит от таких факторов, как параметры выходной ступени индуктивности проводников земли, существования длинных линий «шин», скорости нарастания на выходе во время логического перехода (когда из-за емкостной нагрузки возникают переходные токи, вызывающие выбросы напряжения линии земли). Мы будем касаться некоторых из этих проблем в разд. 9.11-9.13.
Логические уровни
Диаграмма на рис. 8.1, а показывает диапазоны напряжений, которые соответствуют двум логическим состояниям (ВЫСОКИЙ и НИЗКИЙ) для самых популярных семейств цифровой логики. Для каждого логического семейства необходимо определить допустимые значения как входных, так и выходных напряжений, соответствующих состояниям ВЫСОКИЙ и НИЗКИЙ. Закрашенная площадь выше линии показывает допустимый диапазон выходных напряжений, при котором гарантируются логические состояния НИЗКИЙ и ВЫСОКИЙ без ошибок, с двумя стрелками, указывающими типовые выходные значения (НИЗКИЙ и ВЫСОКИЙ), встречающиеся на практике. Закрашенная площадь ниже линии показывает диапазон входных напряжений, гарантирующий представление как НИЗКИЙ или ВЫСОКИЙ, со стрелкой, указывающей типовое напряжение логического переключения, т. е. линию, разделяющую уровни НИЗКИЙ и ВЫСОКИЙ. Во всех случаях логическое состояние ВЫСОКИЙ более положительно, чем логическое НИЗКИЙ.
Значения «минимальный», «типовой» и «максимальный» в электронных спецификациях требуют нескольких слов для пояснения. Наиболее просто, изготовитель гарантирует, что компоненты будут попадать в диапазон минимум-максимум с наибольшей вероятностью к «типовому». Это означает для типовых спецификаций, которые вы используете при проектировании схем, что эти схемы должны работать надежно внутри диапазона, задаваемого минимумом и максимумом. В частности, хорошо спроектированная схема должна функционировать при всех возможных комбинациях минимальных и максимальных значений (даже на самый плохой случай).
Рис. 8.1, а
8.03. Числовые коды
В большинстве случаев рассмотренные выше условия, которые могут быть представлены цифровыми уровнями, просты и наглядны. Более сложный и интересный вопрос заключается в том, как с помощью цифровых уровней представить часть числа.
Десятичное (с основанием 10) число представляет собой строчку из цифр и (при этом) подразумевается, что они должны быть умножены на последовательные степени числа 10 для образования индивидуальных произведений, а затем вместе сложены. Например, 137,06 = 1·102 + 3·101 + 7·100 + 0·10-1 + 6·10-2. Для записи числа требуется десять символов (от 0 до 9), а степень числа 10, на которую должна быть умножена цифра, определяется ее положением по отношению к десятичной запятой. Если мы хотим представить число с помощью только двух символов (0 и 1), то такая система счисления будет называться двоичной или системой с основанием 2. В этом случае каждая 1 или 0 будет умножаться на последовательные степени числа 2. Например,
11012 = 1·23 + 1·22 + 0·21 + 1·20 = 1310.
Отдельные «единицы» и «нули» в записи, представляющей двоичное число, называются «битами» (от слов binary digits — двоичный разряд). Индекс (записываемый всегда по основанию 10) указывает, какая используется система счисления. Он часто бывает нужным для того, чтобы избежать путаницы, так как все символы выглядят одинаково. Только что описанным методом мы преобразовали число из двоичной формы в десятичную. Для того чтобы произвести обратное преобразование, десятичное число нужно последовательно делить на 2, каждый раз записывая остаток. Для преобразования числа 1310 в двоичное нужно произвести следующие операции: 13/2 = 6, остаток 1; 6/2 = 3, остаток 0; 3/2 = 1, остаток 1; 1/2 = 0, остаток 1; это дает 1310 = 11012. Заметим, что ответ образуется, начиная с младшего значащего разряда (МЗР).
Шестнадцатеричное представление чисел. Для описания систем только с двумя состояниями естественно применять двоичные числа. Однако, как будет показано ниже, это не единственный способ.
Поскольку двоичные числа имеют большую длину, для их записи используется шестнадцатеричное (с основанием 16) представление. Для записи двоичного числа в шестнадцатеричном коде его разбивают на группы по 4 бит, каждая из которых может принимать значения от 0 до 15. Поскольку для обозначения каждой шестнадцатеричной позиции мы хотим использовать один символ, величины 10–15 будем обозначать буквами латинского алфавита от А до F:
70710 = 10110000112 = (10110000112) = 2С316.
Шестнадцатеричное представление лучшим образом соответствует байтовой (1 байт = 8 бит) структуре ЭВМ, которая чаще всего реализуется в виде 16- или 32-разрядных машинных «слов», при этом каждое слово состоит из 2 или 4 байтов. Буквенно-цифровые знаки (буквы, цифры или символы) представляются в виде одного байта. Таким образом, каждый байт в шестнадцатеричной системе состоит из двух шестнадцатеричных цифр, 16-разрядное машинное слово из 4-х шестнадцатеричных цифр и т. д.
Например, в широко используемом коде ASCII (см. разд. 10.19) малое «а» в ASCII-представлении есть 01100001 (61 в шестнадцатеричном коде, который записывается как 61Н), «Ь» есть 62Н и т. д. Таким образом, слово "nerd" может быть сохранено в двух 16-битных словах, которые имеют значения 6D65H и 7274Н. Как другой пример, размещение памяти в компьютере с памятью 64К (65536 байт) может определяться 2-байтным адресом, поскольку 216 = 65536, наинизший адрес есть 0000Н, наивысший — FFFFH, вторая половина памяти начинается с 8000Н, а четвертая четверть памяти — с СОООН. Вы случайно можете встретить «восьмеричную» запись (основание 8), к сожалению, в ранних ЭВМ были приняты 12- и 32-разрядные слова, которые использовали 6-разрядное представление буквенно-цифровых знаков. Поскольку 6-разрядные знаки было логично представлять в восьмеричном коде, внедрилась эта система счисления. Она сохранилась до настоящего времени и с успехом применяется для записи двоичных чисел, однако зачастую может создавать определенные неудобства.
Упражнение 8.1. Запишите восьмеричное представление в коде ASCII символов "а" и "Ь", используя шестнадцатеричное значение, приведенное ранее. Затем запишите восьмеричное представление 16-разрядного Слова, составленного из двух байт вместе "ab"». Почему они различаются? Определите, каким будет восьмеричное представление 16-разрядного слова, содержащего сочетание "Ьа" в коде ASCII.
Двоично-десятичный код. Другим методом представления чисел является двоичное кодирование каждой десятичной, цифры, записываемой в виде группы из 4 двоичных разрядов. Например, 13710 = 0001 00110111 (двоично-десятичный код). Заметим, что двоично-десятичное представление числа не эквивалентно двоичному, которое в данном случае будет иметь вид: 13710 = 100010012. Можно считать, что разряды двоично-десятичного кода, начиная с правого, выражают числа 1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800 и т. д. Очевидно, что двоично-десятичное кодирование с точки зрения использования двоичных разрядов не экономично, поскольку каждая группа из 4 бит способна представлять числа от 0 до 15, но используется для записи числа, не превышающего 9 (за исключением редкого случая записи цифровой информации с четным паритетом на 7-дорожечную магнитную ленту). Двоично-десятичное кодирование очень удобно в тех случаях, когда требуется воспроизвести число в десятичной форме, так как в этом случае каждый двоично-десятичный символ нужно лишь преобразовать в соответствующее десятичное число, а затем вывести его на индикацию. (Для выполнения этой функции существуют специальные ИМС; в одном небольшом корпусе с простой топологией они содержат дешифратор двоично-десятичного кода, формирователи сигналов, буферный регистр и индикатор. На вход такой схемы нужно лишь подать логические уровни двоично-десятичного символа, после этого на ней высвечивается соответствующая цифра). По этой причине двоично-десятичное кодирование используется обычно при вводе и выводе цифровой информации. К сожалению, преобразование между двоично-десятичным и чисто двоичным кодом сложно, так как каждая десятичная цифра зависит от состояния почти всех двоичных разрядов и наоборот. Тем не менее двоичная арифметика настолько эффективна, что в большинстве ЭВМ вся входная информация преобразуется в двоичную форму, а обратное преобразование производится лишь при ее выводе. Представьте себе, сколько усилий было бы сэкономлено, если бы Homo sapiens имел 8 или 16 пальцев!
Упражнение 8.2. Преобразуйте в десятичный код следующие числа: а) 1110101,01102, б) 11,010101012, в) 2АН. Преобразуйте в двоичный код следующие числа: а) 102310, б) 102316. Преобразуйте в шестнадцатеричный код следующие числа: а) 102310, б) 1011101011012, в) 6145310.
Числа со знаком. Прямой (знаковеличинный) код. Рано или поздно возникнет необходимость представлять отрицательные числа в двоичном коде; в первую очередь это потребуется в устройствах, которые выполняют вычислительные операции. Самое простое — отвести один разряд (скажем, старший) под знак числа, а остальные использовать для представления его величины. Этот способ называется знаковеличинным или прямым кодом и соответствует обычной записи числа со знаком (табл. 8.1).
Он используется при выводе чисел на индикацию, а также в некоторых аналого-цифровых преобразователях (АЦП). Вообще же это не лучшая форма представления чисел со знаком, особенно при выполнении вычислений, так как в данном случае операции вычитания и сложения выполняются по-разному (т. е. сложение «не работает» для чисел со знаком). Кроме того, здесь могут присутствовать нули двух типов (+0 и —0), поэтому при выборе нужного из них следует быть очень внимательным.
Смещенный код. Смещенный код является вторым методом представления числа со знаком. Чтобы получить смещенный код какого-либо числа, нужно к этому числу, представленному в прямом коде, прибавить половину наибольшего возможного числа (табл. 8.1).
Последовательность всех чисел благодаря этой операции, начиная с наибольшего отрицат. числа и кончая наибольшим положит, числом, представляет простую двоичную прогрессию и может быть сформирована с помощью двоичных счетчиков. Информацию о знаке здесь также несет старший разряд, но нуль становится однозначным. Смещенный код используется в АЦП и ЦАП (преобразователях), однако он еще неудобен для выполнения вычислений.
Дополнительный код. При выполнении операций над целыми числами чаще используется представление чисел в форме дополнения до двух, или, иначе, в дополнительном коде. В такой системе положительные числа записываются просто как двоичные без знака, а отрицательные выражаются таким числом, которое, будучи добавлено к положительному числу той же величины, даст в результате нуль. Чтобы получить отрицательное число, нужно для каждого бита положительного числа сформировать дополнение до 1, или обратный код (т. е. вместо каждого 0 записать 1 и наоборот), и затем к полученному результату прибавить 1 (это даст дополнительный код). Из табл. 8.1 видно, что числа в дополнительном коде отличаются от чисел в смещенном коде инверсным значением старшего значащего разряда (СЗР). Точно так же как и при других формах представления, СЗР несет информацию о знаке. Здесь имеется только один нуль, который удобно представляется нулевыми состояниями всех разрядов (при очистке счетчика или регистра в них заносится нулевое значение).
Арифметика в дополнительном коде. Арифметические операции в дополнительном коде выполняются довольно просто. Чтобы получить сумму двух чисел, достаточно сложить соответствующие разряды (с учетом переноса), например
Чтобы вычесть В из А, нужно взять дополнительный код числа В и прибавить его к числу А (т. е. прибавить отрицательное число):
Умножение в дополнительном коде выполняется также непосредственно. Попробуйте сделать следующие упражнения.
Упражнение 8.3. Используя 3-разрядный дополнительный код, произведите двоичное умножение +2 на -3. Подсказка: ответ равен -6.
Упражнение 8.4. Покажите, что дополнительный код числа -5 равен +5.
Дополнительный код благодаря естественности вычислений в нем повсеместно используется в ЭВМ для выполнения арифметических операций над целыми числами (но следует отметить, что числа с «плавающей запятой» обычно используются в знаковеличинной форме, называемой знак-порядок-мантисса).
Код ГРЕЯ. Код, рассматриваемый ниже, используется в механических шифраторах угла поворота вала, а также в других устройствах. Он носит название кода Грея и обладает тем свойством, что при переходе от любого его состояния к следующему изменяется лишь один разряд (бит), что позволяет предотвратить ошибки, поскольку в данном случае при переходе между двумя закодированными значениями все разряды никак не могут измениться одновременно. Если бы использовался чисто двоичный код, то при переходе, например, от 7 к 8 на входе можно было бы получить число 15. Для формирования состояний кода Грея существует простое правило: начинать нужно с нулевого состояния, а затем для получения каждого следующего нужно выбрать самый младший разряд, изменение которого приводит к образованию нового состояния, и взять его инверсное значение.
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
Коды Грея могут содержать любое число разрядов. Они применяются при «параллельном кодировании» — методе быстродействующего аналого-цифрового преобразования (будет рассмотрен ниже). В следующем разделе мы покажем взаимные соответствия между кодом Грея и двоичным кодом.
8.04. Вентили и таблицы истинности
Комбинационная и последовательная (последовательностная) логика. Сущность цифровой электроники - выработка выходных цифровых сигналов в соответствии с входными. Например, сумматор может принять на свои входы два 16-разрядных числа и сформировать на выходе 16-разрядную сумму (плюс перенос). Можно сделать также схему для умножения двух чисел. Такого типа операции должен уметь выполнять процессор ЭВМ. Другая задача — сравнение двух чисел с целью удостовериться в том, что «все системы действуют нормально». Возможно, вы захотите дополнить паритетным битом число, подлежащее передаче по каналу связи, так, чтобы общее количество «единиц» в нем стало четным: проверка паритета на приемной стороне обеспечивает простой контроль правильности передачи. Еще одна типичная задача заключается в том, чтобы взять какие-либо числа, выраженные в двоичном коде, а затем воспроизвести их на экране, отперфорировать или отпечатать в виде десятичных знаков. Состояние выхода (или выходов) во всех этих задачах является предопределенной функцией состояния входа или входов. Задачи, относящиеся к этому классу, называются «комбинационными» и могут быть решены с помощью вентилей — устройств, которые выполняют операции булевой алгебры в системах с двумя состояниями (двоичных).
Существует другой класс задач, которые нельзя решить лишь путем формирования комбинационных функций текущих значений входных сигналов и которые требуют знания их прежнего состояния. Для решения этих задач необходимо применять «последовательные» схемы. К задачам такого типа относится преобразование строки двоичных разрядов из последовательной формы (один разряд следует за другим во времени) в параллельную группу разрядов, подсчет числа единиц, распознавание заданной определенной кодовой комбинации и последовательности битов, или, например, формирование одного выходного импульса после поступления четырех входных. Для решения всех этих задач требуется в какой-либо форме цифровая память. Основным устройством для построения этой памяти служит триггер (или мультивибратор с двумя устойчивыми состояниями). Рассмотрим вначале вентили и комбинационную логику, так как они являются основой для построения любых цифровых схем. При переходе к последовательным логическим устройствам мир цифровой техники станет значительно более интересным, однако и вентили сами по себе также весьма любопытны.
Вентиль ИЛИ. Выход вентиля ИЛИ имеет ВЫСОКИЙ уровень, если хотя бы на одном из его входов присутствует ВЫСОКИЙ уровень. Это можно выразить с помощью «таблицы истинности», представленной на рис. 8.2, где показан вентиль ИЛИ на 2 входа. В общем случае число входов не ограничено, однако в стандартном корпусе микросхемы обычно размещаются четыре 2-входовых вентиля, три 3-входовых или два 4-входовых. Например, на выходе 4-входового вентиля ИЛИ ВЫСОКИЙ уровень будет присутствовать в том случае, если он подан на любой из его входов. Для обозначения операции ИЛИ в булевой алгебре используется символ +. Функция «А ИЛИ В» записывается как А + В.
Рис. 8.2.
Вентиль И. Выход вентиля И имеет высокий уровень только в том случае, если ВЫСОКИЙ уровень присутствует на обоих его входах. Символическое изображение вентиля и его таблица истинности даны на рис. 8.3. Вентили И, выпускаемые промышленностью также как и вентили ИЛИ, могут иметь 3, 4, а иногда и большее число входов. Например, 8-входовой вентиль И вырабатывает на выходе ВЫСОКИЙ уровень только в том случае, если на всех его входах действует ВЫСОКИЙ уровень. Для обозначения операции И в булевой алгебре используется точка (·), которая может быть опущена, функция «А и В» записывается как А·В, или просто АВ.
Рис. 8.3.
Инвертор (функция НЕ). Иногда бывает нужно получить дополнение (инверсию) логического сигнала. Эту функцию выполняет инвертор — вентиль, который имеет только один вход (рис. 8.4). Для обозначения операции НЕ в булевой алгебре используется черта над символом или апостроф; «НЕ А» записывается как А¯ или А'. Для удобства вместо " для указания отрицания часто используются символы /, *, —, '; таким образом, НЕ А можно записать любым из следующих способов: А', —А, *А, /А, А*, А/. Мы используем в этой книге запись А'.
Рис. 8.4.
И-НЕ и ИЛИ-НЕ. Вентили могут совмещать инвертирование с выполнением функций И и ИЛИ. Далее будет показано, что такие вентили имеют более широкое распространение, чем просто И и ИЛИ (рис. 8.5).
Рис. 8.5.
Исключающее ИЛИ. Большой интерес представляет логическая функция «Исключающее ИЛИ», хотя она не относится к числу основных (рис. 8.6). На выходе вентиля «Исключающее ИЛИ» ВЫСОКИЙ уровень сформируется в том случае, если он будет подан на один из его входов (но не на оба одновременно). Другими словами, ВЫСОКИЙ уровень действует на выходе тогда, когда входы имеют различное состояние. Этот вентиль может иметь только два входа. Операция «Исключающее ИЛИ» подобна сложению двух бит по модулю 2.
Рис. 8.6.
Упражнение 8.5. Покажите, как вентиль «Исключающее ИЛИ» может быть использован в качестве «модифицируемого инвертора», который в зависимости от уровня на управляющем входе, может либо инвентировать входной сигнал, либо передавать его на выход без инверсии (буферировать).
Упражнение 8.6. Проверьте, действительно ли схемы, изображенные на рис. 8.7, преобразуют двоичный код в код Грея и наоборот.
Рис. 8.7. Параллельные преобразователи двоичного, кода в код Грея (а) и кода Грея в двоичный (б).
8.05. Схемы вентилей на дискретных элементах
Прежде чем перейти к вопросу использования вентилей, рассмотрим, как они строятся с помощью дискретных элементов. На рис. 8.8 показан диодный вентиль И.
Рис. 8.8.
Если на каком-либо его входе действует НИЗКИЙ уровень, то он будет действовать и на выходе, а ВЫСОКИЙ уровень на выходе возникает только в том случае, если он будет присутствовать на обоих входах. Эта схема обладает рядом недостатков: а) НИЗКИЙ уровень на выходе выше НИЗКОГО уровня на входе на величину падения на диоде. Естественно, слишком много диодов ставить нельзя, б) отсутствует «разветвление по выходу», т. е. возможность питать одним выходом несколько входов, так как выходная нагрузка действует на входной сигнал, в) низкое быстродействие, обусловленное резисторной нагрузкой. Вообще логические схемы, построенные на дискретных элементах, не обладают теми свойствами, которые присущи ИМС. Преимущества логических схем на ИМС связаны отчасти с применением специальной технологии (например, ионная имплантация), которая позволяет получать хорошие характеристики.
Простейшая схема транзисторного вентиля ИЛИ-НЕ показана на рис. 8.9.
Рис. 8.9.
Эта схема использовалась в семействе логических элементов РТЛ (резисторно-транзисторная логика), которые из-за низкой стоимости были популярны в 1960-х годах, но в настоящее время они совершенно не употребляются. ВЫСОКИЙ уровень, действующий по любому входу (или по обоим одновременно), откроет хотя бы один транзистор и на выходе возникнет НИЗКИЙ уровень. Поскольку по своей сути такой вентиль является инвертирующим, то для того, чтобы получить из него вентиль ИЛИ, к нему нужно добавить инвертор, как показано на рисунке.
8.06. Пример схемы с вентилями
Теперь попробуйте создать схему, которая решала бы логическую задачу, приведенную в качестве примера в гл. 1 и 2: гудок автомобиля должен включаться, когда открыта любая дверь, а водитель сидит в машине. Ответ будет очевидным, если сформулировать эту задачу таким образом: «На выходе действует ВЫСОКИЙ уровень, если открыта левая ИЛИ правая дверь И водитель сидит в машине», т. е. Q = (L + R)S. Как решать эту задачу с помощью вентилей, показано на рис. 8.10.
Рис. 8.10.
Выход ИЛИ имеет ВЫСОКИЙ уровень, когда одна ИЛИ другая дверь (или обе вместе) открыты. Если это так И водитель сидит в машине, Q имеет высокий уровень. Добавив транзистор, можно сделать так, чтобы эта схема включала гудок или замыкала контакт реле.
В реальных устройствах ключи, которые вырабатывают входные сигналы, обычно замыкают цепь на землю. (Это делается для сокращения монтажных связей, а также по другим причинам, которые, в частности, связаны с использованием широко распространенных логических элементов типа ТТЛ и вскоре будут рассмотрены.) Это означает, что при открывании дверей сигналы на входах будут иметь НИЗКИЙ уровень, т. е. мы будем иметь входы, использующие отрицательную логику. С учетом этого построим для данного примера новую схему, обозначим ее входы через L', R' и S'. Сначала здесь нужно определить, действует ли НИЗКИЙ уровень на каком-либо из входов (L', R'), связанных с дверцами автомобиля, т. е. состояние «оба входа имеют ВЫСОКИЙ уровень» нужно отличать от остальных. Это выполняется с помощью схемы И, следовательно, сигналы L и R' нужно подать на входы вентиля И. Выход будет иметь НИЗКИЙ уровень, когда любой из входов имеет НИЗКИЙ уровень. Назовем эту функцию ЛЮБОЙ'.
Теперь определим состояние, когда сигналы ЛЮБОЙ' и S' имеют НИЗКИЕ уровни, т. е. нужно отличить от остальных состояние, когда «оба входа имеют НИЗКИЙ уровень». Эта операция выполняется с помощью вентиля ИЛИ. Полученная схема показана на рис. 8.11.
Рис. 8.11.
Вместо вентиля ИЛИ мы пользовались вентилем ИЛИ-НЕ для того, чтобы иметь такой же выход, как и в предыдущей схеме, т. е. ВЫСОКИЙ уровень Q при желаемом состоянии. Но здесь произошло что-то странное: по сравнению с предыдущей схемой вместо вентиля И мы воспользовались вентилем ИЛИ (и наоборот). Этот случай подробно рассмотрим в разд. 8.07.
Упражнение 8.7. Определите, какие функции выполняют схемы, изображенные на рис. 8.12.
Рис. 8.12.
Взаимозаменяемость вентилей. При построении цифровых схем надо помнить, что из вентиля одного типа можно получить вентиль другого типа. Например, если вам нужен вентиль И, а у вас есть половина стандартной ИМС 7400 (4 И-НЕ на два входа), то вы можете произвести замену, как показано на рис. 8.13.
Рис. 8.13.
Второй вентиль используется в качестве инвентора, в результате этого получается функция И. Лучше понять эту идею вам помогут следующие упражнения.
Упражнение 8.8. Покажите, как сделать с помощью 2-входовых вентилей: а) НЕ из вентилей ИЛИ-НЕ, б) ИЛИ из вентилей ИЛИ-НЕ и в) ИЛИ из вентилей И-НЕ.
Упражнение 8.9. Покажите, как сделать: а) 3-входовую схему И с помощью схемы И на два входа, б) 3-входовую схему ИЛИ с помощью схемы ИЛИ на два входа, в) 3-входовую схему ИЛИ-НЕ с помощью схем ИЛИ-НЕ на два входа, г) 3-входовую схему И с помощью схемы И-НЕ на 2 входа.
Путем многократного использования инвентируемого вентиля (например, И-НЕ) одного типа можно реализовать любую комбинационную функцию. Однако это не относится к неинвентирующему вентилю, так как с его помощью функцию НЕ никаким способом получить нельзя. Именно по этой причине скорее всего вентили И-НЕ получили наибольшее распространение в логических схемах.
8.07. Логические обозначения при заданных уровнях
Вентиль И будет иметь ВЫСОКИЙ уровень на выходе, когда ВЫСОКИЙ уровень будет действовать на обоих его входах. Если ВЫСОКИЙ уровень обозначает «истину», то «истина» будет на выходе в том случае, если она присутствует на всех входах. Другими словами, при использовании положительной логики вентиль И выполняет логическую функцию И. То же самое касается и вентиля ИЛИ. Что произойдет, если «истину» будет обозначать НИЗКИЙ уровень, как это было в предыдущем примере? Вентиль И даст на выходе НИЗКИЙ уровень, если на любом из его входов была «истина» (НИЗКИЙ уровень), но это функция ИЛИ. С другой стороны, вентиль ИЛИ сформирует НИЗКИЙ уровень лишь в том случае, если «истина» будет на обоих его входах. Но это функция И! Какая путаница!
Существует два пути для разрешения этой проблемы. Первый заключается в том, что уяснив себе суть данной задачи цифрового проектирования, разработчик выбирает такой тип вентиля, который позволит получить требуемый выход, что и было сделано нами ранее. Например, если вам нужно определить, имеет ли один из трех входов НИЗКИЙ уровень, используйте 3-входовой вентиль И-НЕ. По всей вероятности, этим методом пользуется большинство разработчиков цифровых схем. Следуя этим путем, вы начертите вентиль И-НЕ, даже если по отношению к своим входам он выполняет функцию ИЛИ-НЕ (при отрицательной логике). Вероятно, вы при этом обозначите входы, как показано на рис. 8.14.
Рис. 8.14.
В данном примере сигналы сброса — СБРОС' (CLEAR)', ОС' — ОБЩИЙ СБРОС, MR' (master reset) и УСТАНОВКА В «0» (RESET), поступающие из различных точек схемы, будут иметь уровни отрицательной логики. Выходной сигнал СБРОС, представленный в положительной логике, будет подаваться на различные устройства, которые должны сбрасываться, если любой из сигналов установки в исходное состояние имеет НИЗКИЙ уровень («истина»).
Другой способ решения задачи сигналов отрицательной логики состоит в использовании метода «заданных уровней». Если вентиль И выполняет функцию ИЛИ, используя на входах отрицательную логику, то изобразите его, как показано на рис. 8.15.
Рис. 8.15.
Вентиль ИЛИ на 3 входа с отрицательными входными сигналами аналогичен по выполняемой функции 3-входовому вентилю И-НЕ. Эта эквивалентность представляет собой важный принцип — свойство логических цепей, который называется теоремой Моргана. Ниже мы кратко рассмотрим некоторые полезные соотношения, идентичные цепи, а сейчас вам достаточно знать, что вы можете заменять И на ИЛИ и наоборот, проинвертировав при этом выход и все входы. На первый взгляд логика заданных уровней может показаться малопривлекательной, поскольку при ее использовании начертание вентилей приобретает странный вид. Но она лучше, чем рассмотренный выше способ, так как логические функции в такой схеме ясно обозначены, применяя эту схему в течение некоторого времени, вы найдете, что она весьма удобна, и не захотите использовать ничего другого. Попробуйте снова решить пример с автомобильной дверцей с помощью логики заданных уровней (рис. 8.16).
Рис. 8.16.
Левый вентиль определяет, когда L или R имеют «истинное» значение (т. е. НИЗКИЙ уровень), и вырабатывает выходной сигнал в отрицательной логике. Второй вентиль дает на выходе ВЫСОКИЙ уровень, если оба входных сигнала (L + R) имеют «истинное» значение, т. е. НИЗКИЙ уровень. Согласно теореме Моргана (через некоторое время она вам уже не потребуется, так как вы будете опознавать эти вентили как равноценные), первый вентиль представляет собой И, а второй вентиль ИЛИ точно так же, как и в ранее изображенной схеме. Следует отметить здесь два важных момента:
1. Термин «отрицательная логика» не означает, что логические уровни имеют отрицательную полярность. Он лишь говорит, что «истинное» утверждение определяется тем из двух состояний, которое имеет меньший уровень (НИЗКИЙ).
2. При символическом изображении вентиля предполагается, что он использует положительную логику. Выполняющий функцию ИЛИ для сигналов отрицательной логики вентиль И-НЕ, может изображаться либо как И-НЕ, либо с использованием логики заданных уровней с обозначением в форме ИЛИ с символами инверсии на входах (маленькие кружки). В последнем случае эти кружки обозначают инверсию входных сигналов, которые поступают на вентиль ИЛИ, работающий при положительной логике, согласно первоначальному определению.
Примечание. Логические функции И и ИЛИ не следует путать с указанными в законах эквивалентными понятиями. В увесистом томе правил, известном под названием «Слова и фразы», свыше 40 страниц посвящается ситуациям, в которых И можно использовать как ИЛИ.
Например, «ИЛИ в случае необходимости можно трактовать как И, а И как ИЛИ». Однако это не имеет ничего общего с теоремой Моргана!
ТТЛ и КМОП
ТТЛ (транзисторно-транзисторная логика) и КМОП (комплементарные МОП-структуры) представляют собой в настоящее время два наиболее распространенных семейства логических элементов. Огромное количество ИМС обоих семейств, выполняющих самые разнообразные функции, выпускаются по меньшей мере десятью фирмами. С помощью этих семейств можно удовлетворить все потребности, которые возникают при построении цифровых схем и устройств. Исключение может составить область схем большой степени интеграции (БИС), в которой преобладают МОП-структуры и сверхбыстродействующая логика, в которой господствуют приборы из арсенида галлия и эмиттерно-связанная логика (ЭСЛ). В дальнейшем в основном будут рассматриваться эти семейства.
8.08. Каталог идентичных вентилей
В табл. 8.2 приведены идентичные вентили, которые существуют в семействах логических элементов ТТЛ и КМОП. Каждый вентиль изображается в своей нормальной форме (для положительной логики), и кроме того, показано, как он выглядит при использовании отрицательной логики. В последней строке приведен вентиль И-ИЛИ-НЕ.
Небольшие пояснения: цифровая логика представлена в 10 популярных «субсемействах» (КМОП: 4000В, 74С, 74НС, 74НСТ, 74АС, 74АСТ; И ТТЛ: 74LS, 74ALS, 74AS, 74F), каждое из которых выполняет одни и те же функции и имеют хорошую совместимость между собой.
Различаются они по быстродействию, рассеиваемой мощности, нагрузочной способности и логическим уровням (см. разд. 8.09 и 9.02). Наилучшим для большинства применений является семейство «высокоскоростная КМОП-логика», обозначаемая буквами НС после цифр 74, например 74НСОО. Там, где требуется совместимость с существующими биполярными ТЛ-схемами, вы должны использовать НСТ (или, возможно, LS) — ceмейство. Для простоты мы в дальнейшем в книге будем опускать буквы (и префикс 74-), обозначая типы цифровых ИМС с апострофом (`), например `00 для обозначения 2-входового вентиля И-НЕ. Отметим, что стандартные элементы ТТЛ (без этих букв) в настоящее время почти полностью вышли из употребления. Мы опишем интересную историю этих семейств в разд. 9.01.
8.09. Принципиальные схемы вентилей на ИМС
В обоих семействах (ТТЛ и КМОП) идентичные вентили, например И, выполняют одинаковые операции, тем не менее их логические уровни, а также другие характеристики (быстродействие, входной ток и т. д.) совершенно различны. В общем случае нельзя смешивать два типа логических семейств. Для того чтобы понять различия между ними, рассмотрим принципиальные схемы вентилей И, которые представлены на рис. 8.17.
Рис. 8.17. Маломощный ТТЛШ-вентиль И-НЕ (а); КМОП-вентиль И (б).
КМОП-вентиль построен на полевых МОП-транзисторах обоих полярностей, которые работают в режиме усиления и соединены как ключи, а не как повторители. Открытый полевой транзистор подобен низкоомному резистору, подключенному к шине питания. Для того чтобы открыть последовательно включенную пару транзисторов Т3, Т4 и закрыть нагрузочные транзисторы Т1 и Т2, на оба входа надо подать ВЫСОКИЙ уровень. Это приведет к тому, что на выходе будет вырабатываться НИЗКИЙ уровень, т. е. получается вентиль И-НЕ. Транзисторы Т5 и Т6 образуют простой КМОП-инвертор, благодаря которому мы получаем вентиль И. Этот пример показывает как строятся вентили И, И-НЕ, ИЛИ и ИЛИ-НЕ на любое число входов.
Упражнение 8.10. Начертите схему 3-входового ΚΜΟΠ-вентиля ИЛИ.
Биполярный LS (маломощная Шоттки технология) ТТЛ-вентиль И-НЕ, в основном содержит диодно-резисторную логику (рис. 8.8), управляющую транзисторным инвертором, нагруженным на двухтактный выход. Если на обоих входах ВЫСОКИЙ уровень, то через резистор 20 кОМ протекает базовый ток, открывающий транзистор Т1, что приводит к появлению на выходе НИЗКОГО уровня из-за насыщения Т4 и выключения Дарлингтоновской пары Т2-Т3. Если затем на один из входов подать НИЗКИЙ уровень, то транзистор Т1 выключится, а на выходе будет ВЫСОКИЙ уровень. Диоды и транзисторы с переходами Шоттки используются для повышения скорости переключения.
Заметим, что и ТТЛ-, и КМОП-вентили обеспечивают «активный выход» с питанием нагрузки от шины положительного источника. Рассмотренные выше дискретные вентили этой способностью не обладают.
8.10. Характеристики ТТЛ и КМОП
Давайте сравним характеристики двух семейств:
Напряжение питания: +5 В ±5 % для ТТЛ, в то время как семейства КМОП имеют более широкий диапазон: от +2 до +6 В для НС и АС, от +3 до 4-15 В для серий 4000В и 74С. Семейства НСТ и ACT, разработанные для совместимости с биполярными ТТЛ, требуют напряжения питания +5 В.
Вход. Вход вентиля ТТЛ в состоянии НИЗКОГО уровня представляет собой токовую нагрузку для управляющего им источника сигнала (типовое значение 0,25 мА для серии LS), следовательно, для поддержания на входе НИЗКОГО уровня необходимо обеспечить отвод тока. Поскольку выходные каскады схем ТТЛ обладают хорошей нагрузочной способностью, сопряжение между собой элементов ТТЛ не представляет проблемы, но она может возникнуть, когда требуется подключить входы ТТЛ к схемам другого типа. Наоборот, вентиль КМОП не имеет входного тока.
Логический порог ТТЛ определяется падением напряжения на двух диодах по отношению к земле (порядка 1,3 В), в то время как для элементов КМОП значение входного порога равно приблизительно половине напряжения питания, но может колебаться в широких пределах (типично от 1/3 до 2/3 напряжения питания). КМОП-семейства НСТ и ACT спроектированы с низким порогом срабатывания для совместимости с ТТЛ, поскольку биполярные ТТЛ не допускают отклонения в питании +5 В (см. ниже).
Входы КМОП элементов чувствительны к статическому электричеству и могут выходить из строя при манипуляциях с ними.
В обоих семействах на неиспользуемые входы в зависимости от ситуации следует подавать ВЫСОКИЙ или НИЗКИЙ уровни (далее об этом будет сказано).
Выход. Выходной каскад вентиля ТТЛ в состоянии НИЗКОГО уровня ведет себя как насыщенный транзистор, напряжение на котором близко к потенциалу земли, а в состоянии ВЫСОКОГО уровня — как повторитель с высоким выходным напряжением, равным примерно напряжению питания U+ минус падение напряжения на двух диодах. Для всех КМОП-семейств (включая НСТ и ACT) выход представляет собой открытый полевой транзистор, подключенный к земле или к шине питания. Обычно быстродействующие семейства (F, AS, AC, ACT) имеют более высокую нагрузочную способность, чем медленные (LS, 4000В, 74С, НС, НСТ).
Быстродействие и мощность. Биполярные ТТЛ-семейства потребляют значительный ток покоя — тем больший, чем быстрее семейства (AS и F) при соответствующих скоростях от 25 МГц (для LS) до 100 МГц (для AS и F). Все КМОП-семейства потребляют нулевой ток. Однако их рассеиваемая мощность линейно возрастает с ростом частоты (требуется ток для переключения емкостной нагрузки), и КМОП-элементы, работающие на наивысшей частоте, рассеивают часто такую же мощность, как эквиваленты ТТЛ (рис. 8.18). Диапазон быстродействия КМОП-элементов простирается от 2 МГц (для 4000В/74С при 5 В) до 100 МГц (для АСТ/АС).
Рис. 8.18. Зависимость мощности рассеивания от частоты.
В основном замечательные характеристики КМОП-семейств (ничтожная потребляемая мощность, хорошая помехозащищенность) делают эту логику привлекательной, и мы рекомендуем семейство НС для большинства новых проектов. Однако при увеличении быстродействия используйте семейство АС; для широкого диапазона питания, где не нужна высокая скорость, используйте 74С или 4000В, используйте НСТ (или даже LS) для совместимости с биполярными ТТЛ-выходами, если вам не нужно быстродействие ACT (или AS, или F). В некоторых применениях с высокой плотностью размещения (память, микропроцессоры), КМОП-устройства предпочтительней, ввиду их относительно высокой мощности рассеяния. А для сверхвысокоскоростных применений (выше 100 МГц) вы вынуждены использовать ЭСЛ-элементы, которые работают до частот 500 МГц, или использовать приборы из арсенида галлия, которые функционируют до 4 ГГц. Смотрите разд. 14.15 и табл. 9.1 для полного обсуждения логических КМОП.
В пределах одного логического семейства выходы элементов легко стыкуются с входами и обычно не стоит беспокоиться о пороговых уровнях, входном токе и т. п. Например, выходы элементов семейств ТТЛ или КМОП могут работать не менее чем на 10 входов (характеристика носит название коэффициента разветвления по выходу: для ТТЛ коэффициент разветвления по выходу равен 10), таким образом, для обеспечения совместимости не требуется применение специальных мер. В следующей главе будут рассмотрены вопросы сопряжения между различными логическими семействами, а также между логическими схемами и внешними устройствами.
8.11. Элементы с тремя состояниями и с открытым коллектором
Вентили ТТЛ и КМОП, которые мы сейчас рассматриваем, имеют двухтактные выходные схемы: высокий или низкий уровень подается на выход через открытый биполярный или МОП-транзистор. Такую схему, называемую активной нагрузкой, а в ТТЛ называемую также столбовым выходом, используют почти все логические элементы. Схема обеспечивает низкое выходное сопротивление в обоих состояниях, имеет малое время переключения и обладает более высокой помехоустойчивостью по сравнению с одиночным транзистором, который использует пассивный резистор в качестве коллекторной нагрузки. В случае КМОП применение активного выхода, кроме всего прочего, позволяет понизить рассеиваемую мощность.
Но существуют ситуации, при которых активный выход оказывается неудобным. Представим себе компьютерную систему, в которой несколько функциональных блоков должны обмениваться данными. Центральный процессор (ЦП), память и различные периферийные устройства должны иметь возможность передавать и получать 16-разрядные слова. И, мягко говоря, было бы неудобно использовать для соединения каждого устройства с каждым индивидуальный 16-жильный кабель. Для разрешения этой проблемы используется так называемая шина (или магистраль) данных, т. е. один 16-жильный кабель, доступный для всех устройств. Такая структура аналогична телефонному каналу коллективного пользования: в каждый момент времени «говорить» («передавать данные») может только одно устройство, а остальные могут только «слушать» («принимать данные»).
Если используется шинная система, то необходимо иметь соглашение о том, кому разрешено «говорить». В связи с этим употребляются такие термины, как «арбитр шины», «задатчик шины» и «управление шиной».
Для возбуждения шины нельзя использовать вентили (или другие схемы) с активным выходом, так как их нельзя отключить от общих информационных линий (в любой момент времени выходы устройств, подключенные к шине, будут находиться в состоянии высокого или низкого уровня). В этом случае необходим вентиль, выход которого может находиться в «обрыве», т. е. быть отключенным. Такие устройства выпускаются промышленностью и имеют две разновидности, которые носят названия «элементы с тремя состояниями» и «элементы с открытым коллектором».
Логические схемы с тремя состояниями. Логические элементы с тремя состояниями, также называемые TRI-STATE (товарный знак National Semiconductors Corp., создавшей их) представляют элегантное решение. Название этих схем может ввести в заблуждение, поскольку на самом деле они не являются логическими элементами с тремя уровнями напряжений. Это обычные логические схемы, которые имеют третье состояние выхода — «обрыв» (рис. 8.19).
Рис. 8.19. ΚΜΟΠ-вентиль И-НЕ с 3-м состоянием: а — поясняющая схема; б — реализация с использованием внутренних КМОП-вентилей.
Они имеют отдельный вход разрешения, с помощью которого могут устанавливаться либо в состояние обычных активных выходов, либо переходить в «третье» (обрыва) состояние независимо от того, какие сигналы присутствуют на других входах. Выходы с тремя состояниями имеются во многих ИМС: счетчиках, защелках, регистрах и т. п., а также в вентилях и инверторах.
Устройство с выходом на 3 состояния функционирует подобно обычной логике с активным выходом, когда подан сигнал разрешения, при этом на выходе существует либо высокий, либо низкий уровень. Когда на входе разрешения пассивный уровень, схема отключает свой выход, так что другие устройства могут работать на ту же самую линию. Давайте рассмотрим это на примере.
Взгляд вперед: шины данных. Драйверы с тремя состояниями широко используются для возбуждения шины данных компьютера. Каждое устройство (память, периферия и т. п.), которому необходимо выставить данные на шину, связывается с ней через вентили с тремя состояниями (или через более сложные элементы, такие, как регистры). Дела так умно устраиваются, что только одно устройство выдает разрешение своим драйверам (формирователям), все другие устройства, получив запрет, переходят в третье состояние. Обычно выбранное устройство «узнает» о том, что оно должно выдавать данные на шину, опознав свой адрес на адресных и управляющих шинах (рис. 8.20).
Рис. 8.20. Шина данных.
В этом наипростейшем случае устройство подключается как порт 6. Получив свой адрес (например, 6) и импульс чтения, устройство выводит данные на шину D0-D3. Такой шинный протокол используется для многих простых систем. Нечто подобное имеет место в большинстве микрокомпьютеров, как мы увидим в гл. 10 и 11.
Заметим, что должна быть некоторая внешняя логика, которая обеспечивала надежность того, что устройства с тремя состояниями, подключенные к одним и тем же выходным линиям, не будут пытаться передавать в одно и то же время (что равносильно условию, официально называемому «соглашение шины»). В этом случае все хорошо, когда каждому устройству соответствует свой адрес.
Логика с открытым коллектором. Предшественником логики с 3 состояниями была логика с открытым коллектором, которая позволяет вам подключиться к одиночной линии среди других выходов нескольких формирователей. Выход с открытым коллектором просто не включает транзистор активной нагрузки в выходном каскаде (рис. 8.21).
Рис. 8.21. Маломощный ТТЛШ-вентиль И-НЕ с открытым коллектором.
Название «открытый коллектор» превосходно. Когда вы используете такие вентили, вы должны подключать к источнику питания внешний нагрузочный резистор. Его значение не критично: при малых значениях резистора обеспечиваются повышенные быстродействие и помехоустойчивость, однако повышается рассеиваемая мощность и нагрузочный ток выходного каскада. Для ТТЛ типичными являются значения в пределах от нескольких сотен до нескольких тысяч ом. Если вы захотели возбуждать шину с помощью вентилей с открытым коллектором (рис. 8.20), вы должны заменить драйверы с тремя состояниями на двухвходовые вентили И-НЕ с открытым коллектором, подключив один выход каждого вентиля к высокому уровню разрешения подключения к шине. Заметим, что данные на шине при этом включении будут инвертированы. Каждую линию шины необходимо через нагрузочный резистор подключить к +5 В. К недостаткам логики с открытым коллектором следует отнести пониженные быстродействие и помехоустойчивость по сравнению с обычными схемами, использующими активную нагрузку. Вот почему драйверы с тремя состояниями являются основными для реализации шин в компьютерах. Однако существуют три ситуации, в которых вы должны использовать устройство с открытым коллектором: управление внешними нагрузками, «проводное ИЛИ» и внешние шины. Давайте рассмотрим их внимательно.
Управление внешней нагрузкой. Логика с открытым коллектором является пригодной для управления внешней нагрузкой, которая подключается к источнику положительного напряжения, превышающего напряжение питания ИМС. Может, в частности, потребоваться включить маломощную 12-вольтовую лампочку или сформировать логический перепад 15 В с помощью резистора, установленного между выходом вентиля и источником +15 В (рис. 8.22).
Рис. 8.22.
Например, схема `06 представляет собой шесть инверторов с максимальным выходом +30 В, а схема КМОП 40107 представляет собой сдвоенный И-НЕ-буфер с открытым коллектором с выходным током до 120 мА. Серия 75450 «сдвоенных периферийных драйверов» может выдавать в нагрузку ток до 300 мА при напряжении питания +30 В, а серия UHP/UDN фирмы Sprague расширяет эти пределы до 1 А и до 80 В. Более подробно об этом в следующей главе.
Проводное ИЛИ. Если вы объедините вместе несколько вентилей с открытым коллектором, как показано на рис. 8.23, то получите так называемую схему «про- водное ИЛИ», соединение, которое ведет себя подобно большому вентилю И-НЕ, выдающему на выходе низкий уровень, если какой-либо вход имеет высокий уровень.
Рис. 8.23. Монтажное ИЛИ.
Такое объединение недопустимо при использовании схем с активной нагрузкой из-за возникновения режима соперничества, если между всеми вентилями не будет согласовано, каким должен быть выходной сигнал. Объединять можно схемы ИЛИ-НЕ, И-НЕ и т. п. Это соединение также иногда называют «проводное И», поскольку высокий уровень на выходе возникает лишь тогда, когда он действует на выходе каждого вентиля (состояние разомкнутого, или открытого выхода. Оба этих названия описывают одну и ту же схему, которая представляет собой проводное И при положительной логике и проводное ИЛИ-при отрицательной. Это будет более понятно для вас, когда вы узнаете о теореме Моргана в следующем разделе.
Проводное ИЛИ пользовалось скоротечной популярностью в ранние дни цифровой электроники, но и сегодня оно используется довольно редко за двумя исключениями: а) в логических семействах, известных как ЭСЛ (эмиттерсвязанная логика, выходы у которой можно назвать «открытый эмиттер»), элементы могут безболезненно объединяться по проводному ИЛИ и б) существуют несколько частных линий в компьютерных шинах (наиболее значительная линия называется прерывание), функциями которых являются не передача информационных бит, а просто индикация того, что хотя бы одно устройство требует внимания. В этом случае вы используете проводное ИЛИ, поскольку оно дает то, что вы хотите, и не требуется дополнительной внешней логики для предотвращения споров.
Внешние шины. В приложениях, где скорость не очень важна, вы иногда видите драйверы с открытым коллектором, используемые для возбуждения шин. Наиболее частый случай для шин — это выдача данных из компьютеров. Общими примерами являются шины, используемые для связи компьютера с дисководом, и инструментальная шина IEEE-488 (также называемая "HPIB" или "GPIB"). Подробнее об этом в гл. 10 и 11.
Комбинационная логика
Как мы обсуждали ранее в разд. 8.04, цифровые логические схемы разделяются на комбинационные и последовательностные (последовательные). Комбинационные схемы — это такие логические устройства, в которых состояние выхода зависит только от текущего состояния их выходов в некотором предопределенном виде. Выходное состояние последовательностной схемы определяется как состояние входов на данный момент, так и ее предыдущим состоянием. Комбинационные схемы могут быть построены с применением одних лишь вентилей, в то время как последовательностные схемы требуют наличия памяти в какой-либо форме (триггер). В последующих разделах мы рассмотрим возможности комбинационной логики, после чего отправимся в беспокойный мир последовательностных схем.
8.12. Логические тождества
Любое обсуждение комбинационной логики будет неполным, если мы не рассмотрим логические тождества, представленные в табл. 8.3. Из этих соотношений большинство очевидны, а два последних составляют теорему Моргана, наиболее важную для построения схем.
Таблица 8.3. Логические тождества
АВС = (АВ)С = А(ВС)
АВ = ВА
АА = А
А1 = А
А0 = 0
А(В + С) = АВ + АС
А + АВ = А
A + BC = (A + B)(A + С)
A + B + C = (A + B) + C = A + (B + С)
A + В = В + А
А + А = А
А + 1 = 1
А + 0 = А
1' = 0
0' = 1
А + А' = 1
АА' = 0
(А')' = А
А + А'В = А + В
(А + В)' = А'В'
(АВ)' = А' + В'
Пример: вентиль Исключающее ИЛИ.
На следующем примере проиллюстрируем использование логических тождеств: попробуем построить схему Исключающее ИЛИ с помощью обычных вентилей. Таблица истинности для Исключающего ИЛИ представлена на рис. 8.24. Изучив ее и поняв, что 1 на выходе существует только тогда, когда (А, В) = (0, 1) или (1, 0), мы можем написать А В = А¯В + АВ¯
Рис. 8.24. Таблица истинности вентиля Исключающее ИЛИ.
Соответствующая схемная реализация представлена на рис. 8.25.
Рис. 8.25. Реализация вентиля Исключающее ИЛИ.
Однако эта реализация не является единственной. Используя логические тождества, мы находим, что
Α В = АА¯ + АВ¯ + ВА¯ + ВВ¯ (АА¯ = ВВ¯ = 0)
= А(А¯ + В¯) + В(А¯ + В¯)
= А(А¯В¯) + В(В¯А) = (А + В)(А¯В¯)
(На первом шаге мы прибавили две величины, равные нулю, а на третьем применили теорему Моргана). Схемная реализация для этого случая показана на рис. 8.26.
Рис. 8.26. Реализация вентиля Исключающее ИЛИ.
Существуют и другие способы построения схемы Исключающее ИЛИ. Рассмотрим следующие упражнения:
Упражнение 8.11. Покажите, что
с помощью логических преобразований. В справедливости этих соотношений легко убедиться, просмотрев таблицу истинности.
Упражнение 8.12. Чему равны следующие соотношения:
а) 0·1, б) 0 + 1, в) 1·1, г) 1 + 1, д) А(А + В), е) А(А' + В), ж) Α А, з) Α Α'.
8.13. Минимизация и карты Карно
Поскольку логическую функцию, даже такую простую, как Исключающее ИЛИ, можно реализовать различными способами, часто бывает нужно найти для нее самое простое решение, или, возможно, наиболее удобное схемное решение. Над этой проблемой бились многие светлые умы и в настоящее время существует несколько способов ее разрешения, включая алгебраические методы, реализуемые с помощью ЭВМ. При числе входов, не превышающем четырех, наилучшим методом является составление карты Карно. Этот метод позволяет также найти логическое выражение (если оно заранее неизвестно) по таблице истинности. Проиллюстрируем этот метод с помощью примера.
Предположим, что требуется построить схему для мажоритарного подсчета голосов при баллотировке. Будем считать, что имеются три входа, работающие в положительной логике (на любом из них может быть 1 или 0) и выход (0 или 1). Выход равен 1, если 1 присутствует не менее чем на двух входах.
Шаг 1. Составим таблицу истинности
Здесь должны быть представлены все возможные сочетания и соответствующие им состояния выхода (или выходов). В том случае, когда состояние входа не оказывает влияния на выход, ставится X (любое значение).
Шаг 2. Составим карту Карно. Она представляет собой нечто очень близкое к таблице истинности, но содержит переменные, которые расположены по двум осям. Переменные должны быть расположены таким образом, чтобы при переходе от каждого квадрата к соседнему менялось бы состояние только одного входа (рис. 8.27).
Рис. 8.27. Карта Карно.
Шаг 3. Отметим на карте группы, содержащие 1 (можно также использовать и группы, содержащие 0). Три овала на рис. 8.27 определяют логические выражения АВ, АС и ВС. Далее получим требуемую функцию
Q = АВ + АС + ВС,
схемная реализация ее показана на рис. 8.28.
Рис. 8.28.
Этот результат кажется очевидным, когда он уже получен. Можно было бы составить выражение для нулей и вместо этого получить
Q = А'В' + А'С + В'С.
Это выражение может оказаться полезным для случая, когда в каких-либо точках схемы имеются дополнения А', В' и С.
Некоторые комментарии к картам Карно.
1. Ищите группы, содержащие 2, 4, 8 и т. д. квадратов. Они имеют простые логические выражения.
2. Логика будет тем проще, чем крупнее блок вы опишете.
3. Состыкуйте края карты Карно. Например, карта на рис. 8.29 описывается выражением Q = В'С.
Рис. 8.29.
4. Блок «единиц», содержащий один или два «нуля», лучше всего описывается с помощью группировки, показанной на рис. 8.30. Этому блоку соответствует логическое выражение Q = A(BCD)'.
Рис. 8.30.
5. Места, содержащие X (любое значение), представляют собой «карт-бланш». Записывайте в них «нули» или «единицы» так, чтобы можно было получить простейшую логику.
6. Карта Карно может и не привести к лучшему решению. Иногда более сложное логическое выражение имеет более простую схемную реализацию, например в случае, когда некоторые члены выражения уже сформированы схемой в виде логических сигналов, которые можно использовать в качестве входных. Кроме того, реализации Исключающего ИЛИ не очевидны из карты Карно. Наконец, при выборе логической структуры схемы определенную роль играют ограничения, связанные с конструкцией ИМС (например, когда в одном корпусе содержатся четыре 2-входовых вентиля). Когда используются такие программируемые логические устройства как ПМЛ для конструирования логических функций, внутренняя структура (программируемые вентили И и фиксированные вентили ИЛИ) сдерживает реализацию, которая могла бы быть применена.
Упражнение 8.13. Нарисуйте карту Карно для логики, которая позволит определить, является ли 3-разрядное двоичное число «главным», считая при этом, что главными не являются числа 0, 1 и 2. Дайте схемную реализацию на 2-входовых вентилях.
Упражнение 8.14. Найдите логическое выражение, с помощью которого можно было бы умножить два 2-разрядных двоичных числа и получить 4-разрядный результат. Рекомендации: для каждого выходного бита пользуйтесь отдельными картами Карно.
8.14. Комбинационные функциональные схемы, реализованные на стандартных ИМС
С помощью карт Карно можно построить логику, чтобы выполнять достаточно сложные функции, такие, как, например, двоичное сложение и сравнение величин, контроль по паритету, мультиплексирование (выбор одного из нескольких входов, который определяется двоичным адресом) и т. п. В реальности сложные функции, которые используются наиболее часто, реализуются в виде функциональных ИМС средней степени интеграции (до 100 вентилей в корпусе). Хотя в состав многих из этих СИС входят триггеры, которые мы скоро будем рассматривать, большинство из них выполняют чисто комбинационные функции и состоят целиком из одних вентилей. Давайте посмотрим, «какие звери населяют зоопарк, именуемый комбинационные интегральные схемы средней степени интеграции.»
Счетверенная 2-входовая схема выборки. Весьма полезным устройством является счетверенная 2-входовая схема выборки. Она фактически представляет собой 4-полюсный двухпозиционный переключатель логических сигналов. Основная идея такого переключателя иллюстрируется рис. 8.31.
Рис. 8.31. Счетверенный 2-входовый селектор.
Когда вход ВЫБОР (SELECT-SEL на рисунке) имеет низкий уровень, сигналы на выходах Q поступают с соответствующих входов А, при высоком уровне на входе ВЫБОР — со входов В. Когда высокий уровень действует на входе РАЗРЕШЕНИЕ (ENABLE-E на рисунке), все выходы устройства принудительно устанавливаются в состояние низкого уровня. Несколько позже мы рассмотрим эту важную идею более подробно, а сейчас приведем лишь таблицу истинности, в которой X означает, что состояние данного входа не имеет значения, В — высокий уровень, Η — низкий уровень.
Схема на рис. 8.31 и ее таблица истинности соответствуют схеме `157. Та же самая функция реализуется также с инверсным выходом (`158) и с выходом на 3 состояния (прямые выходы; `257; инверсные: `258).
Упражнение 8.15. Покажите, как с помощью вентилей И-ИЛИ-НЕ построить 2-входовую схему выборки.
Хотя в некоторых случаях функцию выборки можно реализовать с помощью механического переключателя, тем не менее по ряду причин предпочтительнее использовать вентили. Вентильная схема обладает следующими преимуществами: а) она дешевле; б) коммутация всех каналов производится быстро и одновременно; в) с помощью логических сигналов, сформированных в устройстве, можно производить переключение практически мгновенно; г) даже тогда, когда управление выборкой осуществляется от переключателя, расположенного на передней панели устройства, для того чтобы избежать воздействия помехи и снижений уровней за счет влияния емкостей, логические сигналы лучше не пропускать через кабели и переключатели. Так как избираемый вентиль отпирается уровнем постоянного напряжения, логические сигналы управления могут быть взяты с той же платы, на которой он расположен. Это позволяет сократить внешние связи (достаточно одной линии с нагрузкой, коммутируемой на землю с помощью однополюсного тумблера). Такой способ управления логической схемой с помощью внешних уровней постоянного напряжения называют «холодной коммутацией». Он оказывается более предпочтительным, чем непосредственное управление сигналами от ключей, потенциометров и т. п. Кроме прочих преимуществ холодная коммутация позволяет вести управляющие линии, шунтированные конденсаторами, подавляя тем самым взаимные наводки, в то время как сигнальные линии в общем случае шунтировать конденсаторами нельзя. Некоторые примеры холодной коммутации нам еще встретятся в дальнейшем.
Передающие вентили. Как уже указывалось в разд. 3.11 и 3.12, с помощью элементов КМОП можно построить «передающий вентиль». Это — два параллельно включенных комплементарных ключа на полевых МОП-транзисторах, через которые входной (аналоговый) сигнал, лежащий в пределах от 0 до UСС, может либо непосредственно подаваться на выход через низкое сопротивление (несколько сотен омов), либо отрываться (выходное сопротивление фактически равно бесконечности). Как вы, наверное, помните, такие устройства являются двунаправленными и для них не имеет значения, какой из выходов используется в качестве входа, а какой в качестве выхода.
Передающие вентили прекрасно работают с цифровыми уровнями КМОП и широко применяются в КМОП-схемах. На рис. 8.32 показана структурная схема счетверенного двухстороннего КМОП-ключа типа 4066. Каждый ключ имеет индивидуальный управляющий вход, высокий уровень на котором замыкает ключ, а низкий — размыкает.
Рис. 8.32. Счетверенный двусторонний ключ.
Отметим, что передающие вентили являются просто ключами, и поэтому не обладают способностью к разветвлению по выходу, т. е. они просто пропускают входной логический уровень, не обеспечивая дополнительную нагрузочную способность без дополнительной возможности усиления. С помощью передающих вентилей можно построить схемы выборки на 2 и более входов для цифровых уровней КМОП и аналоговых сигналов. Связку передающих вентилей можно использовать для того, чтобы производить выбор одного из нескольких входов (вырабатывая управляющие сигналы с помощью дешифратора, как будет показано ниже).
Эта логическая функция настолько широко используется, что получила официальное название «мультиплексора», который будет рассмотрен в следующем разделе.
Упражнение 8.16. Покажите, как с помощью передающих вентилей построить схему выборки на два входа. Здесь нужно использовать инвертор.
Мультиплексоры. Вентиль выборки на два входа известен также под названием 2-входового мультиплексора. Промышленностью выпускаются также мультиплексоры на 4, 8 и 16 входов (устройства на 4 входа выпускаются сдвоенными, т. е. по 2 в одном корпусе). Двоичный адрес служит для выбора входа, сигнал с которого должен поступать на выход. Например, мультиплексор, имеющий 8 информационных входов, использует для адресации к ним 3-разрядный адресный вход. Это показано на рис. 8.33, где представлен цифровой мультиплексор типа `151.
Рис. 8.33. 8-входовый мультиплексор.
Он имеет стробирующий (или разрешающий) вход Е, работающий в отрицательной логике, а также прямой и инверсный выходы. Если устройство закрыто (на входе Ε действует высокий уровень), выход Q будет иметь низкий уровень, a Q' — высокий независимо от состояния адресных и информационных входов.
В семействе КМОП имеются два типа мультиплексоров. Первый применяется только для работы с цифровыми сигналами, имеет входной порог и регенерирует на выходе «чистые» уровни, которые соответствуют входному состоянию. Таким же образом работают все функциональные элементы ТТЛ. Примером является микросхема `153 — ТТЛ-мультиплексор. К другому типу устройств относятся аналоговые и двунаправленные КМОП мультиплексоры, которые фактически представляют собой набор передающих вентилей, КМОП-мультиплексоры 4051 и 4053 работают таким образом (помните, что логика, выполненная из передающих вентилей, не может разветвляться). Так как передающие вентили являются двунаправленными, эти мультиплексоры могут использоваться в качестве «демультиплексоров или дешифраторов», которые мы рассмотрим в следующем разделе.
Упражнение 8.17. Покажите, как построить мультиплексор на 4 входа, используя а) обычные вентили, б) вентили с тремя состояниями и в) передающие вентили. При каких обстоятельствах будет предпочтительным вариант в)?
Иногда при разработке логических устройств может оказаться, что потребуется производить набор из большего числа входов, чем имеются в мультиплексоре. Этот вопрос относится к общей задаче расширения микросхем, которое заключается в использовании нескольких микросхем с небольшими индивидуальными возможностями, и применяется для построения дешифраторов, памяти, регистров сдвига, арифметически-логических и других устройств. Как видно из рис. 8.34, расширение выполняется очень просто. Здесь показано, как имея два мультиплексора на 8 входов 74LS51 построить мультиплексор на 16 входов.
Рис. 8.34. Наращивание мультиплексора.
Конечно, в схемах имеется дополнительный адресный бит, который вы используете для выбора одного устройства или другого. На невыбранном мультиплексоре `151 выход Q поддерживается на низком уровне, что позволяет произвести объединение через вентиль ИЛИ. Если выходы имеют три состояния, то расширение производится еще проще: для этого достаточно непосредственно объединить выходы.
Демультиплексоры и дешифраторы. Входной сигнал принимается демультиплексором и направляется им на один из нескольких выходов в соответствии с двоичным кодом, действующим на адресных входах. Остальные выходы в этом случае находятся либо в неактивном состоянии, либо в состоянии разомкнутой цепи. Аналогично работает и дешифратор. Единственное отличие состоит в том, что на входы подается только адрес, возбуждающий один из n возможных выходов. На рис. 8.35 показан такой пример.
Рис. 8.35. Дешифратор «1 из 8».
Дешифратор `138 — "1 из 8" имеет низкий уровень на выходе, который соответствует входному 3-разрядному коду (адресу), а на остальных выходах — высокий уровень. В частности этот дешифратор имеет три входа разрешение, все из которых должны быть активны (два — низкого и один — высокого уровня), иначе все выходы имеют высокий уровень. Основное применение дешифратора — заставить происходить различные события, которые зависят от состояния «счетчика», который управляет этим (скоро об этом тоже поговорим подробно).
Дешифраторы обычно используются при сопряжении с микропроцессором, когда необходимо выполнить различные действия в зависимости от адреса. Мы будем рассматривать это детально в гл. 10.
Другим применением общего использования дешифратора является организация (разрешение) последовательности действий, согласно достигнутого адреса, заданного выходом двоичного счетчика (разд. 8.25). В заключение, о «брате» схемы `138 — схеме `139, которая представляет сдвоенный дешифратор "1 из 4" с раздельным одиночным разрешением по низкому уровню. На рис. 8.36 показано, как использовать два дешифратора `1 из 8' типа `138 для получения дешифратора "1 из 16". Как видно из рисунка, при этом не требуются внешние элементы, поскольку схема `138 имеет входы разрешения обеих полярностей (низкого и высокого уровней).
Рис. 8.36. Наращивание дешифратора.
Упражнение 8.18. Большое расширение: постройте дешифратор "1 из 64" на девяти устройствах `138. Подсказка: используйте один из них для разрешения подключения других.
В КМОП-логике мультиплексоры, которые используют передающие вентили, также являются демультиплексорами, поскольку передающие вентили являются двунаправленными. Когда они используются таким образом, важно сознавать, что выходы, которые не выбраны, отключены. Нагрузочный резистор, или эквивалентный ему, должны быть использованы для обеспечения правильного функционирования логики с такими выходами (те же самые требования, что и с ТТЛ-вентилями с открытым коллектором).
Существует другой тип дешифраторов, который обычно входит в состав всех логических семейств. Примером такого дешифратора служит преобразователь двоично-десятичного кода в семисегментный с формирователями для управления цифровым индикатором `47. Эта схема в соответствии с двоично-десятичным кодом, действующим на входе, формирует сигналы на всех выходных линиях, связанных со входами семисегментного цифрового индикатора, воспроизводящего десятичный символ. Устройство такого типа фактически является преобразователем кодов, но в обычной практике используется название дешифратор. В табл. 8.6 в конце главы представлено большинство применяемых дешифраторов.
Упражнение 8.19. Используя вентили, постройте преобразователи двоично-десятичного кода в десятичный ("1 из 10").
Приоритетный шифратор. Приоритетный шифратор формирует на выходе двоичный код, соответствующий входу с наивысшим номером (приоритетом), который возбуждается. Наиболее часто эта схема используется в аналого-цифровых преобразователях с параллельным преобразованием (см. следующую главу) и в проектировании микропроцессорных систем. Примерами устройств такого типа являются схема `148 — 8-входовый (3 выходных разряда) приоритетный шифратор и схема `147 — 10-входовый.
Упражнение 8.20. Спроектируйте простейший дешифратор, у которого 2-разрядный адрес на выходе будет указывать, какой из четырех входов имеет высокий уровень (все остальные входы должны иметь низкий уровень).
Сумматоры и другие арифметические устройства. На рис. 8.37 изображен 4-разрядный полный сумматор. Он прибавляет 4-разрядное двоичное число Аi к 4-разрядному числу Вi и вырабатывает на выходе 4-разрядную сумму Si плюс разряд переноса Пвых. Для суммирования больших величин сумматоры можно наращивать. Для этой цели предусмотрен вход Пвх, на который поступает выходной сигнал переноса от предыдущего (младшего) сумматора.
Рис. 8.37. 4-разрядный полный сумматор.
На рис. 8.38 показано, как строится схема для суммирования двух 8-разрядных двоичных чисел.
Рис. 8.38. Наращивание сумматора.
Часто в качестве сумматоров используются арифметико-логические устройства (АЛУ). Эти устройства фактически предназначены для выполнения целого ряда различных функций. В частности, 4-разрядная АЛУ `181 (с возможностью расширения для обработки слов большей длины) может выполнять сложение, вычитание, сдвиг двоичных разрядов, сравнение величин и некоторые другие функции. Время выполнения арифметических операций в сумматорах и АЛУ находится в пределах от наносекунд до десятков наносекунд в зависимости от типа логического семейства.
Интегральные умножители выпускаются в конфигурациях 8 бит x 8 бит или 16 бит x 16 бит. Разновидностью умножителей, которые в основном используются для цифровой обработки сигналов, являются так называемые умножители-накопители, которые накапливают сумму произведений. Они также выполняются в размерах 32x32 с 64-битовым произведением плюс несколько дополнительных бит для сохранения суммы от переполнения. Умножители-накопители и умножители выпускаются с временем 25–50 нс; у ЭСЛ-умножителей время меньше — 5 нс (тип.) для умножителей 16x16.
Другим арифметическим устройством, которое используется в цифровой обработке сигналов, является коррелятор, который сравнивает соответствующие биты двух цепочек битов, вычисляя число совпавших битов. Типовой интегральный коррелятор сравнивает два 64-разрядных, которые могут сдвигаться во внутренних регистрах сдвига. Какой-либо набор бит может игнорироваться («маскироваться») в корреляции. Типовые времена составляют 30 нс, т. е. лента бит может тактироваться с частотой 35 МГц, с разрешением 7 бит в корреляции для каждого такта. Вычисляется отклонение (как в цифровом фильтре с КИХ) вместо суммы (с переносом) попарносвязанных произведений двух цепочек целых чисел.
Типичные размеры — целые числа от 4 до 10 бит при длине от 3 до 8 слов (конечно, имеющие возможность расширения). Наиболее сложными арифметическими кристаллами являются процессоры с плавающей запятой, которые осуществляют сравнение, суммирование, умножение, вычисление тригонометрических функций, экспонент и корней. Обычно они используются совместно с определенными микропроцессорами и приспособлены для работы в стандарте, известном как IEED754, который определяет размеры слов (до 80 бит), формат и т. д. Примерами таких устройств (плюс основные микропроцессоры) являются схемы 8087 (80848), 80287 (80286), 80387 (80386) и 68881 (68020/30). Они имеют действительно ошеломляющую производительность в 10 Мегафлопс (миллион операций с плавающей запятой в секунду) или более.
Компараторы. На рис. 8.39 показан 4-разрядный компаратор чисел, который определяет относительные значения чисел А и В и вырабатывает на выходе сигналы результатов сравнения: А < В, А = В и А > В. Входы допускают наращивание для обработки чисел длиной более 4 бит.
Рис. 8.39. Компаратор.
Упражнение 8.21. Сконструируйте компаратор, используя вентили «исключающее или», который будет сравнивать 4-разрядные числа А и В и определять, когда А = В.
Схема формирования и контроля бита паритета. Это устройство предназначено для выработки паритетного бита, который добавляется к информационному «слову» при передаче (или записи) данных, а также для проверки правильности паритета при восстановлении этих данных. Паритет может быть четным или нечетным (при нечетном паритете для каждого символа общее число битов (разрядов), содержащих 1, нечетно). Например, формирователь паритета 1280 принимает 9-разрядное слово и в соответствии с состоянием управляющего входа вырабатывает на выходе четный или нечетный бит. Конструктивно схема представляет собой набор вентилей «исключающее или».
Упражнение 8.22. Подумайте, как сделать формирователь паритета, используя вентили «исключающее или».
Программируемые логические устройства. Вы можете строить ваши собственные комбинационные (и даже последовательные) логические схемы на кристалле, используя ИС, которые содержат массив вентилей с программируемыми перемычками. Существуют несколько вариантов таких устройств, из которых наиболее популярными являются ПМЛ (программируемая матричная логика — PAL) и ПЛМ (программируемая логическая матрица — PLA). ПМЛ, в частности, стали крайне недорогими и гибкими устройствами, которые должны войти как часть инструмента каждого разработчика. Мы будем описывать комбинационные ПМЛ в следующем разделе.
Некоторые другие незнакомые функции. Существует много других комбинационных схем средней степени интеграции, представляющих несомненный интерес. Например, в семействе КМОП есть схема — «мажоритарная логика», которая говорит, что возбуждена большая часть входов. Имеется также двоично-десятичное устройство дополнения до 9, назначение которого не требует пояснений. Существует схема «барабан-сдвигатель», которая сдвигает входное число на n (задаваемое) разрядов и может наращиваться до любой длины.
8.15. Реализация произвольных таблиц истины
К счастью, большинство из проектов цифровых схем не состоит из стряпни безумных устройств на вентилях для реализации сложных логических функций. Однако временами, когда вам нужно связать несколько сложных таблиц истинности, число вентилей может стать слишком большим. Возникает вопрос, нельзя ли найти какой-то другой путь. Таких путей существует несколько. В этом разделе мы кратко рассмотрим, как использовать мультиплексоры и демультиплексоры для реализации произвольных таблиц истинности. Затем мы обсудим в общем более мощные методы, использующие программируемые логические кристаллы, в частности ПЗУ и ПЛМ.
Мультиплексоры в качестве реализаций обобщенных таблиц истинности. Нетрудно видеть, что n-входовый мультиплексор может быть использован для генерации любой таблицы истинности на n входов без применения каких-либо внешних компонентов, если просто на их входы подать соответствующие высокие и низкие уровни. Схема на рис. 8.40 говорит, является ли входное 3-разрядное двоичное число простым.
Рис. 8.40.
Не столь очевидно, что мультиплексор на n входов с помощью только одного инвертора может быть использован для генерации таблицы истинности на 2n входов. Например, рис. 8.41 показывает схему, которая определяет имеет или нет данный месяц года 31 день, где месяц (от 1 до 12) задается 4-битовым входом.
Хитрость в том, чтобы заметить, что для данного состояния адресных битов, прикладываемых к мультиплексору, выход (как функция оставшегося входного бита) должен быть равен H, L, А0 или А'0; соответственно вход мультиплексора связывается с логическим высоким, логическим низким, А или А'0.
Рис. 8.41.
Упражнение 8.23. Схема на рис. 8.41. Составьте таблицу, показывающую, имеет ли данный месяц 31 день, с двоичной адресацией месяца. Сгруппируйте месяцы в пары согласно старшим значащим 3-м битам адреса. Для каждой пары обозначение выхода Q («31 день») зависит от младшего значащего адресного бита А0. Сравните с рис. 8.41. Наконец, напрягитесь и проверьте, что схема делает на самом деле, если заданный месяц имеет 31 день.
Забавное примечание: оказывается, что данную таблицу истинности можно реализовать только с одним вентилем «исключающее или», если использовать для несуществующих месяцев знак X (любое значение)! Попытайтесь сделать это самостоятельно. Это даст вам возможность приобрести опыт в составлении карт Карно.
Дешифраторы как обобщенные таблицы истинности. Дешифраторы также позволяют упростить комбинационную логику, особенно в тех случаях, когда нужно получить несколько одновременно действующих выходных сигналов. В качестве примера попробуем составить схему преобразования двоично-десятичного кода в код с избытком 3. Таблица истинности для такого преобразования имеет вид:
Мы здесь используем 4-разрядный (в двоично-десятичном коде) вход как адрес для дешифратора, а выходы дешифратора (в отрицательной логике) служат в качестве входов для нескольких вентилей ИЛИ, формирующих выходные биты, как показано на рис. 8.42.
Заметим, что в этой схеме выходные биты не являются взаимно исключающими. Аналогичную схему можно использовать в качестве устройства для задания рабочих циклов в стиральной машине: при каждом состоянии входа выполняются различные функции (подача воды, заполнение, вращение барабана и т. д.). Вскоре вы увидите, каким образом вырабатывается последовательность двоичных кодов, следующих через равные промежутки времени. Индивидуальные выходы дешифратора носят название «минтермы» и соответствуют позициям на карте Карно.
Рис. 8.42. Преобразование кодов на уровне минтермов: преобразование двоично-десятичного кода в код с избытком 3 (устаревший код, сохранившийся с 1-го издания книги).
ПЗУ и программируемая логика. Эти ИС позволяют вам программировать их внутренние связи. В этом смысле они фактически являются устройствами с памятью и будут рассматриваться позднее, вместе с триггерами, регистрами и т. п. Однако после программирования они являются строго комбинационными, хотя существуют также последовательностные программируемые логические устройства (см. разд. 8.27), они так полезны, что будут обсуждаться сейчас.
ПЗУ. ПЗУ (постоянное запоминающее устройство) содержит битовый образ (обычно 4 или 8 разрядов, параллельный выход) для каждого конкретного адреса, приложенного ко входу. Например, 1Кx8 ПЗУ выдает восемь выходных бит на каждое из 1024 входных состояний, определяемых 10-разрядным входным адресом (рис. 8.43).
Рис. 8.43.
Любая комбинационная таблица истинности может быть запрограммирована в ПЗУ, обеспечивающем достаточное число входных линий (адреса). Например, ПЗУ 1Кx8 можно использовать для реализации умножителя 4x4; в этом случае ограничение на «ширину» (8 разрядов), не действует (так как имеется 10 разрядов).
ПЗУ (а также программируемые логические устройства) являются энергонезависимым устройством, т. е. хранимая информация остается даже тогда, когда питание пропадает. ПЗУ подразделяются на несколько типов, в зависимости от их метода программирования: а) «Масочно-программируемые ПЗУ» имеют свое битовое содержание, созданное во время изготовления. б) «Программируемые ПЗУ» (ППЗУ) программируются пользователем: ПЗУ имеют тонкие перемычки, которые могут пережигаться (подобно предохранителям) посредством подачи адреса и управляющих сигналов; они обладают высоким быстродействием (25–50 нс), относительно большим потреблением (биполярные 0,5–1 Вт), размерами от малых до средних (от 32x8 до 8Кx8). «Стираемые программируемые ПЗУ» (СППЗУ) хранят свои биты как заряды на плавающих МОП-вентилях; информация в них может стираться посредством облучения их интенсивным ультрафиолетовым светом в течение нескольких минут (они имеют прозрачное кварцевое стекло); выполняются по n-МОП и КМОП-технологии и значительно медленнее (200 нc) при низком потреблении (частично в режиме хранения), имеют достаточно большой размер (8Кx8 и 128Кx8). Современные КМОП СППЗУ достигают быстродействия биполярных ПЗУ (35 нс). Известен вариант — «однократно-программируемый» (ОКП), он содержит идентичный кристалл, но не имеет кварцевого окна для экономии и простоты, г) «Электрические стираемые программируемые ПЗУ» (ЭСППЗУ) подобны СППЗ, но могут программироваться и стираться электрически прямо в схеме с использованием стандартных напряжений питания (+5 В).
ПЗУ находят широкое использование в компьютерах и микропроцессорах, где они используются для сохранения законченных программ и таблиц данных; мы увидим их снова в гл. 11. Однако вы всегда должны помнить о небольших ПЗУ, как о замене сложных вентильных матриц.
Программируемая логика. ПМЛ (программируемая матричная логика; PAL-товарный знак фирмы Monolitic Memories Inc.) и ПЛМ (программируемые логические матрицы) являются двумя основными видами программируемой логики. Они являются ИС со многими вентилями, связи между которыми могут программироваться (подобно ПЗУ) для формирования желательных логических функций. Они выполняются как в биполярном, так и в КМОП-вариантах, первые используют прожигаемые перемычки (однократно-программируемые), вторые — плавающие вентильные КМОП схемы (ультрафиолетового или электрического стирания). Вы не можете запрограммировать любую связь, какую желаете — вы будете ограничены встроенной структурой. Рис. 8.44 показывает основные схемы комбинационных (не регистровых) ПЛМ и ПМЛ.
Рис. 8.44. Программируемая логика: а — ПЛМ; б — ПМЛ; в — фрагмент программируемых соединений с многовходовым вентилем И; кружками обозначены плавкие перемычки или другие программируемые соединения.
Для простоты на этом рисунке вентили И или ИЛИ нарисованы с одним входом, хотя в действительности они являются много-входовыми вентилями с входом для каждого перекрестия. Каждый выход (с 3 состояниями) комбинационной ПМЛ выводится от вентиля ИЛИ, а каждый вход подсоединяется к вентилю И с дюжинами входов. Например, 16L8 (рис. 8.45) имеет восемь 7-входовых вентилей ИЛИ; каждый возможный сигнал достижим для каждого вентиля И, включая 10 входных контактов (и инверторы для них) и 8-выходных контактов (и инверторы к ним).
Рис. 8.45. Комбинационная ПМЛ 16L8 имеет 10 специальных входов, 2 специальных выхода и 6 двунаправленных линии входа/выхода (с 3-м состоянием). «16L8» означает 16 входов (макс), 8 выходов (макс.) (низкий уровень - истинное значение).
(с разрешения фирмы Advanced Micro Devices, Калифорния.)
Разрешение третьего состояния также устанавливается от 32-входового вентиля И. ПЛМ подобна ПМЛ, но обладает большей гибкостью — выходы вентилей И могут связываться со входами вентилей ИЛИ в любой комбинации (т. е. программироваться), что предпочтительней, чем жесткое присоединение, как в ПМЛ.
Заметим, что ПМЛ и ПЛМ, которые мы описывали, являются комбинационными устройствами (т. е. выполнены только на вентилях, без памяти). Другой разновидностью программируемой логики является последовательностная логика, т. е. имеющая память (регистры), подробно мы рассмотрим их в, следующем разделе. Для использования ПМЛ и ПЛМ вы должны иметь программатор, как часть аппаратного обеспечения, который знает, как прожигать перемычки (или другие типы программируемых средств) и проверить окончательный результат. Все программаторы имеют связь через последовательный порт с микрокомпьютером (стандартное средство связи на IBM PC или совместимой с ней), на котором вы работаете с программным обеспечением программатора. Некоторые из современных программаторов включают одноплатный компьютер, который работает с собственным программным обеспечением.
Простейшее программное обеспечение просто позволяет вам выбрать перемычки для прожигания; вы изображаете это в зависимости от того, какую логику вы хотите получить на уровне вентилей, затем перечисляете (или помечаете на графическом дисплее) эти перемычки. Рис. 8.46 показывает простой пример для функции исключающее ИЛИ на два входа на одном из выходов ПМЛ.
Рис. 8.46. Исключающее ИЛИ на ПМЛ.
Хорошие программаторы позволяют вам задавать буквы выражения (если они вам известны) или таблицы истинности; программное обеспечение затем делает остальное, включая минимизацию, моделирование и программирование. Хотя ПЛМ более гибкие, фаворитом в современном проектировании являются ПМЛ. Это из-за того, что они быстрее (так как сигнал проходит только через один массив перемычек), дешевле и обычно удовлетворяют задаче. Как мы увидим позже, новые ПМЛ, использующие «макроячейки» и «складную архитектуру» дают вам некоторую дополнительную гибкость в проектировании на ПМЛ с фиксированными ИЛИ-вентилями. Таким образом, ПМЛ представляют собой гибкую и компактную альтернативу ИС с фиксированными функциями и не должны выпадать из виду у серьезного проектировщика схем. Мы покажем, как (и где) применять программируемую логику с использованием полезных хитростей в разд. 8.27.
Последовательностная логика
8.16. Устройства с памятью: триггеры
Вся рассмотренная выше цифровая логика строилась на комбинационных схемах (т. е. наборах вентилей), в которых выход полностью определяется текущим состоянием входов. В этих схемах отсутствует «память», отсутствует предыстория. Жизнь цифровой логики станет более интересной, если устройства снабдить памятью. Это дает возможность конструировать счетчики, арифметические регистры и различные «умные» схемы, которые выполнив одну интересную функцию, начинают делать другую. Основным узлом таких схем является триггер, колоритное имя для описания устройств, которые в простейшей форме представлены на рис. 8.47.
Рис. 8.47. RS-триггер.
Предположим, что оба входа А и В имеют высокий уровень. Тогда, в каком состоянии будут выходы X и Y? Если X будет иметь высокий уровень, то последний будет присутствовать на обоих входах вентиля G2, и устанавливать Y в состояние низкого уровня. Это согласуется с состоянием выхода X (высокий уровень), следовательно, все правильно. Не правда ли?
Х = В, Y = H.
Неверно! Схема симметрична, следовательно, правомерно будет и состояние, при котором
Х = Н, Y = B.
Состояние, когда оба выхода X и Y имеют высокий (или низкий) уровень, невозможно (вспомним, что А = В = высокий уровень). Таким образом, триггер имеет два устойчивых состояния (иногда его называют «бистабильной» схемой). В каком из этих двух состояний он окажется, зависит от его предыстории, т. е. он обладает памятью. Для того чтобы в эту память что-то записать, достаточно на один из входов триггера кратковременно подать низкий уровень. Например, после кратковременной подачи низкого уровня на вход А триггер гарантированно установится в состояние
Х = В, Y = H.
независимо от того, какое состояние он имел прежде.
Подавление дребезга контактов. Рассмотренный нами триггер со входами S (установки в «1») и R (установки в «0» или сброса) оказывается весьма полезным для многих применений. На рис. 8.48 показан типичный пример его использования.
Рис. 8.48. «Дребезг» переключения.
По идее эта схема должна открывать вентиль и пропускать входные импульсы, если ключ разомкнут. Ключ связан с землей (а не с шиной +5 В) из-за особенности биполярных ТТЛ-схем (в противоположность КМОП-элементам), состоящей в том, что вы должны обеспечить отвод тока от входа ТТЛ в состоянии низкого уровня (0,25 мА для LSTTL), в то время как в состоянии высокого уровня входной ток близок к нулю. Кроме того, обычно в устройствах имеется шина земли, удобная для подсоединения к ней ключей и других органов управления. При использовании такой схемы возникает проблема, обусловленная «дребезгом» контактов ключа. За время порядка 1 мс после замыкания ключа его контакты входят в соприкосновение друг с другом обычно от 10 до 100 раз. Вы получите в итоге форму сигналов, указанную на рисунке; если бы выход подключался к счетчику или регистру сдвига, то они наверняка отреагировали бы на каждый дополнительный импульс, вызванный этим дребезгом контактов.
На рис. 8.49 показано, как разрешить эту проблему.
Рис. 8.49. Схема подавления дребезга.
При первом же соприкосновении контактов триггер изменит свое состояние и в дальнейшем уже не будет реагировать на последующий дребезг, поскольку двухпозиционный однополюсный ключ не может совершать колебания до противоположной позиции. В результате дребезг выходного сигнала будет отсутствовать, как и показано на диаграмме. Такая схема подавления дребезга широко используется; так, микросхема `279 имеет четыре SR-триггера в одном корпусе. К сожалению, такая схема имеет небольшой недостаток. Дело в том, что первый импульс, возникающий на выходе вентиля после того, как он откроется, может оказаться укороченным: это можно определить по моменту, замыкания ключа по отношению к входной серии импульсов. То же самое относится и к конечному импульсу последовательности (разумеется, что и ключи без подавления дребезга имеют те же проблемы). В тех случаях, когда этот нежелательный эффект может оказать какое-то значение, применяется схема синхронизатора, которая позволяет его устранить.
Многовходовые триггеры. На рис. 8.50 показана еще одна простая схема триггера. В ней использованы вентили ИЛИ-НЕ: высокий уровень на входе устанавливает соответствующий выход триггера в состояние низкого уровня. Устанавливать или сбрасывать триггер различными сигналами можно благодаря наличию нескольких входов. На этом схемном фрагменте нагрузочные резисторы не используются, поскольку входные сигналы формируются где-нибудь в другом месте (с помощью стандартных выходов с активной нагрузкой).
Рис. 8.50.
8.17. Тактируемые триггеры
Триггеры, выполненные на двух вентилях, как показано на рис. 8.47 и 8.50, обычно называют RS (от английских слов: set — «установка» и reset — «сброс»), или асинхронными триггерами. Посредством подачи соответствующего входного сигнала они могут быть установлены в то или иное состояние. RS-триггеры удобно использовать в схемах защиты от дребезга, а также во многих других случаях, однако более широкое применение получили триггеры, схема которых несколько отличается от рассмотренной. Вместо пары асинхронных входов они имеют один или два информационных входа и один тактирующий вход. В момент подачи тактирующего импульса выходное состояние триггера либо изменяется, либо остается прежним, в зависимости от того, какие сигналы действуют по информационным входам.
Простейшая схема тактируемого триггера приведена на рис. 8.51.
Рис. 8.51. Синхронизированный триггер.
От рассмотренной выше схемы она отличается наличием двух вентилей («SET» и «RESET»). Легко проверить, что таблица истинности для этого триггера будет иметь вид
где Qn + 1 — состояние выхода Q после подачи (n + 1)-го тактового импульса, а Qn — до его поступления. Главное отличие этой схемы от предыдущей состоит в том, что входы S и R в этом случае должны рассматриваться как информационные и сигналы, присутствующие на этих входах в момент поступления тактового импульса, и определяют, что произойдет с выходом Q.
У этого триггера есть один недостаток. Дело в том, что изменение выходного состояния в соответствии со входными сигналами может происходить в течение всего отрезка времени, на котором тактовый импульс имеет высокий уровень. В этом смысле он еще подобен асинхронному RS-триггеру. Эта схема известна также под названием «прозрачный фиксатор», потому что выход «насквозь просматривает» вход в течение интервала действия тактового сигнала.
Всесторонние возможности триггерных схем раскроются после введения новых, нескольких отличных от рассмотренных конфигураций, которые представляют собой триггер типа «ведущий-ведомый» (двухступенчатый) и триггер, запускаемый по фронту.
Триггеры типа «ведущий-ведомый» и триггеры, запускаемые по фронту. Эти типы триггеров наиболее распространены. Информация, поступившая на входные линии этого триггера к моменту возникновения перехода или «фронта» тактового сигнала, определяет, каким будет состояние выхода в последующий интервал времени. Такие триггеры выпускаются в виде недорогих ИМС и всегда используются в этом виде, но для того чтобы понять, как они работают, имеет смысл рассмотреть их внутреннюю структуру. На рис. 8.52 показаны принципиальные схемы так называемых D-триггеров.
Рис. 8.52. D-триггеры с пуском по фронту.
Информация, поступившая на D-вход, передается на выход Q после подачи тактового импульса. Рассмотрим принципы действия триггера типа ведущий-ведомый (рис. 8.52, a). Если тактовый сигнал имеет высокий уровень, разрешается работа вентилей 1 и 2, через которые ведущий триггер (вентили 3 и 4) устанавливается в состояние, соответствующее D-входу: Μ = D, Μ' = D'. Вентили 5 и 6 закрыты, поэтому ведомый триггер (вентили 7 и 8) сохраняет свое предыдущее состояние. Когда тактовый сигнал перейдет в состояние низкого уровня, входы ведущего триггера отключатся от D-входа, а входы ведомого подключатся к входу ведущего, в результате последний передаст свое состояние ведомому триггеру.
После этого никакие изменения на выходе произойти не смогут, так как ведущий триггер заблокирован. С приходом следующего тактового сигнала ведомый триггер отключится от ведущего, а ведущий воспримет новое состояние входа. С точки зрения внешних сигналов триггер, срабатывающий по фронту, ведет себя точно также, однако внутри он работает по-другому. Принцип его действия нетрудно разобрать самостоятельно. Схема, показанная на рис. 8.52, б, представляет собой распространенный D-триггер 74 семейства ТТЛ, срабатывающий на положительном перепаде. В рассмотренном ранее триггере типа «ведущий-ведомый» данные на выход передавались по отрицательному перепаду тактового импульса.
В номенклатуру стандартных ИМС, выпускаемых промышленностью, входят триггеры, срабатывающие как по одной, так и по другой полярности перепада. Кроме того, большинство триггеров имеют также асинхронные входы S и R. Они могут устанавливаться или сбрасываться как высоким, так и низким уровнем в зависимости от типа триггера. На рис. 8.53 показано несколько популярных триггеров.
Рис. 8.53. D- и JK-триггеры.
Стрелка обозначает динамический вход (срабатывание по фронту), а кружок — инверсию. Таким образом, изображенная на рисунке схема 74 представляет собой сдвоенный D-триггер, который срабатывает по положительному перепаду и имеет асинхронные входы S и R, активные по низкому уровню. Схема 4013 представляет собой сдвоенный D-триггер семейства КМОП, срабатывающий по положительному перепаду и имеющий асинхронные входы S и R, активные по высокому уровню. Интегральная схема 112 — это сдвоенный JК-триггер типа ведущий-ведомый, срабатывающий по отрицательному перепаду и имеющий асинхронные входы S и R, активные по низкому уровню.
JK-триггер. По принципу действия JK-триггер аналогичен D-триггеру, но имеет два информационных входа. Его таблица истинности имеет вид:
Если на входы поступают противоположные сигналы, то на очередном фронте тактового импульса выход Q воспроизводит значение J-входа. Если оба входа J и К имеют низкий уровень, то состояние выхода не изменится. И наконец, если на обоих входах высокий уровень, триггер будет совершать «переброс» (менять свое состояние на каждом тактовом импульсе), т. е. работать в счетном режиме).
Предупреждение. Некоторые старые типы JK-триггеров представляют собой «ловушку для единиц». Этот термин вы не найдете ни в одной документации, он означает явление, которое может привести неосведомленного человека к весьма неприятным последствиям. Дело в том, что если на интервале, когда ведомый триггер открыт тактовым сигналом, вход J и К (или оба одновременно) на какой-то момент изменит свое состояние, а затем до окончания тактового сигнала вернется в исходное, то это кратковременное состояние триггер запомнит и в дальнейшем он будет вести себя так, как если бы это состояние сохранилось. В результате триггер может переброситься на следующем тактовом перепаде, даже если сигналы, действующие в момент этого перепада на входах J и К подтверждают предыдущее состояние. Это может привести, мягко говоря, к своеобразному поведению. Проблема возникает из-за того, что эти триггеры были сконструированы в предположении, что тактовый импульс имеет очень короткую длительность, в то время как в действительности тактирование всегда производится сигналом конечной длительности. Если используется триггер типа «ведущий-ведомый», следует соблюдать меры предосторожности, либо вообще избегать их, применяя более надежные триггеры, работающие по фронту. Две хорошие альтернативы, которые используют истинно запуск по фронту, это приборы `112 и `109. Оба представляют собой сдвоенные (два в одном корпусе) JK-триггеры с асинхронными S- и R-входами, активными по низкому уровню. Устройство `112 срабатывает по отрицательному фронту тактового сигнала, а устройство `109 — по положительному.
Схема `109 имеет интересную особенность, а именно, K-вход у него инверсный, поэтому иногда его называют JK-триггер с запретом. Таким образом, если вы соедините входы J и К вместе, то получите D-триггер. Для перевода его в счетный режим вы заземляете вход К', а на входе J устанавливаете ВЫСОКИЙ уровень.
Делитель на 2. Легко построить схему делителя на 2, используя способность триггеров работать в счетном режиме. На рис. 8.54 показаны два способа построения такого делителя. JK-триггер работает в счетном режиме, когда оба входа имеют ВЫСОКИЙ уровень, производя на выходе сигнал, показанный на рисунке. Вторая схема также будет совершать перебросы, так как ее D-вход подключен к собственному выходу Q и в момент поступления тактового импульса на D-входе всегда действует инверсия по отношению к текущему состоянию триггера. Частота сигнала на выходе в любом случае будет равна половине входной частоты.
Рис. 8.54. Схемы деления на 2.
Синхронизация информации и тактирование. В связи с последней схемой возникает интересный вопрос: не получится ли так, что триггер не сможет переброситься, так как состояние D-входа изменяется почти сразу же вслед за тактовым импульсом? Другими словами, не начнет ли схема сбиваться, если на ее входе происходят такие странные явления? Этот вопрос можно сформулировать и следующим образом: в какой точно момент по отношению к тактовому импульсу D-триггер (или какой-нибудь другой) анализирует состояние своего входа? Ответ такой: для любого тактируемого устройства существует определенное «время установления» tуст и «время удержания» tуд. Для того чтобы схема работала правильно, информация должна поступать на вход не позднее чем за время tуст до возникновения тактового перепада и оставаться неизменной по крайней мере в течение времени tуд после него. Например, для триггера 74НС74, tуст = 20 нc и tуд = 3 нc (рис. 8.55).
Рис. 8.55. Время установления данных и время удержания.
В рассмотренной схеме счетного триггера требование к времени установления будет сохраняться неизменным в течение как минимум 20 нc, предшествующих очередному тактовому перепаду. Может показаться, что при этом нарушается требование к времени удержания, но это не так. Минимальное время распространения сигнала с тактового входа на выход составляет 10 нc, и D-триггер, включенный в счетном режиме, будет иметь неизменное состояние D-входа в течение по меньшей мере 10 нc. Большинство современных устройств вообще не представляют требований ко времени удержания (имеют tуд = 0). Если сигнал на D-входе изменяется на интервале времени удержания, то может возникнуть любопытный эффект, носящий название «метастабильное состояние», при котором триггер не может определить, в какое состояние он должен перейти. Об этом явлении мы вскоре еще упомянем.
Деление на число, большее чем 2. С помощью каскадного соединения счетных триггеров (выход Q каждого предыдущего триггера подключен к тактическому входу последующего) легко получить «делитель на 2n», или двоичный счетчик. На рис. 8.56 показана схема четырехразрядного асинхронного счетчика и даны его временные диаграммы.
Рис. 8.56. 4-разрядный счетчик.
Заметим здесь, что если выход Q каждого триггера непосредственно действует на тактовый вход следующего, срабатывание триггеров должно происходить по спаду (заднему фронту) сигнала на тактовом входе (показано кружком инверсии). Эта схема представляет собой счетчик-делитель на 16: на выходе последнего триггера формируются прямоугольные импульсы, следующие с частотой, равной 1/16 частоты входного тактового сигнала. Схема называется счетчиком, поскольку информация, присутствующая на четырех входах Q, может рассматриваться как 4-разрядное двоичное число, которое изменяется от 0 до 15, увеличиваясь на единицу с каждым входным импульсом. Этот факт отражает временная диаграмма на рис. 8.56, б, на которой СЗР означает «старший значащий разряд», МЗР-«младший значащий разряд», а изогнутые стрелки, облегчающие понимание, указывают, какими перепадами вызываются изменения сигналов. Этот счетчик, как вы увидите в разд. 8.25, выполняет настолько важную функцию, что выпускается в виде большого числа модификаций, выполненных в виде однокристальных микросхем, включая такие форматы счета, как 4-разрядный, двоично-десятичный и многоцифровой. Соединяя эти счетчики каскадно и воспроизводя их содержимое с помощью цифрового индикатора (например, светодиодного) можно легко построить схему подсчета каких-либо событий. Если разрешить прохождение импульсов на вход счетчика в течение ровно 1 с, то получится счетчик частоты, который будет воспроизводить значение частоты путем подсчета числа периодов в секунду. В разд. 15.10 приводятся схемы этого простого, но очень полезного устройства. Промышленностью выпускаются однокристальные счетчики частоты, в состав которых входят дополнительно генератор, схемы управления и вывода на индикацию. Триггер такого устройства показан на рис. 8.71.
На практике простейшая схема каскадирования счетчиков посредством соединения каждого выхода Q со следующим тактовым входом имеет некоторые интересные проблемы, связанные с покаскадной задержкой распространения сигнала по цепочке триггеров. По этой причине лучше использовать схему, в которой один и тот же тактовый сигнал подается одновременно на все входы. В следующем разделе мы будем рассматривать эти синхронные тактируемые системы.
8.18. Последовательностная логика — объединение памяти и вентилей
После того как мы изучили свойства триггеров, посмотрим, что можно получить, если объединить их с рассмотренной ранее комбинационной (вентильной) логикой. Составленные из вентилей и триггеров схемы, представляют собой наиболее общую форму цифровой логики.
Синхронные тактируемые системы. Мы уже упомянули в предыдущем разделе, что последовательностные логические схемы, в которых для управления всеми триггерами используется общий источник тактовых импульсов, имеют ряд преимуществ. В таких синхронных системах все действия происходят сразу же после возникновения тактового импульса и определяются тем состоянием, которое имеет место непосредственно перед его возникновением. Общая структура подобной системы показана на рис. 8.57.
Рис. 8.57. Классическая последовательностная схема: регистры памяти и комбинационная логика. Эту схему можно легко реализовать с использованием однокристальных регистровых ПМЛ (см. разд. 8.27).
Все триггеры объединены в один общий регистр, представляющий собой не что иное, как набор D-триггеров, у которых тактовые входы соединены вместе, а индивидуальные D-входы и выходы Q выведены вовне. Каждый тактовый импульс вызывает передачу уровней, присутствующих на D-входах, на соответствующие выходы Q. Блок, состоящий из вентилей, анализирует состояние выходов регистра и внешних входов, вырабатывает новую комбинацию сигнала для D-входов регистра и выходные логические уровни.
Эта с виду простая схема обладает очень большими возможностями. Рассмотрим пример.
Пример: деление на 3. Попробуем построить схему синхронного делителя на 3 с помощью двух D-триггеров, тактируемых входным сигналом. В этом случае D1 и D2 будут входами регистра, Q1 и Q2 — eгo выходами, общая тактовая линия будет представлять главный тактовый вход (рис. 8.58).
Рис. 8.58.
1. Выберем три состояния:
Q1 Q2
______
0 0
0 1
1 0
0 0 (т. е. первое состояние)
2. Определим, что должно быть на выходах комбинационной схемы, для того чтобы получить последовательность этих состояний, т. е. что должно поступать на D-входы, для того чтобы получить требуемые состояния на выходах:
3. Построим вентильную схему, которая, с помощью имеющихся выходов, позволяла бы получить требуемые состояния на выходах. В общем случае можно использовать карту Карно, но для данного простого примера можно сразу увидеть, что D1 = Q2, D2 = (Q1 + Q2)'. Этому соответствует схема на рис. 8.59.
Рис. 8.59. Схема деления на 3.
Легко проверить, что эта схема работает так, как и было задумано. Так как она является синхронной, или тактируемой, сигналы на обоих выходах изменяются одновременно (если же выход первого триггера непосредственно подключить к тактовому входу второго, то получится асинхронный счетчик). В общем случае предпочитают использовать синхронные (или тактируемые) системы, так как они имеют более высокую помехоустойчивость. Это обусловлено тем, что к моменту возникновения тактового импульса триггеры находятся в установившемся состоянии, а на схемы, в которых входные сигналы анализируются только по фронтам тактовых импульсов, не действуют помехи, возникающие за счет емкостных связей от других триггеров или по каким-либо другим причинам. Еще одно преимущество состоит в том, что в тактируемых системах переходные состояния (вызванные задержками, в результате чего выходные сигналы изменяются не одновременно) не вызывают на выходах ложных сигналов, поскольку система не воспринимает никаких изменений, которые происходят после возникновения импульса. Далее мы проиллюстрируем это на ряде примеров.
Запрещенные состояния. Что произойдет со схемой деления на 3, если ее триггеры каким-то образом окажутся в состоянии (Q1, Q2) = (1, 1)? Это может произойти при включении питания, так как начальное состояние триггеров предсказать невозможно. Из схемы видно, что первый тактовый импульс переведет ее в состояние (1, 0) и далее она будет функционировать как положено. В таких случаях важно производить проверку запрещенных состояний, поскольку схема может случайно оказаться в одном из них. (С другой стороны, все возможные состояния системы можно определить на начальном этапе разработки.) Диаграмма состояний, показанная для данного примера на рис. 8.60, может оказаться полезным диагностическим инструментом. Если в системе используются и другие переменные, то обычно для каждого перехода рядом со стрелкой записываются условия. Стрелки могут идти в обоих направлениях, а также из одного состояния к нескольким другим.
Рис. 8.60. Диаграмма состояний схемы деления на 3.
Упражнение 8.24. Постройте синхронную схему деления на 3 с помощью двух JK-триггеров. Это можно выполнить (16 различными способами) без использования вентилей или инверторов. Когда вы будете составлять таблицу требуемых значений для входов J1, K1 и J2, К2, не забудьте, что для каждой точки J, К существуют две возможности. Например, если выход триггера переходит из 0 в 1, то J, К = 1, X (где Х — любое значение). Наконец, проверьте, не будет ли схема застревать в запрещенном состоянии (это наблюдается в четырех из 16 возможных решений этой задачи).
Упражнение 8.25. Постройте синхронный 2-разрядный реверсивный счетчик: он имеет тактовый вход и вход управления (U/D'); выходы являются выходами триггеров Q1 и Q2. Если вход U/D имеет ВЫСОКИЙ уровень, то он работает как обычный двоичный счетчик, а если НИЗКИЙ, то он считает в обратном направлении — Q2Q1 = 00, 11, 10, 01, 00…
Диаграмма состояний как инструмент проектирования. Диаграмма состояний может оказаться полезной при разработке последовательной логики, особенно в тех случаях, когда переходы из одного состояния в другое могут происходить различным путем. Создавая такую схему, нужно сначала выбрать совокупность единственных состояний системы и каждому из них присвоить собственное имя (т. е. двоичный адрес). Здесь потребуется не менее n триггеров, где n — наименьшее целое, для которого 2n больше или равно числу различных состояний системы. Далее устанавливают правила переходов из одного состояния в другое, т. е. все возможные условия для входа в каждое состояние и выхода из него. Таким образом, задача построения последовательной логики свелась к задаче построения комбинационной логики, которую всегда можно решить с помощью известных методов, например карты Карно. Реальный пример показан на рис. 8.61. Заметим, что здесь могут иметь место состояния, из которых нет перехода к другим состояниям (например, «получение диплома»).
Рис. 8.61. Диаграмма состояний.
Регистровые ПЛМ. Программируемые логические ИС (ПМЛ и ПЛМ, смотрите разд. 8.15) выпускаются как с вентилями, так и с синхронно тактируемыми D-триггерами на одном кристалле. Они известны как регистровые ПМЛ и ПЛМ и являются идеальными для построения последовательностных схем. Вы узнаете, как это делать в разд. 8.27.
8.19. Синхронизатор
Интересно использование триггеров в последовательных схемах в качестве синхронизаторов. Предположим, что в синхронную тактированную систему с триггерами поступает внешний управляющий сигнал и вы хотите использовать состояния этого сигнала для управления некоторым действием. Например, сигнал от измерительного прибора или экспериментальной установки может указывать, что данные готовы для передачи в ЭВМ. Так как экспериментальная установка и ЭВМ работают совершенно независимо друг от друга, т. е. асинхронно, необходимо иметь метод, который позволил бы установить порядок в работе двух систем.
Пример: синхронизатор импульсов. Еще раз рассмотрим в качестве примера схему, в которой триггер подавителя дребезга разрешает прохождение последовательности импульсов (разд. 8.16). Эта схема открывает вентиль всякий раз, когда ключ замкнут, независимо от фазы, подаваемой на него импульсной последовательности, в результате первый или последний импульс могут оказаться укороченными. Задача состоит в том, что замыкание ключа происходит асинхронно с последовательностью импульсов. В некоторых случаях важно, чтобы все тактовые импульсы имели только полные периоды, и тогда нужно использовать схему синхронизации, подобную представленной на рис. 8.62.
Рис. 8.62. Синхронизатор импульсной последовательности.
При нажатии кнопки «пуск» на выходе вентиля 1 возникает ВЫСОКИЙ уровень, но до появления заднего фронта очередного импульса на выходе Q триггера сохранится НИЗКИЙ уровень. В результате на выход вентиля 3 И-НЕ будут проходить только полные импульсы. На рис. 8.62 показаны временные диаграммы. Кривые со стрелками показывают, какие действия вызываются соответствующими перепадами. Как видно из диаграммы, изменения Q происходят сразу по заднему фронту входного сигнала.
Логические состязания и «всплески». Рассмотренный пример позволяет осветить тонкий, но предельно важный вопрос: что же произойдет, если для переброса триггера будет использоваться положительный перепад? Если вы тщательно проанализируете этот случай, то увидите, что с ПУСКОМ схемы все будет в полном порядке, но если кнопку СТОП нажать в тот момент, когда на входе действует НИЗКИЙ уровень, произойдет весьма неприятная вещь (рис. 8.63).
Рис. 8.63. Логические состязания могут вызвать появление коротких импульсов.
Так как последний (3) вентиль И-НЕ будет открыт до тех пор, пока на выходе триггера не установится НИЗКИЙ уровень (задержка для НС или LSTTЛ составляет приблизительно 20 нс), на выходе схемы возникает короткий «выброс» или «всплеск» (глитч). Это — классический пример «логического состязания». Принимая определенные меры предосторожности, подобных ситуаций можно избежать, что и показывает рассмотренный пример. «Всплески» — это страшная вещь, если они заведутся в ваших схемах. Кроме всего прочего, их невозможно увидеть на осциллографе и вы можете просто не узнать об их существовании. «Всплески» могут самым произвольным образом тактировать цепочки триггеров, они могут расширяться или сужаться до полного исчезновения, проходя через вентили и инверторы.
Упражнение 8.26. Покажите, что рассмотренная схема синхронизатора импульсов (рис. 8.62) не вырабатывает «всплески».
Упражнение 8.27. Спроектируйте схему, которая позволяет пропускать один полный отрицательный импульс (из входной последовательности импульсов) на выход после нажатия кнопки.
Несколько замечаний по поводу синхронизаторов: На D-вход триггера сигнал может поступать не только от ключа с подавителем дребезга, но также и от других логических схем. В средствах сопряжения с ЭВМ и других применениях часто бывает нужно передавать асинхронный сигнал в тактируемое устройство. Идеальным решением в этих случаях является использование тактируемых триггеров или синхронизаторов. В рассмотренной схеме, так же как и во всех других логических схемах, необходимо соответствующим образом подключить неиспользованные входы. В данном случае входы S и R нужно подключить так, чтобы они не влияли на работу схемы (для 74 соединить с ВЫСОКИМ уровнем, а для 4013 заземлить), Неиспользуемые входы, не влияющие на выход (например, входы незадействованных вентилей), можно оставлять неподключенными. Это не относится к элементам КМОП, у которых они должны заземляться, чтобы не появился ток в выходном каскаде (более подробно см. гл. 9). Промышленностью выпускается сдвоенный синхронизатор 74120, однако широкого распространения он не получил.
Моностабильные мультивибраторы
Моностабильный мультивибратор, или одновибратор, является разновидностью триггера (триггер иногда называют бистабильным мультивибратором), в котором выход одного из вентилей имеет емкостную связь со входом другого вентиля, в результате этого схема всегда возвращается в одно состояние. Если с помощью кратковременного входного импульса схему принудительно установить в другое состояние, то она вернется в исходное с задержкой, которая будет определяться величиной емкости и параметрами схемы (входным током и т. п.). Эта схема широко используется для формирования импульсов заданной длительности и полярности. Построение одновибраторов на вентилях и RС-элементах представляет собой довольно сложную задачу. Здесь надо учитывать конкретное выполнение входных вентильных схем, так как напряжение на емкости в одновибраторе может превышать напряжение питания. Чтобы не развивать у читателя дурных привычек, мы не будем давать примеры подобных схем и рассмотрим одновибратор, который выпускается в виде стандартного функционального блока. В реальных устройствах лучше всего использовать одновибраторы в интегральном использовании, создавать же схемы собственной конструкции имеет смысл лишь в случае крайней необходимости, например если на плате имеется свободный вентиль и нет ни одного места для дополнительной микросхемы. Однако, возможно, что это не имеет смысла даже в таком случае.
8.20. Характеристики одновибраторов
Входы. Одновибраторы срабатывают по положительному или отрицательному перепаду, который подан на соответствующие входы. Единственное требование к сигналу запуска состоит в том, что он должен обладать некоторой минимальной длительностью — обычно от 25 до 100 с. При этом он может быть как короче, так и длиннее выходного импульса. Обычно в схеме предусматривается несколько входов; это позволяет использовать для запуска схемы одновибратора несколько сигналов: один по отрицательному перепаду, другие по положительному (напомним, что отрицательный перепад означает переход с ВЫСОКОГО уровня на НИЗКИЙ, а не отрицательную полярность). Дополнительные входы могут также использоваться для запрета запуска. Четыре примера одновибраторных схем показаны на рис. 8.64.
Рис. 8.64. Четыре наиболее распространенных одновибратора и их таблицы истинности.
Стрелками в строках таблиц показаны направления перепадов на входах, при которых происходит запуск. Например, `121 запускается, когда на одном из входов А происходит перепад с ВЫСОКОГО уровня на НИЗКИЙ, при условии что на входе В и на другом входе А действует ВЫСОКИЙ уровень. Схема 4538 представляет собой сдвоенный одновибратор с вентилем ИЛИ на входе. Если используется только один вход, то другой должен быть заблокирован, как показано в таблице. Одновибратор `121 имеет три входа, которые связаны с комбинацией вентилей И и ИЛИ. На входе В установлен триггер Шмитта, что позволяет снизить требования к скорости нарастания входного сигнала и к уровню помех. В состав одновибратора входит также не слишком хороший внутренний времязадающий резистор, который вы можете использовать, если у вас нет желания подключать внешний резистор R. Схема `221 представляет собой сдвоенный вариант схемы `121. Пользователи КМОП-версий могут иметь только сдвоенные варианты схем. Популярная ИС `123 представляет собой сдвоенный одновибратор с вентилем И на входе; на неиспользуемые входы должны подаваться разрешающие сигналы. Заметим, в частности, что он срабатывает и по спаду сигнала на R-входе, если в этот момент на оба входа запуска поданы соответствующие сигналы. Это свойство не является для одновибраторов универсальным и может требоваться или не требоваться, в зависимости от конкретного использования (чаще всего оно не требуется). Схема `423 является той же самой схемой, что и `123, но без этой «особенности». На принципиальных схемах при изображении одновибраторов входной вентиль обычно не показывается. Это позволяет сэкономить место, но создает некоторую путаницу.
Перезапуск. Большинство одновибраторов, например упомянутые ранее `4538, `123 и `423, будут начинать новый цикл отсчета временного интервала, если за время действия выходного импульса на вход поступит новый запускающий импульс. Такие устройства называют одновибратором с перезапуском. Выходной импульс одновибратора будет шире, чем обычно, если перезапуск схемы происходит во время действия выходного импульса и заканчивается по истечении интервала номинальной длительности с момента поступления последнего запускающего сигнала. Одновибраторы `121 и `221 не имеют перезапуска; во время действия выходного импульса они не воспринимают перепады на входе. Большинство перезапускаемых одновибраторов можно включить таким образом, чтобы они не перезапускались. Простой пример подобной схемы показан на рис. 8.65.
Рис. 8.65. Схемы одновибраторов без перезапуска.
Сброс. Большая часть одновибраторов имеет вход сброса, который отменяет все остальные функции. Кратковременный сигнал по входу R обрывает выходной импульс. Этот вход может использоваться для предотвращения выработки выходного импульса в момент включения питания логической системы; однако учтите сделанные выше замечания по схеме `123.
Длительность импульса. С помощью стандартных одновибраторов можно получать импульсы длительностью от 40 нc до нескольких миллисекунд (и даже секунд) за счет подключения внешнего конденсатора, обычно в сочетании с резистором. С помощью устройства, подобного ИС555 (см. разд. 5.14) можно формировать импульсы и большей длительности, но его входные характеристики зачастую создают неудобства. Интервалы времени очень большой длительности лучше всего отсчитывать цифровым способом (см. разд. 8.23). В табл. 8.8 в конце главы приведены данные на большинство применяемых одновибраторов.
8.21. Пример схемы одновибратора
На рис. 8.66 показана схема генератора прямоугольных импульсов с независимой регулировкой частоты и скважности; схема позволяет с помощью внешнего сигнала закрывать выход по отрицательному перепаду выходного импульса.
Рис. 8.66. Самосинхронизирующийся генератор импульсов с внешним запуском.
Токовое зеркало T1—Т3 формирует на С1 нарастающее напряжение. Когда это напряжение достигает порога верхнего компаратора, равного 2/3 U+, запускается одно — вибратор, который вырабатывает положительный импульс длительностью 2 мкс и устанавливает n-канальный ПТ Т4 в проводящее состояние и разряжает конденсатор. Таким образом, на С1 формируется пилообразный сигнал, нарастающий до значения +8 со скоростью, которая задается потенциометром R2. Нижний компаратор из пилообразных импульсов вырабатывает прямоугольные импульсы со скважностью, которую с помощью потенциометра R5 можно линейно регулировать в пределах от 0,1 до 99 %. Оба компаратора имеют гистерезис порядка нескольких милливольт (R8 и R9), наличие которого позволяет предотвратить многократные переходы, возникающие под действием помех. В схеме применен сдвоенный компаратор типа LH393 с малым потреблением, который имеет на выходах схемы с открытым коллектором и диапазон синфазного сигнала на входе от нуля до напряжения питания.
Отличительное свойство этой схемы — ее способность синхронизироваться (работать в старт-стопном режиме) по внешнему управляющему сигналу. При наличии сигнала на входе ОСТАНОВ схема останавливает свой генератор по очередному отрицательному перепаду на выходе. Когда на входе ОСТАНОВ сигнал снова перейдет в состояние НИЗКОГО уровня, генератор сразу же начинает формировать полные периоды: как если бы задний фронт возник в момент снятия сигнала ОСТАНОВ. Дополнительный 3-й вход схемы И-НЕ, который соединен с выходом компаратора, служит для того, чтобы схема не «застревала» при заряженной емкости С1. Длительность импульса на выходе одновибратора выбирается достаточно большой, чтобы за это время С1 мог полностью разрядиться.
8.22. Предостережения относительно одновибраторов
С одновибраторами связан целый ряд проблем, которые не встречаются в других цифровых схемах. Кроме того, существуют некоторые общие принципы, которыми необходимо руководствоваться при их использовании. Остановимся сначала на «патологии» одновибраторов.
Проблемы применения одновибраторов.
Длительность импульса. Для построения одновибраторов используется сочетание линейных и цифровых методов. Так как линейные схемы чувствительны к изменениям Uбэ и h21э от температуры и т. п., одновибраторы также реагируют на изменения температуры и напряжения питания дрейфом длительности выходного импульса. В типовых устройствах, например 4538, длительность выходного импульса колеблется в пределах нескольких процентов при изменении температуры в интервале 0-50 °C и при отклонениях напряжения питания +5 %. Кроме того, разброс параметров от устройства к устройству для ИМС данного типа составляет +10 %. При рассмотрении чувствительности к изменениям температуры и напряжения питания важно помнить, что кристалл (чип) микросхемы может обладать эффектом саморазогрева, а изменение напряжения питания во время действия выходного импульса (например, короткие «всплески» по шине питания) может существенно повлиять на его длительность (или вызвать ложный запуск).
Длинные импульсы. При формировании длинных импульсов емкость конденсатора может превышать несколько микрофарад, что приводит к необходимости использовать электролитические конденсаторы. В этом случае возникает проблема тока утечки (величина которого для конденсаторов малой емкости незначительна), особенно если учесть, что в большинстве одновибраторов во время действия выходного импульса к конденсатору прикладывается напряжение обоих полярностей. Для разрешения этой проблемы можно установить диод или транзистор, либо перейти на цифровые методы формирования задержек с использованием тактовых импульсов и триггерных каскадов, как показано в разд. 8.23. Использование внешнего диода или транзистора повышает чувствительность к температуре и снижает точность задания длительности импульса. Это может также затруднить перезапуск.
Скважность. В некоторых схемах одновибраторов длительность выходного импульса при высокой скважности уменьшается. Типичным примером являются элементы серии ТТЛ 9600–9602, у которых при скважности 60 % длительность выходного импульса постоянна, а при скважности 100 % уменьшается приблизительно на 5 %. Устройство `121 (прекрасное в других отношениях) в этом отношении еще хуже, так как при высокой скважности вообще ведет себя не устойчиво.
Запуск. Если для сигнала одновибраторов используются слишком короткие сигналы, то они могут вырабатывать на входе нестандартные, или «дрожащие», импульсы. Для запускающего импульса задается минимальная длительность, например, для прибора LS `121 она составляет 50 нc, а для 4098 - 140 нс при напряжении питания +5 В и 40 нс при питании +15 В (при повышенном напряжении питания элементы КМОП имеют более высокое быстродействие и повышенную нагрузочную способность).
Помехоустойчивость. Так как в состав одновибраторов входят линейные элементы, их помехоустойчивость обычно хуже, чем у других цифровых схем. Одновибраторы очень чувствительны к емкостным связям вблизи внешних времязадающих элементов R и С. Кроме того, некоторые одновибраторы склонны к ложному запуску от «всплесков» на шине земли или U+.
Паспортные данные. Не забывайте, что характеристики одновибратора (точность выдержки, времени, нестабильность по температуре и напряжению питания) могут значительно ухудшаться на краях рабочего диапазона. В паспортных данных на устройство обычно задается диапазон длительностей выходного импульса, в котором оно имеет хорошие характеристики, и это может ввести в заблуждение. Кроме того, могут наблюдаться различия в тех же самых номерах изделий, когда они выпускаются различными изготовителями. Читайте паспортные данные тщательно!
Развязка по выходу. Вообще, в любом цифровом устройстве, содержащем триггеры, выходы должны быть буферированы (с помощью вентиля, инвертора, возможно, интерфейсной схемы типа линейного формирователя — возбудителя или драйвера) до того, как они поступят на кабель или внешний прибор. Если устройство типа одновибратора подключается к кабелю непосредственно, то его работа может стать неустойчивой за счет влияния нагрузочной емкости и отражения сигналов в кабеле.
Общие соображения по применению одновибраторов. При использовании одновибраторов для формирования импульсной последовательности убедитесь в том, что на «концах» не будут вырабатываться дополнительные импульсы, т. е. что сигналы, разрешающие запуск одновибратора, сами не производят его запуск. Это легко сделать, если тщательно просмотреть таблицу истинности. Не увлекайтесь применением одновибраторов, хотя заманчиво ставить их везде, где только можно, и наблюдать, как импульсы от них разбегаются во все точки схемы.
Схемы, содержащие большое число одновибраторов, свидетельствуют о неопытности разработчика. Кроме указанных проблем существуют еще и дополнительные сложности, связанные с тем, что схема, насыщенная одновибраторами, не допускает существенной регулировки тактовой частоты, поскольку все выдержки времени в схеме настроены на определенный порядок возникновения событий. Если есть возможность выполнить те же функции без применения одновибраторов, ею надо воспользоваться. Пример такой схемы показан на рис. 8.67.
Рис. 8.67. Цифровая задержка (б) заменяет задержку на одновибраторах (а).
Предположим, что требуется сформировать по спаду входного сигнала импульс, а затем еще один, задержанный по отношению к первому. Эти импульсы могут использоваться для предварительной установки схемы и запуска операций, перед которыми требовалось выполнить некоторые предварительные действия, о завершении которых сообщает спад входного сигнала. Так как для управления остальной частью схемы скорее всего используются тактовые импульсы, будем предполагать, что сигнал на D-входе снимается синхронно с передним фронтом такта. В схеме на рис. 8.67, а входной перепад запускает первый одновибратор, который по концу своего выходного импульса запускает второй одновибратор.
В схеме на рис. 8.67, б то же самое делается при помощи D-триггеров, которые вырабатывают на выходе импульсы с длительностью, равной одному периоду тактовой частоты. В отличие от асинхронной схемы, в которой триггеры включаются каскадно, данная схема является синхронной. По ряду причин, в частности связанных с помехоустойчивостью, предпочтительнее применять синхронные системы. Если необходимо формировать импульсы большей длительности, можно использовать ту же самую схему, но взяв при этом другую тактовую частоту, которую можно получить путем деления основной (высокочастотной) тактовой последовательности с помощью цепочки счетных триггеров. В этом случае основной тактовый сигнал может использоваться для тактирования D-триггеров. Как правило, в синхронных системах имеется несколько серий тактовых импульсов, образованных в результате деления основной частоты.
8.23. Получение выдержки времени с помощью счетчиков
Как мы уже подчеркивали, существует целый ряд причин, по которым следует избегать применять одновибраторы в логических устройствах. На рис. 8.68 изображена еще одна схема, где триггер и счетчик заменяют одновибратор для формирования импульса большой длительности.
Рис. 8.68. Формирование длинных импульсов цифровым способом.
Интегральная схема 4060 представляет собой 14-разрядный двоичный счетчик (14 каскадно включенных триггеров) типа КМОП. Фронтом входного сигнала на выходе устанавливается высокий уровень, который разрешает работу счетчика. После отсчета 2n-1 импульсов на выходе Qn и возникает ВЫСОКИЙ уровень, в результате чего триггер и счетчик сбросятся. Данная схема позволяет с высокой точностью вырабатывать импульсы большой длительности, причем последняя может изменяться с коэффициентом 2. В состав счетчика 4060 входит также внутренний генератор, который заменяет внешний источник тактовых импульсов. Наш опыт говорит, что встроенный генератор имеет бедную частотную характеристику и может (даже в НС-версиях) плохо функционировать.
Вы можете использовать законченные интегральные схемы для задания временных интервалов с помощью счетчиков. Так, схемы фирмы Intersil ICM 7240/50/60 имеют встроенные 8-разрядный и двухдекадный счетчики и необходимую логику для формирования задержек, эквивалентных накопленному числу счета (1-255 или 1-99); устанавливать число Вы можете либо устанавливая перемычки, либо с помощью барабанных переключателей. Схема ICM7242 подобна им, но имеет счетчик с установленным жестко значением для деления на 128. Фирма Ехаr выпускает аналогичный прибор, именуемый XR2243, который имеет фиксированный счетчик-делитель на 1024.
Последовательные функции, реалзуемые на стандартных ИМС
Различные сочетания триггеров и вентилей, так же как и рассмотренные ранее комбинационные схемы, могут быть размещены на одном кристалле ИМС. В последующих разделах мы дадим обзор наиболее часто используемых типов ИМС в соответствии с выполняемыми функциями. Так же, как и в случае с небогатой комбинационной логикой, программируемые логические устройства (ПМЛ и GAL, в частности) создают притягательную альтернативу для использования жестких последовательных функций. Мы также об этом будем говорить после рассмотрения стандартных функций.
8.24. Фиксирующие схемы-защелки и регистры
Фиксирующие схемы-защелки и регистры позволяют запоминать комбинацию двоичных разрядов, которая подана на их входы, и хранить ее после изменения входных сигналов. Регистр можно построить с помощью набора D-триггеров, но в этом случае число входов и выходов у него будет больше, чем требуется обычно. Так как в данном применении нет необходимости использовать раздельно тактовые и установочные входы, эти цепи можно объединить для всех триггеров; это позволит сократить число выводов ИМС и даст возможность разместить в стандартном 20-контактном корпусе 8 триггеров. Так, например, популярная схема `574 представляет собой 8-разрядный D-регистр с фиксацией по положительному фронту и с выходами на три состояния; схема `273 подобна ей, но имеет возможность сброса вместо выходов на 3 состояния. На рис. 8.69 представлен 4-разрядный D-регистр с прямым и инверсными выходами.
Рис. 8.69. 4-разрядный D-триггер типа 74LS175
Термин «фиксатор» или «защелка» обычно служит для обозначения специального типа регистров, которые в открытом состоянии отслеживают на своих выходах входные сигналы, а в закрытом хранят их последнее значение. Так как термин «фиксатор» стал неоднозначным, часто для того, чтобы отличить друг от друга два очень сходных устройства, используют термины «прозрачный фиксатор» (собственно «защелка») и «регистр D-типа». Например, схема `573 представляет собой 8-разрядный «прозрачный фиксатор», эквивалентный `574 D-регистру.
Существуют некоторые вариации фиксаторов/регистров, такие как: а) запоминающие устройства с произвольной выборкой (ЗУПВ), которые позволяют вам как записывать, так и читать массив регистров (обычно большой), но только по раздельности. ЗУПВ имеют размеры от нескольких байт до 1 Мбайт и более и обычно используются в системах памяти микропроцессорных устройств (см. гл. 10 и 11); б) адресуемые защелки, устройства многоразрядной фиксации, которые позволяют осуществлять доступ к отдельным битам, не изменяя содержимого остальных; в) защелка или регистр, встраиваемые в большой кристалл, например цифро-аналоговый преобразователь; такое устройство необходимо, когда входные данные существуют не все время (в течение тактирующего фронта), поскольку внутренний регистр может хранить данные.
В табл. 8.9 в конце главы представлены данные большинства полезных регистров и защелок. Отметим такие особенности этих устройств, как: вход разрешения, сброс, выход на 3 состояния и «противоположное» расположение выводов (входы на одной стороне корпуса, а выходы - на другой). Последнее очень важно, когда вы используете для размещения печатную плату.
8.25. Счетчики
Как мы уже видели ранее, соединяя триггеры друг с другом, можно построить счетчик. Существует поразительное множество разнообразных устройств такого типа, выполненных в одном корпусе. Попытаемся выяснить некоторые их характерные особенности.
Объем или размер счетчика. Вы можете найти в популярной 4-разрядной серии как двоично-десятичные, так и двоичные (или шестнадцатеричные, делители на 16). Существуют счетчики и на большее число разрядов — до 24 (но не все доступны), а также счетчики «по модулю n», позволяющие производить деление на целое число n, которое задается с помощью входного слова. Для получения большего числа разрядов счетчики, в том числе и синхронные, можно соединять каскадно.
Тактирование. Среди выпускаемых промышленностью в виде стандартных ИМС счетчиков одни могут тактироваться положительным перепадом, а другие отрицательным. Более существенно, здесь то, является ли счетчик синхронным или асинхронным. В синхронных счетчиках тактирование всех триггеров происходит одновременно, а в асинхронных каждый последующий триггер тактируется выходом предыдущего. В асинхронных счетчиках имеют место переходные состояния, так как начальные триггерные ступени перебрасываются несколько раньше последующих: Например, при переходе от рис. 8.70.
Рис. 8.70. Сдвоенный двоично-десятичный счетчик со сквозным переносом типа 74LS390.
Сдвоенный двоично-десятичный счетчик со сквозным переносом типа 74LS390. числа 7 (0111) к числу 8 (1000) асинхронный счетчик пройдет через состояния 6, 4 и 0. Это может привести к ложной работе схемы, воспринимающей текущее состояние счетчика, если в ней не будут предусмотрены соответствующие меры. В таких случаях желательно использовать что-либо подобное D-триггеру, чтобы анализировать состояние счетчика только по тактовому перепаду. Асинхронные счетчики работают медленнее синхронных, так как они накапливают задержку распространения. Для облегчения наращивания (путем подключения выхода Q одного счетчика к тактовому входу последующего) асинхронные счетчики должны иметь вход, который работает по заднему фронту, синхронные счетчики тактируются положительным перепадом.
Мы рекомендуем семейство `160-`163 4-разрядных синхронных счетчиков для большинства применений, где не требуется специальных особенностей. Схемы 590 и 582 являются хорошими 8-разрядными синхронными счетчиками. На рис. 8.70 показан сдвоенный двоично-десятичный счетчик типа 390.
Суммирование/вычитание. Некоторые счетчики могут считать в обоих направлениях. Для этого существует две возможности: а) отдельный управляющий вход (+/—), который устанавливает направление счета и б) два раздельных счетных входа для прямого и обратного счета. Например, схемы `191 и `193 соответственно. Схемы `569 и `579 являются 8-разрядными счетчиками, считающими в обоих направлениях.
Предварительная установка и очистка. Большинство счетчиков имеют информационные входы, которые позволяют предварительно заносить в них заданное число. Это, в частности, может потребоваться для построения счетчика по модулю n.
Загрузка может быть как синхронной, так и асинхронной: в устройствах `160-`163 используется синхронная загрузка. Это означает, что ввод данных в счетчик производится по очередному перепаду тактового импульса при условии, что на линии ЗАГРУЗКА действует разрешающий сигнал. Счетчики `190-`193 являются асинхронными, или асинхронно загружаемыми; это значит, что информация вводится в счетчик при наличии разрешающего сигнала «ЗАГРУЗКА» независимо от состояния тактовой цепи. Иногда используется термин «параллельная загрузка», так как все биты загружаются одновременно.
Функция СБРОС (или УСТАНОВКА в «0») является формой предустановки. В большинстве счетчиков вход СБРОС — асинхронный, хотя в некоторых типах используется синхронный СБРОС (например, `162/163).
Прочие особенности счетчиков. В некоторых схемах на выходных линиях используются фиксаторы, которые всегда являются «прозрачными фиксаторами», и следовательно, счетчик может использоваться так, как если бы защелки не было (следует помнить, что любой счетчик с параллельными входами может работать как защелка, однако при этом нельзя одновременно производить счет и хранить информацию). Иногда очень удобно иметь счетчик в сочетании с фиксатором, например в том случае, когда после начала нового цикла счета необходимо воспроизвести или вывести предыдущее значение. В частотомере это позволяет получить устойчивую индикацию с корректировкой после каждого цикла отсчета и не воспроизводить на индикаторе все текущие состояния счетчика, сбрасывая его в нуль после окончания каждого цикла.
Имеются счетчики с выходами на 3 состояния. Они незаменимы для применений, где цифры (или 4-разрядные группы) мультиплексируются на одну шину для отображения или передачи в другое устройство. Например, устройство 779 представляет собой 8-разрядный синхронный двоичный счетчик с выходами на 3 состояния, которые могут работать как параллельные входы. Посредством объединения линий ввода/вывода счетчик размещается в 16-контактном корпусе. Устройство `593 подобно предыдущему, но выполнено в 20-контактном корпусе.
Если вы захотите использовать счетчик вместе с индикатором, то к вашим услугам несколько устройств, объединяющих в одном кристалле счетчик, регистр, 7-сегментный дешифратор и формирователь уровней для управления индикатором. Например, серия 4-разрядных счетчиков 74С925-74С928. Выпускается также схема TIL 306/7, представляющая собой счетчик и индикатор на одном кристалле. Стоит посмотреть на этот прибор, который считает и высвечивает отдельные цифры! На рис. 8.71 показана очень удачная БИС счетчика, которая не требует большого числа дополнительных компонентов.
Рис. 8.71. 8-знаковый универсальный однокристальный счетчик на 10 мГц типа Intersil 7216
(с разрешения фирмы Intersil Inc.)
В табл. 8.10 в конце главы представлены данные большинства счетчиков-кристаллов, которые вы можете использовать. Многие из них находятся только в одном семействе (например, LS или F), так что обязательно проверьте по справочнику перед проектированием.
8.26. Регистры сдвига
Если несколько триггеров соединить так, что выход Q каждого предыдущего триггера будет управлять D-входом последующего, а все тактовые входы будут возбуждаться одновременно, то получится схема, которую называют «регистр сдвига». По каждому тактовому импульсу комбинация «нулей» и «единиц» в регистре будет сдвигаться вправо, а слева через D-вход первого триггера будет вводиться новая информация. Как и во всех триггерных схемах, информация на левом входе, присутствующая непосредственно перед возникновением тактового импульса, будет введена в регистр, и на выходе будет обычная задержка распространения. Таким образом, регистры можно объединить каскадно, не ожидая возникновения режима логических гонок.
Регистры сдвига широко используются для преобразования данных из параллельной формы (n бит поступает одновременно по n независимым линиям) в последовательную (биты один за другим передаются по информационной линии) и наоборот. Они также применяются в качестве запоминающих устройств, особенно в тех случаях, когда данные считываются и записываются всегда одинаковым образом. Регистры сдвига, как и счетчик, и фиксаторы, представлены большим числом разнообразных модификаций. Все наиболее важные моменты, связанные с регистром сдвига, будут рассмотрены ниже.
Объем. 4-разрядные и 8-разрядные регистры являются стандартными. Выпускаются также регистры и с большим объемом (64 бита и больше). Существуют даже регистры с переменной длиной (например, схема 4557 может изменять свою длину от 1 до 64 бит с помощью 6-разрядного входа управления).
Организация. Обычно регистры сдвига являются одиночными, однако выпускаются также сдвоенные, счетверенные и сшестеренные регистры. Большинство регистров сдвига производят сдвиг только вправо, но существуют и регистры со сдвигом в обоих направлениях, такие как `194' и `323', которые имеют вход «направление» (рис. 8.72). Остерегайтесь хитростей типа «двунаправленности» у схемы `95': регистр может сдвигать влево только, если соединить предварительно каждый выход с предыдущим входом, затем произвести параллельную загрузку.
Рис. 8.72. 4-разрядный реверсивный регистр сдвига типа 74LS194.
Входы и выходы. Небольшие регистры сдвига могут производить параллельный ввод и вывод, и обычно это делают, например, схема `395' является 4-разрядным регистром сдвига с параллельным вводом и выводом (ΡΙ/ΡΟ) с выходом на 3 состояния. Большие регистры могут осуществлять только последовательный ввод и вывод, т. е. только ввод в первый триггер или вывод из последнего допускается. В некоторых случаях выводятся несколько промежуточных выходов. Единственный способ разместить как параллельный ввод, так и параллельный вывод в одном малом корпусе — это использовать одни и те же контакты в качестве входов и выходов. Так, например, схема `299 представляет собой 8-разрядный регистр параллельного ввода/вывода (ΡΙ/ΡΟ) в 20-контактном корпусе. Некоторые сдвиговые регистры включают защелки (фиксаторы) на входе или выходе, так что сдвиг может происходить пока данные загружаются или выгружаются. Так же как и у счетчиков, параллельная ЗАГРУЗКА и ОЧИСТКА могут быть либо синхронными, либо асинхронными, например схема `323 подобна схеме `299, но с синхронной очисткой.
В табл. 8.11 в конце главы приводится список сдвиговых регистров. Как всегда, не все типы регистров присутствуют во всех логических семействах, проверяйте по справочникам.
ОЗУ в качестве сдвиговых регистров. Запоминающее устройство с произвольной выборкой можно всегда использовать как сдвиговый регистр (но не наоборот), используя внешний счетчик для генерации последовательных адресов. Эта идея показана на рис. 8.73.
Рис. 8.73. Регистр сдвига большой длины на ОЗУ и счетчике; косая черточка указывает на кратность линий, в данном случае имеется 4-разрядный канал данных (а); временная диаграмма для определения максимальной частоты синхронизации при наихудшем распределении временных параметров (б); вычисления, показывающие наихудшее распределение задержек в одном такте синхронизации (в).
8-разрядный синхронный реверсивный счетчик вырабатывает последовательность адресов для КМОП ОЗУ с организацией 256x4 бит. Такая комбинация ведет себя подобно четырем 256-бит сдвиговым регистрам с направлением сдвига вправо/влево, выбираемым управляющей линией ВВЕРХ/ВНИЗ счетчика. Все остальные входы, как показано на рисунке, служат для разрешения счета. Выбирая быстрые счетчики и память, мы можем достигнуть максимальной скорости 30 МГц (см. временную диаграмму), которая такая же, как и у интегральных (не на много меньше) сдвиговых регистров НС-типа. Этот метод может быть использован для получения очень большого регистра сдвига, если требуется.
Упражнение 8.28. В схеме на рис. 8.73 кажется, что входные данные поступают в ту же ячейку, что и выходные данные при чтении. Тем не менее схема ведет себя подобно классическому сдвиговому регистру на 256 слов. Объясните, почему.
8.27. Последовательностные ПМЛ
Комбинационные (только на вентилях) ПМЛ, которые мы рассматривали выше в разд. 8.15, входят в большое семейство, которое включает устройства с различным числом регистров D-типа на кристалле (называемые «регистровые ПМЛ»). Типичный из этих ПМЛ-16R8-показан на рис. 8.74.
Рис. 8.74. Регистровая ПМЛ 16R8 имеет 8 внешних входов, 8 выходов, линии синхронизации и управления 3-м состоянием. Выходы регистра можно также использовать как входы матрицы И.
(с разрешения фирмы Advanced Micro Devices, Калифорния.)
Программируемая — И/фиксированная ИЛИ матрица типовых комбинационных ПМЛ генерирует входные уровни для 8 синхронно тактируемых регистра D-типа с выходами на 3 состояния; выходы регистра (прямой и инверсный) как и стандартные входные контакты доступны как входы логической матрицы.
Если вы посмотрите снова на рис. 8.57, вы увидите, что ПМЛ с регистрами — это элемент последовательностной схемы общего назначения с определенными ограничениями на число регистров и вентилей, и вы можете конструировать, что хотите, но только в этих пределах. Например, вы можете сделать сдвиговой регистр или счетчик, или сразу оба. На практике вы можете сделать некоторый кусок логики как часть большой схемы, для которой альтернативой является дискретная логика, построенная на вентилях и триггерах. Посмотрим некоторые примеры.
Карты перемычек, создаваемые вручную. Простые проекты могут конструироваться в ПМЛ посредством изображения логики, затем соответствующий образ преобразуется в массив перемычек для программатора ПМЛ. Так, например, предположим, что мы хотим получить 4-входовый мультиплексор с защелкиваемыми выходами. Мы можем записать логическое уравнение для мультиплексной части (т. е. до D-входов триггера) в виде
Q.d = I0*S'0*S'1 + I1*S0*S'1 + I2*S'0*S1 + I3*S0*S1
где входы S0 и I1 - адреса, выбирающие входы I0-S3 и «*» и «+» соответственно И или ИЛИ.
Регистровые ПМЛ легко реализуют это с фиксацией результата. Заметим, что мы использовали ИЛИ 3-входовых И, предпочитая это первоначальному декодированию выбранного адреса на двухвходовых вентилях И, так как мы вынуждены использовать сумму произведений (это также быстрее). Окончательная схема показана на рис. 8.75 (заметим, существует тонкость для этой схемы, см. подразд. «Выбросы» в конце этого раздела).
Рис. 8.75. 4-входовый мультиплексор с фиксацией, выполненный на ПМЛ.
PALASM. Для схем какой-либо разумной сложности необходимы некоторые методы логического проектирования ПМЛ. Например, ПМЛ 16L8 имеет 2048 перемычек, а сложный проект может потребовать, чтобы вы прожгли несколько сотен из них, и если вы не необычайно обязательны, то маловероятно, что достигните цели вручную, корректно определив их для ПМЛ-программатора. PALASM (PAL Assembler, торговый знак фирмы Monolithic Memories Inc.), разработанный фирмой Monolithic Memories (впервые создавшей ПМЛ), был одним из первых инструментов. Он берет логическое выражение, подобное тому, которое мы писали выше, и преобразует его в карту перемычек. Производится это посредством программы, но без логической минимизации, поэтому вы должны проделать эту трудную работу сами. Однако PALASM позволяет вам вводить набор тестовых состояний (называемых тестовыми векторами), дающих возможность получить на выходах то, что должно быть результатом ваших логических спецификаций. Таким образом вы можете отлаживать ваши уравнения перед изготовителем ПМЛ.
PALASM широко используется. Существуют листинги исходных текстов (кодов) на языке Фортран, которые могут затем послать карты перемычек для ПМЛ-программаторов (в стандартном «JEDEC»-фopмате) через последовательный порт. Многие ПМЛ-программаторы со встроенными микропроцессорами включают резидентный PALASM такие, например, как у фирм Data I/O, Digiles, Stag, и Structured Resign. Остается только подключить терминал, и вы в работе.
Языки ABEL и CUPL. PALASM — помощник, но серьезному пользователю ПМЛ необходимо большее. Языки логического программирования высокого уровня подобно языкам ABEL (фирмы Data I/O) и CUPL (фирмы Logical Devices) делают программирование ПМЛ (и ПЛМ) легкой работой. Они позволяют вам задавать логику либо через логические булевы уравнения, либо через таблицы истинности, для последовательностных схем вы задаете состояния и правила перехода. Подобно какому-либо хорошему языку высокого уровня, вы можете определять массивы (для набора сигналов, т. е. адресной шины), выражения и промежуточные значения, затем использовать их в других выражениях. Эти языки достаточно «умны» для преобразования таблиц истинности в логические выражения с последующей минимизацией их (также, как и логических булевых выражений) в логически идентичные, окончательный результат получается в форме, которая соответствует логическим ограничениям устройства (т. е. сумма произведений для ПМЛ). Вместо записи сверху вниз явнозаданных логических выражений для ряда значений вам достаточно записать что-то вроде ADDR: [10…FF], которое будет преобразовано в соответствующую логику. Эти языки также позволяют вам определять тест-векторы, с помощью которых тестируется ваша схема, кроме того, тест-векторы могут также посылаться в программатор для проверки запрограммированного кристалла. Наконец, эти языки позволяют получить стандартную документацию на законченный кристалл, что существенно, если вы захотите отлаживать приспособление с этими самодельными устройствами.
С целью конкретизации этих идей, давайте рассмотрим оба примера проектирования как последовательностных, так и комбинационных схем, используя язык CUPL.
Пример использования языка CUPL для проектирования преобразователя из 7-сегментного кода в шестнадцатеричный (комбинационная логика). Наступает время, когда вы захотите использовать желаемый БИС-кристалл, который выполняет определенную функцию (например, калькулятор или хронометр), как часть создаваемого вами устройства. Беда в том, что эти БИС-кристаллы обычно имеют выходы для прямого управления 7-сегментным индикатором, который предпочтительней, чем шестнадцатеричные (или двоичные) выходы, которые вы хотите получить. Давайте спроектируем кристалл-шифратор, который преобразует 7-сегментный код обратно в 4-битовый двоичный, такая функция не реализуется как стандартная микросхема (хотя существует дешифратор из семисегментного кода в двоично-десятичный, 74С915).
Входы представляют отдельные сегментные сигналы, которые всегда помечаются символами a — f (рис. 8.76).
Рис. 8.76. Коды 7-сегментного индикатора.
На рис. 8.76 показано, как цифры представляются на 7-сегментном индикаторе. Заметьте, что возможно двоякое представление «9» и «С», оба из которых должны корректно восприниматься вашей логикой. Для ПМЛ мы выбираем X6L8, 20-контактная комбинационная часть которой логически была показана на рис. 8.45.
Рис. 8.77 представляет входное описание на языке CUPL. Здесь сигналы запуска сегментов а — g обозначают входы (положительная логика), а шестнадцатеричные разряды D0-D3 выходы (отрицательная логика). Язык CUPL позволяет определить промежуточные переменные, которые могут быть использованы в выражениях позднее. В этом случае удобно определить очевидные переменные от zero до next через возможные отображения цифры в терминах сегментных входов. Это просто большие термы произведений (И) от входных сегментных переменных, которые вы можете прочесть из изображений цифр на рис. 8.76.
/** Inputs **/
PIN 1 = a; /* segment a */
PIN 2 = b; /* segment b */
PIN 3 = c; /* segment c */
PIN 4 = d; /* segment d */
PIN 5 = e; /* segment e */
PIN 6 = f; /* segment f */
PIN 7 = g; /* segment g */
/** Outputs **/
PIN 19 = !D3; /* msb of hex encode */
PIN 18 = !D2; /* */
PIN 17 = !D1; /* */
PIN 16 = !D0; /* 1sb */
/** Declarations and Intermediate Variable Definitions **/
zero = a & b & c & d & e & f & !g;
one = !a & b & с & !d & !e & !f & !g
two = a & b & !с & d & e & !f & g;
three = a & b & c & d & !e & !f & g;
four = !a & b & с & !d & !e & f & g;
five = a & !b & с & d & !e & f & g;
six = a & !b & c & d & e & f & g;
seven = a & b & с & !d & !e & !f & !g;
eight = a & b & c & d & e & f & g;
nine = a & b & с & !d & !e & f & g
# a & b & c & d & !e & f & g; /* two ways */
hexa = a & b & с & !d & e & f & g;
hexb = !a & !b & c & d & e & f & g;
hexc = !a & !b & !c & d & e & !f & g
# a & !b & !c & d & !e & f & !g; /* two ways */
hexd = !a & b & c & d & e & !f & g;
hexe = a & !b & !c & d & e & f & g;
hexf = a & !b & !c & !d & e & f & g;
/** Logic Equations **/
D3 = eight # nine # hexa # hexb # hexc # hexd # hexe # hexf;
D2 = four # five # six # seven # hexc # hexd # hexe # hexf;
D1 = two # three # six # seven # hexa # hexb # hexe # hexf;
D0 = one # three # five # seven # nine # hexb # hexd # hexf
Рис. 8.77. Спецификация преобразователя 7-сегментного представления в 16-ричное на языке CUPL.
Окончательно каждый двоичный выходной бит записывается как сумма (ИЛИ) цифровых переменных, при которых этот бит устанавливается. Мы используем уровни отрицательной логики, потому что 16L8 представляет матрицу И-ИЛИ-НЕ. Этим заканчивается логическая спецификация для языка.
Упражнение 8.29. Проверьте для себя правильность нашей работы, записав некоторые из отображаемых символов, через заданные нами промежуточные переменные zero-next.
Язык CUPL сначала использует определение промежуточных переменных для записи выражений D0-D3 прямо в термах входных переменных a — f, работа, которая подобно ассемблеру PALASM должна исполняться нами изначально. В этом случае логические уравнения представлены в желательной И-ИЛИ-НЕ форме. Однако мы не закончили на этом, так как 16L8 (и все другие комбинационные ПМЛ) допускают не более 7 термов произведений для каждой суммы, тогда как мы имеем 9, 8, 9 и 10 соответственно для выходов D0-D3. Одним решением может быть связывание выхода через вторичный вентиль ИЛИ, для того чтобы получить желательное число термов произведений в сумме.
Эта обычно рассматриваемая форма плоха, так как она удваивает задержки распространения, хотя это не так важно в медленных устройствах, подобных этому. Лучшее решение — произвести логическую минимизацию, используя логическую эквивалентность по формуле Моргана, например.
Мы запускаем минимизатор CUPL, который выдает термы произведений (рис. 8.78).
** Expanded Product Terms **
D0 =>
a & b & c & d & !e & g
# a & b & с & !e & f & g
# a & с & d & !e & f & g
# b & с & !d & !e & !f & !g
# !a & !b & c & d & e & f & g
# a & !b & !c & !d & e & f & g
# !a & b & c & d & e & !f & g
D1 =>
a& !b & !c & e & f & g
# !b & c & d & e & f &g
# a & b & с & !d & e & f & g
# a & b & !c & d & e & !f & g
# a & b & c & d & !e & !f & g
# a & b & с & !d & !e & !f & !g
D2 =>
а & !b & !с & d & е & f
# а & !b & c & d & f & g
# а & !b & !с & е & f & g
# !а & b & с & !d & !е & f & g
# !a & b & c & d & e & !f & g
# !a & !b & !c & d & e & !f & g
# a & b & с & !d & !e & !f & !g
D3 =>
a & b & c & f & g
# a & !b & !c & d & e & f
# a & !b & !c & e & f & g
# !a & !b & c & d & e & f & g
# !a & b & c & d & e & !f & g
# !a & !b & !c & d & e & !f & g
D0.oe => 1
D1.oe => 1
D2.oe => 1
D3.oe => 1
Рис. 8.78. Преобразователь 7-сегментного представления в 16-ричное с минимизированными термами произведения.
Взгляните, все удовлетворяет ограничению «7 произведений». CUPL также рисует для вас карту перемычек (рис. 8.79).
Рис. 8.79. Карта перемычек преобразователя 7-сегментного представления в 16-ричное.
Конечно, вы не программируете ПМЛ так, а используете вместо этого прямую загрузку универсального JEDEC программирующего формата. В этом примере язык CUPL, очевидно, делает трудную задачу простой.
Пример использования языка CUPL для программирования автомата-продавца (последовательная схема). Произвольная машина состояний (разд. 8.18) имеет набор состояний и правил перехода для движения между этими состояниями по каждому фронту синхроимпульса. Правила перехода зависят от текущего состояния и от частной комбинации входных уровней, существующих на следующем фронте. Вы можете соорудить машину состояний на программируемой логике, содержащей регистры, если а) существует достаточное число битов в регистре для представления всех возможных состояний (например, с 4-разрядным регистром вы можете иметь до 16 состояний), и б) существует достаточное число входов и логических вентилей для реализации правил перехода.
Как пример, давайте спроектируем регистровую ПМЛ для диаграммы состояний на рис. 8.80.
Рис. 8.80. Диаграмма состояний торгового автомата.
Это — торговый автомат, предназначенный для выдачи бутылки сладкой шипучей жидкости, когда опущено 25 цент или более. Существует некоторый вид монетного интерфейса, который «заглатывает», распознает монету и посылает на наш ПМЛ 2-битовый входной сигнал (С1, С0), действительный для одного такта, показывающего монету, которую опустили (01-5 цент, 10–10 — цент монета, 11–25 — цент монета, 00 — нет монеты). Задача машины состояний добавлять к общему вкладу и формировать выход, называемый «бутылка», когда опущено достаточно монет. Рис. 8.81 показывает спецификацию, выполненную в синтаксисе машины состояний языка CUPL.
/** Inputs **/
Pin = elk; /* clock — positive edge */
Pin = c0; /* coin type — low bit */
Pin = c1; /* coin type — high bit */
Pin = reset; /* reset input */
/** Outputs **/
Pin 18 = !Q0; /* bit 0 of state variable */
Pin 17 = !Q1; /* bit 1 */
Pin 16 = !Q2; /* bit 2 */
Pin 15 = !bottle; /* bottle disgorge command */
/* Define machine states with symbolic names;
"enough" = 25 cents or more */
$define S0 'b'000
$define S5 'b'001
$define S10 'b'010
$define S15 'b'011
$define S20 'b'100
$define ENOUGH 'b'101
/* define intermediate variables */
nocoin = !c0 & !c1 & !reset;
nicke1 = c0 & !c1 & !reset;
dime = !c0 & c1 & !reset;
quarter = c0 & c1 & !reset;
/* Define state bit variable field */
field statebit = [Q2..0];
/* Transition rules for vending machine */
sequence statebit {
present S0 if nocoin next S0;
if nicke1 next S5;
if dime next S10;
if quarter next ENOUGH out bottle;
present S5 if nocoin next S5
if nicke1 next S10;
if dime next S15;
if quarter next ENOUGH out bottle;
present S10 if nocoin next S10
if nicke1 next S15;
if dime next S20;
if quarter next ENOUGH out bottle;
present S15 if nocoin next S15
if nicke1 next S20;
if dime next ENOUGH out bottle;
if quarter next ENOUGH out bottle;
present S20 if nocoin next S20
if nicke1 next ENOUGH out bottle;
if dime next ENOUGH out bottle;
if quarter next ENOUGH out bottle;
present ENOUGH next S0; }
Рис. 8.81. Спецификация торгового автомата на языке CUPL.
Как и прежде, мы начнем с определения входных-выходных контактов. Заметим, что мы добавили вход reset (сброс) так, чтобы вы могли перейти к начальному состоянию S0 (нет монеты). Затем мы определим состояния, потом правила перехода между ними. Если какие-либо выходы, либо регистровые, либо комбинационные, необходимо генерировать в течение состояний или переходов между состояниями, они определяются в то же самое время. В этом примере выход «бутылка» специфицируется как раздельный выходной регистр, т. е. выходные состояния дешифрировать не нужно. Фактически нужен только выход, а биты Q0-2 машины состояний могут быть представлены во внутренних регистрах, которые не генерируют прямо выводы; некоторые программируемые логические устройства имеют также внутренние регистры в дополнение к обычным выходным регистрам.
Заметим, что вы должны определить точно переход из некоторого состояния в себя, также, как мы делали для входа «нет монеты». Неопределенное условие безусловно сбрасывает состояние во все нули. Это происходит потому, что эти условия собираются в комбинационную логику для выставления на D-входы регистров и, таким образом, если условие не удовлетворяется, то соответствующий D-вход не подтверждается. Рис. 8.82 показывает вывод из языка CUPL.
** Expanded Product Terms **
Q0.d =>
!Q0 & !Q1 & cQ & !reset
# !Q0 & !Q2 & cO & !reset
# Q0 & !Q2 & !c0 & !reset
# Q0 & !Q2 & c1 & !reset
# !Q0 & !Q1 & Q2 & c1 & !reset
Q1.d =>
!Q1 & !Q2 & !c0 & c1 & !reset
# !Q0 & Q1 & !Q2 & !c1 & !reset
# Q1 & !Q2 & !c0 & !c1 & !reset
# Q0 & !Q1 & !Q2 & cO & !c1 & !reset
Q2.d =>
!Q0 & !Q1 & Q2 & !reset
# Q1 & !Q2 & c1 & !reset
# !Q2 & c0 & c1 & !reset
# Q0 & Q1 & !Q2 & c0 & !reset
bottle.d =>
!Q2 & c0 & c1 & !reset
# !Q0 & !Q1 & Q2 & c0 & !reset
# !Q0 & !Q1 & Q2 & c1 & !reset
# Q0 & Q1 &!Q2 & c1 & !reset
statebit =>
Q2, Q1, Q0
Рис. 8.82. Выход CUPL для торгового автомата.
Ничего очевидного или простого в логике, поскольку и состояние автомата (S0-S5) и входящие переменные (С0-1) определены в виде двоичных чисел, а логика работает по отдельным битам. Таким образом, результирующая логика не сильно связана с первоначальным описанием состояний (рис. 8.81). Фактически, конкретный выбор состояний (возрастающий двоичный код 0–5) мог бы быть различным, это полностью изменило бы результирующую логику. В этом случае этот пример легко укладывается в ограничениях ПМЛ 16R6 (8 термов произведений на регистр): если это не так, мы могли бы попытаться переопределить состояния, что часто приводит к более простой логической реализации. Заметим, что вход сброса действует, заменяя безусловность всех D-входов, которую мы задали посредством нашего задания промежуточных переменных «нет монеты», «5 цент» и т. д.
Упражнение 8.30. Проконтролируйте правильность конечных логических выражений, посредством проверки нескольких правил перехода. Вы должны испытать все переходы от 00, или от «5 центов», или «10 центов» к какому-либо другому состоянию.
Упражнение 8.31. Хорошие торговые автоматы имеют размен. Перерисуйте диаграмму состояний (рис. 8.80) так, чтобы были состояния (сколько?) для каждого возможного числа разменов. Модифицируйте правила перехода соответственно. Гарантируйте, чтобы ваш усовершенствованный автомат выполнял свою основную работу — выдачу бутылок.
Упражнение 8.32. Нарисуйте диаграмму состояний и правил перехода для электронного комбинационного замка. Он должен открываться только тогда, когда четыре цифры набраны в правильном порядке. Какая-либо ошибка должна сбрасывать его.
Возможные применения программируемых логических интегральных схем (ПЛИС)
Для выполнения некоторых функций ПЛИС подходит как нельзя лучше. Вот самые важные области применения и преимущества ПЛИС:
Автоматы. Как и в предыдущем примере, ПЛИС естественным образом вписывается в произвольный синхронный автомат. Было бы неразумно использовать матрицу из D-триггеров и дискретную комбинационную логику, когда ПЛИС способна выполнить те же функции в одном недорогом и мощном корпусе.
Замена произвольной логики. Во многих схемах вы можете обнаружить узлы и клубки из вентилей, инверторов и триггеров, называемых с пренебрежением «произвольная логика» или «клей». ПЛИС обычно сокращает число корпусов в 4 и более раз. Кроме того, при использовании ПЛИС схема становится более понятной, поскольку применение большого числа вентилей означает, что всю необходимую вентильную обработку можно сделать при вводе в регистры (при этом выходы становятся строго синхронными) вместо того, чтобы комбинировать выходы регистра с вентилями (при этом выходы не будут строго синхронными); см. рис. 8.83.
Рис. 8.83. Программируемое логическое устройство (а); обычная дискретная логика (б).
Гибкость. В ряде случаев вы не совсем представляете себе, как, в конце концов, должна работать ваша схема, тем не менее вы должны как-то ее завершить, чтобы иметь возможность с ней «поиграть». Здесь ПЛИС как раз к месту, так как в отличие от дискретной логики на некотором этапе вы имеете возможность заменить одну на другую без перемонтажа. Схемы на ПЛИС приобретают характер программ.
Несколько версий. С помощью ПЛИС можно спроектировать одну единственную схему и затем изготавливать несколько различных версий устройства, выпуская платы с различно запрограммированными ПЛИС. Например, вы могли бы иметь компьютер, который содержит кристаллы памяти либо на 256К, либо на 1М, причем изменения касались бы только ПЛИС.
Скорость и комплектация. При использовании ПЛИС проектирование схемы в общем случае можно выполнить гораздо быстрее (если вы, разумеется, хорошо ориентируетесь в этой области). Более того, вам потребуется всего несколько типов ПЛИС, а не несколько дюжин типов стандартных схем средней интеграции. Действительно, всего две новых ПЛИС GAL (базовая матричная логика) благодаря программируемости своей внутренней архитектуры (и связей) заменят целый набор ПМЛ. В частности, 20-выводная GAL16V8 и 24-выводная GAL20V8 каждая может имитировать по 21 стандартных ПМЛ. Более того, их можно запрограммировать как «помесь» ПМЛ (например, нечетное число регистров).
Расширение функций ПМЛ. Входы/выходы. Выводы выходов с 3 состояниями, подключенные внутри кристалла к входам матрицы И, можно использовать в качестве входов. Например, ПМЛ 16L8, показанная на рис. 8.45, имеет 16 входов (прямых и инверсных) на матрицу И; 10 из них обозначены как входные выводы, а 6 являются цепями обратной связи с выходов с 3 состояниями. Эти 6 выводов можно превратить в «перманентные» входы путем блокировки соответствующего выхода (подключить пару прямой/инверсный к управлению И); с другой стороны, эти входы могут работать в двух направлениях за счет блокировки формирователей с 3 состояниями, соответствующими некоторой логической переменной.
«Супер-ПМЛ». Ранее мы уже отмечали, что наиболее гибкая программируемая логика соответствует оригинальным ПМЛ, среди которых самыми известными являются стираемые КМОП-варианты фирм Lattice, VTI, Altera и др. ПМЛ GAL фирмы Lattice, например, использует программируемую логику с электрическим стиранием, так что вы можете перепрограммировать кристалл. Более того, выходные структуры («макроячейки») сами программируемы, — каждый выход может быть как регистром, так и комбинационной схемой с прямым и инверсным выходом. Похожей программируемостью обладают линия активации 3-го состояния и линия включения обратной связи (последняя может подключаться до и после буфера с 3 состояниями или к соседнему выходу); см. рис. 8.84. В результате, вы можете имитировать любую обычную 20-выводную ПМЛ, используя только один корпус GAL16V8 (и любую обычную 24-выводную ПМЛ, используя GAL20V8). Это позволяет сохранять перечень комплектующих изделий в управляемых границах. Фирма Altera имеет линию программируемой КМОП-логики, которая допускает ультрафиолетовое стирание по типу ЭППЗУ (в корпусе ИС над кристаллом имеется окно из кварцевого стекла). Такие устройства называют СПЛИС — стираемая программируемая логическая интегральная схема.
Рис. 8.84. Программируемая макроячейка базовой матричной логики.
Самая маленькая ИС из этой серии (ЕР320) имеет выходные макроячейки и имитирует все 20-выводные ПМЛ, точно также, как GAL16V8. Более того, она маломощна в отличие от «прожорливых» оригинальных ПМЛ (см. ниже). Наконец, фирма Altera выпускает несколько более крупных СПЛИС, а также программируемые микросеквенсеры и т. п. Фирмы Cypress и VTI также выпускают стираемую программируемую КМОП-логику с макроячейками. Другим подходом к созданию программируемой логики является ОЗУ-подобная вентильная матрица фирмы Xilinx. Впечатляющие кристаллы этой матрицы содержат огромные блоки конфигурируемой логики, причем конфигурация связей хранится во внутреннем ОЗУ кристалла (энергозависимая память). Эта память загружается от внешней памяти после включения питания либо от микропроцессора; кроме того, она может самозагружаться с использованием памяти типа энергонезависимого ПЗУ.
Скорость и мощность. Оригинальная ПМЛ на биполярных транзисторах, разработанная на фирме Monolithic Memories (и быстро скопированная National и AMD) потребляла значительный ток — около 200 мА для 16L8/16R8, и имела задержку распространения 40 нс. Последующие биполярные ПМЛ «половинной мощности» были вполне приемлемы — 90 мА и 35 нc. Однако самые быстрые ПМЛ потребуют все еще уйму мощности; например, время распространения ПМЛ 16R8D и 16Р8-7 фирмы AMD составляет соответственно 10 и 7,5 нс, но потребляют они 180 мА. (макс). КМОП-приборы существенно лучше: GAL (GAL20V8-15Q) «1/4 мощности» фирмы Lattice потребляют 45 мА при задержке 15 нс, ЕР320-1 фирмы Altera обладают задержкой 25 нс при токе 5 мА. Но что более важно для маломощных устройств, так это то, что кристаллы фирмы Altera (а также ПМЛ серии Ζ фирмы AMD) могут работать в резервном режиме с «нулевой мощностью». Конструкторы будущих структур программируемой логики, наверняка, сохранят эту здоровую тенденцию к повышению скорости и снижению мощности; современная программируемая логика, этот «пожиратель ватт», начинает уходить в прошлое!
Выбросы. ПЛИС, конечно, удивительная вещь, но вы можете, ненароком, оказаться в затруднительном положении, если не будете помнить о возможности логических состязаний. На рис. 8.85 показан 2-входовый мультиплексор, выполненный самым обычным способом; показаны ПМЛ — реализация и эквивалентная схема.
Рис. 8.85. Исключение глитча в ПМЛ; а — 2-входовый мультиплексор; б — для исключения глитча добавляется избыточный терм произведения; в — карта Карно с избыточным термом.
Здесь все выглядит как-будто прекрасно, но схема имеет один изъян: когда оба входа (А и В) находятся в состоянии высокого уровня, а линия ВЫБОР меняет состояние, на выходе, как показано, возможен выброс. Это объясняется тем, что внутренние задержки по цепям S и S' могут быть не равны, что приведет к появлению переходного состояния, в котором на одном из входов вентилей И будет низкий уровень. Избавиться от этого можно, использовав избыточный терм А*В, который будет гарантировать отсутствие выбросов, в чем вы можете легко убедиться.
Упражнение 8.33. Покажите, что дополнительный терм устраняет все возможности для появления выбросов.
Упражнение 8.34. Какие логические термы следует добавить к 4-входовому мультиплексору (рис. 8.75) для устранения выбросов.
С помощью карт Карно вы можете наглядно убедиться в существовании этих так называемых логических рисков; карта Карно для 2-входового мультиплексора рис. 8.85, а приведена на рис. 8.85, в. Каждая группа на карте представляет один терм произведения, который образует вход вентиля ИЛИ. Истинное значение на выходе ИЛИ появляется в том случае, когда любой из термов произведения имеет истинное значение; но переход между группами произведений может приводить к выбросам, если переменные первой группы снимаются, до того, как будут назначены переменные второй группы.
«Противоядие» (которое мы использовали и ранее) состоит в добавлении избыточных термов, гарантирующих, что любые переходы между логическими «1» будут включены в один терм произведения. Другими словами, любые единицы, которые лежат в соседних рядах или столбцах, будут покрыты группой произведения. Это предписание можно дать в обобщенной форме, связанной непосредственно с булевым логическим выражением, а не с картой Карно. Это удобно для логических функций, зависящих от более, чем 4-х переменных.
В предыдущем примере представлены так называемые статические выбросы, поскольку выход будет оставаться статическим. Существуют также динамические выбросы, проявление которых заключается в том, что выход, который должен сделать один-единственный переход, начинает многократно переходить из состояния в состояние. При использовании программируемой логики можно избежать этих внутренних гоночных условий. В общем средства проектирования такие, как PALASM, ABEL и CUPL не пытаются решать эти проблемы. Если хотите, они делают все, чтобы ухудшить ситуацию, поскольку их логические оптимизаторы усердно работают по исключению таких избыточных термов.
8.28. Разнообразные последовательностные схемы
Появление на рынке большого числа разнообразных БИС и СБИС (имеющих более 1000 вентилей на кристалле) дает возможность использовать достаточно сложные устройства, выполненные на одном кристалле. В этом разделе мы приведем несколько выборочных примеров.
Память типа «первый вошел-первый вышел» (FIFO) в некотором смысле аналогична регистру сдвига, так как информация, вводимая на входе, в том же порядке появляется на выходе. Однако между ними есть существенное отличие, которое состоит в том, что в регистре сдвига информация «проталкивается вдоль него» по мере ввода и тактирования дополнительных бит, а в запоминающем устройстве типа «первый вошел-первый вышел» данные «проваливаются насквозь» и выстраиваются в выходную очередь с очень малой задержкой. Управление вводом и выводом производится раздельными тактовыми последовательностями, а устройство помнит, какие данные введены и какие выведены. Можно провести полезную аналогию с кегельбаном, где белые и черные игровые шары (биты) возвращаются на исходную позицию. Эти биты вводятся с помощью игральной машины, а время, которое требуется шару для того, чтобы прокатиться по своему лотку, соответствует «задержке при сквозной передаче» в ЗУ типа «первый вошел-первый вышел» (обычно 1-25 мкс). После этого биты приходят на выход и могут забираться пользователем по мере надобности (т. е. асинхронно). Память типа «первый вошел-первый вышел» полезно использовать для буферизации асинхронных данных. Классическим примером является буферирование клавиатуры (или другого входного устройства, такого, как магнитная лента) ЭВМ или другого устройства обработки данных. При использовании этого метода данные не будут теряться в том случае, когда ЭВМ не готова принять очередное выработанное слово — при условии, конечно, что ЗУ незаполнено целиком. Примерами типичных устройств памяти являются 74F433 (ТТЛ, 64 слова по 4 бит каждое, 10 МГц, время «пролета» 4 мкс) и IDT7202 (КМОП, 4096x9,15 МГц, нулевое время «пролета»).
Память типа «первый вошел-первый вышел» не применяется, если устройство, которому вы посылаете данные, может всегда получить их до поступления следующих данных. На компьютерном языке — вы должны гарантировать, что максимальная латентность меньше, чем минимальное время между словами данных (время скрытости данных). Заметим, что память типа «первый вошел-первый вышел» не будет полезна, если получатель данных не готов (не способен) в среднем воспринять приходящие данные.
Умножитель частоты используется для генерации последовательности выходных импульсов с частотой, значение которой связано с тактовой частотой через рациональную дробь. Например, 3-декадный двоично-десятичный умножитель позволяет получать на выходе частоты, составляющие nnn/1000 от входной частоты; nnn-трехзарядное десятичное число, заданное тремя входными двоично-десятичными знаками. Это не то же, что счетчик по модулю n, так как с его помощью на выходе нельзя получить частоту, равную 3/10 входной. Отметим один важный момент: импульсы на выходе умножителя в общем случае не будут следовать равномерно. Они совпадают с входными тактовыми импульсами и образуют чудные комбинации, средняя частота которых задается предварительно. Примерами устройств являются `97 (6-битовый, двоичный) и `167 (двоично-десятичный).
Счетчик частоты. Фирма Intersil имеет хороший набор интегральных счетчиков частоты. Они включают средства блокировки входного сигнала для точного определения интервалов, до восьми цифр двоично-десятичного счетчика, дисплейные формирователи и т. д. Эти кристаллы обычно требуют очень мало внешней схемотехники.
Цифровые вольтметры. Вы можете получить цифровые вольтметры на одном кристалле. Они включают цепи аналого-цифрового преобразователя и необходимой синхронизации, схемы счета и управления дисплеем. Примерами таких устройств являются маломощный 3,5-разрядный АЦП ICL7136 и 4,5-разрядный АЦП ICL7129; оба используют жидкокристаллический семисегментный индикатор и работают от одной батареи 9 В.
Схемы специального назначения. Существуют прекрасные наборы БИС кристаллов для областей, подобных радиосвязи (например, синтезаторы частоты), для цифровой обработки сигналов (умножители/накопители, цифровые фильтры), корреляторы, арифметические устройства), передачи данных (универсальных), асинхронные приемопередатчики, модемы, сетевые интерфейсы, ИС кристаллографирования (декристаллографирования данных, преобразователи последовательных форматов). Часто эти кристаллы используются совместно с устройствами на базе микропроцессоров и многие из них не могут работать в одиночку.
Кристаллы для бытового применения. Полупроводниковая промышленность любит разрабатывать ИС для использования их в изделиях большого рынка. Вы можете получить однокристальные схемы для изготовления цифровых (иди «аналоговых») часов, таймеров, замков, калькуляторов, детекторов дыма, телефонных аппаратов, синтезаторов музыки, генераторов ритма и аккомпанемента и т. д. Что касается радиоприемников, телевизоров, компакт-дисков, то сейчас в этом отношении дело обстоит хуже из-за большой степени интеграции. Синтез речи (и особенно распознание речи) в последнее время получил некоторое развитие; вот почему лифты, автомобили и даже кухонные аппараты обращаются теперь к нам теми голосами, которые мы любим. Судя по всему, следующим большим шагом будет разработка эффективных автомобильных схем (для выполнения функций двигателя, систем предотвращения столкновений и т. п.).
Микропроцессоры. Самым выдающимся примером «чуда» БИС является микропроцессор (компьютер на кристалле). На одной вершине находятся мощные цифровые приборы, подобные 68020/30 и 80386/486 (32-разрядные быстрые процессоры с предвыборной команд, виртуальной памятью, мощнейшие арифметические сопроцессоры) и кристаллы, подобные MicroVAX, которые эмулируют существующие большие компьютеры. На другой вершине — однокристальные процессоры с различными функциями ввода, вывода и памяти, работающие самостоятельно. Например, один из последних образцов, это TLCS-90 фирмы Toshiba (рис. 8.86), представляющий маломощный КМОП микроконтроллер с 6-канальным 8-разрядным АЦП, встроенными таймерами, ОЗУ и ПЗУ, 20-двунаправленными цифровыми линиями ввода/вывода, последовательным портом и двумя портами для управления шаговыми двигателями. Этот прибор больше предназначен для задач управления, чем для проведения вычислений.
Рис. 8.86. Однокристальный микропроцессор со схемами ввода/вывода.
Революция в микропроцессорах не проходила в одиночестве, и мы видим удвоение компьютерной мощности и размера памяти (в настоящее время 1 Мбит, сравните с 16 Кбит на кристалле на время написания первого издания этой книги) каждый год, в то же время цены развиваются драматически (рис. 8.87). Наряду с укрупнением и улучшением процессоров и памяти, последние работы сверхскоростных приборов и больших параллельных архитектур обещают более волнующие события в последующие годы.
Рис. 8.87. Закон Кремниевой Долины: кривая обучения.
Некторые типовые цифровые схемы
Благодаря усилиям полупроводниковой промышленности цифровые схемы удивительно легки и приятны. Почти нет случаев, когда приходится класть цифровую схему на «хлебную доску», как это часто происходит с линейными схемами. Вообще говоря, единственными серьезными проблемами являются синхронизация и шумы.
Мы в последующем расскажем об этом. Здесь уместно проиллюстрировать синхронизацию на нескольких примерах последовательностных схем. Некоторые из этих функций могут быть выполнены с помощью БИС, однако рассматриваемые реализации сделаны на хорошем уровне и позволяют проиллюстрировать, какого типа схемы можно строить с помощью имеющихся средств.
8.29. Счетчик по модулю n
Изображенная на рис. 8.88 схема на каждые n входных тактовых импульсов вырабатывает один выходной импульс. Значение n есть 8-разрядное число, которое вы задаете с помощью двух барабанных шестнадцатеричных переключателей. Схемы `163 являются 4-разрядными синхронными суммирующими счетчиками с синхронной загрузкой (когда вход LD'- низкий) через D-входы. Идея состоит в загрузке дополнительного кода, счете вверх до FFn и перезагрузке по следующему тактовому импульсу. Поскольку мы сформировали значение перезагрузки с помощью источника +5 (с общим заземленным выводом переключателя), то эти уровни являются отрицательно-истинными для отображения набора переключателей, это означает, что загружаемые значения интерпретируются как истинные положительные, равные дополнительному до 1 значению, установленному на переключателях.
Рис. 8.88. Счетчик по модулю n.
Упражнение 8.35. Путем вычисления истинного положительного значения, которое будет установлено на переключателях рис. 8.88, докажите истинность последнего утверждения.
Работа схемы совершенно очевидна. Для каскадирования синхронных счетчиков вы соединяете все тактовые входы вместе, затем соединяете выход «максимальный счет» каждого счетчика с разрешением следующего счетчика. Для схемы `163 выход RCO (ripple-clock output — выход переполнения ПП) выставляет ВЫСОКИЙ уровень при максимальном счете, разрешая второму счетчику посредством установления разрешения (ВЫСОКОГО уровня) на входах ENT и ENP (Разр). Таким образом, ИС1 повышает свое значение на каждый тактовый импульс, а ИС2 повышает свой счет на каждый тактовый импульс после того, как ИС1 насчитает значение Fn. Таким образом, два счетчика считают пока не достигнут состояния FFn, в этой точке входы загрузки LD' устанавливаются в истинное значение. Это приводит к синхронной предзагрузке на следующем такте. Здесь мы выбрали счетчики с синхронной загрузкой для того, чтобы избежать логических состязаний (и короткого импульса RCO), которые могут возникнуть в счетчике с асинхронной загрузкой. К сожалению, счетчик при этом делит на n + 1, а не на n.
Упражнение 8.36. Объясните, что произойдет, если счетчик с асинхронной загрузкой (например, `191) заменить на счетчик с синхронной загрузкой `163. Покажите, в частности, как могут образовываться короткие импульсы. Покажите также, что предыдущая схема делит на n + 1, в то время как при асинхронной загрузке будет осуществляться деление на n (если схема вообще будет работать).
Временная диаграмма. До какой максимальной частоты может считать наш счетчик? Схема 74НС163 имеет гарантированную максимальную частоту счета fмакс 27 МГц. Однако в нашей схеме существуют дополнительные временные задержки, связанные с каскадным соединением (ИС2 должна «узнавать», что ИС1 уже достигла максимального счета за время до следующего тактового импульса), и с соединением «загрузка при переполнении». Для изображения максимальной частоты, при которой гарантируется работа схемы, мы должны добавить задержку для наихудшего случая и быть уверенным, что остается достаточно времени да переустановку. Посмотрите на рис. 8.89, где мы изобразили временную диаграмму, показывающую последовательность загрузки, которая выполняется при максимальном счете.
Рис. 8.89. Временная диаграмма счетчика по модулю n и расчет максимальной скорости работы.
Изменение сигнала с НИЗКОГО на ВЫСОКИЙ уровень на каком-либо выходе Q следует за положительным фронтом тактового сигнала максимум через 34 нc. Это интересно (но не относится к делу), что загружаемая последовательность использует выход RCO (переноса); сигнал RCO следует за положительным фронтом тактового импульса, что при максимальной частоте счета составляет максимум 35 нc. Сигнал переноса RCO ИС2 появляется после наличия входного разрешения (при условии, конечно, что это происходит при максимальном счете) максимум через 32 нc. Схема 74НС04 добавляет задержку максимум в 19 нc для генерации сигнала ЗАГРУЗКА' (LD'), которая должна предшествовать сигналу такта (isetup) как минимум на 30 нc. Что приводит нас к следующему тактовому импульсу; таким образом 1/fмакс = (35 + 32 + 19 + 30) нc, или fмакс = 8,6 МГц. Что значительно меньше, чем максимально гарантируемая частота счета одного 74НС163.
Упражнение 8.37. Покажите, проведя подобное вычисление, что два синхронных каскадно соединенных счетчика 74НС163 (без загрузки при переполнении) имеют максимальную частоту счета 15,4 МГц.
Конечно, если вам необходима более высокая скорость, вы можете использовать более быструю логику. Проделав те же самые вычисления для логики 74F (для которой максимальная частота счета одного счетчика 74F163 составляет 100 МГц), мы находим fмакс = 29 МГц. Нужно отметить устройство `НС40103 при рассмотрении счетчиков по модулю n, которое представляет собой 8-разрядный синхронный вычитающий счетчик с параллельной загрузкой (синхронной или асинхронной), с дешифрацией нулевого состояния и входом сброса в максимальное состояние. Этот счетчик имеет близкого родственника `НС40102, идентичного, за исключением его «организации», сдвоенному двоично-десятичному.
8.30. Мультиплексируемый цифровой индикатор на светодиодах
Этот пример иллюстрирует метод мультиплексного отображения, который заключается в том, что n цифр каждого числа последовательно и быстро воспроизводится на 7-сегментных светодиодных индикаторах. (Могут, конечно, использоваться не только цифровые символы, и конструкция индикаторов может отличаться от распространенной 7-сегментной организации). Коммутация индикаторов применяется для экономии и упрощения: непрерывное воспроизведение каждого знака требует установки для каждой цифры индивидуальных дешифраторов, формирователей и токоограничивающих резисторов, а также индивидуальных связей между каждым регистром и соответствующим дешифратором (4' линии) и между каждым формирователем и соответствующим индикатором (7 проводов); жуткая путаница!
В методе мультиплексирования требуется лишь один дешифратор/формирователь и один набор токоограничивающих резисторов. Кроме того, так как светодиодные цифровые индикаторы выпускаются в виде n-символьных галет, причем соответствующие сегменты всех символов объединены, количество взаимных соединений сокращается довольно существенно. Так, 8-знаковый индикатор требует 15 соединений при использовании этого метода (7 сегментных входов, общие для всех цифр, плюс один катод или анод в цепи возврата каждой цифры), при непрерывном же воспроизведении их потребуется 57. Еще одно любопытное преимущество этого метода состоит в том, что субъективно воспринимаемая глазом яркость будет в этом случае выше, чем при непрерывном свечении всех цифр при той же средней яркости.
На рис. 8.90 изображена принципиальная схема индикации.
Рис. 8.90. Коммутируемый цифровой индикатор для четырех знаков. Числа с внешней стороны графических обозначений соответствуют номерам контактов ИС.
Цифры, которые должны быть воспроизведены на индикаторе, хранятся в регистрах ИС1-ИС4. Вместо регистров можно использовать счетчики, если устройство представляет собой счетный частотомер или набор защелок (триггеров), получающих данные от компьютера или выхода АЦП и т. п. В этом случае при данном методе каждая цифра последовательно вводится на внутреннюю 4-разрядную шину (в рассматриваемом примере через КМОП-буферы с тремя состояниями 4503), дешифрируется и отображается на индикаторе (схема 4511 представляет дешифратор двоично-десятичного кода в 7-сегментный с формирователем сигналов управления цифровым индикатором).
В этой схеме два инвертора используются для получения классического КМОП генератора, работающего на частоте 1 кГц и подающего сигналы на 8-разрядный счетчик-дешифратор 4022. Каждый выход счетчика последовательно устанавливается в состояние ВЫСОКОГО уровня и выводит на шину очередную цифру.
Одновременно он запитывает катод соответствующего индикатора, подавая на него НИЗКИЙ уровень через мощный буфер с открытым коллектором 40107. Счетчик 4022 циклически проходит состояние от 0 до 3, а при достижении числа 4 каждый раз сбрасывается. Мультиплексируемая индикация может работать и при большем количестве цифр. Она повсюду используется в многоцифровых индикаторах на светодиодах. Попытайтесь посмотреть вокруг — перед вашими глазами море цифр и знаков.
Многие БИС, ориентированные на воспроизведение информации, как, например, счетчики, реле времени и часы, содержат встроенную схему коммутации индикатора и даже формирователи. Более того, существуют БИС управления индикацией (например, 74С922 и 74Ц912); они проделывают всю ту работу, которая раньше выполнялась с помощью ИМС средней степени интеграции.
8.31. Привод звездного телескопа
Схема, изображенная на рис. 8.91, была спроектирована для управления приводом Гарвардского 62-дюймового оптического телескопа.
Рис. 8.91. Прецизионный формирователь сигнала переменного тока частотой 60 Гц. Выходная частота равна хх. ххх. Для задания звездной скорости ключи устанавливаются на значение 60 165.
Для питания экваториального привода двигателя (совершающего 1 оборот в день) требуется источник электроэнергии переменного тока, частота которого должна устанавливаться равной любому значению около 60 Гц (скажем, от 55 до 65 Гц). Эта частота не может точно равняться 60 Гц по следующим причинам: а) звезды и Солнце движутся с разной скоростью, поэтому потребуется частота порядка 60,1643 Гц; б) проходя наклонно через атмосферу, звездный свет претерпевает рефракцию; это преломление зависит от зенитного узла и, следовательно, видимое движение будет происходить с неравномерной скоростью; в) иногда может возникнуть желание взглянуть на Луну, планеты или кометы, которые движутся с неодинаковыми скоростями. Было решено использовать 5-значный дискретный умножитель частоты для получения выходных импульсов с частотой следования fвхn/105, где n — пятизначное десятичное число, которое устанавливается на передней панели с помощью двоично-десятичных барабанных переключателей.
Выходная частота умножителя будет порядка 600 кГц, поскольку входная частота fвх формируется стабильным кварцевым генератором и равна точно 1 МГц. На выходе умножителя частота делится на 104 посредством четырех декадных счетчиков, причем последний счетчик выполнен в виде делителя на 5, а после него установлен делитель на 2, служащий для получения симметричных импульсов с частотой 60 Гц. Для стабилизации амплитуды прямоугольной формы выходной сигнал поступает на ограничитель, выполненный на стабилитроне, а затем с помощью 6-звенного НЧ-фильтра Баттерворта с частотой среза f0, равной 90 Гц, преобразуется в хороший синусоидальный сигнал. (Можно считать, что фильтр «вычищает» из прямоугольного сигнала высшие гармонические составляющие, или «обертоны»). Далее, с помощью усилителя с «перекомпенсацией», рассмотренного в разд. 4.35, вырабатывается переменное напряжение 115 В.
Выходной сигнал фильтра на экране осциллографа выглядит идеальным, так как 6-звенный фильтр Баттерворта позволяет в данной схеме снизить наибольшую гармонику до 1,5 % от значения амплитуды нефильтрованного сигнала, что означает затухание более чем на 35 дБ. Заметим, что данный метод формирования синусоидальных колебаний удобен лишь тогда, когда частота входного сигнала ограничена узким диапазоном. Входы управления ±10 % позволяют изменять частоту выходного синусоидального сигнала на 10 % за счет того, что коэффициент деления третьего делителя устанавливается равным 9 или 11. Эта ступень представляет собой делитель по модулю n, изображенный на рис. 8.88.
8.32. Генератор последовательности из n импульсов
Генератор последовательности из n импульсов представляет собой широко используемый небольшой прибор для тестирования. По внешнему сигналу запуска (или используя ручной запуск) он вырабатывает на выходе пачку из n импульсов с заданной частотой следования, которая может иметь ряд дискретных значений. На рис. 8.92 показана принципиальная схема генератора.
Рис. 8.92. Генератор последовательности из n импульсов.
Интегральные схемы `НС40102 представляют собой КМОП высокоскоростные 2-декадные вычитающие счетчики, тактируемые непосредственно частотой, выбираемой десятичным делителем, подключенным к 10-МГц кварцевому генератору. Счетчики делителя могут блокироваться либо активным уровнем на выходе A3 (асинхронная загрузка), либо пассивным уровнем на входе переноса (Вх. пер.). Когда запускающий импульс появляется (заметим, что используется `НСТ-серия на входе для совместимости с биполярной ТТЛ), триггер-1 выдает разрешение счетчику, а триггер-2 обеспечивает синхронизацию счета после следующего положительного фронта тактового импульса. Тактовые импульсы проходят через вентиль И-НЕ-3 до тех пор, пока счетчики не достигнут нуля, в это время оба триггера сбрасываются в исходное состояние; осуществляется параллельная загрузка в счетчик числа n, задаваемого двоично-десятичными переключателями, запрещается счет и схема готова для другого запуска. Заметим, что использование резисторов, подключенных к общему проводу, в этой схеме означает, что должны быть использованы двоично-десятичные переключатели в прямом коде (предпочтительнее, чем в дополнительном). Отметим также, что вход ручного запуска должен иметь защиту от дребезга, так как он тактирует триггер. Защита от дребезга не требуется для переключателя режимов, который просто разрешает формирование на выходе непрерывной последовательности импульсов.
Выходной каскад обеспечивает две пары прямых и инвертированных сигналов. Запараллеленные инверторы `НС04 выдают обычный логический размах +5 В благодаря использованию технологии КМОП. Мы запараллелили инверторы для увеличения нагрузочной способности. Схема может обеспечивать по крайней мере ток нагрузки ±10 мА при логических уровнях, отличающихся на 0,3 В от границ напряжения питания. Если вам требуется больший выходной ток, вы можете заменить инверторы на схемы `АС04, запараллеленная пара которых будет давать выходной ток до +50 мА при таких же значениях логических уровней.
Мы добавим пару усилителей, изображенных в прямоугольнике, которые могут управлять логикой, способной работать при напряжении, отличном от +5 В: например, маломощные часто используемые при проектировании КМОП серии 4000В и 74С работают непосредственно от батарей +9 В (они нормально работают при напряжении от 3 до 15 В); НС-логические элементы работают при напряжении питания от 2 до 6 В. Было выдвинуто предложение, чтобы КМОП серия `АС оперировала при напряжении +3,3 В (JEDEC стандарт N08). Интегральные схемы 40109, 14504 и LTC1045 являются преобразователями уровней, это кристаллы с активным выходным каскадом, который запитывается от второго источника питания, который может быть выше или ниже напряжения +5 В. Таким образом, мы получаем чистые логические уровни КМОП-схем.
Патология в логических схемах
Существуют интересные, а иногда и просто забавные ловушки, подстерегающие ничего не подозревающего разработчика цифровых схем. Некоторые из них, такие как логические гонки и тупиковые ситуации, могут возникать независимо от типа используемых логических схем. Другие (как, например, эффект тиристорного включения в кристаллах КМОП) представляют собой «генетические аномалии» того или иного семейства. Ниже мы попытаемся обобщить наш печальный опыт и надеемся, что приведенные анекдоты помогут избежать другим тех же ошибок.
8:33. Проблемы статических режимов
«Тупиковое состояние». Легко попасть в ловушку, построив схему, имеющую «мертвое» состояние. Допустим, имеется какое-то устройство с рядом триггеров, которые в процессе работы проходят через заданные состояния. Кажется, что схема действует превосходно, но в один прекрасный момент она намертво останавливается. Единственный способ заставить ее опять работать — это выключить питание, затем снова его включить. Такая ситуация из-за того, что схема имела «мертвое» состояние (запрещенное состояние системы, которого не удалось избежать), в которое она и угодила под воздействием каких-то переходных помех по цепи питания. При разработке цифровых схем очень важно выявить подобные состояния и строить логику таким образом, чтобы схема могла автоматически восстанавливаться. Как минимум, должен быть предусмотрен сигнал начальной установки (вырабатываемый от кнопки, при включении питания и т. д.), который мог бы возвращать систему в нормальное состояние. При наличии такого сигнала никаких других мер может и не потребоваться (см. упражнение 8.24).
Начальная установка. Этот вопрос возникает при определении состояния системы в начальный момент. В любом случае полезно иметь какой-либо сигнал, который обеспечивал бы начальную установку. Иначе при включении питания в системе могут происходить непонятные вещи. На рис. 8.93 показана подходящая схема. Последовательно включенный со входом вентиля резистор необходим при использовании КМОП-схем, что позволяет избежать повреждения схемы при отключении питания, так как в противном случае электролитический конденсатор будет пытаться запитать систему через защитный диод входного вентиля КМОП. Хорошей идеей является использование триггера Шмитта (4093, `14), благодаря которому снятие сигнала СБРОС происходит чисто. Символ гистерезиса на рисунке означает, что на входе инвертора установлен триггер Шмитта, собранный, например, на ТТЛ 74LS14 (6 инверторов), либо КМОП 40106, либо 74С14.
Рис. 8.93. Схема для формирования сигнала сброса при включении питания.
8.34. Проблемы при переключениях
Логические гонки. Здесь скрываются многие коварные ловушки. Классический случай логических гонок был описан в разд. 8.19 на примере синхронизатора импульсов. В любом случае, когда вентили управляются сигналами от триггеров, необходимо убедиться в том, что в схеме не может возникнуть ситуация, в которой к моменту тактирования триггера вентиль открывается, а по истечении задержки на триггере закрывается. Сигналы, возникающие на входах триггеров, не должны быть задержанными по отношению к тактовым импульсам (еще одно преимущество синхронной системы!). В общем случае задерживайте такты, но не информацию. Необычно легко проглядеть возможность возникновения логических гонок.
Метастабильные состояния. Как уже отмечалось, триггер и любое тактируемое устройство могут сбиться, если изменение сигналов на информационных входах произойдет менее чем за время tуст до возникновения тактового импульса. В худшем случае выход триггера будет буквально совершать колебания в окрестности логического порога в течение нескольких микросекунд (для сравнения: нормальная величина задержки распространения элементов ТТЛ составляет 20 нc). Разработчики логических схем это обычно не принимают во внимание, но подобная проблема может возникнуть в быстродействующих системах, когда потребуется синхронизовать асинхронные сигналы. Такую ситуацию считают виновной во многих таинственных сбоях ЭВМ, но мы смотрим на это предположение скептически. В этом случае требуется лишь установить цепочку синхронизаторов или «детектор метастабильных состояний», который будет сбрасывать триггер.
Скос фронтов тактовых импульсов. Скос фронтов тактовых импульсов оказывает большее влияние на схемы КМОП, чем на ТТЛ. Такая проблема возникает в том случае, когда для тактирования нескольких соединенных между собой устройств используется сигнал с большим временем нарастания (рис. 8.94).
Рис. 8.94. Временной сдвиг из-за завала тактовых импульсов.
В рассматриваемом примере два регистра сдвига тактируются фронтом с большим временем нарастания. Это время обусловлено емкостной нагрузкой выхода КМОП, который имеет относительно высокий импеданс (порядка 500 Ом при работе от источника +5 В). Проблема возникает из-за того, что порог срабатывания у первого регистра может оказаться ниже, чем у второго, в результате чего его сдвиг произойдет раньше и последний бит первого регистра будет потерян. Дело еще осложняется тем, что значения пороговых напряжений для устройств на КМОП колеблются в очень широком диапазоне (фактически они могут принимать любое значение в пределах от 1/3 до 2/3 Ucc и они принимают!). В подобной ситуации самое лучшее — это располагать корпуса микросхем рядом, тем самым избегать большой емкостной нагрузки по тактовым входам.
Говоря в общем, тактовые входы каких-либо цифровых микросхем должны всегда тщательно обрабатываться. Например, тактовые линии с шумом или «звоном» должны всегда очищаться с помощью вентиля (возможно, с входным гистерезисом) до подачи на синхронизируемый кристалл. У вас, вероятно, возникали проблемы с линиями синхронизации, которые поступали с другой платы или с другого логического семейства. Например, медленная логика 4000 В или 74С, питающая быстрые семейства НС или АС, наверняка вызовет проблемы перекоса импульсов или кратных переходов.
Укороченные импульсы. В разд. 8.29 при рассмотрении счетчиков по модулю n мы отмечали, что в том случае, когда счетчики должны сбрасываться собственным входным сигналом, необходимо ввести задержку для того, чтобы предотвратить появление укороченного импульса. То же самое относится и к импульсам записи в счетчики или регистры сдвига. Укороченные импульсы часто доставляют неприятности, приводят схему к работе на границе устойчивости и вызывают периодические сбои. При разработке схемы следует исходить из наихудшего значения для задержки.
Неопределенные правила. Когда полупроводниковая промышленность нащупывала свой путь, начиная с простейших схем резисторно-транзисторной логики 1960 г., затем ТТЛ- и ТТЛШ-семейства, до высокопроизводительных современных КМОП-семейств, было недопонято значение стандартизации выводов, спецификаций и функциональности. Как пример, схема 7400 (И-НЕ) имела свои выводы вентилей, а схема 7401 (ИЛИ-НЕ с открытым коллектором) имела отличные от нее расположения выводов вентилей. Это создавало такую путаницу, что побудило выпустить «мутант»-схему 7403, которая представляет собой схему 7401, но с разводкой вентилей, как у 7400. Подобное недоразумение случилось со схемой 7490 (двоично-десятичный счетчик) с расположением контактов питания по середине корпуса, а не в углах. (Как ни смешно, но контакты питания, расположенные посредине корпуса, «возвратились» в быстродействующих схемах КМОП, для уменьшения индуктивности и улучшения изоляции.)
Важным наследством этой ранней анархии является «всякая всячина» неопределенных правил, которых мы придерживаемся. Например, популярный `74D-триггер существует в каждом логическом семействе; подача одновременно сигналов установки и сброса приводит к высокому уровню на обоих выходах в каждом семействе, кроме 74С, где это приводит к низкому уровню на выходах! Это не совсем неопределенное правило, поскольку если вы внимательно посмотрите в хорошую документацию, то найдете непоследовательность. На техническом жаргоне это называют «Попался!» (gotcha). Другим любимым нашим примером этого «попался!» является схема `96: 5-разрядный сдвиговый регистр с хитрыми входами загрузки; они могут устанавливаться, но не сбрасываться. Подлинным неопределенным правилом, а фактически очень важным является «время перемены». Это такое количество времени, которое вы должны ожидать после снятия асинхронного входного сигнала для полной гарантии синхронизации тактируемого элемента.
Проектировщиков кристаллов не беспокоило это обстоятельство (хотя проектировщики схем всегда хотели это знать), пока логические семейства, выпускавшиеся ранее 1980 г., не были обойдены улучшенными ТТЛШ и быстрыми КМОП-семействами. Если вы проектируете с применением более ранней логики (например, 74С), наш совет — быть консервативным, например, предполагайте, что время перемены такое же, как время установки данных хотя обычно оно меньше. Так например, у D-триггера 74НС74 минимальное время распространения определяется в 5 не, в то время как минимальное время установки данных составляет 20 нc.
8.35. Прирожденные недостатки ТТЛ и КМОП
В этом разделе в одной его части мы рассмотрим проблемы, причиняющие неудобства разработчику, а в другой — по настоящему ненормальное поведение логических элементов.
Проблемы, причиняющие неудобства. Биполярные ТТЛ-элементы. Не следует забывать, что при низком уровне входы ТТЛ действуют как источник тока (например, 0,25 мА для LS, 0,5 мА для F). Это затрудняет использование RC-цепочек в качестве элементов задержки и подобных элементов, так как они в этом случае должны иметь низкое сопротивление и вам необходимо серьезно подумать, когда вы сопрягаете сигналы линейных устройств с ТТЛ-входами.
Значение порога у элементов ТТЛ (и серий, которые их имитируют — НСТ и ACT) близко к уровню земли, вследствие чего все это логическое семейство в известной степени подвержено влиянию помех (более подробно см. гл. 9). Так как эти логические семейства являются быстродействующими, они воспринимают короткие всплески по шине земли. Такие всплески часто возникают при быстрой смене состояний на выходах, что еще более осложняет проблему.
Биполярные ТТЛ-элементы предъявляют высокие требования к источнику питания: +5 В ±5 % при относительно высокой мощности рассеяния. Наличие токовых всплесков в шинах питания, которые вырабатываются схемами с активной нагрузкой, как правило, требует шунтирования источника питания, в идеальном случае — один конденсатор емкостью 0,1 мкФ на каждый корпус ИМС (рис. 8.96).
Рис. 8.96. Всегда целесообразно использовать устойчивую низкоиндуктивную разводку земли и не скупиться на развязывающие конденсаторы.
КМОП-элементы. Выходы КМОП-элементов подвержены пробою под действием статического электричества. «Смертность» у КМОП действительно подскакивает в зимнее время! Новые семейства с поликремниевыми затворами [НС(Т), АС(Т)] значительно больше страдают, чем их предки с металлическими затворами. Входы КМОП имеют очень большой разброс по значениям порогового уровня; в сочетании с высоким выходным импедансом (200–500 Ом) это приводит к возникновению проблемы скоса фронтов тактовых импульсов (см. разд. 8.34). Когда на выходе сигнал медленно нарастает, могут возникать двойные переключения на выходах. В устройствах на КМОП все неиспользованные входы, включая входы незадействованных вентилей, должны быть обязательно соединены с шиной высокого или низкого уровня.
Интересная врожденная проблема новейших быстродействующих КМОП-семейств в особенности АС и ACT состоит в наличии «подскока» уровня земли. Быстродействующий КМОП-элемент, работающий на емкостную нагрузку, генерирует громадные кратковременные токи по шине земли, приводящие к тому, что потенциал на линии земли, подходящий к корпусу микросхемы, моментально подпрыгивает! В результате этого подпрыгивает и низкий уровень на выходах на том же самом кристалле. На рис. 8.95 показан этот случай.
Рис. 8.95. Буфер 74АС244 на 8 выходов, запускающий 7 нагрузок 50 пФ из «вые.» в «низк», и удерживающий 8-й выход в состоянии «низк.». «Земля» — медная плата (1 унция/кв. фут).
(По рис. 1.1–4 руководства по проектированию улучшенной КМОП-логики.)
В особенности заметьте, что амплитуда этого эффекта от 1 до 2 В не является редкостью. Давайте рассмотрим случай, когда время переключения составляет 3 не, а перепад в 5 В прикладывается к емкости 50 пФ. В результате получаем мгновенное значение тока I = CdU/dt = 83 мА, а так как 8-разрядный буфер может нагружаться непосредственно на такие же восемь нагрузок (при общем токе 2/3 А!), такое поведение схемы не является неожиданным. Эта задача оказывается тяжелее, чем кому-либо представляется, и приводит к спорному новому набору АС/АСТ-схем с «центральным» расположением выводов питания и земли (для снижения индуктивности). На момент написания книги разработчики логики встали по разные стороны: по одну фирма TI, борющаяся за новую разводку выводов, а по другую — фирмы RCA и Fairchild, защищающие традиционную разводку по углам. Мы предостаточно поспорили с обеими сторонами и выявили слабости как противоположных аргументов, так и соперничающих кристаллов. По крайней мере пользователи должны сознавать серьезность этой проблемы и принять меры для сохранения индуктивности шины земли на низком уровне, насколько это возможно, когда используется семейство AC/ACT. Самым лучшим является использование печатных плат с распределенной шиной земли и множеством шунтирующих низкоиндуктивных конденсаторов. Лучший способ, если вам не нужна высокая скорость переключения, отказаться от семейства AC/ACT, а использовать взамен серию HC/HCT.
Аномальное поведение. Элементы ТТЛ. С элементами ТТЛ не связано такое большое число таинственных явлений, как с КМОП. Однако некоторые одновибраторы ТТЛ срабатывают от «глитчей» в цепи питания (или земли) и вообще, как правило, ведут себя в известной степени «нервно». Кроме того, схема, которая прекрасно работает на LS ТТЛ, может давать сбои, когда заменяется AS ТТЛ, из-за более быстрого переключения и увеличения токов потребления по цепям земли и окружающим ее (на этот взгляд серия 74F ТТЛ лучше). В большинстве случаев неправильную работу ТТЛ-элементов можно связать с проблемой помех.
Элементы КМОП. КМОП-элементы способны свести с ума кого угодно! Например, схема может войти в режим «тиристорного защелкивания», если сигнал на входе (или выходе) возникает сразу после включения питания. Результирующий ток (50 мА или более) через диоды входной защиты включит пару паразитных перекрестно связанных транзисторов, которые являются побочным эффектом КМОП-технологии с изолированными переходами (см. рис. 3.50 и разд. 14.16). При этом напряжение питания Ucc закорачивается на землю, кристалл начинает греться и для того чтобы схема снова начала правильно работать, вам потребуется отключить питание. Если это не сделать в течение нескольких секунд, то придется заменить микросхему. Некоторые из новейших КМОП-схем (серия НС с поликремниевыми затворами фирм GE/RCA и National) невосприимчивы к «защелкиванию» даже с входным размахом 5 В выше уровня питания и работают при входном размахе 1,5 В выше уровня питания.
Схема КМОП имеет весьма коварные и странные режимы ложной работы. Один из выходных полевых транзисторов может открыться, что приводит к кодозависимым ложным срабатываниям, которые очень трудно обнаружить. Вход может начать работать как источник тока или токовая нагрузка. Весь корпус может начать потреблять от источника питания существенный ток. Чтобы легче было обнаружить неисправную микросхему, потребляющую большой ток в статическом режиме, рекомендуется последовательно с контактом Ucc каждой микросхемы включить резистор 10 Ом (для микросхем, нагруженных на большое число входов, или мощные драйверы, такие, как в серии АС, используйте резистор 1 Ом).
Кроме того, кристаллы КМОП дают большой разброс по входному порогу, а один и тот же кристалл может иметь неодинаковые значения порогового уровня для различных функций, которые выполняются по одному и тому же входу. Так, например, в устройстве 4013 выход Q' при управлении по R-входу переходит в состояние высокого уровня раньше, чем выход Q устанавливается в состояние низкого уровня. А это значит, что сигнал установки нельзя обрывать по изменению Q', поскольку возникающий в этом случае импульс может не сбросить триггер.
Нельзя оставлять входы корпуса КМОП неподключенными. В этом случае схема время от времени может вести себя неправильно. Для того чтобы выявить неисправность, вы поставили щуп осциллографа в какую-то точку схемы и обнаружили там уровень 0 В, как и должно было быть. После этого в течение нескольких минут схема работает прекрасно, а затем снова сбивается! А произошло вот что: осциллограф разрядил неподключенный вход и потребовалось достаточно большое время, чтобы он смог снова зарядиться до порогового уровня. Дальше идет уже чистая фантастика: вы забыли подключить контактный вывод Ucc корпуса КМОП, но все-таки схема работает просто идеально! А дело все в том, что она получает питание по одному из своих логических входов (от входа через защитный диод к цепи Ucc корпуса). Вы можете не замечать этого в течение довольно длительного времени, пока не возникает ситуация, когда одновременно на всех входах корпуса будет действовать низкий уровень: кристалл потеряет питание и «забудет» свое состояние. В любом случае такой режим не может считаться нормальным, так как выходной каскад не запитан нужным образом и не в состоянии обеспечить номинальный ток. Сложность состоит в том, что подобная ситуация может давать о себе знать лишь эпизодически, поэтому вам придется пробежать не один круг, пока вы, наконец, додумаетесь, что же в действительности происходит.
Схемы, не требующие пояснений
8.36. Удачные схемы
Рис. 8.97 иллюстрирует ряд полезных применений цифровых схем.
Рис. 8.97. а — формирователь импульса по переднему фронту; б — формирователь импульса по спаду сигнала; в — формирователь импульсов по обоим фронтам;
Рис. 8.97. г — синхронный генератор последовательности из 2n импульсов;
Рис. 8.97. д — регулируемый формирователь импульса по переднему фронту;
Рис. 8.97. е — асинхронный генератор последовательности из 2n импульсов;
Рис. 8.97. ж - преобразование квадратурного кода в код реверсивного счетчика; используется для определения положения вращения по выходу преобразователя угла;
Рис. 8.97. з — квадратурный генератор синхроимпульсов.
8.37. Негодные схемы
На рис. 8.98 показаны примеры классических ошибок, совершаемых разработчиками при построении цифровых схем.
Рис. 8.98. а — формирователь короткого импульса; б — хронометр с одиночной кнопкой ПУСК/ОСТАНОВ;
Рис. 8.98. в — схема для исключения каждого второго импульса из входной последовательности импульсов с длительностью 1 мкс (тонкий случай); г — ключ с подавителем дребезга;
Рис. 8.98. д — счетный частотомер с буферным регистром.
Дополнительные упражнения
(1) Покажите, как построить JK-триггер с помощью D-триггера и коммутатора-мультиплексора на 4 входа. Подсказка: используйте адресные входы коммутатора в качестве J и К.
(2) Разработайте схему, которая на 7-сегментном индикаторе будет показывать время (в миллисекундах), в течение которого была нажата кнопка. После каждого измерения устройство должно возвращаться в исходное положение. Воспользуйтесь генератором 1,0 МГц.
(3) Разработайте измеритель реакции. После того как «А» нажимает кнопку, загорается светодиод и счетчик начинает отсчет. Когда свою кнопку нажимает «В», светодиод гаснет, а на цифровом индикаторе воспроизводится время в миллисекундах. Позаботьтесь о том, чтобы схема работала нормально даже в том случае, когда «А» успевает отпустить свою кнопку до того, как «В» нажмет свою.
(4) Спроектируйте измеритель периода — устройство, измеряющее число микросекунд в одном периоде гармонического входного сигнала. Установите на входе компаратор на триггере Шмитта для формирования уровня ТТЛ; используйте тактовую частоту 1 МГц. Каждое очередное измерение должно начинаться после нажатия кнопки.
(5) Если вы еще не успели поставить буферный регистр, добавьте его к счетчику периода.
(6) Сделайте так, чтобы схема измеряла время десяти периодов. Кроме того, во время счета должен загореться светодиод.
(7) Сконструируйте электронный секундомер. Кнопка «А» начинает и останавливает счет, кнопка «В» производит сброс. Выход должен иметь вид хх. х (секунды и десятые доли). Считайте, что в схеме имеются прямоугольные импульсы, следующие с частотой 1 МГц.
(8) В некоторых секундомерах используется только одна кнопка (при каждом нажатии выполняется одна из операций цикла: пуск, останов, сброс, затем снова пуск и т. д.).
(9) Спроектируйте высокочувствительный цифровой частотомер для измерения числа периодов входного сигнала в 1 с. Число значащих цифр должно быть достаточно большим. За время каждого цикла счета число, отсчитанное на предыдущем интервале, запоминайте в буферном регистре. Интервалы счета возьмите равными 1, 0,1 и 0,01 с. Полезно добавить в устройство хорошую входную схему, она позволит работать при различных значениях чувствительности. Эта схема представляет собой триггер Шмитта с регулируемыми гистерезисом и точкой запуска (используйте быстродействующий компаратор). Можно добавить также сигнальный вход для уровней ТТЛ. Подумайте над тем, как организовать двоично-десятичный выход: с помощью коммутации или путем параллельного вывода каждой цифры? Задумайтесь на некоторое время.
(10) Сконструируйте схему для регистрации пролета снаряда или пули, используя НС-логику. Летящий снаряд разрывает тонкий провод, пересекающий путь его пролета, затем, преодолев по ходу через некоторое расстояние, он разрывает второй провод. Не забывайте о проблеме дребезга контактов. Считайте, что в вашем распоряжении есть последовательность прямоугольных импульсов с частотой 10 МГц с уровнями ТТЛ, и постройте схему для воспроизведения на индикаторе интервала времени между моментами разрыва двух проводов в микросекундах (4 цифры). Схема должна быть готова к очередному выстрелу путем нажатия кнопки.
(11) С помощью двух схем 74HC42-S («1 из 10») сконструируйте дешифратор «1 из 16». Входной сигнал представляет собой 4-разрядное двоичное число. На выходе должны действовать сигналы с отрицательной логикой (как у схемы 74НС42). Подсказка: в качестве входа старшего разряда используйте вход «Разрешение».
(12) Представьте, что у вас есть четыре ПЗУ на 256 бит семейства ТТЛ, каждое из которых имеет 8-разрядный параллельный адресный вход, выходные схемы с тремя состояниями (в положительной логике) и вход для их отпирания, который использует отрицательную логику (т. е. ПЗУ выдает на выход выбранный информационный бит, когда разрешающий сигнал имеет низкий уровень). Покажите, как с помощью этих устройств, используя любые необходимые средства, построить ПЗУ на 1024 бита. (Возможно, окажется удачным применить схему 74НС138, а может это проще сделать с помощью вентилей.) Воспользуйтесь этими способами.
(13) Придумайте схему, которая хранила бы текущую сумму последовательно вводимых в нее 4-разрядных двоичных чисел. Сохраняйте только 4 разряда результата (т. е. производите суммирование по модулю 16). Аналогичные схемы используются для получения контрольных сумм, которые записываются на носитель информации, чтобы выявить ошибки, например при записи на перфоленту. Считайте, что каждое новое число сопровождается положительным импульсом готовности, которое имеет длительность 1 мкс и уровень ТТЛ. Предусмотрите вход сброса. Таким образом, ваша схема будет иметь общий вид, показанный на рис. 8.99.
Рис. 8.99.
К этой схеме добавьте еще выходной бит, который будет равен 1, если общее число «единиц» всех чисел, поступающих на вход с момента последней установки, нечетно, и 0, если оно четно. Подсказка: с помощью «паритетного дерева» Исключающего ИЛИ можно определить, когда сумма «единиц» в каждом числе будет нечетной; на основе этого постройте схему.
(14) В упражнении 8.14 вы построили схему умножения 2x2, используя карты Карно для каждого выходного бита. А теперь решите ту же задачу, используя операции сдвига и сложения. Для начала запишите произведение тем способом, который известен вам из начальной школы. Этот процесс имеет простую повторяющуюся схему (рис. 8.100) и требует для реализации несколько 2-входовых вентилей (какого типа?), которые будут вырабатывать промежуточные члены (а0Ь0 и т. п), и 1-разрядных полусумматоров (сумматоры, которые имеют выход переноса, но не имеют входа переноса) для сложения промежуточных членов.
Рис. 8.100.
(15) Теперь по тому же принципу сконструируйте умножитель 4x4 с помощью 4-разрядных полных сумматоров (74НС83) и 16 2-входовых вентилей.
Глава 9 СОПРЯЖЕНИЕ ЦИФРОВЫХ И АНАЛОГОВЫХ СИГНАЛОВ
Перевод Л.В.Поспелова
«Перемалывание чисел» само по себе является, несомненно, чрезвычайно важным применением цифровой электроники, но ее действительные возможности открываются при использовании цифровых методов для обработки аналоговых (линейных) сигналов и процессов. Эту главу мы начнем с краткой хронологии «взлетов и падений» семейств цифровой логики и рассмотрим входные и выходные характеристики «выживших» семейств ТТЛ-КМОП-логики для того, чтобы понять, как осуществить сопряжение логических семейств друг с другом и с устройствами цифрового ввода (переключателями, клавиатурой, компараторами и т. п.) и вывода (индикаторами, реле и т. п.). Мы рассмотрим также n-канальные логические элементы на МОП-транзисторах, поскольку они находят широкое применение при реализации функциональных БИС. Затем коснемся важной темы ввода и вывода цифровых сигналов на платы и внешние приборы, а также передачи цифровых сигналов по кабелям, после чего обсудим методы взаимного преобразования цифровых и аналоговых сигналов. Наконец, после того как читатель усвоит эти методы, мы рассмотрим несколько примеров применения, в которых сочетание аналоговых и цифровых средств обеспечивает эффективное решение разнообразных задач.
Сопряжение логических КМОП- и ТТЛ-элементов
9.01. Хронология логических семейств
В начале 1960-х гг. во времена, которые можно назвать доисторическими, предприимчивые люди, не пожелавшие создавать свои логические схемы на дискретных транзисторах, самоотверженно бились над резисторно-транзисторной логикой (РТЛ), простым семейством логических элементов, разработанным на фирме Fairchild и характеризующимся небольшим коэффициентом разветвления по выходу и низкой помехоустойчивостью. Рис. 9.1 иллюстрирует возникшие в то время проблемы, в частности, логический порог, превышающий уровень земли на одно напряжение Uбэ, и крайне маленький коэффициент разветвления по выходу (в некоторых случаях один выход мог питать только один вход!) были обусловлены пассивной выходной схемой и низкоомной токоотводящей нагрузкой. Это были времена малой интеграции и наиболее сложным элементом, который можно было реализовать, был сдвоенный триггер, работающий на частоте 4 МГц. Но мы смело строили свои схемы на РТЛ, иногда они сбивались особенно, когда в той же комнате включали паяльник.
Похоронный звон по РТЛ прозвучал несколькими годами позже, когда появилась диодно-транзисторная логика (ДТЛ) фирмы Signetics и вскоре вслед за ней универсальная быстродействующая логика SUHL фирмы Sylvania, которая теперь называется транзисторно-транзисторной логикой (ТТЛ). Фирма Signetics выпускала распространенную смесь из двух серий, названную DCL Utilogic серии 8000 («Логические схемы по выбору проектировщика»). ТТЛ быстро прижилась особенно в «системе счисления» «74хх», автором которой была фирма Texas Instruments.
В этих семействах были применены входы, поставляющие ток, с логическим порогом в 2 напряжения Uбэ и и (как правило) двухтактные каскадные выходы (рис. 9.1).
Рис. 9.1. Упрощенные схемы элементов различных логических семейств.
Семейства ДТЛ и ТТЛ открыли эру положительной 5-вольтовой логики (РТЛ была логикой +3,6 В) и предлагали скорость, соответствующую 25 МГц, а коэффициент разветвления по выходу 10, т. е. один выход мог работать на 10 входов. Разработчики не могли нарадоваться скорости, надежности и сложным функциям (например, счетчику по модулю 10) этих семейств. Казалось, что больше и мечтать не о чем; ТТЛ — это на веки вечные.
Однако людям свойственно стремление к совершенствованию. Им потребовалась большая скорость, меньшая мощность потребления. Казалось бы, вскоре они получили и то и другое. В области высокого быстродействия скоростные ТТЛ-схемы (серии 74Н) позволили увеличить скорость почти вдвое, правда, за удвоенную мощность! (это выдающееся достижение было сделано путем уменьшения вдвое величин всех резисторов). Другое семейство — эмиттерно-связанная логика (ЭСЛ) — представило настоящую скорость (30 МГц в первоначальной версии) за счет использования отрицательного источника питания и более близких друг к другу логических уровней (—0,98 и —1,75 В); элементы семейства потребляли уйму мощности и едва втиснулись в малый уровень интеграции. В области низкой мощности появились маломощные ТТЛ-элементы (серия 74L) с 1/4 скорости при 1/10 мощности, соответствующих «стандартной» ТТЛ серии 7400. При поддержке фирмы RCA было разработано первое семейство логических элементов на МОП-транзисторах, КМОП-логика серии 4000. Эти элементы обладали нулевой мощностью потребления в состоянии покоя и широким диапазоном напряжения питания (от +3 до +12 В). Выходы имели размах, равный напряжению питания, а входы не «оттягивали» ток. Это были хорошие новости, но были и плохие - скорость (1 МГц при питании 10 В) и цена (20 долл. за корпус с четырьмя вентилями). Несмотря на цену на микромощных КМОП-элементах выросло целое поколение разработчиков устройств с батарейным питанием, просто не было другого выбора. Работая с легко «ранимыми» входами, разработчики поняли истинное значение статического электричества.
Такова была ситуация на начало 1970-х гг.,-две главные линии биполярной логики (ТТЛ и ЭСЛ) и необычная КМОП-логика. Варианты ТТЛ были по природе своей совместимы друг с другом, за исключением того, что ТТЛ-элементы серии 74L имели слабый выходной узел (отвод тока 3,6 мА) и могли питать только две стандартных (серии 74) нагрузки ТТЛ (чьи входы требовали 1,6 мА на низком уровне). Среди большинства семейств почти не было совместимости (хотя погруженные ТТЛ-элементы могли питать КМОП-элементы, а 5-вольтовые КМОП- только одну ТТЛ-нагрузку серии 74L).
В течение 1970-х гг. ситуация постоянно улучшалась практически на всех направлениях. От ТТЛ отпачковались ненасыщенные «фиксируемые диодами Шоттки» семейства (см. разд. 13.23): сначала серия 74S, которая благодаря утроенной скорости при удвоенной мощности вытеснила серию 74Н, и затем 74LS (L — low, S — Schottky, маломощная Шоттки), которая слегка улучшив скорость при 1/5 мощности вытеснила ТТЛ серии 74. Жизнь с 74LS и 74S была приятной; затем подоспела фирма Fairchild со своей серией 74F (F — FAST: Fairchild Advanced Schottky TTL — усовершенствованная ТТЛ с диодами Шоттки фирмы Fairchild), которая была быстрее на 50 %, чем 74S, при 1/3 мощности; кроме того, были и другие улучшения, так что проектирование схем на этих элементах стало сплошным удовольствием. Фирма Texas Instruments (автор многих линий 14хх) выпустила пару улучшенных семейств Шоттки-логики: 74AS (улучшенная Шоттки-логика) и 74ALS («улучшенная маломощная Шоттки»). Предполагалось, что первое семейство заменит 74S, а второе - 74LS. Все эти ТТЛ-семейства имели одинаковые логические уровни и добротную схему формирования выхода, так что их можно было сочетать в одной схеме. Используя табл. 9.1 и рис. 9.2, можно сравнить скорости и мощности этих семейств.
Рис. 9.2. Зависимость скорости от мощности для различных логических семейств.
Между тем серия 4000 КМОП эволюционировала в улучшенную серию 4000 В с более широким диапазоном напряжения питания (от 3 до 18 В), лучшей защитой входов и более высокой скоростью (3,5 МГц при 5 В). По существу, это та же серия 74S с функциями и выводами семейства 74, которая воспользовалась потрясающим успехом биполярной логики семейства 74. ЭСЛ пустила ростки в виде ECLII, ECLIII, ECL 10,000 и ECL 100,000, обладающие скоростью до 500 МГц.
Итак, ситуация в 1980 г. была следующей. Большинство схем было выполнено на серии 74LS в сочетании с 74F (или 74AS), если требовалась более высокая скорость. Та же самая ТТЛ использовалась как своего рода клей для связи микропроцессорных n-МОП-схем, чьи входы и выходы были совместимы с ТТЛ. Микромощные устройства всегда были сделаны с использованием КМОП-серий 4000 В или 74С, эквивалентными и совместимыми друг с другом. Для устройств с самой высокой скоростью (100÷500 МГц) использовалась ЭСЛ. Совместное использование семейств было не столь уж частым явлением, исключение составляли редкие сочетания КМОП и ТТЛ или сопряжение ТТЛ с быстродействующими ЭСЛ-схемами.
В 1980-е гг. произошло замечательное событие - разработка КМОП-логики со скоростью и выходными параметрами, соответствующими ТТЛ. Сначала появились элементы серии 74НС («высокоскоростная КМОП-логика») с такой же скоростью как 74LS и, разумеется, с нулевым током покоя и затем серия 74АС («улучшенная КМОП-логика») с такой же скоростью как 74F или 74AS. Обладая размахом выходного сигнала, равным напряжению питания, и входным порогом, равным половине напряжения источника питания, эта логика сочетает лучшие свойства предшествующих ТТЛ- и КМОП-логики и постепенно должна вытеснить биполярную ТТЛ. Вместе с тем имеется некоторая несовместимость — логический «высокий» уровень выходного сигнала ТТЛ- и n-МОП-логики (мин. 2,4 В) не достаточен для запуска входа НС и АС. Поскольку, по-видимому, существует Такой период времени, когда вам необходимо использовать некоторые из старых семейств биполярной ТТЛ- или n-МОП-логики, каждое семейство КМОП-логики имеет вариант с более низким входным порогом. Такие семейства имеют наименование 74НСТ и 74АСТ («быстродействующая КМОП-логика с ТТЛ-порогом»). Однако не пытайтесь использовать их везде, где только можно, ведь элементы с КМОП-порогом обладают более высокой помехоустойчивостью и представляют собой семейства по выбору проектировщика. К тому же в 80-е гг. БИС и СБИС постепенно переключались с n-МОП-технологии на КМОП (с вытекающими отсюда низкой мощностью и КМОП-совместимостью), одновременно увеличивая скорость и сложность. И наконец, на вершине быстродействия — элементы на GaAs (арсенида галлия), обеспечивающие скорость в несколько гигагерц.
Заметьте, что все КМОП-семейства (4000 В, 74 С, НС, НСТ, АС и ACT) обладают довольно привлекательным свойством — нулевой «статической» (т. е. когда ничего не происходит) мощностью рассеивания с типовым током покоя менее микроампера. Но при переключениях логических уровней КМОП-элементы потребляют «динамический» ток, обусловленный двумя эффектами: а) переходной проводимостью между шинами питания внутренних двухтактных пар в середине логического перепада и б) динамическим током, необходимым для заряда и разряда внутренних емкостей и емкости нагрузки. Динамический ток пропорционален частоте переключения и может соперничать с током биполярной логики при достижении максимальной частоты работы. Для более детального анализа загляните в разд. 8.10 (рис. 8.18) и разд. 14.16 (рис. 14.38).
Завершим нашу краткую историческую справку следующей рекомендацией. Используйте во всех ваших новых устройствах логику 74НС в сочетании с (а) 74НСТ для обеспечения совместимости с существующими устройствами на n-МОП- и ТТЛ и (б) 74АС(Т) для обеспечения скорости. Можно использовать биполярную ТТЛ (74LS/ALS и 74F/S), но предпочтительнее, по-видимому, КМОП-логика. Если требуется широкий диапазон напряжения питания, а к быстродействию особых требований не предъявляется (например, портативные устройства с питанием от нерегулируемой батареи 9 В), то используйте старую серию 4000 В/74С.
9.02. Входные и выходные характеристики
Семейства цифровой логики проектируются таким образом, чтобы выход кристалла был способен работать на большое число входов элементов того же семейства. Типовой коэффициент разветвления по выходу равен 10; это означает, что к выходу вентиля или триггера можно подключить до 10 входов и элемент будет правильно работать. Другими словами, в обычной практике проектирования цифровых схем можно обойтись без каких-либо сведений об электрических параметрах используемого вами кристалла при условии, что ваша схема состоит только из элементов цифровой логики, работающих также на элементы цифровой логики того же типа. Практически это означает, что вы можете особенно не думать о реальных процессах, происходящих на логических входах и выходах. Однако если вы пытаетесь подключить цифровую схему к внешним источникам сигналов (цифровых или аналоговых) или используете цифровые схемы для запуска других приборов, вы должны иметь представление о том, что необходимо для управления логическим входом и чем может управлять логический выход. Более того, при смешивании семейств логических элементов важно знать схемные особенности логических входов и выходов. Сопряжение логических семейств представляет отнюдь не чисто теоретический интерес. Для того чтобы воспользоваться преимуществами современных кристаллов БИС или специальными функциями, которыми обладает только одно семейство логических элементов, вы должны знать, как сочетать логические элементы различных типов. В последующих разделах мы рассмотрим детально схемные особенности логических входов и выходов и приведем примеры сопряжения логических семейств между собой и логических элементов с внешним миром.
Входные характеристики. Графики, приведенные на рис. 9.3, демонстрируют основные свойства КМОП- и ТТЛ-входов — входной ток и выходное напряжение (для инвертора) как функции входного напряжения. На графиках мы несколько расширили диапазон входных напряжений по сравнению с принятым в цифровых схемах, поскольку при сопряжении легко могут возникнуть ситуации, когда входные сигналы будут превышать напряжение источника питания. Как следует из графиков, и КМОП-логика и ТТЛ нормально работают при подключении вывода питания отрицательной полярности к земле.
Рис. 9.3. Характеристики логических вентилей, а — входной ток; б — передаточная характеристика.
При подаче на ТТЛ-вход низкого уровня он работает как источник тока заметной величины, а при подаче высокого уровня — как нагрузка, потребляющая небольшой ток (типовой — несколько мкА; никогда не превышает 20 мкА). Для управления ТТЛ-входом вы должны обеспечить отвод тока порядка 1 мА (точные значения приведены в табл. 9.1), поддерживая напряжение на входе на уровне менее 0,4 В. Несоблюдение этого условия может привести к неправильной работе схемы при сопряжении! Для входных напряжений ниже уровня земли ТТЛ-вход ведет себя как фиксирующий диод, включенный на землю; при напряжениях выше +5 В ток определяется напряжением пробоя диода (LS, F) или перехода база-эмиттер (ALS, AS) с напряжением пробоя около 10 В.
Типичное значение входного порога ТТЛ составляет примерно +1,3 В, хотя по техническим условиям он может находиться между +0,8 и +2,0 В. ТТЛ-вентили с триггерами Шмитта на входе (`13, `14, `132) имеют гистерезис +0,4 В; при графическом изображении они помечаются символом гистерезиса (см. например, рис. 9.9). Напряжение питания Uпит (обычно его обозначают UKK) составляет +5,0 В +5 %.
Входы КМОП-элементов при входных напряжениях от уровня земли до напряжения питания не потребляют ток (за исключением тока утечки, типовое значение которого составляет 10-5 мкА). Для напряжений выше диапазона напряжений питания входы ведут себя как два фиксирующих диода, подключенных к положительному полюсу источника питания и к земле (рис. 9.1). Кратковременный ток через эти диоды, превышающий примерно 10 мА, переводит многие КМОП-приборы в состояние тиристорного «защелкивания» (см. разд. 8.35; новейшие схемы противостоят более высоким токам и обладают иммунитетом к этой «болезни»; например на входы семейств НС и НСТ можно подавать на 1,5 В выше напряжения питания без нарушения функционирования или разрушения прибора). Это — те знаменитые диоды для защиты входов, без которых КМОП-элементы были бы чрезвычайно подвержены разрушениям от статического электричества при ручных манипуляциях (они и так все еще довольно нежны). Типовое значение порога для семейств 4000В, 74С, 74НС и 74АС составляет половину напряжения питания, но он может колебаться от 1/3 до 2/3U+ (U+ обычно называют UCC); для 74НСТ и 74АСТ типовой порог равен примерно 1,5 В для обеспечения совместимости с ТТЛ. Как и в ТТЛ, существуют КМОП-вентили с триггерами Шмитта на входе. Напряжение питания КМОП-логики составляет от +2 до +6 В для НС, АС, +5 В +10 % для НСТ и ACT, и от +3 до +18 В для 4000В и 74С.
Выходные характеристики. Выходной узел ТТЛ представляет собой npn-транзистор, подключенный к земле, и npn-повторитель (или схема Дарлингтона), подключенный к U+ с резистором, ограничивающим ток, в коллекторе. Один транзистор насыщен, другой выключен. В результате ТТЛ-элемент может отводить большой ток на землю (8 мА для 74LS, 24 мА для 74F) при небольшом падении напряжения и способен отдавать по меньшей мере несколько миллиампер при высоком выходном уровне (около +3,5 В). Выходная схема проектируется таким образом, чтобы можно было подключить до 10 ТТЛ-входов.
Выходная схема КМОП-логики представляет собой двухтактную пару комплементарных МОП-транзисторов; один включен, другой выключен (рис. 9.1). Выход ведет себя как rоткр МОП-транзистора, подключенное к земле или к U+, если напряжение на нем находится в пределах 1 В относительно шины питания, или как источник тока, если вы отбираете такой большой ток, что напряжение на выходе отличается на 1÷2 В от напряжения на шинах питания.
Типовое значение rоткр составляет от 200 Ом до 1 КОм для 4000В/74С, 50 Ом — для 74НС(Т) и 10 Ом для 74АС(Т). Выходные характеристики КМОП и ТТЛ показаны на рис. 9.4.
Рис. 9.4. Выходная характеристика логического вентиля.
На рисунке мы изобразили типовое выходное напряжение для обоих состояний выхода — ВЫСОКОГО и НИЗКОГО в зависимости от входного тока. Для упрощения графиков входной ток везде показан положительным. Заметьте, что выходы КМОП-элементов, если они не сильно нагружены, подключаются либо к U+, либо к земле, обеспечивая полный размах выходного напряжения; при подключении только КМОП-нагрузок (нулевой статический ток) размах составляет полное напряжение на шинах питания.
Для сравнения отметим, что типовое значение ТТЛ-уровней составляет 50÷200 мВ (НИЗКИЙ) или +3,5 В (ВЫСОКИЙ) при условии подключения в качестве нагрузки других ТТЛ-элементов. Подключение нагрузочного резистора (рассматривается ниже) доводит высокий ТТЛ-уровень до +5 В.
9.03. Сопряжение логических семейств
Поскольку существуют ситуации, когда вам приходится смешивать различные типы логических семейств, важно знать, каким образом можно обеспечить «общение» различных семейств друг с другом. Например, многие представляющие интерес кристаллы БИС созданы на основе n-МОП-технологии с ТТЛ-совместимыми выходными уровнями (ВЫСОКИЙ — около +3 В), но их нельзя сразу же подключать к 74НС. Другой пример, вам захотелось использовать превосходную серию счетчиков 14С9хх в существующей схеме, построенной на 74LS. Или вам понадобилась 5-вольтовая логика по периферии 12-вольтовой КМОП-системы для того, чтобы обеспечить соединение с внешними ТТЛ-совместимыми сигналами, или для питания кабелей.
Воспрепятствовать сочетанию какой-либо логической пары кристаллов могут только 3 вещи: а) несовместимость входных логических уровней; б) возможности выходного формирователя и в) напряжение питания. Чтобы не утомлять вас страницами объяснений, что работает а что-нет, мы свели проблему сопряжения к табл. 9.2. Предпримем по ней краткое путешествие.
ТТЛ использует напряжение питания +5 В и обычно выдает высокий уровень всего около +3,5 В; она обладает хорошим низким уровнем-почти до земли. Таким образом, ее можно подключить к логике с низким значением порога, т. е. к ТТЛ, НСТ, ACT и n-МОП (в которых заранее закладывается совместимость). Для того чтобы управлять НС, АС и 4000В/74С, работающие при 5 В, вам понадобится полный перепад до +5 В. Это вы можете сделать с помощью резисторной подвески к +5 В или вставляя буфер НСТ (напомним, что НСТ и ACT имеют выходы с полным перепадом).
Если вы используете подвеску, учтите, что значение резистора определяется компромиссом — чем меньше, тем быстрее, но при большей мощности. Обычно выбирают 4,7 КОм. Резистор подвески подтягивает высокий выходной уровень ТТЛ к +5 В, хотя последняя часть волны подъема (во время которой резистор и делает всю работу) довольно медленная. Для того чтобы управлять высоковольтной КМОП-логикой, используйте преобразователь уровней типа 40109, 14504 или LCT1045; они очень медленные, ну и пусть, ведь вы же все равно пытаетесь управлять медленной КМОП-логикой. n-МОП-выходы похожи на ТТЛ, но в общем случае обладают меньшей нагрузочной способностью. Можете использовать, таким образом, те же средства сопряжения.
Выходы всех КМОП-семейств обладают перепадом, равным напряжению питания. Это означает, что вы можете непосредственно подключать 5-вольтовую КМОП-логику к ТТЛ, n-МОП- и 5-вольтовой КМОП-логике. Учтите, однако, что КМОП старого типа (4000В/74С) имеют слабый выход при работе от 5 В (ток отвода 0,5 мА) и полностью теряют свою способность управлять ТТЛ. Для этих семейств используйте транслятор уровней для управления высоковольтной КМОП-логикой.
Превосходным решением задачи сопряжения КМОП-ТТЛ/n-МОП является использование КМОП при уменьшенном напряжении питания; по стандарту JEDEC Standard № 8 напряжение питания составляет +3,3 В, при этом входной порог располагается вблизи обычного ТТЛ-порога 1,4 В. Таким образом, ТТЛ может непосредственно управлять НС/АС при питании 3,3 В и наоборот. В качестве дополнительного вознаграждения работа при 3,3 В снижает динамическую мощность потребления (см. разд. 8.10, 14.16 и рис. 8.18 и рис. 14.38) на 55 % относительно мощности при 5 В при увеличении задержек распространения почти на 40 %. Учтите, однако, что вы не можете подключать (и в том и в другом направлении) 3,3-вольтовую КМОП к другим КМОП, работающим при 5 В.
Упражнение 9.1. Объясните, почему последнее утверждение истинно.
Наконец, высоковольтная КМОП-логика может управлять 5-вольтовой логикой, если для формирования 5-вольтового выходного перепада вы поставите преобразователь уровней (74С901/2, 14504, LTC1045 или 4049/4050). Можно управлять LS ТТЛ-элементами непосредственно от высоковольтной КМОП-логики, поскольку там нет диодов, защищающих входы, и входное напряжение пробоя обычно превышает 10 В; однако в соответствии с техническими условиями на LS (абсолютное максимальное входное напряжение 7 В) необходимо использовать преобразователь уровней.
Предостережение. Хотя статические логические уровни могут не вызывать беспокойства, иногда возникает занимательная динамическая несовместимость, если вы пытаетесь управлять фронтовыми входами (например, входы синхронизации счетчиков) НС или АС от выходов более медленной логики типа 4000В или 74С. На рис. 9.5 изображены многократные переходы, которые вы могли часто наблюдать; иногда кристалл НС совсем отказывается считать до тех пор, пока вы не прикоснетесь щупом осциллографа (или небольшой емкостью)! По-видимому, виновником этого является комбинация большого времени перехода и относительно высокого выходного импеданса медленной КМОП. На рис. 9.6 приведены несколько сочетаний семейств, с которыми вам, вероятно, доводилось встречаться.
Рис. 9.5. Быструю фронтовую логику нельзя запускать медленными сигналами (например, от узлов с медленной логикой).
Рис. 9.6. Соединение логических семейств друг с другом.
9.04. Управление КМОП-и ТТЛ-входами
Механические ключи в качестве устройств ввода. Если вам известны входные характеристики используемой логики, то управление цифровыми входами от переключателей, клавиатуры, компараторов и т. п. не доставит вам особых осложнений. Самый простой способ — это использовать резистор, подключенный к шине питания (рис. 9.7). Для элементов ТТЛ, учитывая их входные характеристики, лучше всего, когда резистор коммутируется ключом на землю. Ключ легко отбирает входной ток на низком уровне, а резистор поднимает высокий уровень до +5 В, обеспечивая высокую помехоустойчивость; кроме того, это удобно, когда ключ возвращается в состояние, соответствующее земле.
Рис. 9.7. Управление логическими элементами от механических ключей (без защиты от дребезга).
Альтернативный способ, когда резистор подключается к земле, а ключ обеспечивает коммутацию к +5 В, нежелателен, поскольку при этом необходима маленькая величина сопротивления резистора (220 Ом), гарантирующая низкий ТТЛ-уровень в несколько десятых вольта, а это означает, что при замкнутом ключе будет протекать большой ток. В схеме с подвеской к шине питания помехоустойчивость при разомкнутом ключе (худший случай с точки зрения чувствительности к помехе) будет составлять по крайней мере 3 В, в то время как в схеме с подвеской к земле - всего 0,6 В (для ТТЛ FAST нижний порог +0,8 В, входной ток равен — 0,6 мА).
Для КМОП-логики и та и другая схема работает превосходно, поскольку входы не потребляют ток, а типовое значение порога составляет половину UCC. Обычно удобно заземлять одну из сторон ключа, но если схема становится проще при наличии высокого уровня, когда ключ замкнут, то вполне пригоден способ с подключением резистора на землю. На рис. 9.7 показаны все три описанных способа.
Дребезг ключей. Как было отмечено в гл. 8, после замыкания контактов механических переключателей дребезг контактов продолжается в течение примерно 1 мс. Дребезг крупногабаритных переключателей может продолжаться до 50 мс. Это может приводить к беспорядочным переключениям в схемах, реагирующих на смену состояний или фронт (например, если триггер или счетчик тактируются прямо от ключа, то возможно многократное их переключение). В подобных ситуациях следует подавить дребезг ключа электронными средствами.
Рассмотрим несколько способов подавления.
1. Соберите из двух вентилей асинхронный RS-триггер, не забыв, разумеется, о резисторах подвески к шине питания (рис. 9.8). Можно использовать готовый триггер с входами СБРОС и УСТАНОВКА (например, `74), заземлив вход синхронизации.
Рис. 9.8. Схема защиты от дребезга (RS-триггер).
2. Используйте интегральный вариант предыдущей схемы. Элементы `279, 4043 и 4044 представляют собой счетверенные RS-триггеры.
3. Используйте КМОП-триггер Шмитта с замедляющей RС-цепочкой на входе (рис. 9.9). Фильтр нижних частот R2C1 сглаживает дребезг, поэтому триггер Шмитта переключится только один раз. В общем случае вполне достаточно иметь постоянную времени RС-цепочки, равную 10÷25 мс. Для ТТЛ этот способ не подходит из-за низкого импеданса, необходимого для запуска ТТЛ-входов.
Рис. 9.9. Схема защиты от дребезга (RС-цепочка и триггер Шмитта).
4. Воспользуйтесь кристаллом типа 4490, «сшестеренным подавителем дребезга». В этой превосходной схеме использована цифровая задержка (5-разрядный сдвиговый регистр на каждый ключ) как своего рода цифровой фильтр нижних частот. Схема содержит внутренние резисторы подвески и схему синхронизации. Пользователь добавляет времязадающий конденсатор, устанавливая частоту генератора и определяя тем самым время задержки.
5. Примените схему, показанную на рис. 9.10, используя либо неинвертирующий вентиль, либо буфер. Логический выход всегда можно заблокировать, замыкая его на U+ или землю, но при условии, что эта блокировка кратковременна. Приведенная схема удовлетворяет этому условию, поскольку принудительная установка действует только на интервале времени, равном задержке вентиля, после чего вентиль поддерживает сам себя в новом состоянии.
Рис. 9.10. Схема защиты от дребезга (неинвертирующий вентиль с обратной связью).
6. Применяйте компоненты с встроенным подавителем дребезга. Например, шифраторы клавиатуры проектируются с учетом того, что в качестве устройств ввода будут использованы механические ключи, поэтому они обычно содержат схему подавления дребезга.
7. Можно использовать ключи, построенные на основе эффекта Холла. Они представляют собой твердотельные ключи, управляемые магнитным полем, и используются в качестве панельных или клавиатурных ключей. Для их работы требуется напряжение +5 В; вырабатываемые ими бездребезговые логические выходные сигналы можно использовать для управления ТТЛ или КМОП-логикой, работающей от +5 В. Поскольку ключи на эффекте Холла не имеют изнашиваемых механических контактов, они практически вечны (хотя однажды у нас случилась эпидемия прогрессирующей магнитной анемии клавиатуры на эффекте Холла; мы надеемся, что эта болезнь теперь побеждена).
Несколько общих замечаний о ключах как устройствах ввода. Следует иметь в виду, что для однополюсных ключей на одно направление (иногда называемых «тип А») можно использовать 3-й и 4-й способы (и как правило, 6-й), в то время как для однополюсных ключей на 2 направления (тип «В») следует применять остальные способы. Помните также, что во многих случаях нет необходимости подавлять дребезг ключей, ведь ключи не всегда управляют схемами, чувствительными к фронту. Еще один важный момент: хорошие ключи обладают обычно свойством «самоочистки», позволяющим сохранять чистоту контактных поверхностей (разберите один из ключей и вы поймете, что это означает), тем не менее для очистки контактов желательно выбрать параметры схемы таким образом, чтобы через контакты протекал ток не менее нескольких миллиампер. Выбор подходящего материалы для контактов (например, золото), а также специальная конструкция позволяют избежать этой проблемы «сухого переключения», ключ будет хорошо работать даже при нулевом токе.
9.05. Управление цифровой логикой от компараторов и операционных усилителей
Компараторы и операционные усилители, наряду с аналого-цифровыми преобразователями (АЦП), являются обычными устройствами ввода, с помощью которых аналоговые сигналы могут управлять цифровыми схемами. На рис. 9.11 показано несколько примеров.
Рис. 9.11. Управление логикой от компараторов и операционных усилителей.
В первой схеме компаратор управляет ТТЛ непосредственно. Большинство компараторов содержат выходной npn-транзистор с открытым коллектором и заземленным эмиттером, поэтому остается только добавить нагрузочный резистор, подключенный к +5 В. Аналогичную схему можно использовать и для КМОП, подключая резистор к +UCC. Использование двуполярного источника для питания компаратора совсем не обязательно; многие из них предназначены для работы с одним источником (U_ заземлено), а некоторые будут работать даже с одним источником питания 5 В (например, элементы 311, 339, 393 или 372/4).
На второй схеме показан способ управления КМОП-логикой от операционного усилителя с использованием только последовательно включенного токоограничивающего резистора. Диоды защиты входов элементов КМОП образуют эффективные фиксаторы уровней UCC и земли, благодаря чему входной ток не превышает 10 мА. В третьей схеме операционный усилитель переводит npn-транзистор в насыщение, обеспечивая возможность управления нагрузкой ТТЛ; диод служит для предотвращения пробоя перехода база-эмиттер в обратном направлении (~6 В). В этой схеме R1 и D1 можно исключить, заменяя одновременно npn-транзистор на n-канальный МОП-транзистор. Последнюю схему мы особенно не рекомендуем, но она вполне работоспособна. Фиксирующий диод на входе ТТЛ-элемента ограничивает отрицательный перепад до величины падения на диоде ниже земли, а внешний диод ограничивает положительный перепад.
Последовательно включенный резистор предотвращает повреждение схемы, когда на входном транзисторе ТТЛ появляется напряжение обратного пробоя база-эмиттер. Величина резистора выбирается достаточно малой для того, чтобы отвести входной ток на низком уровне ТТЛ, когда на выходе операционного усилителя появится отрицательное напряжение в несколько вольт.
Тактовые входы. Гистерезис. Общее замечание относительно управления цифровой логикой от операционных усилителей. Не пытайтесь управлять тактовыми входами с помощью приведенных выше схем; длительность перехода довольно большая и, когда входной сигнал проходит через напряжение логического порога, в вашей схеме могут появиться выбросы. Если возникает необходимость управлять тактирующими входами (триггеров, сдвиговых регистров, счетчиков, одновибраторов и т. п.), лучше всего использовать компаратор с гистерезисом или поставить на входе вентиль с триггером Шмитта (или любой другой элемент такого типа). Аналогичное замечание относится и к сигналам от транзисторных аналоговых схем. Обратимся к рис. 9.12.
Рис. 9.12. Пороговый детектор с гистерезисом.
Величину резистора R2 выбирают таким образом, чтобы гистерезис составлял 50 мВ. Параллельно резистору обратной связи включен небольшой конденсатор С2, который обеспечивает необходимую скорость переходов и предотвращает появление многократных импульсов при пересечении порога (элемент 311 особенно склонен к этому). Для предотвращения выбросов на входе опорного напряжения важную роль играет конденсатор развязки C1. Во многих случаях опорное напряжение равно нулю и тогда C1 можно не ставить.
9.06. Некоторые замечания, касающиеся логических входов
При разработке ТТЛ-элементов имеется тенденция использовать низкий уровень в качестве активного входного сигнала (как и для их аналогов НС и АС). Например, от низкого уровня срабатывают входы УСТАНОВКА и СБРОС триггеров. Поэтому цепи внешних цифровых входных сигналов почти всегда содержат нагрузочный резистор и, будучи активными, находятся в состоянии низкого уровня (отвод тока); это удобно, поскольку механические ключи и т. п. могут работать с возвратом на землю. Кроме этого, возрастает помехоустойчивость, так как цепь с напряжением около +5 В имеет помехоустойчивость 3 В, а цепь с напряжением около 0 В помехоустойчивость 0,8 В. Эта присущая ТТЛ слабость (низкая помехоустойчивость на низком уровне) станет очевидной, если вы представите себе, что кристалл может интерпретировать отрицательный выброс 0,5 В на своей земляной шине как входной сигнал высокого уровня. Такие выбросы не являются чем-то необычным; их могут порождать короткие импульсы тока в индуктивности шины земли. Дальнейшее обсуждение этого животрепещущего вопроса отложим до разд. 9.11.
Помехоустойчивость КМОП-логики одинакова в любом состоянии, поэтому при управлении от приборов, имеющих открытое состояние, в качестве входных цепей вы можете использовать резисторы, подключенные к питанию или к земле. Чаще используются резисторы, подключенные к земле, хотя подключение к питанию можно увидеть в схемах, в которых управляющий элемент аналогичен ключу с возвратом на землю.
Открытый ТТЛ-вход — это «едва ВЫСОКИЙ». Он располагается на логическом пороге (1,3 В), но, поскольку ток отсутствует, он не открывает входной транзистор. Вам, возможно, довелось видеть «схемы», в которых вход, который должен быть подключен к высокому ТТЛ-уровню, остается незадействованным. Никогда не делайте этого! Это столь же не разумно, сколь и опасно: незадействованный вход имеет нулевую помехоустойчивость, поэтому емкостная связь с любым близлежащим сигналом может привести к коротким всплескам к нижнему уровню на входе. В результате на выходе комбинационных элементов (вентилей) появляются выбросы, что само по себе уже плохо, но в случае триггеров или регистров будет просто недопустимо, поскольку незадействованный вход СБРОС может сработать в непредсказуемые моменты времени. Выбросы, нарушающие работу, иногда невозможно увидеть на осциллографе, они могут иметь характер одиночных импульсов длительностью около 20 не. В большинстве случаев вам, возможно, и удастся «выйти сухим из воды», особенно при небольшой емкости между незадействованным выводом и соседними выводами, тем не менее это не выход из положения; если вы попытаетесь найти причину неработоспособности с помощью логического анализатора или тестовой клипсы, у вас получится новая схема, поскольку дополнительные емкости тестового оборудования почти наверняка приведут к импульсным переходам к нижнему уровню на незадействованных выводах. Кроме того, зачем создавать заведомо ненадежную схему, если вы знаете, как с помощью простых соединений сделать ее надежной? (Конец тирады.)
Неиспользуемые входы. Неиспользуемые входы, которые влияют на логическое состояние ИС (например, вход триггера СБРОС), должны быть подключены соответствующим образом к высокому или низкому уровням. Входы, не оказывающие влияния (например, входы неиспользуемых функциональных частей в том же корпусе), в ТТЛ можно оставить неподключенными, но не в КМОП. Открытые входы незадействованного КМОП-вентиля могут, например, сместиться к логическому порогу, выходы при этом займут положение на половине напряжения питания, т. е. оба выходных МОП-транзистора будут открыты, потребляя значительный ток класса А. Это приведет к чрезмерному потреблению тока и может даже вызвать отказ элементов с большим числом выходных каскадов. Лучше заземлить все входы неиспользуемых функциональных частей в каждом КМОП-кристалле.
В ТТЛ можно не обращать внимания на неиспользуемые функциональные части кристалла, как и на несущественные входы используемых схем. Например, можно оставить неподключенными входы параллельной загрузки счетчика, если вы никогда не активизируете линию ЗАГРУЗКА.
9.07. Компараторы
Мы вкратце уже упоминали о компараторах в разд. 4.23 для того, чтобы проиллюстрировать применение положительной обратной связи (триггер Шмитта) и показать, что специализированные ИС компараторов обладают существенно лучшими характеристиками, чем универсальные операционные усилители, используемые в качестве компараторов. Эти преимущества (малые задержки, высокая скорость нарастания выходного напряжения и сравнительно высокая устойчивость к большим перегрузкам) достигаются ценой полезных для операционных усилителей свойств (в частности, ценой точного управления фазовым сдвигом по частоте). Компараторы не имеют частотной компенсации (разд. 4.33) и не могут использоваться в качестве линейных усилителей.
Компараторы играют важную роль при сопряжении аналоговых (линейных) входных сигналов с миром цифровой техники. В данном разделе мы подробно рассмотрим компараторы, уделяя основное внимание их выходным характеристикам, некритичности в отношении к напряжению источника питания и способам подачи сигналов и защиты входов.
Напряжение питания и выходы. Большинство компараторов имеют выход с открытым коллектором, предназначенный для запуска логических входов (разумеется, с резистором подвески на шину питания) и сильноточных/высоковольтных нагрузок. Элемент 311, например, может управлять нагрузкой, подключенной к источнику питания до 40 В и потребляющей ток до 50 мА, а элемент 306 может работать с еще большим током. Эти компараторы имеют вывод земли в дополнение к выводам отрицательного и положительного питания, поэтому напряжение на нагрузке достигает уровня земли независимо от напряжения питания. Компараторы повышенного быстродействия (521, 527, 529, 360, 361, Am686, СМР-05, LT1016 и VC7695/7) в большинстве случаев имеют выходные каскады с активной нагрузкой. Они предназначены для управления 5-вольтовой цифровой логикой и обычно имеют 4 вывода питания — U+, U_, UKK (+5) и земля.
Следует обратить внимание на то, что для работы большинства компараторов необходимо использовать источники и положительного и отрицательного напряжения даже в том случае, если на входе никогда не появляется отрицательный сигнал. Примерами могут служить элементы 306, 710 и 711, а также компараторы с активной подгрузкой, перечисленные выше. Необходимость иметь источник отрицательного напряжения для обеспечения работы компаратора в аппаратуре, использующей только положительное напряжение, доставляет определенные неудобства. В связи с этим полезно знать характеристики компараторов, которые могут питаться лишь от положительного напряжения (например, 311, 319, 339, 393, 365, СА3290, НА4905, СМР-01, СМР-02, LT1016, AD790 и TLC372/4). Действительно, они могут работать с одним источником питания 5 В; это существенное достоинство для цифровых систем. При работе от одного источника +5 В компараторы 339, 393, 365, СА3290, НА4905, LT1017/18, AD790 и TLC372/4 имеют входной диапазон в режиме синфазного сигнала, достигающий уровня земли. Они созданы специально для работы с одним источником питания и за исключением элементов 4905 и 790 имеют всего два вывода питания (U+ и земля); при работе от расщепленного питания выход будет опускаться до U_. Кроме того, некоторые из них обладают довольно необычным свойством — они способны работать от одного источника питания с напряжением лишь +2 В. Говоря об источниках питания, следует упомянуть, что некоторые компараторы спроектированы для работы при малом токе питания в общем случае, менее 0,5 мА; примерами могут служить компараторы LP311, LP339, TLC373/4, TLC339/393, TLC3702/4, СМР-04, LT1017/8, МС14574 и LP365. Последние два элемента представляют собой счетверенные компараторы с программируемым рабочим током. Малая мощность достигается ценой низкого быстродействия с временем реакции порядка нескольких микросекунд. Для полного знакомства с маломощной электроникой обратитесь к гл. 14; в табл. 14.8 перечислены маломощные компараторы.
Входы. Входные цепи компараторов требуют некоторых мер предосторожности общего характера. Везде, где это возможно, следует использовать гистерезис (разд. 4.24), в противном случае возможны ошибочные переключения. Для того чтобы понять причины, вообразите себе компаратор без гистерезиса, в котором дифференциальное входное напряжение проходит через уровень 0 В, медленно изменяясь будучи аналоговым колебанием. Разница на входах всего в 2 мВ приведет к изменению состояния выхода с временем переключения менее 50 нc. Неожиданно в вашей схеме возникают быстрые логические перепады амплитудой 3000 мВ, сопровождаемые импульсами тока в цепях питания и т. п. Можно просто чудом избежать наложения этих быстрых колебаний на входной сигнал, ведь достаточно всего нескольких милливольт для того, чтобы разность на входе превысила 2 мВ и возникли многократные переходы и колебания. Именно по этой причине для создания хорошо работающей чувствительной схемы с компаратором необходим соответствующий гистерезис (с небольшим конденсатором параллельно резистору обратной связи) в сочетании с тщательно продуманной трассировкой и развязками по питанию. Старайтесь вообще избегать управления входами компаратора высокоимпедансными сигналами; используйте выход операционного усилителя. Если быстродействие не требуется, старайтесь также избегать применения быстродействующих компараторов, которые обостряют все эти проблемы. Некоторые компараторы доставляют в этом отношении больше беспокойств, чем другие; мы столкнулись с массой трудностей, применяя превосходный во всех других отношениях компаратор 311.
Еще одно предостережение относительно входов. Некоторые компараторы обладают весьма ограниченным диапазоном напряжений на дифференциальных входах, некоторые типы всего 5 В (например, СМР-05, 685-7 и VT969/7). В этих случаях для защиты входов возможно понадобятся фиксирующие диоды, поскольку избыточное напряжение на дифференциальных входах приведет к уменьшению h21э и вызовет постоянные ошибки смещения входа, а в ряде случаев выход из строя перехода база-эмиттер входного каскада. Универсальные компараторы в этом отношении лучше; типовое значение диапазона напряжений на дифференциальных входах составляет ± 30 В (например, 311, 393, LT1011 и т. п.).
Одной из важных особенностей входов компараторов является входной ток смещения и его зависимость от дифференциального входного напряжения. Во входных каскадах большинства компараторов используются биполярные транзисторы с входными токами смещения от десятков наноампер до десятков микроампер. Входной каскад представляет собой дифференциальный усилитель с большим усилением, поэтому при переходе компаратора через порог ток смещения изменяется. Кроме того, внутренние схемы защиты могут вызвать еще большие изменения тока смещения в нескольких вольтах от порога. На рис. 9.13 показана типовая зависимость тока смещения (для СМР-02).
Рис. 9.13. Зависимость входного тока смещения от дифференциального входного напряжения для компаратора СМР-0,2. (С разрешения фирмы Precision Monoliths, Inc.) Uи = ±15 В; Токр = 25 °C.
Небольшая ступенька тока при 0 В (дифференциальное напряжение) представляет собой в действительности плавный переход примерно при 100 мВ; это соответствует изменению напряжения, которое необходимо для полного переключения входного дифференциального усилительного каскада из одного состояния в другое. Для тех применений, где необходимо обеспечить работу при крайне низком входном токе, используются компараторы с полевыми транзисторами на входе.
Примерами могут служить сдвоенные компараторы с полевыми МОП-транзисторами на входе СА3290, TLC372, TLC3702 и TLC393, а также LF311 с полевым транзистором с p-n-переходом, вариант известного компаратора 311. Последний имеет максимальный входной ток 50 пА (311–250 нА) при почти полном сохранении напряжения смещения и быстродействия. Там, где необходимы характеристики какого-то конкретного компаратора, но при более низком входном токе, на входе целесообразно добавить повторитель с согласованной парой полевых транзисторов.
И последнее замечание относительно входных характеристик: температурные градиенты на кристалле, обусловленные рассеиванием мощности на выходных каскадах, могут ухудшить указанное в спецификации напряжение смещения входов. В частности, в связи с тем что тепло, генерируемое на выходном каскаде и зависящее от состояния, может привести к переключению входа, для входных сигналов вблизи 0 В (дифференциальное напряжение) возможен эффект «урчания двигателя» (медленные колебания на выходном каскаде).
Общее быстродействие. Обычно полагают, что компаратор представляет собой идеальную переключательную схему, в которой любые сколь угодно малые изменения полярности дифференциального входного напряжения приводят к мгновенному изменению на выходе. В действительности же для малых входных сигналов компаратор ведет себя как усилитель, а его переключательные характеристики зависят от усилительных свойств на высоких частотах. В результате незначительные перегрузки по входу (т. е. при сигналах, больших, чем это необходимо для насыщения на постоянном токе) приводят к увеличению времени распространения и, как правило, к затягиванию фронта и спада на выходе. В технических данных на компараторы обычно имеется графа «время отклика для различных перегрузок по входу». Некоторые значения этого параметра для компаратора 311 приведены на рис. 9.14.
Рис. 9.14. Время отклика компаратора LM311 при различных выходных перегрузках. (С разрешения фирмы National Semiconductor Corp.) Uи = ±15 В; Токр = 25 °C.
Обратите внимание на снижение параметра в конфигурации, когда выходной транзистор используется как повторитель, т. е. без усиления. Увеличение входного напряжения ускоряет процессы, поскольку снижение коэффициента усиления на высоких частотах компенсируется большим сигналом. Кроме того, увеличение внутренних токов усилителя позволяет ускорить заряд внутренних емкостей.
В табл. 9.3 приведены характеристики большинства современных компараторов.
9.08. Управление внешней цифровой нагрузкой от КМОП- и ТТЛ-элементов
Управление с помощью ТТЛ- и КМОП-элементов устройствами релейного типа, такими, как лампы (светодиоды, СИД), реле, устройства отображения и даже нагрузки с переменным током, не доставит вам особых трудностей. На рис. 9.15 представлены некоторые способы управления.
Рис. 9.15. Управление нагрузками от логических уровней.
На схеме а показан стандартный способ управления СИД-индикатором от 5-вольтовой логики. ТТЛ-элементы лучше работают на отводе тока, чем на отдаче, поэтому СИД подключается к +5 В; для КМОП-элементов СИД можно подключать либо к U+, либо к земле. СИД ведет себя как диод с прямым падением напряжения от 1,5 до 2,5 В при типовых рабочих токах от 5 до 20 мА; используя некоторые самые современные высокоэффективные СИД, вы получите хорошую светоотдачу всего при нескольких миллиамперах (фирма Stanley выпускает ослепительно яркие приборы). Вместо дискретных СИД и резистора можно использовать СИД с интегральным токоограничивающим резистором (или регулятором тока), которые выпускаются многими фирмами; посмотрите каталоги фирм Dialight, General Instrument, Siemens и Hewlett-Packard.
На схеме б показано, как управлять 5-вольтовым слаботочным реле с помощью логических элементов, отводя ток по типу схемы а; диод шунтирует индуктивные выбросы. Реле, показанное на схеме, выполнено в стандартном корпусе DIP с сопротивлением обмотки 500 Ом (потребляемый ток составляет 10 мА, что соответствует возможностям большинства элементов 5-вольтовой логики). Схемы в, г и д предназначены для управления высоковольтной нагрузкой. На схеме в вентиль 74LS26 с открытым коллектором, работающий от источника 15 В, управляется 12-вольтовым реле, а на схеме г «сдвоенный периферийный формирователь» 75451 управляет некой неопределенной нагрузкой в диапазоне напряжений до 30 В и токов до 300 мА. Выпускаются также аналогичные приборы с открытым коллектором, предназначенные для работы с напряжением 80 В и даже с большими, чем в предыдущем случае, токами; познакомьтесь с серией DS3600, выпускаемой фирмой National, и с серией мощных формирователей фирмы Sprague (UCN/UDN/ULN), включающей превосходные октальные формирователи в корпусе DIP. В схеме д мы использовали низкопороговый n-канальный мощный полевой транзистор; благодаря высокому входному импедансу транзистора такой способ управления особенно удобен. При управлении ТТЛ-уровнями для обеспечения нормальных условий работы лучше использовать резисторную подвеску к питанию, поскольку минимальный гарантированный в ТТЛ-элементах высокий уровень (2,4 В) является слишком низким.
Рассмотренные выше способы могут оказаться неприемлимыми для элементов НС, LS или 74С из-за ограничений по выходу (отводящий ток составляет соответственно 5,8 и 3,5 мА). Для управления большими СИД можно воспользоваться элементами типа 74AS1004 (сшестеренный инвертор с током отвода или отдачи 48 мА). При управлении сильноточной нагрузкой от логических элементов следует позаботиться о массивной земляной шине для подвода земли к кристаллу, поскольку ток нагрузки возвращается на землю источника питания через кристалл. В некоторых случаях целесообразно использовать отдельный путь возврата земли.
На схеме е показано применение npn-транзистора для переключения сильноточной нагрузки с помощью 5-вольтовой логики. Для коммутации больших токов используйте второй транзистор, как показано на схеме ж. На схемах з, и представлен способ управления нагрузками, подключенными к отрицательному полюсу источника питания. Высокий выходной уровень открывает pnp-транзистор и напряжение насыщения на коллекторе становится выше потенциала земли на величину падения напряжения на диоде. Ток эмиттера, а, следовательно, и максимальный ток коллектора (нагрузки), в схеме з определяется резистором (или положительным предельным током вентиля). В улучшенной схеме и в качестве буфера используется npn-повторитель; диод, включенный последовательно с выходом, удерживает нагрузку от перепадов выше земли. В обоих случаях максимальный ток нагрузки равен току эмиттера pnp-транзистора. Аналогичные схемы выпускаются в интегральном исполнении; они имеют КМОП/ТТЛ-совместимые входы и высоковольтные выходы с нагрузочной способностью по току до нескольких сотен миллиампер. Попробуйте применить элементы DS3687 (300 мА, — 56 В) фирмы National и распространенную серию UDN фирмы Sprague. В том случае когда вы используете слаботочную логику 4000В/74С с выходным током едва достигающим миллиампера, следует предусмотреть специальный мощный формирователь, даже для светодиода. На схеме к показан надежный сшестеренный буфер, управляющий светодиодом. Этот элемент может работать с отводом тока от 5 до 50 мА при напряжении питания от 5 до 15 В соответственно (нагрузочная способность выхода увеличивается с увеличением напряжения питания). В схемах л, м используются еще более мощные формирователи — 40107, содержащий мощный n-канальный МОП-транзистор на выходе с открытым стоком (отводящий ток составляет от 16 до 50 мА при напряжении питания от 5 до 15 В, соответственно), и DS3632 с мощным npn-формирователем по схеме Дарлингтона, рассчитанным на ток 300 мА. Можно, разумеется, всегда использовать и дискретные внешние транзисторы, как в схемах ж, и, но их применение ограничено базовым током менее миллиампера. Дискретный n-канальный МОП-транзистор в схеме д особенно хорошо работает со «слабенькими» КМОП-элементами.
Для управления удаленной нагрузкой или нагрузкой с независимой системой заземления лучше всего использовать оптрон. Этот прибор содержит светодиод (на стороне формирователя), который освещает фотоприемник (на стороне нагрузки). Оптроны выпускаются на различные скорости с различными конфигурациями входов/выходов (логический вход или просто светодиод; логический выход, выход с насыщенным транзистором (или схема Дарлингтона), выход с МОП-транзистором или выход с тиристором или симистором; см. рис. 9.26).
Типичным примером является распространенный элемент 4N36, показанный на рис. 9.15, н; этот элемент содержит простой светодиод на входе, npn-транзистор на выходе и может работать при напряжении 2500 В с временем переключения 4 мкс. Минимальный коэффициент передачи по току составляет 1.0, поэтому остается только пропустить через светодиод ток, равный максимальному выходному току. Существует ряд оптронов, которые используют логические уровни на входе и на выходе. Примером может служить оптрон 74OL6000 фирмы General Instrument; уровни на входе и выходе соответствуют уровням LS, время распространения составляет 60 нс (15 МГц), напряжение изоляции — 2500 В. В больших количествах его можно приобрести за 3 долл.
Наиболее простым способом управления нагрузкой переменного тока является способ, основанный, как показано на схеме о, на применении твердотельного реле. Реле этого типа представляет собой симистор с оптической связью с логическим входом и нагрузочной способностью по току от 1 до 40 А при коммутации нагрузки с переменным напряжением 115 В. Слаботочные реле в большом разнообразии выпускаются в корпусах типа DIP (например, серия «интегральных ключей» фирмы International Rectifier), в то время как более мощные реле выпускаются в виде прямоугольных блоков со сторонами, равными примерно 2 дюймам, предназначенных для установки на шасси. С другой стороны, нагрузки переменного тока можно коммутировать с помощью обычного реле, управляемого логическим элементом. При этом, однако, обязательно изучите технические данные, поскольку большинство реле, управляемых логикой, не способны коммутировать большие нагрузки переменного тока и вам понадобится логическое реле для того, чтобы управлять вторым более мощным реле. Почти во всех реле используется коммутация по типу «перехода через нуль» (или «нулевого напряжения»), которая в действительности является комбинацией включения по нулевому напряжению и выключения по нулевому току; это весьма полезная особенность, она предотвращает попадание выбросов и помех в шину питания. Много «мусора» на силовую шину переменного тока попадает от симисторных контроллеров, в которых коммутация осуществляется не в моменты перехода через нуль; таковы, например, регуляторы света с фазовым управлением для осветительных ламп, термостатов и двигателей. В качестве альтернативы оптической связи, использованной в схеме о, иногда можно встретить импульсный трансформатор для подвода импульсов запуска к симистору или тиристору.
Для управления 7-сегментными цифровыми индикаторами проще всего использовать элементы, объединяющие дешифратор и формирователи. Разнообразие их поразительно, — с формирователями для СИД и для жидкокристаллических индикаторов, с возможностями отвода и отдачи тока и т. п. Типичными примерами являются элементы «регистр/дешифратор/формирователи» типа 74НС4511 (СИД с общим катодом) и 74НС4543 для жидкокристаллических индикаторов. Более подробно об этом будет изложено в разделе по оптоэлектронике (разд. 9.10).
9.09. Сопряжение n-МОП БИС
Большинство схем большой и очень большой степени интеграции (БИС, СБИС) изготавливаются сейчас с использованием КМОП-технологии; они обладают такой же привлекательной способностью к сопряжению, как 5-вольтовые логические КМОП-вентили, и многими другими возможностями кристаллов средней степени интеграции (СИС), рассмотренными выше. Однако долгое время кристаллы БИС и СБИС изготавливались только на n-канальных МОП-транзисторах в режиме обогащения для того, чтобы упростить технологический процесс и получить более высокую плотность. Такая n-МОП-логика получила широкое распространение, поэтому важно знать, каким образом можно осуществить сопряжение n-МОП-логики и КМОП/ТТЛ и как обеспечить связь входов/выходов n-МОП-логики с внешними дискретными схемами. Большинство кристаллов n-МОП БИС совместимы с ТТЛ, тем не менее здесь есть несколько тонких моментов, которые следует рассмотреть.
Выходы n-МОП-элементов. На рис. 9.16 показана входная цепь интегральной схемы на n-канальных МОП-транзисторах, предназначенная для работы с ТТЛ. T1 — инвертор, а Т2 — истоковый повторитель с малыми геометрическими размерами, задающий необходимый ток от шины питания (резистор занял бы слишком много места, поэтому в качестве стоковой нагрузки всегда используется МОП-транзистор); часто используется и другой символ для изображения Т2. В современных схемах кремниевых вентилей пороговое напряжение входного транзистора находится в диапазоне от 1 до 1,5 В, поэтому вход можно непосредственно подключать к ТТЛ или КМОП-логике. В некоторых старых схемах порог может оказаться в диапазоне от 2 до 3 В, в этих случаях для управления от ТТЛ лучше использовать резистор 1-10 КОм, подключенный к шине питания; для КМОП обычно этого не требуется.
Рис. 9.16.Входная схема n-МОП-логики в режиме обогащения.
Выходы n-МОП-элементов. Выходная ступень 5-вольтовой n-МОП-логики показана на рис. 9.17.
Рис. 9.17. Выходная схема n-МОП-логики.
T1 представляет собой ключ, а Т2 — истоковый повторитель. Для того чтобы установить на выходе нижний уровень на затвор транзистора T1 подается напряжение +5 В; напряжение на выходе при этом будет ниже 0,5 В даже при отводе тока в несколько миллиампер.
Ситуация в состоянии высокого выходного уровня несколько ухудшается: при минимальном высоком выходном ТТЛ-уровне +2,4 В напряжение затвор-исток составляет всего 2,6 В, что приводит к сравнительно высокому значению сопротивления Rвкл; для более высоких выходных напряжений ситуация быстро ухудшается.
Кривые на рис. 9.18 иллюстрируют это положение.
Рис. 9.18. Типовые выходные характеристики по току n-МОП-элементов. 1 — ток отдачи; 2 — ток отвода; 3 — точка запуска схемы Дарлингтона.
В результате нагрузочная способность n-МОП-выхода составляет всего 0,2 мА (отдача тока) при напряжении на выходе +2,4 В. Это вполне допустимо для управления ТТЛ-входами, но выходит за пределы допустимого для 5-вольтовой КМОП-логики (используйте резистор, подключенный к шине питания, или вставьте вентиль НСТ или ACT); подобная неприятная ситуация изображена на рис. 9.19.
Рис. 9.19.
Для работы СИД с уровнями токов мультиплексируемого устройства отображения (25–50 мА во включенном состоянии) выход n-МОП-элемента должен отдавать ток около 1 мА при +4,1 В. Но это невозможно, поскольку напряжение UЗИ должно при этом быть всего 0,9 В, а может быть, даже ниже порогового напряжения полевого транзистора. Вспомните еще, что все схемы 5-вольтовой логики должны функционировать при отклонении напряжения питания ±10 %, т. е. при напряжении +4,5 В. Для управления светодиодами (или другими сильноточными приборами) от n-МОП-элементов желательно использовать схемы, показанные на рис. 9.20.
Рис. 9.20. Управление нагрузками с выходов n-МОП-элементов.
В первой схеме низкий выход n-МОП-элемента отбирает ток 2 мА, переводя pnp-транзистор в состояние полной проводимости. На второй схеме npn-транзистор схемы Дарлингтона переключается в открытое состояние малым выходным током n-МОП-элемента, находящегося в состоянии высокого уровня. В этой схеме ВЫСОКИЙ выход фиксируется на уровне падения напряжения на двух диодах выше земли, что может показаться не совсем «дружелюбным» обстоятельством, но оказывается, что выходы n-МОП-элементов проектируются с таким расчетом, чтобы их можно было таким образом закорачивать на землю; причем достаточно малые выходные токи получают возможность управлять базой транзистора с заземленным эмиттером в схеме Дарлингтона без нарушения работоспособности. Типовой n-МОП-выход может отдавать 2 Μ А при +1,5 В в базу схемы Дарлингтона, при этом способность выхода отводить ток для таких схем, как «сшестеренная» матрица Дарлингтона, составит 250 мА при 1 В. В серию ULN фирмы Sprague входят несколько сшестеренных и октальных матриц Дарлингтона в корпусах типа DIP.
9.10. Оптоэлектроника
В двух предыдущих главах мы использовали светодиоды и цифровые индикаторные приборы на светодиодах в различных примерах схем по мере необходимости. Светодиоды относятся к обширной области оптоэлектроники, которая включает в себя и устройства отображения на основе других технологий, а именно, жидких кристаллов, люминесцентных и газоразрядных приборов. Эта область включает также оптические электронные устройства, которые используются не только как индикаторы и дисплеи; к ним относятся оптроны, твердотельные реле, датчики положения («прерыватели»), диодные лазеры, матричные детекторы («приборы с зарядовой связью», ПЗС), электронно-оптические преобразователи и большое разнообразие компонентов, используемых в волоконной оптике.
Хотя мы будем и дальше использовать в качестве примеров различные «волшебные» приборы по мере их необходимости, нам представляется уместным обратиться к области оптоэлектроники, поскольку с ней связаны некоторые обсуждаемые здесь проблемы сопряжения логики.
Индикаторы. Электронные приборы выглядят более привлекательно и проще в применении, если на них есть разноцветные лампочки. В этой области светодиоды полностью вытеснили все предыдущие технологии. Вы можете приобрести красные, желтые и зеленые индикаторы, причем в различных корпусах, наиболее удобными из которых являются лампы для монтажа на панели и различные типы индикаторов для монтажа на печатной плате. Каталоги представляют поразительное их разнообразие по размерам, цвету, светоотдачи и углу излучения. Последняя характеристика требует некоторого пояснения: в так называемые «заливные» светодиоды вводится специальное рассеивающее вещество, поэтому их свечение в широком диапазоне угла зрения одинаково; во многих случаях это хорошо, но за это вы расплачиваетесь яркостью.
С электрической точки зрения светодиод представляет собой обычный диод с прямым падением напряжения около 2 В (при изготовлении светодиодов используют фосфид арсенида галлия, обладающий более широкой запрещенной зоной и, следовательно, большим падением напряжения в прямом направлении, чем кремний). Типичные «заливные» светодиоды панельного типа дают хорошее свечение при прямом токе 10 мА; в углубленной части прибора можно обойтись обычно 2÷5 мА, особенно если используются светодиоды с малым углом излучения.
На рис. 9.21 показаны способы управления индикаторами на светодиодах.
Рис. 9.21. Управление светодиодными индикаторами.
Большинство схем очевидно, однако заметьте, что, поскольку биполярные ТТЛ-элементы имеют небольшой ток отдачи, схему приходится строить так, чтобы низкий логический уровень включал светодиод; для сравнения отметим, что КМОП-семейства симметричны относительно нагрузочной способности по току. n-МОП-схемы, как и биполярные ТТЛ-схемы, обладают слабой отдачей тока, к тому же их способность к отводу тока весьма ограничена, поэтому следует использовать буфер (например, вентиль НСТ) или дискретный полевой транзистор. Учтите также, что некоторые индикаторы на светодиодах выпускаются с внутренними токоограничивающими резисторами (или даже с внутренней схемой фиксации тока); в этих случаях внешний резистор можно не ставить.
Можно использовать небольшие матрицы индикаторов, наборы из 2, 4 или 10 светодиодов в ряд, предназначенные для монтажа на печатной плате. Последние используются чаще всего для вывода данных в виде линейных гистограмм. Они выпускаются как для вертикального монтажа, так и для монтажа под прямым углом. Можно также использовать индикаторы для монтажа на панели, в которых объединены красные и зеленые светодиоды в одном корпусе. Панель при этом становится выразительнее, — плохие и хорошие условия отображаются разными цветами. Мы используем индикаторы на светодиодах, выпускаемые такими фирмами, как Dailight, General Instrument, HP, Panasonic, Siemens и Stanley. Последняя специализируется на лампах необычайно высокой эффективности; вы можете узнать эти приборы на выставках по электроники по изумленным взглядам посетителей.
Дисплеи. Дисплеем называют оптоэлектронный прибор, который может отобразить цифру (цифровой дисплей), 16-ричную цифру, т. е. 0–9 и A-F (16-ричный дисплей) или любую букву или цифру (буквенно-цифровой дисплей). В настоящее время доминирующими технологиями производства дисплеев являются светодиоды и жидкие кристаллы. Жидкокристаллические дисплеи (ЖКД) — это новейшая технология, которая обладает существенными преимуществами для батарейного оборудования, поскольку имеет очень низкую мощность рассеивания, для оборудования, находящегося на открытом воздухе или в условиях высокой внешней освещенности, для создания дисплеев с заказными формами и символами и дисплеев с большим числом цифр и букв. С другой стороны, светодиоды несколько проще в применении, особенно, если вам нужно всего несколько цифр или букв. Кроме того, они выпускаются трех цветов и хорошо выглядят в условиях пониженной освещенности, где их показания легче считываются, чем показания ЖКД.
В области дисплеев на большое число символов, скажем, на одну или две строки текста, с ЖКД конкурируют газоразрядные (плазменные) дисплейные панели, особенно в том случае, когда требуется ясность и контрастность. Вместе с тем плазменные дисплеи потребляют большую мощность, поэтому для батарейного оборудования лучше использовать ЖКД.
Дисплеи на светодиодах. На рис. 9.22 показаны разновидности дисплеев на светодиодах.
Рис. 9.22.
Простейшим является 7-сегментный дисплей; он может отображать цифры 0–9 и шесть букв расширения (A-F), хотя последние отображаются несколько неуклюже (AbcdEF). Вы можете приобрести односимвольные 7-сегментные дисплеи самых разных размеров и дисплеи в виде «палочек» по 2, 3, 4 или 8 символов (обычно они предназначены для мультиплексирования — символы отображаются по одному быстро следуя друг за другом). Односимвольные дисплеи имеют выводы для 7 сегментов и общего электрода; таким образом, возможны две разновидности дисплеев — с общим катодом и с общим анодом. В дисплеях на несколько символов выводится общий электрод каждого символа, но соответствующие сегменты объединяются; это, как раз то, что нужно для мультиплексирования.
16-сегментные дисплеи и матричные дисплеи на 5x7 точек выпускаются в двух вариантах: «тупые» дисплеи, в которых выведены сегменты и общий электрод (также как и в 7-сегментных дисплеях) и «умные» дисплеи, которые принимают на себя всю тяжелую работу по дешифрации и формированию. Не будем больше заниматься обобщениями, рассмотрим лучше несколько примеров (рис. 9.23).
Рис. 9.23. Управление дисплеем на 7-сегментном светодиодном индикаторе, а — одноцифровой; б — мультиплексированный.
На первой схеме показан способ управления дисплеем на одном 7-сегментном светодиодном индикаторе с общим катодом. Элемент `НС4511 — это элемент «регистр/дешифратор/формирователь с преобразованием двоично-десятичного кода в 7-сегментный»; он способен отдавать ток около 15 мА при активном выходе +4,5 В. Последовательные резисторы гарантируют, что ток сегментов будет ограничен указанной величиной при прямом падении напряжения на диодах 2 В. Можно использовать матрицу из одинаковых резисторов в удобном корпусе с однорядным расположением выводов.
Если вы используете принцип мультиплексирования, т. е. высвечиваете только одну цифру за одно обращение, вам понадобится всего один кристалл дешифратора/формирователя, даже при отображении нескольких цифр. На рис. 9.23, б показан принцип мультиплексирования; используется БИС 4-разрядного (десятичных разрядов) счетчика с встроенными 7-сегментными мультиплексируемыми формирователями. Элемент 74С925 предоставляет свои сегментные формирователи (активный высокий уровень с большой нагрузочной способностью) по очереди в распоряжение каждой цифре, одновременно устанавливая активный высокий уровень на соответствующем цифровом выходе A-D. Остальная часть схемы не требует пояснений, за исключением, быть может, той неприятности, что цифровые выходы прижимаются к уровню выше земли, соответствующему падению напряжения на диоде. К счастью, 74С925 допускает подобное включение, поскольку цифровые выходы имеют буферную и токоограничивающую цепь.
На рис. 9.24, а показано, как управлять одним 16-ричным дисплеем, выполненным в виде точечной матрицы 5x7.
Рис. 9.24. Интегральные дисплеи, а — односимвольный, точечная матрица; б — 4-символьный, 16-сегментный, адресуемый.
Элемент HP 5082–7340 является примером «умного» дисплея с встроенными регистром, дешифратором и формирователем. Все, что вам надо сделать, — это выставить 4-разрядные данные, подождать не менее 50 нс и затем активизировать регистр высоким уровнем. На рис. 9.24, б показан один из «интеллектуальных» (умнее «умного»?) дисплеев фирмы Siemens — 4-символьный набор на 16-сегментных дисплеях. Этот дисплей предназначен для того, чтобы работать с микропроцессором по типу памяти; мы еще вернемся к этому в следующих двух главах. Короче говоря, вы выставляете любой 7-разрядный символ и его позицию (2-разрядный адрес), затем подаете WR' (запись) на время, гарантирующее активизацию кристалла. Данные запоминаются внутри элемента, затем осуществляется соответствующее изменение позиции для отображения очередного символа. На рис. 9.25 показан набор отображаемых символов.
Рис. 9.25. Коды 16-сегментного дисплея DL-3416 фирмы Siemens.
(С разрешения фирмы Siemens Components, Inc.)
Если вы хотите использовать «тупой» дисплей (возможно, то, что вам надо, недоступно интеллектуальному дисплею), но вы уже избалованы простотой интеллектуальных дисплеев, можно просто применить кристалл типа 8-разрядного элемента ICM7218/28 фирмы Intersil, который выглядит со стороны микропроцессора как память и который управляет «тупым» светодиодным дисплейным набором от соответствующих сегментных и цифровых формирователей. Другой способ состоит в том, чтобы дать возможность микропроцессору делать всю «умную» работу, используя разряды своих «параллельных портов» для управления соответствующими линиями. Это станет для вас более понятным, после того как вы усвоите две главы о микропроцессорах (гл. 1, 2).
Жидкокристаллические и газоразрядные дисплеи. Многое из того, что мы уже рассказали о дисплеях на светодиодах, применимо и к ЖКД. Однако существует несколько важных отличий. Вот одно из них: для управления ЖКД необходимо использовать переменное напряжение, иначе их жидкие нити разрушаются. Поэтому формирователи ЖКД обычно генерируют прямоугольные сигналы, синхронизированные с сигналом подложки ЖКД. Примером может служить `НС4543, жидкокристаллический родственник светодиодного элемента `НС4511 типа «регистр/дешифратор/формирователь».
Другое отличие состоит в том, что вам не часто приходится видеть односимвольные дисплеи на жидких кристаллах. Они выпускаются в виде больших панелей, которые отображают одну или две строки текста. К счастью, производители достаточно ясно представляют себе, как можно получить довольно сложные вещи, поэтому они поставляют совершенные дисплеи, которые более, чем интеллектуальны — просто на уровне гения. В общем вы обращаетесь к этим дисплеям через микропроцессор и они превращаются в своего рода блок памяти (как и в случае дисплея на рис. 9.24). Отображаться будет все, что бы вы ни записали. Некоторые еще более фантастические дисплеи пошли даже дальше, они способны хранить несколько сообщений и осуществлять связь через последовательные порты. Загляните в EMM, чтобы узнать производителей (см. библиографию).
Газоразрядные дисплеи выделяются своими красивыми красно-оранжевыми символами; вы можете их увидеть на некоторых дорогостоящих портативных компьютерах. Для работы газоразрядных дисплеев необходимы высоковольтные формирователи и производители обычно предусматривают средства формирования. Вы можете приобрести одно- и многоцифровые дисплеи, а также большие многосимвольные панели с памятью и удобным интерфейсом. Примером последнего может служить многостроковый дисплей фирмы Cherry, снабженный памятью с аварийным батарейным питанием, которая может хранить 512 сообщений, осуществлять расслоение данных, поступающих в реальном масштабе времени, и позволяет производить редактирование содержимого. Возможно, вы называете такие устройства не дисплеями, а компьютерами, которым положено иметь дисплей!
Оптроны и реле. Излучатель на светодиоде, размещенный в непосредственной близости от фотодетектора, образует очень полезный предмет, известный как оптопара или оптрон. В двух словах, оптроны позволяют обеспечить обмен цифровыми сигналами (а иногда и аналоговыми) между схемами с раздельной землей. Такая «гальваническая развязка» является хорошим способом избежать земляных контуров в оборудовании, которое управляет удаленной нагрузкой. Это особенно важно в схемах, которые взаимодействуют с силовыми фидерами переменного тока. Например, вам понадобилось включать и выключать нагреватель по цифровому сигналу, вырабатываемому микропроцессором; в этом случае вы, наверное, будете использовать «твердотельное» реле, состоящее из светодиода, подключенного к сильноточному симистору. Некоторые импульсные источники питания, управляемые переменным током, (например, источник питания, используемый в IBM РС-АТ), используют в изолированном контуре обратной связи оптрон (см. разд. 6.19). Точно также проектировщики высоковольтных источников питания используют иногда оптроны для того, чтобы передать сигнал в схему с высоким напряжением.
Вы можете воспользоваться достоинствами оптронов даже в менее экзотических ситуациях. Например, оптический полевой транзистор позволит вам переключить аналоговый сигнал без всякой инъекции заряда; то же самое справедливо для схем квантования с запоминанием и интеграторов. Использование оптронов позволит избежать треволнений при управлении контурами с индустриальными токами, приводами молотов и т. п. Наконец, гальваническая развязка оптронами пригодится в прецизионных и низкоуровневых схемах. Трудно, например, воспользоваться всеми достоинствами 16-разрядного АЦП, поскольку цифровые выходные сигналы (и помехи на цифровой земле, к которой вы подключаете выход преобразователя) возвращаются на «передний край» аналоговой части. Вы можете освободить себя от всех забот, связанных с помехами, применив оптическую развязку в цифровой части.
Оптроны обычно обеспечивают изоляцию в 2500 В (среднеквадратичное), сопротивление изоляции 1012 Ом и емкостную связь между входом и выходом менее пикофарады.
Прежде чем обратиться к реальным оптронам, бросим беглый взгляд на фотодиоды и фототранзисторы. Видимый свет вызывает ионизацию в кремнии и образование пар зарядов в открытой базовой области; эффект от этого точно такой же, как от внешнего базового тока. Существуют два способа использования фототранзистора:
1. В качестве фотодиода, подключенного только к базовому и коллекторному выводам; в этом случае фототок будет составлять несколько процентов от тока светодиода. Фотодиод генерирует фототок независимо от того, прикладываете вы напряжение смещения или нет; следовательно, вы можете подключать его прямо к суммирующему переходу операционного усилителя (виртуальная закоротка) или обеспечить обратное смещение (рис. 9.26 а, б).
Рис. 9.26. а, б
2. Если вы используете ток фотодиода как базовый ток, то получите обычное усиление тока с результирующим током IКЭ, который, как правило в 100 раз больше базового; в этом случае, необходимо сместить транзистор, как показано на рис. 9.26, в. За увеличенный ток приходится платить более медленным откликом, что обусловлено открытой базовой цепью. Для повышения быстродействия можно добавить резистор с базы на эмиттер; однако это дает пороговый эффект, поскольку фототранзистор не переходит в состояние проводимости до тех пор, пока ток фотодиода не достигнет величины, достаточной для получения напряжения UБЭ на внешнем базовом резисторе.
В цифровых схемах порог может оказаться полезным, но в аналоговых приводит к нежелательной нелинейности. На рис. 9.26, г-у показаны типичные примеры применения различных оптронов, с которыми вам, возможно, доводилось встречаться. Самые первые (и самые простейшие) представлены элементом 4N35, пара светодиод — фототранзистор с коэффициентом передачи по току 40 % (мин) и большим временем выключения 5 мкс при нагрузке 100 Ом. На рисунке показан способ его использования: вентиль и резистор образуют формирователь с ограничением по току 8 мА, а относительно большой коллекторный резистор гарантирует переключение выхода в пределах логических уровней с насыщением.
Рис. 9.26. в-у. Оптроны.
Заметьте, что применен инвертор с триггером Шмитта; здесь это хорошая мысль в связи с большим временем переключения. Вы можете приобрести пары светодиод-фототранзистор с коэффициентом передачи по току порядка 100 % и выше (например, МСТ2201 с коэффициентом 100 % (мин)), а также пары светодиод — фототранзисторы Дарлингтона; они даже медленнее фототранзисторов! Для повышения быстродействия производители иногда разделяют фотодиод и транзистор, как в элементах 6N136 и 6N139, оптотранзистор и оптосхема Дарлингтона.
Эти оптроны, конечно, хороши, но иногда раздражают необходимостью использовать дискретные компоненты и на входе и на выходе. Более того, вход нагружает обычные логические вентили до их максимальной нагрузочной способности, а выход с пассивной нагрузкой «страдает» медленным переключением и слабой помехоустойчивостью. Для того чтобы избавиться от этих недостатков кремниевые кудесники предлагают нам «логические» оптроны. Элемент 6N137 на рис. 9.26, и занимает промежуточное положение — диодный вход и логический выход; здесь все еще нужен большой входной ток (по техническим данным 6,3 мА мин. для того, чтобы гарантировать переключение выхода), но вы получаете чистый логический перепад (хотя и с открытым коллектором) и скорость 10 Мбит/с. Заметьте, что на внутренние выходные схемы необходимо подавать питание +5 В. Более новые элементы серии 740L6000 фирмы General Instrument (рис. 9.26, к) предлагают то, что вам действительно требуется: входы и выходы с логическими уровнями, каскадный выход или открытый коллектор по выбору и скорость 15 Мбит/с. Поскольку на входе и на выходе имеются логические схемы, обе стороны кристалла требуют подачи напряжения для питания логики.
На рис. 9.26 показаны еще несколько вариантов схем в продолжение темы светодиод — фототранзистор. Элемент IL252 содержит пару встречно-включенных светодиодов, поэтому им можно управлять переменным током. Для получения защищенности по напряжению 10 кВ (ср. квадр.) в IL11 используется длинный изоляционный зазор (и соответствующий корпус); для остальных оптронов эта величина составляет 2,5 кВ. Элемент Н11С4 — это оптотиристор, удобный для переключения высоких напряжений и больших токов. В МСР3023 однонаправленный тиристор заменен на симистор, т. е. на двунаправленный тиристор; с его помощью можно непосредственно управлять нагрузкой переменного тока (рис. 9.15, о). При управлении нагрузками переменного тока включение нагрузки лучше всего производить в момент пересечения волной переменного тока нуля для избежания попадания выбросов в силовые линии. Это легко осуществить с помощью оптосимисторов, содержащих схему «переключения по нулевому напряжению» (которая блокирует запуск симистора до следующего пересечения нуля); как раз такую схему использует небольшой элемент МСР3043, как и приведенные на рисунке «твердотельные реле» на более сильные токи. Элемент DP6110 фирмы IR выпускается в 16-выводном корпусе типа DIP, а мощные элементы D2410 и D2475 располагаются в мощных модулях с размерами 1,75x25x1 дюйма, предназначенных для монтажа с отводом тепла. Остальные оптроны, представленные на рис. 9.26, можно использовать для линейных сигналов. Полевые оптотранзисторы серии H11F можно использовать как изолированный переменный резистор или как изолированный аналоговый ключ. Здесь нет проблем, связанных с совместимостью уровней напряжения, тиристорным защелкиванием или внесением зарядов. Вы можете использовать один из таких элементов в квантователях с запоминанием и интеграторах. Похожими приборами являются элементы «BOSFET» серии PVR, но они содержат в качестве выходного элемента пару соединенных последовательно мощных полевых МОП-транзистора. Такие элементы предназначены прежде всего для непосредственного переключения нагрузок переменного тока по принципу оптосимисторов. Элемент Н11V1 — это линейный видеоизолятор с полосой частот 10 МГц, а элемент ISO — 100 фирмы Burr-Brown-«умный» аналоговый изоляционный элемент, в котором светодиод имеет связь с двумя согласованными фотодиодами; один из них используется в цепи обратной связи для линеаризации отклика второго фотодиода.
Прерыватели. Пару «светодиод-фототранзистор» можно использовать в качестве датчика близости или движения. «Оптический прерыватель» состоит из светодиода, связанного по щели в 1/8 дюйма с фототранзистором. Он может обнаруживать присутствие светонепроницаемой полоски или вращения щелевого диска. Другой вариант — светодиод и фотодетектор, направленные в одну сторону; такой элемент обнаруживает присутствие в непосредственной близости отражающего объекта. Взгляните на рис. 9.27.
Рис. 9.27. а — оптический прерыватель; б — датчик отражающего объекта.
Оптические прерыватели используются в дисководах и принтерах для обнаружения края подвижного узла. Можно приобрести «кодер вращения», который генерирует квадратурную импульсную последовательность (два выхода с фазовым сдвигом 90°) при вращении вала. Он прекрасно заменяет резистивные панельные органы управления (потенциометры). Смотри разд. 11.09.
При разработке любых практических схем, в которых вы собираетесь использовать оптические прерыватели или датчики с отражением, обратите внимание на датчики на эффекте Холла как на альтернативный вариант; это твердотельные датчики на магнитном поле, предназначенные для определения степени близости объекта. Обычно датчики такого типа используются в автомобильных системах зажигания вместо наконечников механических прерывателей.
Излучатели и детекторы. Мы уже упоминали светодиоды в связи с дисплеями и оптронами. Последнее достижение в области оптоэлектроники — это доступные недорогие твердотельные диодные лазеры, — источники когерентного света в отличии от диффузионных светодиодов. Один из них вы можете увидеть, если откроете верхнюю крышку портативного проигрывателя компакт-дисков. Диодные лазеры стоят около 20 долл. и продаются фирмами, производящими бытовую электронную аппаратуру (Matsushita, Mitsubishi, Sharp и Sony). Типичный диодный лазер генерирует 10 мВт световой мощности на 800 нм (невидимый в ближней инфракрасной области спектра) при токе 80 мА и прямом падении напряжения на диоде 2 В. Выходной поток излучается непосредственно из крошечного отверстия на кристалле с углом расхождения 10°-20°; его можно коллимировать с помощью линзы и получить параллельный пучок или очень маленькое фокусное пятно. Светодиодные лазеры широко используются в оптоволоконной связи.
Еще одной технологией производства излучателей является линейная светодиодная матрица высокой плотности; 300 излучателей на дюйм и даже больше; такие матрицы используются в светодиодных принтерах. При успешном развитии полупроводниковой технологии такие принтеры заменят лазерные, поскольку они проще, надежнее и обладают крайне высокой разрешающей способностью.
В области детекторов существуют несколько альтернатив простым фотодиодам и фототранзисторам, которые мы обсуждали выше, особенно когда требуется скорость или чувствительность. В разд. 15.02 мы рассмотрим PIN-диоды, приборы с зарядовой связью и усилители.
Цифровые сигналы и длинные линии
При передаче цифровых сигналов по кабелям или между отдельными приборами возникают специфические проблемы. Важную роль начинают играть такие эффекты, как емкостная нагрузка на быстрые сигналы, синфазные перекрестные помехи, а также эффекты «длинных линий» (отражение от несогласованной нагрузки, см. разд. 13.09). Чтобы обеспечить надежную передачу, в большинстве случаев необходимо использовать специальные средства и соответствующие интерфейсные ИС. Некоторые из этих проблем могут возникнуть даже на отдельной печатной плате, поэтому необходимо кое-что знать о способах передачи цифровых сигналов. Начнем с проблем передачи в пределах одной платы. Затем рассмотрим проблемы, возникающие при передаче сигналов между платами, по шинам данных, и наконец, при передаче сигналов между приборами по скрученным парам и коаксиальным кабелям.
9.11. Внутриплатные соединения
Ток переходного процесса выходного каскада. Двухтактная выходная схема в ТТЛ и КМОП ИС состоит из пары транзисторов, включенных между U+ и землей. Когда состояние на выходе изменяется, существует короткий интервал времени, в котором оба транзистора находятся в открытом состоянии; на этом интервале от U+ к земле проходит импульс тока, создавая короткий отрицательный выброс на шине U+ и короткий положительный выброс на земляной шине. Эта ситуация показана на рис. 9.28.
Рис. 9.28. Помехи на шине земли.
Предположим, что ИС1 меняет свое состояние; в этом случае от шины +5 В к земле протекает большой кратковременный ток по указанным путям (для схем 74Fхх или 14АС(Т)хх ток может достигать 100 мА). Этот ток в комбинации с индуктивностью проводников земли и U+ приводит к появлению, как показано на рисунке, коротких выбросов напряжения относительно опорной точки. Несмотря на то, что выбросы могут иметь длительность всего 5÷20 нc, они доставляют массу неприятностей. Предположим, например, что ИС2, «простодушный свидетель», находящийся вблизи «кристалла-нарушителя», находится в состоянии низкого уровня и управляет схемой ИС3, расположенной несколько дальше. Положительный выброс на земляной шине ИС2 появляется и на ее выходе и, если этот выброс достаточно велик, ИС3 воспримет его как короткий выброс высокого уровня. Таким образом, на ИС3, расположенной на некотором расстоянии от «возмутителя спокойствия» ИС1, появится полноценный логический импульс, готовый помешать работе «добропорядочной» схемы. Много усилий не требуется для того, чтобы запустить или сбросить триггер, и такие выбросы тока по земляной шине блестящее умеют делать подобную работу.
Лучшей профилактикой против таких явлений является: а) использование большого числа земляных шин по всей плате вплоть до применения «земляных поверхностей» (одна сторона двухсторонней печатной платы целиком отводится под землю) и б) обильное использование конденсаторов развязки по всей схеме. Чем мощнее шины земли, тем меньше выбросы, индуцированные током (меньше индуктивность и сопротивление). Роль конденсаторов развязки, включенных между U+ и землей и разбросанных по всей плате, заключается в том, чтобы передать импульсы тока по кратчайшим путям с небольшой индуктивностью и существенно уменьшить выбросы по напряжению (конденсатор работает как локальный источник напряжения, поскольку напряжение на нем существенно не изменяется во время коротких выбросов тока).
Лучше всего установить возле каждой ИС конденсатор емкостью от 0,05 до 0,1 мкФ, хотя может оказаться достаточным и один конденсатор на две-три ИС. Кроме того, для запаса энергии полезно расставить по всей плате танталовые конденсаторы большой емкости (достаточно 20 мкФ, 20 В). Между прочим, конденсаторы развязки между шинами питания и землей рекомендуется ставить в любых схемах, будь то цифровые или линейные. Они помогают превратить шины питания в низкоимпедансные источники напряжения на высоких частотах и предотвращают сигнальную связь между схемами через источник питания. Шины питания без развязок могут привести к непредусмотренному поведению схемы, колебаниям и вообще к головной боли.
Выбросы, обусловленные емкостными нагрузками. Несмотря на развязки по питанию, ваши проблемы еще не закончились. Взгляните на рис. 9.29.
Рис. 9.29. Помехи на шине земли из-за емкостной нагрузки.
Цифровой выход обнаруживает паразитную емкость монтажа и входную емкость ИС, которой он управляет (обычно, 5-10 пФ) как часть общей нагрузки. Для того чтобы осуществить быстрый переход от состояния к состоянию, он должен отобрать от этой нагрузки или подать в нее большой ток в соответствии с I = C(dV/dt). Рассмотрим, например, схему 74АСхх (5-вольтовый выходной перепад за 3 нс), которая управляет общей емкостью нагрузки 25 пФ (это соответствует 3–4 логическим нагрузкам с короткими проводниками). Ток в момент логического перехода составляет 40 мА, т. е. почти на максимальной нагрузочной способности выхода управляющей ИС! Этот ток возвращается через землю (при переходе от высокого к низкому) или через шину +5 В (при переходе от низкого к высокому), индуцируя эти «шустрые» меленькие выбросы, о которых шла речь ранее (для того чтобы получить представление об их величине, примите к сведению тот факт, что индуктивность монтажа составляет примерно 5 нГн/см. На дюйме земляного провода, по которому протекает этот ток логического перехода, появится выброс U = L(dI/dt) = 0,2 В). Если ИС окажется октальным буфером с одновременными переходами на полдюжине выходов, то выбросы по земле превысят 1 В; см. рис. 8.95. Похожие выбросы по земле (хотя и поменьше) появятся вблизи управляемой ИС, где выбросы тока возвращаются на землю через входную емкость управляемого прибора. В синхронных системах с большим числом элементов, одновременно меняющих состояние, ситуация с выбросами-помехами становится настолько серьезной, что схема не в состоянии работать надежно.
Особое значение это приобретает для больших печатных плат с длинными межсоединениями и длинным земляным путем. В такой схеме могут происходить сбои, когда целая группа линий данных меняет свое состояние от верхнего уровня к низкому, вызывая появление кратковременного очень большого тока по земле. Такая информационная зависимость является характерной особенностью сбоев, обусловленных помехами, и хорошим обоснованием для прогона расширенных тестов памяти в микропроцессорных системах (в которых обычно имеется 16 линий данных и 24 адресных линии с самым разнообразным распределением информации).
Наилучший подход к проектированию состоит в том, чтобы использовать массивную разводку земли (для обеспечения низкой индуктивности), лучше всего в виде внутреннего слоя земли на многослойной плате (см. гл. 12) или по крайней мере перпендикулярных земляных проводников с обоих сторон более простой двухсторонней платы. Обильное использование конденсаторов развязки обязательно. Острота этих проблем не так велика для высоковольтных КМОП-элементов (благодаря медленным фронтам); с другой стороны, для логических семейств F, AS и АС (Т) эти проблемы достигают наивысшей остроты. Действительно, семейство АС (Т) настолько склонно к динамическим выбросам тока, что некоторые изготовители (начиная с TI) отказались от традиционного «углового» расположения выводов земли/питания в пользу «центрального» расположения с более низкой индуктивностью выводов; они пошли еще дальше, использовав для снижения индуктивности земли четыре соседних вывода. Учитывая эти проблемы, лучше не применять без нужды быстродействующее логическое семейство; вот почему мы рекомендовали использовать для общих целей логику НС, а не АС.
9.12. Межплатные соединения
В случае логических сигналов, передаваемых между платами, возможностей для появления помех становится все больше. Возрастает емкость проводников, цепь земли становится длиннее, поскольку теперь она проходит по кабелям, разъемным соединителям, платным расширителям и т. п. Поэтому выбросы по земле, возникающие за счет токов во время логических переходов, как правило, больше и вызывают больше беспокойств. Лучше всего стараться избегать передачи между платами тактирующих сигналов с большим коэффициентом разветвления, если это возможно; а провода заземления к отдельным платам сделать достаточно мощными. Если тактирующие сигналы все же передаются между платами, то целесообразно использовать на каждой плате вентиль в качестве входного буфера. В крайнем случае может понадобится ИС линейного формирователя и приемника, но об этом несколько позже. В любом случае критические схемы лучше располагать на одной плате: у вас появляется возможность контролировать индуктивность цепи земли и свести к минимуму емкость монтажа. Проблемы, с которыми вы столкнетесь при пересылке быстрых сигналов через несколько плат, трудно даже оценить; они могут обернуться настоящим бедствием для всего проекта.
9.13. Шины данных
Когда большое число подсхем объединяются в шину данных (более подробно об этом см. гл. 10 и 11), упомянутые проблемы становятся еще более острыми. Более того, появляются новые моменты — эффекты длинных линий, обусловленные длиной и индуктивностью самих сигнальных линий. Для самых быстрых ЭСЛ ИС (ECLIII, ECL100K с фронтом менее 1 нc) эти эффекты становятся настолько важными, что все сигнальные цепи длиной более 1 дюйма следует рассматривать как линии передачи и соответствующим образом их согласовывать.
Для шин данных любой существенной длины (1 фут и более) наилучшим подходом, по-видимому, является применение объединительной платы с «земляной плоскостью». Объединительная плата (см. гл. 12) представляет собой простую печатную плату, содержащую ряд разъемных соединителей под печатный монтаж для подключения отдельных схемных плат, составляющих всю логическую схему. Объединительные платы — это экономное решение проблемы объединения плат, а если они выполнены соответствующим образом, то и решение электрических проблем. Проводники, расположенные вблизи земли, имеют меньшую индуктивность и менее склонны к образованию емкостной связи с близлежащими сигнальными линиями, поэтому для создания простой объединительной платы все сигнальные линии следует расположить на одной стороне, а другую сторону отвести под основательную земляную плоскость (двухсторонние печатные платы имеют широкое распространение, но для сложных схем все чаще начинают применять многослойные печатные платы).
Последнее замечание на эту тему. Когда эффекты длинной линии типа «звонов» и выбросов по земле сильно вас допекут, вы, возможно, в отчаянии прибегнете к распространенному приему: подключить конденсатор прямо к вентилю, управляемому длинной линией. Мы сами делали это неоднократно, тем не менее мы не рекомендуем прибегать к этому малоизящному приему, поскольку он только усложняет проблему больших токов по земле во время логических переходов (см. разд. 9.11).
Оконечная нагрузка шин. Сигнальные линии шин большой длины принято нагружать на самом дальнем конце резисторами, подключенными к питанию или к земле. Длинные пары проводов или коаксиальные кабели обладают «характеристическим импедансом» Z0 (об этом пойдет речь в гл. 13). Сигнал, распространяющийся по кабелю, который нагружен этим импедансом (кстати, всегда резистивный), полностью поглощается без всяких отражений. Любая другая величина нагрузки, в том числе и холостой ход, вызывает отраженные волны, амплитуда и фаза которых зависит от рассогласования импедансов. Ширина печатных проводников и расстояние между ними таковы, что характеристический импеданс линий связи на печатной плате составляет примерно 100 Ом, что почти соответствует характеристическому импедансу скрученной пары из обычного изолированного провода 24-го калибра или другого, близкого сечения.
Распространенным способом завершения ТТЛ-шины является подключение делителя напряжения между +5 В и землей. Логический высокий уровень удерживается при этом на уровне +3 В, а это означает, что при переключении нужен меньший перепад напряжения и поэтому через емкость нагрузки протекает меньший ток. Обычно выбирают комбинацию из резисторов 180 и 390 Ом, подключенных соответственно к +5 В и земле (рис. 9.32).
Другой способ, хорошо работающий и для ТТЛ и для КМОП, состоит в том, чтобы использовать нагрузку по переменному току, состоящую из последовательной цепочки резистор-конденсатор между линией данных и землей (рис. 9.30).
Величина резистора обычно выбирается близкой к характеристическому импедансу шины (типовое значение 100 Ом); величина емкости должна быть выбрана из расчета низкого емкостного сопротивления на частоте, равной обратной величине времени подъема сигнала (в общем случае достаточно 100 пкФ).
Рис. 9.30. Нагрузка по переменной составляющей.
Шинные формирователи. Бели линии шин имеют большую длину или большой коэффициент разветвления, то необходимо использовать специальные логические элементы с высокой нагрузочной способностью по току. Ниже перечислены наиболее известные элементы этого типа.
«Односторонние» означает, что входные и выходные выводы ИС расположены на противоположных сторонах корпуса. Существуют также ИС-приемо/передатчиков с соответствующей нагрузочной способностью; они могут использоваться как буферы данных в любом направлении благодаря применению на каждой линии данных параллельных пар буферов с 3-я состояниями, включенных навстречу друг другу; вход «направление» определяет, в какую сторону будут передаваться данные. Другие типы приборов приведены в табл. 8.4 и табл. 8.5.
9.14. Кабельные связи
Передачу цифровых сигналов от одного устройства к другому нельзя осуществлять с помощью простого одиночного проводника, такое соединение подвержено влиянию взаимных помех. Цифровые сигналы обычно передаются по коаксиальным кабелям, скрученным парам, плоским кабелям (иногда с земляной поверхностью или в экране), многожильным кабелям и все чаще по оптоволоконным кабелям. Мы встретимся еще раз с коаксиальными кабелями (нежно называемыми «коаксами») в гл. 13 в связи с радиочастотной техникой; здесь же мы намерены рассмотреть некоторые способы передачи цифровых сигналов между коробками с электроникой, поскольку эти способы составляют важную часть цифрового сопряжения. В большинстве случаев существуют специализированные ИС формирователей/приемников, способные облегчить вашу работу.
Стандарт RS-232. Для сравнительно медленной передачи сигналов (несколько тысяч бит в секунду) по многожильным кабелям обычно используют известный сигнальный стандарт RS-232C (или более новый RS-232D). Стандартом определены биполярные уровни от ±5 до ±15 В (для формирователей необходимы положительное и отрицательное напряжения питания, но приемники обычно этого не требуют); приемники допускают, как правило, управление гистерезисом и временем отклика под конкретную ситуацию с помехами; применяя стандарт RS-232, вы можете использовать многожильный кабель без всякой экранировки, так как максимальная скорость изменения напряжения формирователей для минимизации перекрестных помех намерено ограничена величиной 30 В/мкс. Кроме основного ТТЛ-совместимого элемента, состоящего из 4 пар «формирователь/приемник» (148 8/1489), в настоящее время имеется несколько улучшенных ИС, включая маломощные варианты (LT1032, 1039 и МС145406, см. разд. 14.47) и варианты, работающие от одного источника +5 В (серии МАХ-232 и LT1130, LT1080). Последние содержат преобразователь напряжения для формирования необходимого отрицательного напряжения. Типовая схема показана на рис. 9.31.
Рис. 9.31. Кабельные приемники и передатчики высокой помехоустойчивости; выполнены по стандарту RS-232.
RS-232 широко используется для обеспечения связи между компьютерами и терминалами на стандартизованных скоростях передачи данных, входящих в диапазон от 110 до 38400 бит/с. Полный стандарт определяет даже распайку контактов 25-контактного субминиатюрного соединителя типа D и используется для передачи данных в коде ASCII (см. разд. 10.19).
Непосредственное управление от 5-вольтовой логики. Линиями средней длины, как и шинами данных, можно управлять непосредственно логическими уровнями; в общем случае необходимы вентили с большой нагрузочной способностью по току (см. приведенный выше перечень под заголовком «шинные формирователи»). На рис. 9.32 показано несколько способов управления. На первой схеме буфер (может иметь открытый коллектор) управляет нагруженной линией с ТТЛ-триггером Шмитта в качестве приемника для повышения помехоустойчивости. Если уровень помех высок, то можно использовать, как показано на второй схеме, замедляющую RС-цепь с подстройкой постоянной времени (и скорости передачи!) в соответствии с конкретной обстановкой. В этой схеме триггер Шмитта играет важную роль. В последней схеме мощный КМОП-буфер управляет линией с комплексной нагрузкой и КМОП-триггером Шмитта в качестве приемника.
Рис. 9.32. Оконечные цепи с формированием логических уровней.
Непосредственное управление с помощью логических уровней будет нормально работать на скрученной паре, плоском и коаксиальном кабелях средней длины (около 3 м). Из-за быстрых фронтов большое значение приобретает емкостная связь с соседними линиями. Обычное «лекарство» — это чередование с земляными линиями или спаривание сигнальных линий с земляными (скрученная пара). Проблема взаимосвязи сигналов практически лишает возможности осуществить непосредственное управление от логики с использованием многожильных кабелей. В следующем разделе мы покажем несколько интересных осциллограмм, иллюстрирующих эту проблему, и познакомим с другим эффективным «лекарством», дифференциальным логическим управлением.
Важное замечание: никогда не пытайтесь управлять длинными линиями от небуферированных тактируемых элементов (триггеров, одновибраторов, счетчиков и некоторых регистров сдвига); емкостная нагрузка и эффекты «длинных линий» могут вызвать неправильное поведение схемы. «Буферированные» элементы содержат выходные формирователи, включенные между внутренними регистрами и выходными контактами и поэтому «не видят» реальных сигналов (с плохими параметрами) на выходных линиях и не сталкиваются с этой проблемой.
Управление от высоковольтной логики. Если для передачи сигналов по кабелям вы используете непосредственное управление от логики, то вы можете повысить помехоустойчивость, увеличивая перепад сигналов. В примере, показанном на рис. 9.33, в качестве генератора 12-вольтового логического перепада для скрученной пары используется элемент 75361 «формирователь ТТЛ-МОП». Приемником является элемент 75152, который позволяет устанавливать входной порог (входное сопротивление составляет примерно 9 кОм, следовательно, резистор смещения 12 кОм установит порог на +5 В) и гистерезис (в данном случае до ±2 В). Нагрузка линии 120 Ом согласовывает характеристический импеданс скрученной пары.
Рис. 9.33. Повышение помехоустойчивости с помощью высоковольтного кабельного формирователя.
Трапецеидальное управление. Для снижения остроты проблемы емкостной связи с соседними линиями фирма National изготавливает линейные формирователи/приемники (серии DS3662, DS3890) с управляемым временем переключения формирователя в сочетании с управляемым временем отклика приемника. По существу это сводится к управлению линией, нагруженной на схему, показанную на рис. 9.32.
Дифференциальное управление; стандарт RS-422. Намного более высокую помехоустойчивость можно получить, используя дифференциальные сигналы, т. е. подавая Q и Q' на скрученную пару с дифференциальным приемником (рис. 9.34). Здесь парные ТТЛ-инверторы посылают в нагруженную скрученную пару прямой и инверсный сигналы, а дифференциальный линейный приемник 75115 воспроизводит чистые уровни ТТЛ.
Рис. 9.34. Быстродействующие дифференциальные кабельные ТТЛ-передатчики и приемники.
Мы выбрали биполярные ТТЛ-формирователи, а не КМОП, поскольку они менее склонны к разрушению от статического электричества и к тиристорному защелкиванию из-за отражений в линии. Эта схема обеспечивает высокую степень подавления синфазных помех и восстанавливает четкие логические уровни из линейных сигналов, которые могут выглядеть довольно устрашающе. Показанная на рисунке форма колебаний дает лишь общее представление о том, что можно увидеть на отдельных сигнальных линиях в сравнительной чистой системе; реальные сигналы могут быть довольно сильно искажены, хотя и будут оставаться монотонными (отсутствует обратная волна).
Примером линейного приемника с настраиваемым временем отклика является элемент 75115; другой дифференциальный приемник (75152) позволяет управлять гистерезисом. Для душевного спокойствия желательно использовать приемник с гистерезисом (и с настраиваемой постоянной времени); такие приемники как раз и призваны для того, чтобы разбираться с самыми причудливыми формами сигналов.
Формирователи с отводом тока. Элементы типа 75S110 и МС3453 имеют коммутируемые выходы с отводом тока, которые можно использовать как выходы для однопроводной схемы или, как показано на рис. 9.35, в дифференциальном режиме.
Рис. 9.35. Дифференциальная схема токовой связи с приемником.
Элемент 75107 является парным дифференциальным приемником, который обычно используется с согласующей нагрузкой, как показано на рисунке. Несколько формирователей могут совместно использовать одну дифференциальную линию в режиме «групповой линии», поскольку их выходы могут отключаться в 3-е состояние; в этом случае нагрузку на каждом формирователе не ставят, а переносят ее в самый дальний от приемника конец линии.
Наш опыт показывает, что дифференциальные формирователи с отводом тока позволяют достичь действительно впечатляющей скорости передачи данных. Это объясняется, по-видимому, тем, что высокоимпедансное управление с отдачей тока гарантирует возможность нагрузки кабеля на его характеристическое сопротивление для обоих состояний формирователя. В соответствии с техническими данными скорость передачи составляет более 1 Мбит/с на линии длиной 500 м и достигает 10 Мбит/с на линии длиной несколько десятков метров и менее.
Реальные осциллограммы, приведенные на рис. 9.36, показывают, насколько эффективным может оказаться дифференциальное управление с отводом тока при решении проблемы синфазных помех. На представленном примере сигнал с размахом 50 мВ «загрязнен» синфазной помехой с размахом 4 В.
Рис. 9.36. Осциллограммы, показывающие превосходную помехоустойчивость дифференциальной передачи данных (дифференциальный приемник 75108). (С разрешения фирмы Texas Instruments.) а — вход приемника (+); б — вход приемника (—); в — выход приемника.
Стандарт RS-422/423. Этот стандарт передачи данных, разработанный с целью замены распространенного стандарта RS-232, предназначен прежде всего для работы со скрученной парой или плоским кабелем. Его можно использовать как в несбалансированной схеме (RS-423, 100 кбит/с макс), так и сбалансированной схеме (RS-422, 10 Мбит/с макс). В несбалансированном режиме можно использовать биполярные сигнальные уровни (источники ±5 В) с управляемой скоростью нарастания, как и в RS-232. В сбалансированном режиме используются однополярные ТТЛ-уровни (и по одному источнику питания +5 В) без ограничения скорости нарастания. На рис 9.37 показана зависимость реальной скорости передачи данных от длины линии.
Рис. 9.37. Зависимость между скоростью передачи данных при последовательной связи и длиной кабеля.
Распространенной серией формирователей/приемников для RS-422/3 является серия 26LS30-34 фирмы AMD с расширенной вторичной поставкой от других изготовителей; более поздние элементы 75ALS192/4 и серия DS34F30/80 имеют повышенное быстродействие при меньшей мощности. Мы использовали RS-422 для плоского кабеля из скрученных пар в том случае, когда хотели объединить параллельные порты и управляющие сигналы набора из 144 микропроцессорных плат в схему типа «звезды». Мы изготовили 9 групп по 16 процессорных плат, каждая группа содержала также одну интерфейсную плату, и использовали ТТЛ-сигналы между процессорами и в интерфейсе; затем, объединив 9 интерфейсных плат, мы подключили их к внешнему компьютеру с помощью RS-422 (по дифференциальной схеме). Полная длина кабеля составила примерно 8 м с шунтированием каждой пары с обоих концов резисторами 100 Ом. Вся система чрезвычайно проста и надежно работает на нашей скорости передачи около 1 Мбит/с.
Мы предпочитаем использовать дифференциальную передачу сигналов в тех случаях, где важную роль играют надежность и хорошая помехозащищенность. За счет эффектов компенсации дифференциальный сигнал обеспечивает низкую степень связи с другими сигналами («перекрестные помехи»). Использование скрученной пары, а не плоского кабеля, даже улучшает работу. На рис. 9.38 показано несколько осциллограмм, полученных для RS-422 и для непосредственного управления от логики с использованием как плоского кабеля, так и плоской скрученной пары (последняя была в действительности вариантом, известным под названием «скрученный и плоский»; это соединение состоит из жгута скрученных пар, прерываемых на 0,05 м через каждые 0,5 м для того, чтобы сделать плоскую выводную площадку).
Рис. 9.38. Ухудшение параметров и перекрестные помехи цифровых сигналов.
а — прямоугольные импульсы с ТТЛ-уровнями частотой 1 МГц на 10 футах ненагруженного плоского кабеля с заземлениями через определенные интервалы, 1 В/дел.;
б — парный провод к а с низким ТТЛ-уровнем;
в, г — то же, что а и б, но с нагрузкой 220/330 Ом, подключенной к +5 В;
д, е — то же, что в, г, но с использованием скрученной пары вместо плоского кабеля;
ж, з — то же, что в, г, но с использованием плоского кабеля с земляной платой;
и — пара с низким уровнем для RS-422, на 100 футах плоского кабеля, смежного с парой, по которой проходят дифференциальные прямоугольные импульсы RS-422 частотой 100 кГц; 0,1 В/дел. (заметьте, что масштаб изменился);
к — то же, что и, но сигналы разделены заземленной парой;
л, м — тο же, что и, к, но вместо плоского кабеля используется «скрученная и плоская» пара.
Для RS-422 мы использовали 30-метровый кабель, по одной паре которого мы передавали сигнал с размахом 6 В частотой 100 кГц и наблюдали за перекрестными помехами на соседней паре; обе пары были нагружены. При непосредственном управлении от логики использовались формирователи 74LS244 на частоте 1 МГц с 3-метровым кабелем в двух вариантах: с нагрузкой и без нагрузки. Осциллограммы с очевидностью показывают, что RS-422 чрезвычайно надежен даже при передаче по длинному кабелю, в то время как непосредственное управление от логики весьма ограничено в своих возможностях даже на средних длинах, хотя его можно несколько улучшить, используя нагрузку и плоский кабель с общей земляной поверхностью. Вопреки ожиданиям, скрученная пара оказалась нисколько не лучше плоского кабеля при непосредственном управлении от логики.
Дифференциальные линейные приемники работают нормально до тех пор, пока принимаемые сигналы находятся в пределах допустимого диапазона синфазных напряжений, обычно в несколько вольт (для 75108 — ±3 В). При использовании длинных линий вы можете, однако, очутиться в ситуации либо высокочастотных синфазных помех, либо низкочастотных разностей напряжений между источником и линией, превышающими в обоих случаях синфазный диапазон приемника. Если эти проблемы встают слишком остро, можно использовать пару резистивных делителей на входе приемника, или использовать приемник с встроенным аттенюатором, например 26LS33, приемник для RS-422 с синфазным диапазоном ±15 В.
При передаче сигналов по действительно длинным кабелям или при передаче в условиях очень сильных помех обычно используют индуктивную связь. Применив трансформаторы, вы, разумеется, лишаетесь возможности передавать логические сигналы постоянного тока: вы вынуждены кодировать данные определенным способом, например с использованием «несущего» сигнала. Локальные сети (см. разд. 10.21) обычно используют индуктивную связь.
Кристалл TAXI фирмы AMD. Фирмой AMD разработана весьма интересная пара дифференциальных передатчиков/приемников, Ат7968/9, содержащая для облегчения применения все разновидности внутренних регистров (рис. 9.39).
Рис. 9.39. Набор кристаллов AMD TAXI для быстродействующей линий последовательной связи. (С разрешения фирмы Advanced Micro Devices), а — передатчик Am7968; б — приемник Am7969.
Вы можете, например, рассматривать ИС передатчика как 8-битовую защелку со стробированием и квитированием; схема в таком применении преобразует байты в последовательные данные, дополняет эту последовательность соответствующими битами синхронизации, передает данные в последовательную линию связи и воспроизводит байты на другом конце. По отношению к пользователю линия выглядит как простой параллельный регистр. Эти ИС содержат кабельные формирователи и приемники для 50-омного кабеля, работающие от одного источника питания +5 В; они обладают достаточно высоким быстродействием: скорость передачи данных составляет 32-100 Мбит/с (от 4 до 12,5 Мбит/с). ИС TAXI предназначены для сверхскоростных линий передачи данных общего назначения со связью по переменному или постоянному току. Реальной средой передачи может быть простое соединение через провода, скрученные пары, коаксиальные кабели, кабели с трансформаторной связью или даже волоконно-оптические линии.
Формирователи для коаксиальных кабелей. Благодаря своей геометрии коаксиальные кабели обладают очень хорошей защитой от внешних влияний. Кроме того, однородность диаметра и внутренних размеров (по сравнению со случайными отклонениями в случае жгутов и скрученных пар) позволяет достаточно точно предсказывать величину характеристического импеданса и, следовательно, обеспечить превосходные условия для передачи; именно по этой причине только они используются для передачи аналоговых радиочастотных сигналов.
Существуют несколько пар формирователей/приемников, удобных для цифровой передачи по коаксиальному кабелю; пример показан на рис. 9.40.
Рис. 9.40. Передатчик и приемник для 50-омного кабеля.
Кабель нагружен на характеристическое сопротивление, в данном случае 51 Ом. Элемент 8Т23 может непосредственно управлять 50-омной нагрузкой, а 8Т24 обладает гистерезисом фиксированной величины для обеспечения помехоустойчивости и малым временем переключения выхода. Скорость передачи в такой схеме достигает 100 кбит/с на кабеле в 1609 м и до 20 Мбит/с на более коротких линиях. Другая пара формирователей/приемников входит в интерфейсные семейства 8Txx и 75ххх. Элементы 74F3037 (счетверенный) и 74F30244 (октальный) предназначены для управления кабелями с импедансом ниже 30 Ом (например, кабелем, нагруженным с двух концов). При управлении 50-омными коаксиальными линиями непременно используйте приемники с соответствующими техническими характеристиками, поскольку уровни напряжений на нагруженном кабеле могут оказаться меньше обычных логических уровней.
Различные семейства ЭСЛ содержат несколько пар формирователей/приемников для 50-омных коаксиальных линий, например 10128/10129. Превосходным коаксиальным формирователем является ИС10194; по существу это шинный приемопередатчик, предназначенный для одновременной передачи и приема по одной линии (дуплексная связь, рис. 9.41).
Рис. 9.41. Токовый приемопередатчик ЭСЛ (дуплексный).
При использовании этого способа каждая ИС может осуществлять передачу к другому приемопередатчику и одновременно принимать от него данные в асинхронном режиме без перекрестных помех на скорости 100 МГц и выше. С помощью одного эмиттерного npn-повторителя вы можете непосредственно управлять коаксиальным кабелем определенной длины от +5-вольтовой логики (рис. 9.42). Транзистор 2N4401 — это небольшой мощный транзистор с большим коэффициентом усиления по току в схеме с общим эмиттером при большом токе (h21Э > 100 при IK = 150 мА). 10-омный резистор включен для защиты от короткого замыкания. По сравнению с тщательно спроектированным и дорогостоящими ИС-формирователями для 50-омных кабелей эта схема до удивления проста. Заметьте, что для нормальной работы выход с открытым эмиттером должен нагружаться на низкое сопротивление на землю, что справедливо и для некоторых интегральных кабельных формирователей.
Рис. 9.42. Простой формирователь для 50-омного кабеля.
Волоконно-оптические кабели. Новый многообещающий способ передачи сигналов основан на применении волоконно-оптических кабелей. Это кабели с превосходным пластиковым покрытием с согласующими соединителями, излучателями и детекторами. Высококачественные волоконно-оптические кабели могут осуществлять передачу в полосе частот до нескольких гигагерц на расстояния в десятки и сотни километров без потери дробных децибел на километр. По сравнению с коаксиальными кабелями, которые могут иметь разброс параметров (скорость распространения зависит от частоты, количество потерь также определяется частотой, что вызывает искажения колебаний), дисперсия волоконно-оптических кабелей незначительна. Кроме того, волоконно-оптические кабели являются изоляторами, поэтому их можно использовать для передачи сигналов между устройствами с изолированной землей, или на различных напряжениях. В отличие от обычных кабелей они не являются антеннами по отношению к радиочастотным и импульсным помехам. Они легче, безопаснее, обладают более высокой стойкостью, чем традиционные кабели, к тому же, они потенциально дешевле.
Существует несколько типов волоконно-оптических кабелей, позволяющих сделать выбор между стоимостью и производительностью (длина на ширину полосы). Самым дешевым является многомодовое волокно со ступенчатым изменением коэффициента преломления; обычно это пластиковое волокно диаметром 1 мм. Вы можете передавать по нему излучение инфракрасного светодиода (а не лазерного диода), а в качестве детектора использовать фототранзистор или р-i-n-диод.
Фирма Motorola производит недорогой набор формирователей/приемников (менее доллара за штуку); элементы этого набора прямо насаживаются на кабель в оболочке (серия MFOE71/MFOD71-73); с их помощью можно передавать данные со скоростью 5 Мбит/с по 10-метровому пластиковому кабелю, описанному выше (см. рис. 9.43).
Рис. 9.43. Недорогая оптоволоконная линия связи.
(на основе рис. 7 спецификации MFOD71 фирмы «Моторола»)
Кабели более высокого качества используют стекловолокна — многомодовые со ступенчатым изменением коэффициента преломления, многомодовые с плавным изменением коэффициента преломления (лучше) или одномодовые (самые лучшие). Используя стекловолокно 200 мкм со ступенчатым изменением коэффициента преломления, можно достичь скорости 5 Мбит/с на 1 км пути со стандартными волоконно-оптическими компонентами, включающими соединители, элементы связи, делители/объединители и детекторы с встроенными усилителями. Последним достижением в области широкополосной волоконно-оптической дальней связи является 4 ГГц на 120 км пути без повторителей.
Аналого-цифровое преобразование
9.15. Введение в аналого-цифровое преобразование
Кроме чисто «цифрового» сопряжения (ключи, лампы и т. п.), которое обсуждалось в предыдущих разделах, часто требуется преобразовать аналоговый сигнал в число, пропорциональное амплитуде сигнала и наоборот. Это играет важную роль в тех случаях, когда компьютер или процессор регистрируют или контролируют ход эксперимента или технологического процесса, или всякий раз, когда цифровая техника используется для выполнения традиционно аналоговой работы.
Аналого-цифровое преобразование следует использовать в областях, где для обеспечения помехоустойчивой и шумозащищенной передачи аналоговая информация преобразуется в промежуточную цифровую форму (например, «цифровая звукотехника» или импульсно-кодовая модуляция). Это требуется в самых разнообразных измерительных средствах (включая обычные настольные приборы типа цифровых универсальных измерительных приборов и более экзотические приборы, такие, как усреднители переходных процессов, «ловушки для выбросов» и осциллографы с цифровой памятью), а также в устройствах генерации и обработки сигналов, таких, как цифровые синтезаторы колебаний и устройства шифрования данных.
И наконец, техника преобразования является существенной составляющей способов формирования аналоговых изображений с помощью цифровых средств, например, показаний измерительных приборов или двухкоординатных изображений, создаваемых компьютером. Даже в относительно простой электронной аппаратуре существует масса возможностей для применения аналого-цифрового и цифро-аналогового преобразования, так что знакомство с различными способами и доступными модулями, используемыми в аналого-цифровом преобразовании, весьма полезно, тем более, что в настоящее время можно приобрести АЦП и ЦАП по 5 долл. за штуку.
Наше знакомство с различными методами преобразования не будет носить характер курса по проектированию преобразователей. Мы попытаемся показать преимущества и недостатки каждого метода, поскольку в большинстве случаев задача состоит в том, чтобы купить коммерчески доступный кристалл или модуль, а не построить его с начала до конца. Понимание техники преобразования и знание особенностей методов преобразования будут руководить вами при выборе блока из сотни доступных.
Коды. Здесь вы должны вспомнить разд. 8.03, в котором описаны различные числовые коды, используемые для представления чисел со знаком. В схемах А/Ц-преобразования используют обычно смещенный двоичный и дополнительный коды, время от времени появляются также прямой код со знаком и код Грея.
Дополним ваши воспоминания:
Погрешности преобразователей. Погрешности А/Ц- и Ц/А-преобразований — весьма сложная тема, которой можно посвятить целые тома. Как выразился Берни Гордон из фирмы Analogic, если вы полагаете, что система преобразования высокой точности живет в соответствии с объявленными техническими данными, то вы, вероятно, не достаточно близко с ней познакомились. Мы не будем следовать такому прикладному сценарию с тем, чтобы поддержать высказывание Берни, но покажем 4 наиболее общих типа погрешностей преобразования. Не желая утомлять вас умными разговорами, мы просто представим графики, не требующие пояснений, для 4-х наиболее распространенных типов погрешностей: погрешности сдвига, погрешности шкалы, нелинейность и немонотонность (рис. 9.44).
Рис. 9.44. Четыре основных типа погрешностей аналого-цифрового преобразования.
(С разрешения фирмы National Semiconductor.)
а — передаточная характеристика АЦП со сдвигом нуля на 1/2 МЗР;
б — линейная погрешность шкалы на 1 МЗР;
в — +1/2 МЗР нелинейности (включая возможную погрешность 1 МЗР); 1 МЗР дифференциальной нелинейности (при сохранении монотонности);
г — немонотонность (нелинейность должна быть больше ± 1/2 МЗР).
9.16. Цифро-аналоговые преобразователи (ЦАП)
Цель состоит в том, чтобы преобразовать количество, определенное в виде двоичного числа (или многоразрядного двоично-десятичного числа), в напряжение или ток, пропорциональное значению цифрового входа. Рассмотрим несколько распространенных способов преобразования.
Включение масштабирующих резисторов в суммирующее соединение. Как вы уже видели в разд. 4.09, подключая несколько резисторов к суммирующему входу операционного усилителя, на выходе можно получить напряжение, пропорциональное взвешенной сумме входных напряжений (рис. 9.45).
Рис. 9.45.
Напряжение на выходе этой схемы изменяется от 0 до —10 В, причем максимальный выход соответствует входному числу 64. Действительно, максимальное входное число всегда равно 2n — 1, т. е. все разряды находятся в «1». В данном случае максимальное входное число равно 63, а соответствующее выходное напряжение равно —10 x 63/64. Изменяя резистор обратной связи, можно добиться, чтобы выход изменялся от 0 до — 6,3 В (т. е. сделать так, чтобы выход в вольтах был бы численно равен —1/10 входного числа), можно добавить также инвертирующий усилитель или постоянное смещение на суммирующий вход, чтобы получить положительный выход. Изменяя значения входных резисторов, можно соответствующим образом преобразовать многоразрядный двоично-десятичный входной код, или любой другой взвешенный код. Входные напряжения должны соответствовать точным эталонам; чем меньше значение входного резистора, тем большую точность он должен иметь. Разумеется, сопротивление переключения должно быть меньше чем 1/2n величины самого маленького резистора; это важное замечание, поскольку переключение во всех реальных схемах выполняется с помощью транзисторов или ключей на МОП-транзисторах. Этот способ преобразования используется только в быстрых преобразователях низкой точности.
Упражнение 9.2. Спроектируйте 2-разрядный двоично-десятичный ЦАП. Используйте входы с перепадом от 0 до +1 В, выход при этом должен изменяться от 0 до 9,9 В.
Цепная К-2К-схема. Способ масштабирующих резисторов становится неудобным, если преобразованию подвергаются много разрядов. Например, для 12-разрядного преобразователя потребуется соотношение величин резисторов 2000:1 с соответствующей точностью самого маленького резистора. Цепная R-2R-схема показанная на рис. 9.46, приводит к изящному решению этой задачи. Здесь требуются только 2 значения резисторов, по которым R-2R-схема формирует токи с двоичным масштабированием. Резисторы, конечно, должны быть точно подобраны, хотя действительные их величины не так существенны. Приведенная схема формирует выходное напряжение от 0 до —10 В с полным выходом, соответствующим числу 16 (опять же максимальное входное число равно 15 при выходном напряжении 10 x 15/16). Для двоично-десятичного преобразования используется несколько модификаций R-2R-схемы.
Рис. 9.46. Схема лестничного типа R-2R.
Упражнение 9.3. Покажите, что приведенная выше R-2R-схема выполняет функцию преобразования правильно.
Источники масштабирующих токов. В схеме упомянутого выше R-2R-преобразователя операционный усилитель преобразует двоично-масштабированные токи в выходное напряжение. Во многих случаях выходное напряжение является наиболее удобным видом сигнала, но операционные усилители, как правило, составляют самую медленную часть преобразователя. Если вы используете преобразователь с токовым выходом, вы добьетесь лучших характеристик за более низкую цену. Рис. 9.47 иллюстрирует общую идею.
Токи можно сформировать с помощью матрицы транзисторных источников тока с масштабирующими эмиттерными резисторами, хотя проектировщики ИС предпочитают использовать цепную R-2R-схему из эмиттерных резисторов. В большинстве преобразователей этого типа источники тока включены все время, а их выходной ток подключается к выходному контакту или к земле под управлением цифрового входного кода. В ЦАП с токовым выходом следует принимать во внимание ограничение по размаху выхода; он может достигать всего 0,5 В, хотя типовое его значение составляет несколько вольт.
Рис. 9.47. Классическая схема ЦАП с коммутацией токов.
Формирование выходного сигнала напряжения. Существует несколько способов формирования выходного напряжения для токовых ЦАП. Некоторые из них показаны на рис. 9.48.
Рис. 9.48. Формирование напряжения по токовому выходу ЦАП
Если емкость нагрузки невелика, а требуемый перепад напряжения достаточно большой, то прекрасно работает схема с обычным резистором, подключенным к земле. При типовом полномасштабном выходном токе 1 мА нагрузочный резистор 100 Ом обеспечивает полномасштабное выходное напряжение 100 мВ с выходным импедансом 100 Ом. Если суммарная емкость выхода ЦАП и емкость нагрузки не превышает 100 пкФ, то время установки в предыдущем примере будет равно 100 не, предполагая, что быстродействие ЦАП несколько выше. Анализируя влияние постоянной времени RС-цепочки, не забывайте, что выходное напряжение установится с точностью до 1/2 МЗР за время, составляющее несколько постоянных времени. Например, время установления выхода с точностью 1/2048 для 10-разрядного преобразователя составляет 7,6 постоянных времени RС-цепочки.
Для того чтобы сформировать большой перепад напряжения или согласовать выход с низкоомной нагрузкой или с большой нагрузочной емкостью, можно использовать показанную на рисунке схему с резистивной обратной связью (усилитель тока с выходом по напряжению). Конденсатор, шунтирующий резистор обратной связи, необходим для обеспечения устойчивости, поскольку выходная емкость ЦАП в сочетании с резистором обратной связи создает запаздывающий фазовый сдвиг; это, к сожалению, снижает быстродействие усилителя. Схема обладает одной занимательной особенностью: для поддержания высокой скорости даже недорогого ЦАП может потребоваться относительно дорогой быстродействующий (с малым временем установки) операционный усилитель. На практике последняя схема обеспечивает лучшие характеристики, поскольку не требует компенсирующего конденсатора. Старайтесь избегать погрешностей напряжения сдвига — операционный усилитель усиливает входное напряжение сдвига в 100 раз.
Коммерчески доступные модули ЦАП обладают точностью от 6 до 18 бит и временем установления от 22 не до 100 мкc (ЦАП с самой высокой точностью). Цены на ЦАП колеблются от нескольких долларов до нескольких сотен долларов. Типовым широко распространенным блоком является AD7248, 12-разрядный преобразователь с защелкой и внутренним опорным источником и с временем установления для выхода по напряжению, равным 5 мкс. Цена его составляет около 10 долл.
9.17. Интегрирующие ЦАП
В прикладных задачах «цифровой» вход может представлять собой последовательность импульсов или колебание другого вида определенной частоты. В этом случае непосредственное преобразование в напряжение иногда оказывается более удобным, чем предварительный отсчет времени с последующим преобразованием двоичного числа по описанным выше способам. При прямом преобразовании частоты в напряжение на каждом входном цикле генерируется стандартный импульс; он может быть как импульсом напряжения, так и импульсом тока (т. е. фиксированным количеством заряда).
Импульсная последовательность усредняется RС-фильтром низких частот или интегратором, создавая выходное напряжение, пропорциональное средней входной частоте. Выход, разумеется, имеет пульсации и для того, чтобы их уменьшить до уровня точности ЦАП (т. е. до 1/2 МЗР) используют фильтр низкой частоты, который замедляет выходную реакцию преобразователя. Для того чтобы пульсации были меньше 1/2 МЗР, постоянная времени Τ простого RС-фильтра низких частот должна быть, по крайней мере, равной Т = 0,69(n + 1)Т0, где Т0 — период выходного сигнала n-разрядного преобразователя частоты в напряжение, соответствующий максимальной входной частоте. Другими словами, время установления выхода до 1/2 МЗР будет примерно равно t = 0,5(n + 1)2Т0. 10-разрядный преобразователь частоты в напряжение с максимальной входной частотой 100 кГц при использовании сглаживающего RС-фильтра будет иметь время установления выходного напряжения 0,6 мс. Используя более сложный фильтр низких частот (с крутым срезом) можно добиться лучших результатов. Однако прежде чем увлекаться затейливыми схемами фильтров, вспомните, что очень часто преобразование частоты в напряжение используется, когда не требуется выход по напряжению. Ниже мы коснемся существенно инерционных нагрузок в сочетании с широтно-импульсной модуляцией.
Широтно-импульсная модуляция. В этом способе используется цифровой входной код для формирования последовательности импульсов фиксированной частоты с длительностью импульсов, пропорциональной входному числу. Легче всего это сделать с помощью счетчика, компаратора и высокочастотного генератора тактовых импульсов (см. упражнение 9.4). Как и прежде, можно использовать простейший фильтр низких частот для того, чтобы сформировать выходное напряжение, пропорциональное среднему времени пребывания в высоком состоянии, т. е. пропорциональное цифровому входному коду. Наиболее часто этот вид Ц/А-преобразования используется, когда сама нагрузка является системой с медленной реакцией; в этом случае широтно-импульсный модулятор генерирует точные порции энергии, усредняемые системой, подключенной в качестве нагрузки. Нагрузка, например, может быть емкостной (как в стабилизаторе с импульсным регулированием, см. гл. 6), термической (термостатированная ванна с нагревателем), механической (система автоматического регулирования скорости ленты) или электромагнитной (большой электромагнитный регулятор).
Упражнение 9.4. Постройте схему формирования импульсной последовательности 10 кГц с длительностью импульсов, пропорциональной 8-разрядному двоичному входному коду. Используйте счетчики и компараторы (с соответствующими расширителями).
Умножитель частоты с усреднением. Схему умножителя частоты, описанную в разд. 8.28, можно использовать для создания простого ЦАП. Параллельный двоичный или двоично-десятичный входной код преобразуется в последовательность выходных импульсов со средней частотой, пропорциональной цифровому входу; для формирования выхода по постоянному току, пропорционального цифровому входному коду, можно, как и для описанного выше преобразователя частоты в напряжение, использовать простое усреднение, хотя в данном случае величина постоянной времени выхода может оказаться недопустимо большой, поскольку время усреднения на выходе умножителя частоты должно быть равно наибольшему периоду выходного сигнала умножителя. Достоинства умножителей частоты как Ц/А-преобразователей особенно проявляются, когда выход усредняется за счет сильной инерционности самой нагрузки.
По-видимому, лучше всего применять такие преобразователи при цифровом управлении температурой, где по каждому выходному импульсу частотного умножителя происходит переключение полных периодов напряжения переменного тока на нагревателе. Частотный умножитель при этом организуется таким образом, чтобы его самая низкая выходная частота была бы равна целочисленному делителю 120 Гц, а для коммутирования напряжения переменного тока (при пересечении нуля) по логическим сигналам используется твердотельное реле (или симистор).
Обратите внимание, что последние три способа преобразования основывались на усреднении во времени, в то время как методы на основе цепной резисторной схемы и источников тока по существу «мгновенны». Эта особенность присуща и различным методам аналого-цифрового преобразования. Усредняет ли преобразователь входной сигнал или преобразует отсчеты мгновенно имеет, как вы вскоре убедитесь на некоторых примерах, большое значение.
9.18. ЦАП с умножением
Большинство из ранее рассмотренных способов можно использовать для построения ЦАП с умножением, в которых выход равен произведению входного напряжения (или тока) на входной цифровой код. В ЦАП с масштабируемыми источниками тока вы можете, например, отградуировать все внутренние источники тока с помощью входного программирующего тока. Умножающие ЦАП можно выполнить на ЦАП, которые не имеют внутреннего опорного источника, используя вход опорного напряжения для входного аналогового сигнала. Однако для этой цели пригодны не все ЦАП, поэтому следует изучить внимательно их паспортные данные. В паспортные данные на ЦАП с хорошими «множительными» свойствами (широкий диапазон входного аналогового сигнала, высокая скорость и т. п.) в верхний правый угол обычно вносится пометка «умножающий ЦАП». Примерами 12-разрядных умножающих ЦАП являются AD7541, 7548, 7845 и DAC1230, стоимость которых колеблется от 10 до 20 долл.
Умножающие ЦАП (и А/Ц-эквиваленты) открывают возможности для логометрических измерений и преобразований. Если некоторый датчик (например, резистивный датчик типа термистора) питается от эталонного напряжения, которое подается также на А/Ц- или Ц/А-преобразователь в качестве опорного напряжения, то изменения эталонного напряжения не повлияют на результаты измерений. Эта идея чрезвычайно плодотворна, поскольку позволяет проводить измерения и управление с точностью, превышающей стабильность эталонного источника напряжения или источника питания, и наоборот, смягчить требования по стабильности и точности источника питания.
Логометрический принцип в своей простейшей форме используется в классической мостовой схеме, где за счет сведения к нулю разностного сигнала между двумя выходами делителей напряжения устанавливается равенство двух отношений (см. разд. 15.02). Приборы типа 555 (см. разд. 5.14) позволяют добиться хорошей стабильности выходной частоты при значительных изменениях напряжения питания; это достигается благодаря применению логометрической схемы: напряжение на конденсаторе, формируемое с помощью RС-цепочки от источника питания, сравнивается с фиксированной долей напряжения питания (1/3 UКК и 2/3 UКК). Результирующая выходная частота будет зависеть только от постоянной времени RС-цепи. К этой важной теме мы еще не раз вернемся и в этой главе в связи с АЦП и в гл. 15, когда мы будем обсуждать методы научных измерений.
9.19. Выбор ЦАП
В качестве справочного материала, необходимого для выбора ЦАП для конкретного применения, мы приводим табл. 9.4, в которой перечислены самые типичные ЦАП различной скорости и точности. Этот список ни коим образом не претендует на полноту, но он включает наиболее распространенные преобразователи и некоторые самые современные приборы, предназначенные для замены.
При поиске ЦАП для конкретного применения следует всегда помнить о некоторых наиболее важных моментах: а) точность; б) быстродействие; в) точность установки (требуется ли внешняя подстройка?); г) входная структура (память? КМОП/ТТЛ/ЭСЛ-совместимость?); д) опорный источник (внутренний, внешний?); е) выходная структура (токовый выход? размах выхода? выход по напряжению? диапазон?); ж) необходимые напряжения питания и мощность рассеивания; з) корпус (желательно с малым числом выводов «узкий DIP» шириной 0,3 дюйма); и) цена.
9.20. Аналого-цифровые преобразователи
Можно насчитать с полдюжины основных способов А/Ц-преобразования, каждый из которых обладает своими преимуществами и ограничениями. Поскольку вы обычно применяете готовые А/Ц-модули или ИС, а не разрабатываете их сами, мы по возможности кратко опишем различные способы преобразования главным образом для того, чтобы помочь сделать квалифицированный выбор для конкретного применения. В следующем разделе этой главы мы покажем несколько типовых приложений А/Ц-преобразования. В гл. 11 рассмотрим некоторые АЦП, использующие точно такие же методы преобразования, но выходы которых просто сопрягаются с микропроцессорами.
Параллельное кодирование. В этом методе напряжение входного сигнала подается на один из входов n компараторов одновременно; другие входы компараторов подключены к n опорным источникам с равномерно распределенными напряжениями. Шифратор с приоритетом формирует цифровой выходной сигнал, соответствующий самому старшему компаратору из активизированных входным сигналом (рис. 9.49).
Рис. 9.49. Параллельно кодированный АЦП.
Параллельное кодирование (иногда называемое «мгновенным» кодированием) — это самый быстрый метод А/Ц-преобразования. Время задержки от входа до выхода равно сумме времен задержки на компараторе и шифраторе. Параллельные преобразователи, выпускаемые промышленностью, имеют от 16 до 1024 уровней квантования (с выходами от 4 до 16 разрядов). При большем числе разрядов они становятся дорогими и громоздкими. Быстродействие их колеблется от 15 до 300 млн. отсчетов в секунду. Типовым мгновенным АЦП является TDC1048 фирмы TRW, это биполярный 8-разрядный преобразователь на 20 млн. отсчетов в секунду в 28-выводном корпусе, цена которого составляет 100 долл.; фирма ЮТ выпускает преобразователь 75С48, КМОП-эквивалент с улучшенными техническими данными.
Существует вариант простого параллельного шифратора, так называемый полумгновенный шифратор, в котором используется двухступенчатый процесс. В этом процессе осуществляется мгновенное преобразование входа до половинной заданной точности; внутренние ЦАП вновь преобразуют приближенное значение в аналоговую величину, а разность между ней и входной величиной подвергается мгновенному преобразованию для получения младших значащих разрядов (рис. 9.50).
Рис. 9.50. Полупараллельный АЦП.
Описанный способ лежит в основе дешевых преобразователей, которые обладают самым высоким быстродействием среди всех остальных, за исключением полностью мгновенных преобразователей. Он используется в недорогих преобразователях типа 8-разрядных ADC0820 (National) и AD7820/4/8 (Analog Devices). Целесообразно рассмотреть возможность использования мгновенных шифраторов в области преобразования колебаний в цифровую форму, даже при сравнительно низкой скорости преобразования; их быстродействие (точнее, малый апертурный интервал, в течение которого фиксируется выход компаратора) гарантирует, что входной сигнал за время преобразования существенно не изменится. Альтернативный вариант (более медленные преобразователи мы опишем ниже) обычно требует применения аналоговой схемы квантования и запоминания для того, чтобы зафиксировать входное колебание на время преобразования.
Последовательное приближение. В этом распространенном способе осуществляется опробование различных выходных кодов путем подачи их на ЦАП и сравнения результата с аналоговым входом с помощью компаратора (рис. 9.51).
Рис. 9.51. АЦП с последовательной аппроксимацией.
Обычно процесс начинается с установки всех разрядов в «0». Затем, начиная со старшего значащего разряда, каждый разряд по очереди временно устанавливается в «1». Если выходное напряжение ЦАП не превышает напряжения входного сигнала, то этот разряд остается в состоянии «1», в противном случае он возвращается в «0». Для n-разрядного АЦП потребуется n таких шагов. Происходящий процесс можно описать как процесс бинарного поиска, начинающегося с середины. А/Ц-модуль с последовательным приближением имеет вход «Начало преобразования» и выход «Конец преобразования». Цифровой выход всегда выдается в параллельной форме (все разряды сразу по n отдельным выходным линиям), а иногда и в последовательной форме (n последовательных выходных битов, начиная с СЗР, по одной выходной линии). В нашем курсе по схемотехнике студенты конструируют АЦП с последовательным приближением в полном объеме вместе с ЦАП, компаратором и управляющей логикой.
На рис. 9.52, а показано восемь импульсов синхронизации и выходные сигналы на ЦАП, следующие друг за другом по мере того как аналоговый выход, подвергаемый проверке, сходится к входному напряжению. На рис. 9.52, б показано полное 8-разрядное «дерево», — прекрасная картинка, которую вы можете получить, наблюдая за выходом ЦАП, при подаче на вход медленно меняющегося линейного напряжения по всему диапазону входного аналогового сигнала.
Рис. 9.52. Сигналы при 8-битовой последовательной аппроксимации. (С разрешения П. Эмери, Р. Ловетта и К. Рудина.) а — аналоговый выход, сходящийся к конечному значению; обратите внимание на синхроимпульсы; б — полное «дерево».
АЦП с последовательным приближением являются сравнительно точными и быстрыми и требуют всего n установок на ЦАП для обеспечения n-разрядной точности. Типичное время преобразования колеблется в диапазоне от 1 мкс до 50 мкс при точности от 8 до 12 разрядов; цена его составляет 10-400 долл. Этот тип преобразователя работает на коротких выборках из входного напряжения и если его входной сигнал меняется во время преобразования, то ошибка не превышает величину происходящего за это время изменения; однако выбросы на входном сигнале катастрофичны. Несмотря на общую вполне допустимую точность, эти преобразователи могут иметь довольно необычные нелинейности и «пропущенные коды».
Фирма National Semiconductor в своих преобразователях серии ADC0800 для исключения пропущенных кодов использует хитроумный прием: вместо многозвенного ЦАП "R-2R" используются цепочка из 2n резисторов и аналоговые ключи (рис. 9.53); эта схема генерирует проверочные аналоговые напряжения по типу мгновенного шифратора.
Существует вариант АЦП этого типа, известный как «следящий АЦП», в котором для формирования последовательных проверочных кодов используется реверсивный счетчик; он сравнительно медленный, если учитывать скачки входного сигнала, но быстрее отслеживает плавные изменения, чем преобразователь с последовательным приближением.
Рис. 9.53. ЦАП на основе резисторной лестничной цепи и дерева коммутаций: без пропуска кодов.
Преобразование напряжения в частоту. В данном методе входное аналоговое напряжение преобразуется в выходную импульсную последовательность, частота которой пропорциональна входному напряжению. Это можно осуществить простым зарядом конденсатора током, пропорциональным входному уровню, и последующим его разрядом при достижении заранее установленного порога. Для повышения точности обычно применяют обратную связь. По одному из способов выход схемы частота-напряжение сравнивается с входным аналоговым уровнем и осуществляется генерация импульсов на частоте, которая позволяет выравнять входные уровни компаратора. В более распространенных методах используется так называемый прием «выравнивания зарядов»; позже мы опишем это более подробно (в частности, метод «распределения заряда, накопленного на конденсаторе»).
Обычно частоты на выходе схемы напряжение-частота находятся в диапазоне от 10 кГц до 1 МГц (последнее значение для максимального входного напряжения). Выпускаются коммерческие преобразователи напряжения в частоту с разрешающей способностью, эквивалентной 12 разрядам (точность 0,01 %). Например, превосходный преобразователь AD650 фирмы Analog Devices (разд. 5.15) имеет типовую нелинейность 0,002 % при работе от 0 до 10 кГц. Он не дорогой и очень удобен для случаев, когда выходной сигнал должен передаваться в цифровом виде по кабелю или когда требуется выходная частота (а не цифровой код). Если скорость не играет большой роли, то путем подсчета выходной частоты за фиксированный интервал времени можно получить число в цифровом представлении, пропорциональное среднему входному уровню. Этот способ широко используется в цифровых измерительных приборах средней точности (3 цифры).
Одностадийное интегрирование. В этом способе в начале преобразования запускается внутренний генератор линейного напряжения и одновременно для подсчета импульсов стабильного генератора тактовых импульсов счетчик. Когда линейно меняющееся напряжение сравнивается с входным уровнем, компаратор останавливает счетчик; результат на счетчике будет пропорционален входному уровню, т. е. это и есть цифровой выход. Принцип работы представлен на рис. 9.54.
Рис. 9.54. Одностадийный АЦП.
В конце преобразования схема разряжает конденсатор и сбрасывает состояние счетчика; преобразователь готов к очередному циклу преобразования. Способ одностадийного интегрирования достаточно прост, но он не используется, если необходима высокая точность, поскольку в этом случае выдвигаются слишком жесткие требования к стабильности и точности конденсатора и компаратора. Метод «двухстадийного интегрирования» позволяет избавиться от этих проблем; в настоящее время его обычно применяют, если требуется высокая точность.
Одностадийное интегрирование все еще живет и благоденствует особенно, в тех областях, где не требуется абсолютная точность, а необходимо преобразование с хорошей разрешающей способностью и одинаковыми промежутками между смежными уровнями. Хорошим примером является применение для анализа амплитуд импульсов (см. разд. 15.16), где амплитуда импульса фиксируется с помощью пикового детектора и затем преобразуется в некоторый адрес. Существенную роль здесь играет равенство ширины каналов, поэтому применение преобразователя с последовательным приближением было бы в общем случае неудобно. Способ одностадийного интегрирования используется также при преобразовании временных интервалов в амплитуду.
9.21. Методы уравновешивания заряда
Существует несколько методов, общей особенностью которых является применение конденсатора для отслеживания отношения уровня входного сигнала к эталонному. Во всех этих методах осуществляется усреднение (интегрирование) входного сигнала на фиксированном интервале времени, относящемся к одному измерению. При этом есть два важных преимущества:
1. Поскольку в этих методах и для сигнала, и для эталона используется один и тот же конденсатор, они не предъявляют высоких требований к стабильности и точности конденсатора. Требования к компаратору также не слишком жесткие. В результате для компонентов эквивалентного качества можно получить более высокую точность или такую же точность, но за более низкую цену.
2. Выходной сигнал пропорционален среднему значению входного напряжения на (фиксированном) интервале времени интегрирования. Выбирая этот интервал времени равным кратному периода сетевого напряжения, можно сделать преобразователь нечувствительным к фону переменного тока 60 Гц (и его гармоник) на входном сигнале. Результирующая чувствительность к сигналам помех как функция от частоты показана на рис. 9.55 (интервал интегрирования 0,1 с).
Рис. 9.55. Подавление помех интегрирующим АЦП.
Такое подавление сетевых помех частотой 60 Гц требует точного управления временем интегрирования, поскольку ошибка в доли процента тактовой частоты приведет к неполному устранению фона. Одной из возможностей реализации является применение кварцевого резонатора. В разд. 9.29 вы познакомитесь с изящным методом синхронизации работы интегрирующего преобразователя с частотами, кратными частоте сетевого напряжения, для обеспечения полного подавления фона. Недостатком преобразования с интегрированием по сравнению с последовательным приближением является невысокая скорость преобразования.
Двухстадийное интегрирование. Этот изящный и очень распространенный способ избавляет вас от большинства проблем, связанных с конденсатором и компаратором и присущих одностадийному интегрированию. Принцип преобразования иллюстрируется рис. 9.56.
Рис. 9.56. Цикл двухстадийного преобразования.
Сначала в течение фиксированного интервала времени происходит заряд конденсатора током, точно пропорциональным входному уровню; затем конденсатор разряжается постоянным током до тех пор, пока напряжение на нем вновь не станет равным нулю. Время разряда конденсатора будет пропорционально входному уровню, оно используется для того, чтобы привести в действие счетчик, на который подаются тактовые импульсы фиксированной частоты. Окончательное состояние счетчика будет пропорционально входному уровню; т. е. это и есть цифровой выход.
С помощью двухстадийного интегрирования можно добиться очень хорошей точности, не предъявляя слишком жестких требований к стабильности компонентов. В частности, стабильность емкости конденсатора может быть не высокой, поскольку циклы заряда и разряда происходят со скоростью, обратно пропорциональной емкости. Более того, ошибки дрейфа и смещения компаратора компенсируются благодаря тому, что каждый цикл преобразования начинается и заканчивается на одном и том же напряжении, а в некоторых случаях и с одинаковым наклоном. В самых точных преобразователях циклу преобразования предшествует цикл «автокоррекции нуля», в течение которого на вход преобразователя подается нулевой сигнал. Поскольку на этой фазе используется тот же интегратор и компаратор, вычитание выходного значения «ошибки при нуле» из результата последующего измерения позволяет компенсировать ошибки, связанные с измерениями вблизи нуля. Однако при этом не происходит коррекция ошибок по всей шкале.
Заметьте, что в двухстадийном преобразовании не предъявляются жесткие требования даже к частоте тактовых импульсов, так как фиксированный интервал времени на первой фазе измерений формируется из тех же тактовых импульсов, которые используются для счета в прямом направлении. Если частота тактовых импульсов уменьшится на 10 %, то начальный наклон будет на 10 % выше нормального, а время спада на 10 % вырастет. Так как измерение осуществляется по тактовым меткам, а их частота снизилась на 10 % по сравнению с нормальной, окончательное состояние счетчика будет тем же самым! В двухстадийном преобразователе с автокоррекцией нуля жесткие требования к стабильности предъявляются только к току разряда. Прецизионные эталонные источники тока и напряжения получить довольно просто, причем в этом типе преобразователя масштабный коэффициент устанавливается регулируемым эталонным током.
При выборе компонентов для двухстадийного преобразования ориентируйтесь на высококачественный конденсатор с минимальной остаточной поляризацией диэлектрика (эффект «памяти»; см. модель на рис. 4.42) — полипропиленовые, полиэфирные или тефлоновые конденсаторы в этом отношении лучше. Хотя эти конденсаторы и не являются поляризованными, их внешнюю фольгу следует подключить к низкоимпедансной точке (выход операционного усилителя интегратора). Для минимизации ошибок величины R и С выбирайте таким образом, чтобы использовать весь аналоговый диапазон интегратора. На высокой частоте тактовых импульсов разрешающая способность улучшается, однако при сильном увеличении частоты период тактовых импульсов может стать короче времени отклика компаратора.
При использовании прецизионного двухстадийного преобразователя (как, впрочем, и любого прецизионного преобразователя) важно исключить цифровые помехи на пути прохождения аналоговых сигналов. Преобразователи обычно снабжаются для этих целей раздельными выводами «аналоговой земли» и «цифровой земли». Во многих случаях на цифровых входах полезно поставить буферы (скажем, октальный формирователь `244 с тремя состояниями, работающий только при считывании выхода) для того, чтобы защитить преобразователь от цифровых шумов микропроцессорной шины (см. следующую главу). В крайнем случае, для того чтобы «отгородиться» от помех очень «грязной» шины, можно использовать оптроны. Постарайтесь обеспечить соответствующую развязку по питанию на ИС преобразователе. Постарайтесь не вносить помех в конечной критической точке интегрирования, где линейное изменение достигает точки переключения компаратора: некоторые преобразователи, например, допускают проверку конца преобразования путем считывания выходного слова; не пользуйтесь этим! Лучше используйте отдельную соответствующим образом изолированную линию ЗАНЯТО.
Двухстадийное интегрирование находит широкое применение в цифровых универсальных измерительных приборах, а также в преобразовательных модулях с разрешающей способностью от 10 до 18 разрядов. Там, где не требуется высокое быстродействие, этот способ обеспечивает хорошую точность и высокую стабильность при низкой стоимости и обладает превосходной помехоустойчивостью к сетевым (и другим) помехам. Используя модуль на основе двухстадийного интегрирования, вы получаете наивысшую точность при заданных затратах. При увеличении входного сигнала коды цифрового выхода возрастают строго монотонно.
Дельта-сигма-преобразователи. Существует несколько методов А/Ц-преобразования, в основе которых лежит принцип нейтрализации входного тока (среднего) сигнала с помощью переключаемого внутреннего источника тока или заряда. На рис. 9.57 показана функциональная схема дельта-сигма-преобразователя.
Рис. 9.57. Дельта-сигма АЦП с уравновешиванием заряда
Входное напряжение поступает на интегратор, выходной сигнал которого сравнивается с любым фиксированным напряжением, например нулем. В зависимости от выходного сигнала компаратора импульсы тока фиксированной длительности (т. е. с фиксированным приростом заряда) подключаются при каждом изменении тактовых импульсов либо к суммирующему входу, либо к земле, что позволяет поддерживать нулевой средний ток на суммирующем входе. Это-принцип уравновешивания. Счетчик отслеживает число импульсов подключения к суммирующему входу в пределах некоторого заданного числа тактовых импульсов, допустим, 4096. Полученное число будет пропорционально среднему входному уровню за 4096 тактовых импульсов, т. е. это и будет выходным кодом.
В дельта-сигма-преобразователях можно использовать также импульсы тока, сформированные с помощью резистора и стабильного эталонного напряжения, поскольку суммирующая точка находится фактически на уровне потенциала земли. В этом случае необходимо, чтобы сопротивление замкнутого ключа было меньше последовательного резистора и его отклонения не вызывали дрейфа.
АЦП с коммутируемым конденсатором. С методом выравнивания заряда тесно связан метод «с распределением заряда, накопленного на конденсаторе» или А/Ц-преобразования с «коммутируемым конденсатором». В этом методе с помощью периодически повторяющегося заряда конденсатора от стабильного эталонного напряжения создается заряд определенной величины, затем происходит разряд на суммирующую точку. Как и ранее, к выходу интегратора подключен компаратор, который управляет частотой переключения конденсатора. Этот метод обладает определенными преимуществами для схем с питанием от одного источника напряжения, поскольку действующую полярность заряда, передаваемого от конденсатора к суммирующей точке, можно изменить с помощью ключей на полевых транзисторах, соединенных соответствующим образом (т. е. путем коммутации обеих обкладок конденсатора).
Примером преобразователя, основанного на этом методе, является преобразователь напряжения в частоту LM331, характерная особенность которого состоит в том, что он работает от одного источника +5 В. Мы рассказывали о его применении в качестве генератора, управляемого напряжением, в разд. 5.14.
Замечания по поводу интегрирующих АЦП. Как и в А/Ц-преобразователях на основе двухстадийного интегрирования, во всех преобразователях с уравновешиванием заряда происходит усреднение входного сигнала на фиксированных интервалах времени, поэтому их можно сделать нечувствительными к сетевым помехам на основной частоте 60 Гц и ее гармониках. Методы уравновешивания заряда характеризуются в основном точностью и низкой стоимостью (для их реализации не нужно, например, очень хорошего компаратора) и обеспечивают строго монотонный выход. Вместе с тем по сравнению с последовательным приближением они довольно медленны. Преобразователь AD1170 обеспечивает разрешающую способность 18 разрядов при времени преобразования 66 мс; стоит он около 100 долл. Для сравнения 16-разрядный преобразователь с последовательным приближением AD76 имеет время преобразования 15 мкс и стоит 120 долл. В отличие от двухстадийного интегрирования в методах дельта-сигма-преобразования и с коммутируемым конденсатором используются компараторы низкой точности, подключаемые к интеграторам, однако эти методы требуют точных схем коммутации зарядов. В то же время двухстадийные методы используют компараторы с высокой воспроизводимостью характеристик, но не предъявляют высоких требований к ключам, по крайней мере в отношении скорости и инжекции заряда.
Продолжая наше сравнение реальных приборов, отметим, что многостадийный 22-разрядный преобразователь AD1175K обладает временем преобразования 50 мс и стоит 800 долл (разд. 9.22).
Одной из интересных особенностей любого способа интегрирования (одно- и двухстадийное интегрирование и уравновешивание заряда), о которой следует помнить, является то, что интегратор может иметь вход как по току, так и по напряжению с последовательно включенным резистором. Действительно, некоторые преобразователи имеют два входных вывода, один — непосредственно подключенный к суммирующей точке для связи с устройством, представляющим собой источник тока. При использовании токового входа напряжение сдвига интегратора становится несущественным, в то время как вход по напряжению (с внутренним последовательным резистором) операционного усилителя интегратора дает ошибку, равную напряжению сдвига по входу. Поэтому токовый вход удобен для получения широкого динамического диапазона, особенно если АЦП используется вместе с устройством, имеющим какой-нибудь токовый выход, например фотоумножители и фотодиоды. Остерегайтесь таких образчиков «Попался!», как: точность АЦП может быть задана для токового входа, хотя преобразователь имеет и токовый вход и вход по напряжению; не рассчитывайте на хорошие параметры при малых сигналах, когда вы используете такой преобразователь по входу напряжения.
Следует отметить, что все методы уравновешивания заряда включают в себя точный преобразователь напряжения в частоту и могут использоваться в качестве таковых, если требуется частотный выход (рис. 9.58).
Рис. 9.58. Преобразователь напряжения в частоту с уравновешиванием заряда.
9.22. Некоторые необычные АЦП и ЦАП
Стоит кратко упомянуть о четырех последних разработках фирмы Analog Devices, признанного лидера в области преобразовательных ИС и модулей.
Комбинированный ЦАП/АЦП AD7569. В монолитной ИС AD7569 на одном кристалле объединены 8-разрядные АЦП и ЦАП со схемой выборки и хранения, внутренним тактовым генератором и источником опорного напряжения (рис. 9.59).
Рис. 9.59. Комбинированный 8-разрядный ЦАП/АЦП AD7569.
(С разрешения фирмы Analog Devices.)
АЦП с последовательным приближением осуществляет преобразование за 2 мкс, а ЦАП формирует выходное напряжение с типовым временем установки 1 мкс. Эта ИС предназначена в основном для микропроцессорных систем: преобразователи совместно используют один 8-разрядный цифровой порт с подходящими управляющими сигналами и быстрым тактированием (в отличие от большинства медленных ИС преобразователей, которые требуют дополнительных состояний «ожидания» и имеют не совсем подходящее время установки), а сам кристалл работает только от одного источника питания +5 В. Более того, не требуется внешних компонентов и подстройки; схема размещена в удобном 24-выводном корпусе типа «узкий DIP», имеет небольшое потребление (60 Вт) и подходящую цену (6 долл. в партии по 100 шт.).
22-разрядный интегрирующий АЦПАБ 1175. В этом впечатляющем модуле (рис. 9.60) используется многостадийное интегрирование с автокоррекцией нуля для того, чтобы получить точность 22 разряда (6 и 1/2 цифр) при необычной скорости преобразования (20 преобразований в секунду).
Рис. 9.60. 22-разрядный интегрирующий АЦП AD1175K.
(С разрешения фирмы Analog Devices.)
Чтобы получить представление о том, что это значит, рассмотрите другой вариант — настольный (или стоечный) измерительный прибор, стоимость которого, как правило, достигает 4000 долл. и который выполняет 2 преобразования в секунду. Для сравнения: AD1175 занимает объем 10 куб. дюймов, потребляет 3 Вт и стоит 800 долл. Он содержит внутренний микропроцессор и допускает грубую установку усиления и сдвига по своей цифровой шине (которая используется и для ввода команд и для вывода преобразованных данных).
Преобразователи для видеосигналов HDG0807 и AD9502. Эти преобразователи — это как раз то, что нужно для цифровых видеосигналов (рис. 9.61 и рис. 9.62).
Рис. 9.61. ЦАП композитного видеосигнала HDG0807.
(С разрешения фирмы Analog Devices.)
Рис. 9.62. АЦП композитного видеосигнала типа AD9502.
(С разрешения фирмы Analog Devices.)
Преобразователь HDG0807 представляет собой 8-разрядный ЦАП с уровнями стандартных видеосигналов и с выходным импедансом 75 Ом. Более того, он даже формирует правильные «композитные синхроимпульсы», совмещаемые с аналоговым видеосигналом для образования полного выходного видеосигнала. Преобразователь полностью готов к применению, обладает высоким быстродействием (до 50 МГц) и доступен. Монолитной основой этого гибридного преобразователя является схема AD9700; работает она на частотах до 100 МГц.
АЦП для видеосигналов AD9502 выполняет обратную работу, а именно, осуществляет дискретизацию входного видеосигнала. Он выделяет из аналогового композитного сигнала синхроимпульсы, использует контур ФАПЧ для формирования синхроимпульсов элементов изображения, синхронизированных с разверткой, и затем преобразует аналоговое напряжение в 8-разрядную цифровую величину. Он может выполнять преобразование на частоте до 13 МГц, генерируя выходы в цифровом виде с экранным разрешением 512x512.
9.23. Выбор АЦП
Как и в случае ЦАП, мы сгруппировали АЦП (табл. 9.5 и табл. 9.6) так, чтобы охватить весь диапазон технических характеристик и стоимости. Мы старались включить как наиболее распространенные блоки, так и те, которые появились недавно и выйдут победителями в следующем году.
При выборе АЦП следует учитывать ряд факторов: а) точность, б) быстродействие, в) точность установки (требуется ли подстройка, гарантируется ли монотонность), г) необходимые питающие напряжения (некоторые работают только от +5 В) и мощность рассеивания, д) небольшой корпус, е) источник опорного напряжения и генератор тактовых импульсов (внутренний или внешний? Если внешний опорный источник, то подойдет ли +5 В? Если внутренний, то доступен ли он снаружи, например для логометрических измерений? Хорошо ли это? Можно ли его нагрузить?), ж) входной импеданс и диапазон аналогового напряжения (однополярный, двухполярный или и то, и другое?), з) входная схема (дифференциальный? Внутренний мультиплексор или выборка с запоминанием? Инвертированная полярность, т. е. более отрицательный сигнал для большего выхода?), и) выходная схема (параллельный, последовательный, либо и то, и другое? Является ли параллельный выход совместимым с микропроцессором как часть отдельно активизируемых байтовых групп?) и, конечно, к) стоимость.
Полные А/Ц-подсистемы. Если вам нужны АЦП высокой точности, особенно с входным мультиплексором и выборкой с запоминанием, вы должны внимательно присмотреться к «А/Ц-подсистемам», которые предлагают ряд изготовителей. Они представляют собой обычно модули (а не ИС), выполненные в виде металлической коробки высотой 0,4 дюйма с размерами 2x4 дюйма (или 3x5); выводы модуля сопрягаются с помощью специальной колодки (или запаиваются непосредственно в печатную плату). Эти преобразователи не дешевы, но они исключительно просты в использовании. Более того, изготовители решили ряд действительно сложных проблем, которые не позволяли осуществить преобразование с высокой разрешающей способностью — наводки, изоляция цифровых и аналоговых узлов, стабильное опорное напряжение, сдвиги усилителя и т. п.
Типичным представителем этих устройств является DT-5716 фирмы Data Translation (рис. 9.63).
Рис. 9.63. Модульная АЦП-система DT5716.
Этот модуль имеет 16 несимметричных (или 8 дифференциальных) входов с аналоговым мультиплексором на входе, за которым следуют схема выборки и запоминания, усилитель с регулируемым коэффициентом усиления и 16-разрядный АЦП. Он может осуществлять преобразование на частоте 20 кГц и имеет двухбайтовую организацию выхода, которая упрощает сопряжение с микропроцессорной шиной (см. гл. 10 и 11).
Модули А/Ц-подсистем выпускаются с разрашающей способностью от 12 до 16 разрядов как с входным мультиплексором, так и без него. Вы действительно платите за высокую точность и высокое быстродействие и большинство выпускаемых модулей существенно дешевле, чем упомянутые ранее блоки. К примеру, модули серии DAS1157-9 фирмы Analog Devices представляют собой одноканальные преобразователи с разрешающей способностью от 14 до 16 разрядов и пропускной способностью, соответствующей 18 кГц; стоят они меньше 300 долл. в партии из 100 шт. Вы можете приобрести преобразовательные модули нескольких фирм, включая Analog Devices, Analogic, Data Translation и Intech.
Примеры А/Ц-преобразования
9.24. 16-канальная А/Ц-система сбора данных
На рис. 9.64 показана схема, предназначенная для преобразования в цифровую форму любой из 16 аналоговых входных величин с 12-разрядным кодом на выходе. С ее помощью можно организовать «передний край» в эксперименте сбора данных под управлением микропроцессора.
Рис. 9.64. 12-разрядный 16-канальный АЦП последовательного приближения (50 мкс на преобразование).
ИС HI-506 представляет собой 16-канальный аналоговый МОП-мультиплексор с цифровыми входами, совместимыми с МОП-логикой. Этот своеобразный мультиплексор имеет несколько очень приятных свойств. В частности, его ключи являются разновидностью ключей с «размыканием перед срабатыванием». Это означает, что при смене адреса на мультиплексоре различные входные каналы не замыкаются друг с другом. Более того, входные сигналы могут уходить за пределы напряжения питания и при этом не будет возникать эффект «тиристорного защелкивания» или перекрестные помехи между входами. Учтите эти соображения, когда будете подыскивать себе линейные ключи. Они иногда могут породить проблемы. Например, «размыкание перед срабатыванием» снижает время переключения, поскольку «срабатывание» необходимо задержать для того, чтобы дать возможность ключу разомкнуться.
Единственный аналоговый выход мультиплексора поступает на схему LF398 — монолитный усилитель с выборкой и запоминанием (рис. 4.41) в удобном 8-выводном корпусе DIP (цена 2 долл.). Эта ИС используется как схема «слежения и запоминания», фиксирующая аналоговое колебание только с началом преобразования. С использованием конденсатора 1000 пФ выход схемы устанавливается до 1 МЗР за 0,5 мкс и снижается менее, чем на 3 мкВ за последующие 12 мкс преобразования. AD7572-3TO превосходный маломощный 12-разрядный АЦП с внутренними источником опорного напряжения и тактовым генератором; он имеет удобные управляющие сигналы для сопряжения с микропроцессором, включая возможность мультиплексирования 12-разрядного результата на 8 линий («байтовая шина данных») за два последовательных цикла.
Устройство, управляющее этой схемой, обычно назначает адрес для мультиплексора, затем инициирует преобразование с помощью сигналов . АЦП отвечает выдачей сигнала , который фиксирует аналоговый входной сигнал. Преобразование завершается через 12 мкс и сигнал устанавливается на высоком уровне. С этого момента доступны все 12 разрядов результата, если вы хотите использовать все 12 линий Dвых; однако если у вас 8-разрядная шина, то вы можете первыми считать 8 младших значащих разрядов, а затем подать сигнал ВЫБОР СТАРШЕГО БАЙТА для того, чтобы передать на D0-D3 4 старших значащих разряда.
После инициирования преобразования устройство, управляющее преобразователем, может заняться проверкой сигнала , чтобы увидеть, когда преобразование завершится. Более простой вариант — это ждать 12 мкс («временной цикл» программы потратит требуемое время; см. гл. 11). Управляющее устройство вынуждено ждать 4 мкс после завершения преобразования перед тем, как инициировать следующее преобразование; это-«время захвата» ИС LF398, т. е. время, необходимое для того, чтобы выход вновь отследил вход с точностью до 0,1 %. В течение этого времени устройство управления может, конечно, заняться считыванием цифрового выхода. Общее время преобразования составляет, таким образом, минимум 16 мкс, что равнозначно 60000 преобразованиям в секунду. По поводу этой схемы стоит сделать несколько замечаний: (а) Для получения полной 12-разрядной точности вы должны обеспечить подстройку сдвига для компенсации трех видов ошибок: 1) Uсдв входа В/3 составляет 7 мВ (макс); 2) полевой транзистор входа В/3 вводит небольшую ступеньку напряжения в режиме ЗАПОМИНАНИЕ, обусловленную инжекцией заряда в затвор полевого транзистора (разд. 3.12), в данном случае относительно стабильную отрицательную ступеньку в 10 мВ; 3) сам АЦП имеет Uсдв, определяемое как 4 МЗР (эквивалентно 5 мВ для диапазона входного сигнала 0–5 В). Мы включили схему подстройки для LF398, используя рекомендации изготовителя, (б) Емкость конденсатора запоминания определяется путем компромисса. Небольшая емкость сокращает время захвата, но приводит к большему спаду вершины импульса и большей ступеньке от инжекции заряда. Мы выбрали емкость, которая дает незначительный спад и приводит к ступеньке в режиме ЗАПОМИНАНИЕ, эквивалентной 8 МЗР; ступенька сравнительно стабильна и ее можно компенсировать соответствующей подстройкой с помощью регулятора «Подстройка сдвига», (в) Схема приспособлена под однополярные входные сигналы (0–5 В); если необходимо принимать биполярные входные сигналы, то следует добавить схему смещения операционного усилителя, позаботясь о том, чтобы удержать ошибки в пределах менее 1 МЗР (1 часть на 4000). Для того чтобы облегчить работу, схема AD7572 выдает прецизионное опорное напряжение, тем не менее потребуется еще несколько компонентов, (г) Прекрасным дополнением к такого сорта схемам является усилитель с программируемым коэффициентом усиления, так что управляющий микропроцессор может управлять коэффициентом усиления для того, чтобы приспособиться к диапазону амплитуд входного сигнала. ИС AD526 фирмы Analog Devices представляет собой однокристальный прибор с программируемым коэффициентом усиления 1, 2, 4, 8 и 16 и точностью усиления 0,02 % (точность 12 разрядов); альтернативный вариант — ИС LF13006/7 фирмы National содержит резисторы и ключи на полевых транзисторах (но не сам усилитель) для установки коэффициента усиления от 1 до 128 (с коэффициентами 2) или от 1 до 100 (в последовательности 1-2-5); эти компоненты имеют точность коэффициента усиления 0,5 % (точность 8 разрядов).
В этой схеме, естественно, используется АЦП с последовательным приближением, поскольку при переключении от одного входа к другому важную роль играет быстродействие. Мы выбирали компоненты, стараясь минимизировать стоимость. Показанная схема будет стоить около 50 долл. по ценам на сегодня; основной вклад в стоимость вносит преобразователь — 35 долл.
9.25. 3 1/2-знаковый цифровой вольтметр
На рис. 9.65 представлена схема, в которой использованы преимущества двухстадийного интегрирования. Почти вся схема цифрового вольтметра, за исключением внешних компонентов для интегратора и генератора тактовых импульсов, точного источника опорного напряжения и устройства отображения, выполнена на однокристальной КМОП БИС. Схема ICL7107 при работе использует цикл автоматического обнуления и даже, более того, формирует все 7-сегментные мультиплексируемые выходные сигналы для непосредственного запуска 4-цифрового дисплея на светодиодах. Используя на входе внешний аттенюатор (или эталонный источник), вы можете формировать другие полномасштабные диапазоны напряжений. Метод двухстадийного преобразования очень удобен для работы цифрового вольтметра: он обеспечивает хорошую точность (включая автокоррекцию нуля) и подавление сетевых помех в приборах с усреднением при низкой стоимости. Стоимость используемого здесь преобразователя не превышает 20 долл.
Рис. 9.65. Однокристальный «3 1/2-знаковый» цифровой вольтметр с двухстадийным интегрированием. В — высокий; Н — низкий.
9.26. Кулонометр
Схема, показанная на рис. 9.66, представляет собой токовый интегратор с уравновешиванием заряда, или «кулонометр». Этот прибор можно использовать для измерения интегрального тока (полного заряда) за определенный интервал времени; он может найти применение в области электрохимии или для электрофореза. Начнем с нижнего левого угла, где интегрируемый ток протекает через мощный прецизионный 4-проводный резистор, образуя пропорциональное напряжение. ИМС2 является сравнительно недорогим (менее 5 долл.) прецизионным операционным усилителем с одним источником питания, с низким начальным сдвигом напряжения (80 мкВ макс.) и малым дрейфом сдвига во времени и по температуре (менее 2 мкВ на градус и 0,5 мкВ в месяц).
Рис. 9.66. Кулонометр (счетчик накопленного заряда). К.Т. — контрольная точка интегратора; Пр — предохранитель; НК — неподключенный контакт; МЗЦ — младшая значащая цифра; СЗЦ — старшая значащая цифра.
Он формирует выходной ток, программируемый измеряемым током и запускает зарядоуравновешивающий интегратор на ИМСЗ. С помощью поворотного переключателя на входе выбирается один из пяти декадных пределов чувствительности, причем на любом диапазоне полному входному сигналу соответствует ток 200 мкА в коллекторе Τ1. Транзистор Τ1 — это полевой МОП-транзистор (а не биполярный плоскостной транзистор), используемый для исключения ошибки управляющего тока.
Схема уравновешивания заряда является обычной дельта-сигма-схемой с полевым p-канальным транзистором Т2, работающим в режиме обогащения, который выдает порции заряда в соответствии с состоянием триггера ИМС5а после каждого такта синхронизации. ИМС5б работает как одновибратор, увеличивая состояние двоичной пересчетной схемы ИМС7 на каждом такте, в течение которого Т2 находится в проводящем состоянии. Эта схема не подсчитывает какое-то определенное число тактов синхронизации, а просто накапливает до тех пор, пока не остановится. 4-разрядные счетчики ИМС9 и ИМС10 отслеживают общий заряд и управляют 8-разрядным дисплеем на светодиодах.
Если измеряемый ток превышает максимальный ток выбранного диапазона, то ток Т2 не способен уравновесить ток Т1, даже если транзистор будет постоянно включен; при этом зафиксированное на счетчиках значение заряда будет содержать ошибку. ИМС4а проверяет условие выхода за пределы диапазона и зажигает светодиод, если выходной сигнал интегратора превышает фиксированный уровень опорного напряжения (который выбирается с запасом по отношению к нормальным условиям работы интегратора).
Некоторые подсчеты при проектировании. При проектировании схемы типа этой следует принять несколько решений. Например, большинство элементов КМОП-логики работают от напряжения +15 В для того, чтобы упростить коммутацию транзистора Т2. Поскольку 4-разрядные счетчики работают от напряжения +5 В, для сопряжения высокоуровневых сигналов КМОП-логики с уровнями счетчика использована схема 4049. ИМС4 работает от одного источника питания и ее выходной сигнал изменяется от нуля до +15 В, что упрощает подключение к ИМС5а.
Для того чтобы обеспечить достаточный диапазон работы транзистора Т1, опорное напряжение для интегратора и компаратора устанавливается с помощью стабилитрона D2 на уровне +4,7 В; здесь подойдет самый простой стабилитрон, поскольку точность не требуется. Обратите внимание на то, что прецизионное опорное напряжение зависит от напряжения +4,7 В, использованного для масштабирования тока, коммутируемого в интеграторе. Рабочий ток источника REF-02 используется заодно и для смещения стабилитрона.
Ключ (Т2) может оказать существенное влияние на общую точность прибора. Если он обладает слишком большой емкостью, то дополнительный заряд на его стоке приведет к погрешности. Схемное решение, использованное в предыдущем примере (коммутация на землю во время циклов отклонения тока), в данном случае не подойдет, поскольку ошибки напряжения сдвига ИМСЗ приведут к постоянной ошибке при очень малых токах. Используя однополюсный однонаправленный переключатель, показанный на схеме, можно увеличить динамический диапазон за счет некоторого снижения точности (что вызвано избыточным зарядом на стоке транзистора Т2, который интегрируется на каждом такте). Выбранный операционный усилитель интегратора представляет собой усилитель на полевых МОП-транзисторах с малыми токами смещения и поэтому пренебрежимо малой погрешностью по току (10 пА тип.). Поскольку операционные усилители на полевых транзисторах имеют, как правило, большие напряжения сдвига, чем усилители на биполярных транзисторах, такой выбор усилителя только обострит только что рассмотренную проблему динамического диапазона при использовании однополюсного ключа на два направления.
Динамический диапазон. Важно понимать, что этот прибор спроектирован в расчете на большой динамический диапазон с точным интегрированием тока, изменяющегося в процессе эксперимента на несколько порядков по величине. Именно по этой причине большое внимание уделяется схеме «переднего края» на прецизионном операционном усилителе с цепью подстройки сдвига, обеспечивающей прецизионную регулировку (обычная схема подстройки имеет, как правило, полный диапазон в несколько милливольт, что затрудняет точную подстройку сдвига на нуле). При подстройке ИМС2 на сдвиг 10 мВ или менее динамический диапазон прибора будет превышать 10000:1.
Схемы фазовой автоподстройки частоты
9.27. Введение
Система фазовой автоподстройки частоты (ФАПЧ) — это весьма важный и полезный узел, выпускаемый в виде отдельной интегральной схемы многими изготовителями. ФАПЧ содержит фазовый детектор, усилитель и генератор, управляемый напряжением (ГУН), и представляет собой сочетание в одном корпусе аналоговой и цифровой техники. Мы рассмотрим в дальнейшем применение ФАПЧ для тонального декодирования, демодуляции AM- и ЧМ-сигналов, умножения частот, частотного синтеза, импульсной синхронизации сигналов от шумящих источников (например, магнитной ленты) и восстановления «чистых» сигналов.
Существует традиционное предубеждение против ФАПЧ, связанное отчасти со сложностью реализации ФАПЧ на дискретных компонентах, а отчасти с сомнениями относительно ее надежной работы. С появлением недорогих и простых в применении устройств ФАПЧ первое препятствие для их широкого применения было преодолено. При правильном проектировании и корректном применении устройства ФАПЧ становятся такими же надежными элементами схемы, как операционные усилители или триггеры. На рис. 9.67 показана классическая схема ФАПЧ.
Рис. 9.67. Схема фазовой автоподстройки частоты.
Фазовый детектор — устройство, которое осуществляет сравнение двух входных частот, и формирует выходной сигнал, пропорциональный их фазовой разности (если, например, частоты различаются, то на выходе появится периодический сигнал на разностной частоте). Если fвх не равна fГУН, то отфильтрованный и усиленный сигнал фазовой ошибки будет воздействовать на частоту ГУН, изменяя ее в направлении fвх. При нормальных условиях ГУН быстро производит «захват» частоты fвх, поддерживая постоянный фазовый сдвиг по отношению к входному сигналу.
Поскольку отфильтрованный выходной сигнал фазового детектора является сигналом постоянного тока, а управляющий входной сигнал ГУН — мерой входной частоты, совершенно очевидно, что ФАПЧ можно применять для ЧМ-детектирования и тонального декодирования (используемое при цифровой передаче по телефонным линиям). Выходной сигнал ГУН — это сигнал местной частоты, равной fвх, таким образом, ГУН выдает чистый опорный сигнал, который может содержать шумы. Поскольку выходной сигнал ГУН может иметь любую форму (треугольную, синусоидальную и т. п.), это позволяет формировать, допустим, синусоидальный сигнал, синхронизированный с последовательностью входных импульсов.
В одном из часто встречающихся применений ФАПЧ между выходом ГУН и фазовым детектором включают счетчик по модулю n, обеспечивая, таким образом, умножение входной эталонной частоты fвх. Это — идеальный метод генерации импульсов синхронизации на частотах, кратных частоте сетевого напряжения, для интегрирующих АЦП (двухстадийных и с уравновешиванием заряда) с полным подавлением помех на сетевой частоте и ее гармониках. Подобные схемы являются основными при построении частотных синтезаторов.
Компоненты ФАПЧ. Фазовый детектор. Существуют два основных типа фазовых детекторов, которые иногда называют тип 1 и тип 2. Фазовый детектор типа 1 предназначен для работы с аналоговыми сигналами или цифровыми сигналами прямоугольной формы, а детектор типа 2 — для работы по логическим переходам (фронтам). Типичным представителем детекторов типа 1 является детектор 565 (линейный), а детектор КМОП 4096 можно отнести и к тому, и к другому типу. Самым простым фазовым детектором является детектор типа 1 (цифровой), который представляет собой простой вентиль ИСКЛЮЧАЮЩЕЕ ИЛИ (рис. 9.68).
Рис. 9.68. Фазовый детектор (тип 1), выполненный по схеме Исключающее ИЛИ.
На рисунке показана зависимость выходного напряжения от разности фаз при использовании фильтра низких частот и прямоугольного входного колебания со скважностью 50 %. Фазовый детектор типа 1 (линейный) имеет аналогичную зависимость выходного напряжения от фазовой разности, хотя его схема представляет собой «четырехквадрантный умножитель», известный также под названием «балансный смеситель». Фазовые детекторы этого типа, обладающие высокой линейностью, находят широкое применение в синхронном детектировании, которое мы рассмотрим в разд. 15.15.
Фазовый детектор типа 2 обладает чувствительностью только по отношению к расположению фронтов сигнала и входного сигнала ГУН, как показано на рис. 9.69.
Рис. 9.69. Фазовый детектор (тип 2) опережения — отставания, работающий «по фронтам».
Схема фазового компаратора генерирует выходные импульсы либо отставания, либо опережения в зависимости от того, когда появляются логические переходы выходного сигнала ГУН, после или до переходов опорного сигнала соответственно. Ширина этих импульсов равна промежутку времени между соответствующими фронтами, как показано на рисунке. Во время действия этих импульсов выходная схема либо отводит, либо отдает ток, а в промежутках между импульсами находится в разомкнутом состоянии, формируя зависимость между выходным напряжением и разностью фаз, показанную на рис. 9.70.
Рис. 9.70.
Процесс абсолютно не зависит от скважности импульсов на входе в отличие от ситуации с рассмотренным ранее фазовым компаратором типа 1. Другой привлекательной особенностью этого фазового детектора является то, что импульсы на выходе полностью исчезают, когда два сигнала засинхронизированы. Это означает, что на выходе отсутствуют «пульсации», которые вызывают периодическую фазовую модуляцию в контуре, как это имеет место при использовании фазового детектора типа 1.
Сравним свойства фазовых детекторов двух основных типов.
Существует еще одно различие между этими двумя типами фазовых детекторов. Детектор типа 1 всегда генерирует выходное колебание, которое в дальнейшем должно фильтроваться с помощью фильтра контура регулирования (более подробно обсудим это позже). Таким образом, ФАПЧ с фазовым детектором типа 1 содержит контурный фильтр, работающий как фильтр нижних частот, сглаживающий логический выходной сигнал полной амплитуды. В таком контуре всегда присутствует некоторая остаточная пульсация и, следовательно, периодические фазовые изменения. В тех схемах, где ФАПЧ используется для умножения или синтеза частот, к выходному сигналу добавляются еще и «боковые полосы фазовой модуляции» (см. разд. 13.18).
Фазовый детектор типа 2, наоборот, генерирует выходные импульсы только тогда, когда между опорным сигналом и сигналом ГУН имеется фазовая разность. Поскольку в противном случае выход фазового детектора выглядит как разомкнутая цепь, конденсатор контурного фильтра работает как элемент запоминания напряжения, поддерживая напряжение, сохраняющее требуемую частоту ГУН. Если опорный сигнал «уходит» по частоте, то фазовый детектор генерирует последовательность коротких импульсов, заряжая (или разряжая) конденсатор до нового напряжения, необходимого для того, чтобы вновь вернуть ГУН в синхронизм.
Генераторы, управляемые напряжением. Важным компонентом ФАПЧ является генератор, частотой которого можно управлять, используя выходной сигнал фазового детектора. Некоторые ИМС ФАПЧ содержат ГУН (например, линейный элемент 565 и КМОП-элемент 4046). Кроме того, имеются отдельные ИМС ГУН, перечисленные в табл. 5.4. Интересный класс ГУН составляют элементы с синусоидальным выходом (8038, 2206 и т. п.), поскольку они позволяют генерировать чистое синусоидальное колебание, засинхронизированное с входным колебанием «страшного» вида. Следует упомянуть еще один класс ГУН, — «преобразователи напряжения в частоту», которые обычно проектируются с оптимальной линейностью; они имеют, как правило, скромную максимальную частоту (до 1 МГц) и вырабатывают импульсы с логическими уровнями (см. разд. 5.15).
Следует помнить о том, что частота ГУН не ограничивается скоростью срабатывания логических схем. Можно, например, использовать радиочастотные генераторы, настраиваемые с помощью варактора (диод с изменяемой емкостью) (рис. 9.71).
Рис. 9.71.
Продвигаясь в соответствии с этой идеей еще на один шаг, можно было бы даже использовать такой элемент, как отражательный клистрон, — микроволновый (гигагерцевый) генератор, с электрической настройкой за счет изменения напряжения на отражателе. Разумеется, ФАПЧ, использующая такие генераторы, потребует радиочастотный фазовый детектор.
Зависимость частоты от управляющего напряжения ГУН, используемого в ФАПЧ, может не обладать высокой линейностью, однако в случае большой нелинейности коэффициент усиления в контуре будет изменяться в соответствии с частотой сигнала и придется обеспечивать больший запас устойчивости.
9.28. Проектирование ФАПЧ
Замыкание контура регулирования. Фазовый детектор вырабатывает сигнал ошибки, соответствующий фазовому рассогласованию между входным и опорным сигналами. Частотой ГУН можно управлять, подавая на его вход соответствующее напряжение. Казалось бы, что здесь можно поступить также, как и в любом другом усилителе с обратной связью, вводя контур регулирования с некоторым коэффициентом передачи; мы поступали точно также в схемах с операционными усилителями.
Однако имеется одно существенное отличие. Ранее, регулируемая с помощью обратной связи величина совпадала с величиной, измеряемой с целью формирования сигнала ошибки или была по крайней мере ей пропорциональна. В усилителе напряжения, например, мы измеряли выходное напряжение и соответствующим образом подстраивали входное. В системах ФАПЧ осуществляется интегрирование; мы измеряем фазу, а регулируем частоту, но фаза является интегралом от частоты. За счет этого в контуре регулирования появляется фазовый сдвиг 90°.
Такой интегратор, включенный в контур обратной связи, существенным образом влияет на работу схемы — дополнительное запаздывание по фазе на 90° на частотах, где коэффициент усиления равен единице, вызывает возникновение самовозбуждения. Простое решение заключается в том, чтобы не включать в контур компоненты, которые дают дополнительное запаздывание по фазе, по крайней мере на тех частотах, где коэффициент усиления близок к единице. В конце концов операционные усилители имеют запаздывание по фазе 90° на большинстве частот своего диапазона, однако они превосходно работают. Это — один из подходов и он приводит к тому, что называется «контуром первого порядка». Блок-схема в этом случае выглядит точно также, как ранее приведенная блок-схема ФАПЧ без фильтра нижних частот.
Хотя контуры первого порядка во многих ситуациях очень удобны, они не обладают необходимыми свойствами «маховика», которые позволяют генератору, управляемому напряжением, сглаживать помехи и флуктуации входного сигнала. Более того, контур первого порядка не сохраняет постоянным фазовое соотношение между опорным сигналом и сигналом ГУН, так как выход фазового детектора непосредственно управляет ГУН. В «контур второго порядка» вводится дополнительная фильтрация на низкой частоте с целью предотвращения неустойчивости. Такой контур обладает свойством «маховика» и, кроме того, уменьшает «диапазон захвата» и увеличивает время захвата. К тому же, как будет показано ниже, при использовании фазовых детекторов типа 2 контур второго порядка гарантирует фазовую синхронизации при нулевой разности фаз между опорным сигналом и сигналом ГУН. Практически во всех системах применяют контуры второго порядка, поскольку в большинстве применений система ФАПЧ должна обеспечивать малые флуктуации фазы выходного сигнала, а также обладать некоторыми свойствами памяти или «маховика». Контуры второго порядка могут иметь высокий коэффициент передачи на низких частотах, что обеспечивает повышенную устойчивость (по аналогии с достоинствами высокого коэффициента усиления в усилителях с обратной связью). Вернемся к делу и рассмотрим применение ФАПЧ на примерах.
9.29. Пример разработки: умножитель частоты
Формирование частоты, кратной фиксированной входной частоте, является одним из наиболее распространенных применений ФАПЧ. В частотных синтезаторах частота выходного сигнала формируется за счет умножения частоты стабильного низкочастотного (допустим, 1 Гц) сигнала на целое число n; число n можно задавать в цифровом виде, т. е. вы получаете гибкий источник сигналов, которым можно управлять даже с помощью компьютера.
Можно использовать ФАПЧ в более прозаических системах, например, для того чтобы генерировать тактовую частоту, синхронизированную с некоторой другой эталонной частотой, которая уже имеется в приборе. Предположим, что мы хотим получить тактовые сигналы частотой 61440 Гц для двухстадийного АЦП. Такая частота обеспечивает производительность 7,5 измерений в секунду, причем на первой стадии (подъеме) потребуется 4096 периодов синхронизации (напомним, что в двухстадийном преобразовании используется постоянный временной интервал) и на второй стадии (разряд постоянным током) может потребоваться до 4096 периодов. Уникальная особенность схемы ФАПЧ заключается в том, что тактовую частоту 61440 кГц можно засинхронизировать с сетевой частотой 60 Гц (61440 = 60x1024), полностью подавив тем самым помехи на частоте 60 Гц, которые, как мы уже обсуждали в разд. 9.21, присутствуют на любом сигнальном входе преобразователя.
Начнем со стандартной схемы ФАПЧ, в которой между выходом ГУН и фазовым детектором включен счетчик-делитель на n (рис. 9.72).
Рис. 9.72. Блок-схема умножителя частоты.
На этой схеме для каждого функционального блока указан коэффициент передачи. Это понадобится нам для проведения расчетов по устойчивости. Обратите особое внимание на то, что фазовый детектор преобразует фазу в напряжение, а ГУН — напряжение в производную фазы по времени (т. е. частоту). Отсюда важное следствие — если фазу в самой нижней части схемы рассматривать как переменную, то ГУН будет действовать как интегратор. Фиксированное входное напряжение рассогласования приводит к линейно возрастающему фазовому рассогласованию на выходе ГУН. Фильтр нижних частот и делитель на n имеют коэффициенты передачи меньше единицы.
Устойчивость и фазовые сдвиги. На рис. 9.73 показаны диаграммы Боде, с помощью которых можно оценить устойчивость ФАПЧ второго порядка. ГУН работает как интегратор с характеристикой 1/f и запаздывающим фазовым сдвигом 90° (т. е. его характеристика пропорциональна 1/fω, а конденсатор заряжается от источника тока). Для того чтобы иметь приличный запас по фазе (разность между 180° и фазовым сдвигом на частоте, при которой общий коэффициент передачи контура равен 1), в фильтр нижних частот последовательно с конденсатором включают резистор для того, чтобы приостановить спад характеристики на некоторой частоте (с причудливым названием «нуль»).
Комбинация этих двух характеристик дает показанную на рисунке характеристику контура. До тех пор пока спад коэффициента передачи контура будет составлять 6 дБ/октава (в области единичного коэффициента передачи), контур будет устойчив. Это делается с помощью фильтра нижних частот по типу «опережение — отставание» с соответствующим образом выбранными свойствами (точно также, как компенсация опережения-отставания в операционных усилителях). Дальше вы увидите, как это делается.
Рис. 9.73. Диаграммы Боде ФАПЧ.
Расчет коэффициента передачи. На рис. 9.74 приведена схема ФАПЧ для синтезатора частоты 61440 Гц. Фазовый детектор и ГУН входят в состав КМОП ИМС ФАПЧ 4046. В этой схеме мы использовали вариант фазового детектора с запуском по фронту (в ИМС 4046 имеются оба варианта).
Рис. 9.74. Применения умножителя ФАПЧ для формирования тактовых сигналов, синхронных с частотой сети переменного тока.
Его выходной сигнал вырабатывается двумя КМОП-транзисторами, которые формируют насыщенные импульсы с уровнями UCC или 0 В. Фактически, это выход с тремя состояниями, как было изложено выше, поскольку он находится в состоянии высокого импеданса, за исключением интервала времени, когда действует импульс фазового рассогласования.
Минимальная и максимальная частоты ГУН, соответствующие управляющим напряжениям 0 В и UCC, устанавливаются подбором величин R1, R2 и С1 согласно некоторым схемным характеристикам. Выбранные нами величины показаны на рисунке. Следует отметить, что ИМС 4046 страдает «хроническим заболеванием» — повышенной чувствительностью к напряжению питания, поэтому проверяйте характеристики по паспортным данным. Остальные компоненты контура выбираются по стандартным для ФАПЧ процедурам.
После того как необходимый диапазон ГУН выбран, остается лишь произвести расчет фильтра нижних частот. Это очень ответственная часть. Начнем с того, что выпишем составляющие коэффициента передачи контура, учитывая каждую компоненту (табл. 9.7 и рис. 9.72).
Придерживайтесь одних и тех же единиц измерения; не переходите с f на ω, или, что еще хуже, с герц на килогерцы. Нам осталось определить только Кф. Сделаем это, записав общее выражение для коэффициента передачи контура, но не забывая, что ГУН — это интегратор,
Yвых = U2KГУНdt
Общий коэффициент передачи контура равен
Теперь наступает этап выбора частоты, на которой коэффициент передачи контура должен проходить через единицу. Идея заключается в том, что частота единичной передачи выбирается достаточно высокой, чтобы контур мог должным образом отслеживать изменения входной частоты, но и достаточно низкой, чтобы обеспечить свойства «маховика» и сглаживать помехи и скачки входного сигнала.
Например, система ФАПЧ, предназначенная для демодуляции входных ЧМ-сигналов или декодирования последовательностей высокоскоростных тональных сигналов, должна иметь высокое быстродействие (для входных ЧМ-сигналов полоса пропускания контура должна соответствовать входному сигналу, т. е. равняться максимальной частоте модуляции, а для декодирования тональных сигналов время отклика должно быть меньше, чем продолжительность тонального сигнала). С другой стороны, контур, предназначенный для генерации фиксированной частоты, кратной некоторой стабильной и медленно меняющейся входной частоте, должен иметь низкую частоту единичной передачи. Это позволит уменьшить фазовый шум на выходе и сделать систему ФАПЧ нечувствительной к шумам и выбросам на входном сигнале. Будут едва заметны даже кратковременные пропадания входного сигнала, поскольку напряжение, запоминаемое на конденсаторе фильтра, заставит ГУН продолжать формирование той же самой выходной частоты.
В данном случае мы выбрали частоту единичной передачи f2, равной 2 Гц или 12,6 рад в секунду. Это значительно ниже опорной частоты и вряд ли можно ожидать, что реальные отклонения сетевой частоты превысят эту величину (следует учитывать, что электроэнергия вырабатывается крупными генераторами с огромной механической инерцией). По негласному правилу точку излома характеристики фильтра нижних частот (ее «нуль») следует выбрать на частоте по крайней мере в 3–5 раз ниже, чтобы обеспечить достаточный запас по фазе. Вспомните, что фазовый сдвиг простой RC-цепи меняется от 0 до 90° в диапазоне частот от 0,1 до 10 относительно частоты — 3 дБ («полюс»), при которой сдвиг равен 45°. Выберем частоту нуля f1 равной 0,5 Гц, или 3,1 рад/с (рис. 9.75).
Рис. 9.75.
Точка излома f1 определяет постоянную времени R4C2: R4C2 = 1/2πf1. Попробуем взять С2 = 1 мкФ и R4 = 330 кОм. Осталось лишь выбрать R3 так, чтобы коэффициент передачи контура был равен 1 на частоте f2. Полученный результат: R3 = 4,3 МОм.
Упражнение 9.5. Покажите, что при выбранных компонентах фильтра единичный коэффициент передачи контура получается действительно на частоте f2 = 2 Гц.
Иногда параметры фильтра могут оказаться не совсем подходящими и вам придется подстраивать их или смещать частоту единичной передачи. Полученные значения соответствуют ФАПЧ на КМОП-элементах (типовой входной импеданс ГУН составляет 1012 Ом). Для ФАПЧ на биполярных транзисторах (например, типа 4044) возможно потребуется согласование импедансов с помощью внешнего операционного усилителя.
В этом примере для упрощения фильтра мы использовали фронтовой (типа 2) фазовый детектор. На практике возможно это и не самое лучшее решение для ФАПЧ, синхронизированной с сетевой частотой 60 Гц, поскольку сигналы с частотой 60 Гц содержат сравнительно высокий уровень шума. При тщательном выборе аналоговой входной схемы (например, после фильтра нижних частот включить триггер Шмитта) можно добиться хорошей работы схемы; в противном случае следует использовать фазовый детектор типа 1 со схемой ИСКЛЮЧАЮЩЕЕ ИЛИ.
Метод проб. Для некоторых людей искусство схемотехники заключается в том, чтобы подбирать компоненты фильтра до тех пор, пока контур не заработает. Если вы относитесь к их числу, то мы вынуждены просить вас пересмотреть свои взгляды. Мы представили детальный расчет контура ФАПЧ потому, что, как мы подозреваем, плохая репутация ФАПЧ — это следствие как раз такого подхода. Тем не менее не можем удержаться, чтобы не дать совет фанатикам метода проб и ошибок: R3C2 определяет время сглаживания контура, a R4/R3 — демпфирование, т. е. отсутствие перегрузки при скачкообразном изменении частоты. Можете начинать с R4 = 0,2R3.
Формирование тактовых импульсов для видеотерминала. Другим полезным применением высокочастотного генератора, синхронизированного с сетевой частотой 60 Гц, является формирование видеосигналов для буквенно-цифрового терминала компьютера. Стандартная скорость смены изображения в терминалах составляет 30 кадров в 1 с. Если отсутствует точная синхронизация частоты синхроимпульсов по вертикали и сетевой частоты, то в связи с неизбежными сетевыми наводками изображение будет испытывать медленную «боковую качку». Система ФАПЧ превосходно решает эту проблему. Высокочастотный ГУН (около 15 МГц) синхронизируется заранее определенной частотой, кратной 60 Гц; путем деления этой тактовой частоты можно последовательно сформировать точки каждого отображаемого символа, число символов в каждой строке и число строк, в каждом кадре.
9.30. Захват и слежение в системе ФАПЧ
Очевидно, что, войдя в синхронизм, система будет в нем оставаться до тех пор, пока входной сигнал не выйдет за пределы допустимого диапазона сигналов обратной связи. Интересно знать, как система ФАПЧ входит в синхронизм в первый раз. Ведь начальное частотное рассогласование вызывает появление периодического выходного сигнала на фазовом детекторе разностной частоты. После фильтра нижних частот этот сигнал уменьшается до медленно меняющихся колебаний небольшой амплитуды, но никак не является хорошим постоянным сигналом рассогласования.
Процесс захвата. Ответ на этот вопрос не так уж и прост. Контур первого порядка всегда будет синхронизироваться, поскольку там отсутствует ослабление сигнала рассогласования на низкой частоте. Синхронизация контура второго порядка зависит от типа фазового детектора и полосы пропускания фильтра нижних частот. Кроме того, фазовый детектор по схеме ИСКЛЮЧАЮЩЕЕ ИЛИ (типа 1) имеет ограниченный диапазон захвата, зависящий от постоянной времени фильтра (это обстоятельство можно использовать, если вы хотите сделать систему ФАПЧ, синхронизация которой происходит в пределах определенного частотного диапазона).
Процесс захвата происходит следующим образом: когда сигнал фазового рассогласования приближает частоту ГУН к опорной частоте, его изменения становятся более медленными и наоборот. Сигнал рассогласования поэтому является асимметричным и меняется более медленно в той части цикла, в течение которой fГУН ближе подходит к fоп. В результате появляется ненулевая средняя компонента, т. е. постоянная компонента, которая и вводит ФАПЧ в синхронизм. Если внимательно посмотреть на управляющее напряжение ГУН в процессе захвата, то можно увидеть что-то похожее на сигнал, показанный на рис. 9.76. Последний всплеск на этом сигнале имеет весьма интересную причину. Даже в том случае, когда частота ГУН достигает требуемого значения (об этом можно судить по правильному управляющему напряжению ГУН), в системе не обязательно происходит захват (из-за несоответствия фазы). Это и может быть причиной всплеска. Каждый процесс захвата индивидуален и каждый раз он выглядит по-разному!
Рис. 9.76.
Полоса захвата и слежения. При использовании фазового детектора по схеме ИСКЛЮЧАЮЩЕЕ ИЛИ (тип 1) полоса захвата ограничена постоянной времени фильтра нижних частот. В этом есть определенный смысл, так как, если различие по частоте велико, сигнал рассогласования будет ослабляться фильтром настолько, что контур никогда не сможет осуществить захват. Очевидно, что увеличение постоянной времени фильтра уменьшает полосу захвата, так как это приводит к пониженному коэффициенту передачи контура. Оказывается, что фронтовой фазовый детектор не имеет подобного ограничения. Полоса слежения для обоих типов детекторов определяется диапазоном управляющих напряжений ГУН.
9.31. Некоторые примеры применения систем ФАПЧ
Мы уже упоминали об использовании ФАПЧ для умножения частот. Целесообразность такого применения, как это следует из рассмотренного примера, настолько очевидно, что сомнений в применении ФАПЧ не должно быть. В простых умножителях (например, для генерации более высокой тактовой частоты в цифровых системах) не возникает никаких проблем, связанных с помехами на опорном сигнале, поэтому здесь можно использовать системы первого порядка.
Рассмотрим еще несколько примеров применения ФАПЧ, интересных с точки зрения разнообразия областей использования.
Детектирование ЧМ-сигналов. При частотной модуляции кодирование информации осуществляется путем изменения частоты несущего сигнала пропорционально изменению информационного сигнала. ЧМ и другие виды модуляции мы рассмотрим в гл. 13 более подробно. Существуют два метода восстановления информации из модулированного сигнала с помощью фазовых детекторов или систем ФАПЧ. Под термином «детектирование» мы будем понимать процесс демодуляции.
Самым простым методом является синхронизация системы ФАПЧ приходящим сигналом. Напряжение, управляющее частотой ГУН, пропорционально входной частоте и, следовательно, является требуемым модулирующим сигналом (рис. 9.77).
Рис. 9.77. ЧМ-дискриминатор с ФАПЧ.
Полосу пропускания фильтра в такой системе можно сделать достаточно широкой для того, чтобы пропустить модулирующий сигнал, т. е. время реакции ФАПЧ должно быть меньше, чем минимальное время отклонения восстанавливаемого сигнала. Как показано в гл. 13, сигнал, используемый в ФАПЧ, не должен быть реально передаваемым колебанием; он может быть сигналом «промежуточной частоты» (ПЧ), формируемым в приемной системе с помощью смесителя при преобразовании. Для того чтобы избежать в этом методе ЧМ-детектирования искажений на звуковых частотах, следует обеспечить высокую линейность ГУН.
Второй метод ЧМ-детектирования использует фазовый детектор, но не в составе контура ФАПЧ. Принцип реализации этого метода показан на рис. 9.78.
Рис. 9.78. Квадратурное ЧМ-детектирование.
Входной сигнал и его копия со сдвинутой фазой подаются на фазовый детектор, который вырабатывает некоторое входное напряжение. Фазосдвигающая схема должна быть так хитроумно сделана, чтобы фазовый сдвиг линейно зависел от частоты в диапазоне входных частот (это достигается обычно с помощью резонансных LC-схем). Выходное напряжение будет зависеть, таким образом, от входной частоты. Этот метод называют «двойным балансным квадратурным ЧМ-детектированием». Он применяется во многих ИМС усилителей/детекторов промежуточной частоты (например, САЗ 189).
Детектированием АМ-сигналов. Требуется: способ формирования выходного сигнала, пропорционального мгновенной амплитуде высокочастотного сигнала. Обычно используется выпрямление (рис. 9.79).
Рис. 9.79. АМ-детектирование.
На рис. 9.80 показан весьма своеобразный метод на основе ФАПЧ («гомодинный прием»).
Рис. 9.80. Гомодинное детектирование.
ФАПЧ вырабатывает прямоугольные сигналы с частотой, совпадающей с модулированной несущей. С помощью умножения входного сигнала на это прямоугольное колебание формируется выпрямленный двухполупериодный сигнал; остается только пропустить его через фильтр нижних частот для того, чтобы удалить остатки несущей и выделить огибающую. Если в системе ФАПЧ используется фазовый детектор по схеме ИСКЛЮЧАЮЩЕГО ИЛИ, то выходной сигнал сдвигается на 90° относительно опорного сигнала. В связи с этим на пути сигнала к умножителю следует ввести фазовый сдвиг 90°.
Синхронизация импульсов и восстановление сигнала. При цифровой передаче сигналов по каналу связи передается битовая последовательность, содержащая информацию. Информационные сигналы могут быть по своей природе цифровыми или аналоговыми сигналами, представленными в цифровом виде, как, например, в «импульсно-кодовой модуляции» (ИКМ, см. разд. 13.20). Очень похожей ситуацией является декодирование цифровой информации, считываемой с магнитной ленты или диска. В обоих случаях могут появляться помехи и изменения частоты следования импульсов (например, за счет растягивания ленты), поэтому желательно иметь чистый сигнал синхронизации на той же частоте, что и считываемые информационные сигналы. Система ФАПЧ будет работать здесь превосходно. Фильтр нижних частот исключил бы только дрожание и помехи на входной синхронизирующей последовательности, но медленные изменения скорости ленты остались бы.
В качестве другого примера синхронизации сигналов можно взять схему из разд. 8.31, в которой для получения превосходного синусоидального сигнала используется точный сигнал «60 Гц», сформированный цифровым способом (в действительности его частота находится где-то между 50 и 70 Гц). Для того чтобы преобразовать прямоугольное колебание в синусоидальное мы использовали в этой схеме 6-звенный фильтр нижних частот Баттерворта. Здесь заманчиво было бы использовать ИМС ГУН с синусоидальным выходным сигналом (например, ИМС 8038), работающей синфазно с точным прямоугольным сигналом. Это гарантировало бы постоянную амплитуду синусоидального сигнала, обеспечило широкий диапазон изменения частоты и позволило бы избавиться от «дрожания» на выходе умножителя частоты.
LC-генератор. На рис. 9.81 показан пример системы ФАПЧ, в которой использован LC-генератор и цифровое сравнение по фазе на более низкой частоте.
Рис. 9.81. ФАПЧ с варакторной настройкой.
При этом потребовался стабильный прецизионный источник частоты 14,4 МГц, работающий синхронно с задающим генератором 10 МГц. Варактор (настроечный диод, см. разд. 5.18) осуществляет точную настройку LC-генератора на полевом транзисторе в соответствии с выходным сигналом фазового детектора типа 2 (`НС4046). Обратите внимание на то, что диапазон настройки варактора 18–30 пФ (от 5 до 1 В соответственно) обеспечивает изменение параллельной емкости LC-цепи в пределах 2 пФ (от 8,2 до 10 пФ), что дает диапазон настройки ±0,5 % частоты генератора. Мы намеренно сделали диапазон настройки узким для того, чтобы обеспечить хорошую стабильность генератора.
Частоты опорного и выходного сигналов с помощью цифровых средств делятся до частоты 400 кГц, на которой фазовый детектор работает лучше. Заметьте, что для преобразования синусоидального сигнала в сигнал с логическими уровнями используется вентиль типа `НС со смещением на логическом пороге с помощью резистора обратной связи большого номинала. Обратите внимание также на выходную ступень обычного эмиттерного повторителя (с ограничением по току), предназначенную для работы на 50-омный кабель, как показано на рис. 9.42. При настройке схемы ферритовый сердечник генератора подстраивается до получения полного размаха на выходе фильтра фазового детектора.
Фирма Motorola выпускает прекрасную серию недорогих ИМС «ФАПЧ-синтезатор частоты» МС145145-59, которые содержат фазовые детекторы типа 2 и делители по модулю n и для входного и для опорного сигналов; оба делителя программируются, точность 14 разрядов и более. Держите эти схемы на примете на тот случай, когда вам потребуется синтезировать какие-нибудь необычные частоты.
Псевдослучайные двоичные последовательности и генераторы шума
9.32. Цифровые методы генерации шума
Псевдослучайные двоичные последовательности являют собой пример гармоничного сочетания аналоговой и цифровой техники. Оказывается, можно необычайно просто генерировать последовательности бит (или слов), с хорошими стохастическими свойствами, т. е. последовательности, которые будут обладать такими же вероятностными и корреляционными свойствами, какими обладает идеальная машина для подбрасывания монеты. Поскольку эти последовательности генерируются стандартными элементами детерминированной логики (если быть точнее, регистрами сдвига), получающиеся двоичные последовательности на самом деле являются предсказуемыми и повторяемыми, хотя любой фрагмент такой последовательности во всех отношениях выглядит как случайная последовательность 0 и 1. Всего с помощью нескольких ИМС можно получить последовательности, которые тянутся буквально на столетия без повторения; это очень простой и привлекательный способ получения цифровых двоичных последовательностей или аналоговых сигналов шума.
Действительно, существует даже недорогая ИМС «цифровой источник шума», выпускаемая в корпусе мини-DIP (ММ5437 фирмы National), а генераторы шума на регистрах сдвига входят в состав технических средств многих ИМС, создающих звуковые эффекты.
Аналоговый шум. С помощью простой фильтрации нижних частот псевдослучайной двоичной последовательности (ПСП) можно получить гауссов белый шум с ограниченной полосой, т. е. напряжение шума с плоским энергетическим спектром до некоторой частоты среза (более подробно о шумах см. гл. 7). С другой стороны, с помощью взвешенного суммирования содержимого регистров сдвига (с использованием набора резисторов) можно осуществить цифровую фильтрацию. С помощью этого способа можно легко получить плоский спектр шума в пределах нескольких мегагерц. Позже вы увидите, что источники аналогового шума, синтезированные цифровым способом, имеют целый ряд преимуществ перед чисто аналоговыми способами, использующими шумящие диоды или резисторы.
Другие области применения. Кроме таких очевидных применений, как аналоговые или цифровые источники шума, ПСП полезны в целом ряде других областей, ничего общего не имеющих с шумами. Их можно использовать для шифрования сообщений или данных, поскольку идентичный генератор ПСП на приемном конце дает ключ к шифру. ПСП широко используются в кодах, обнаруживающих и исправляющих ошибки, так как они позволяют видоизменить блоки данных таким образом, что правильные кодовые сообщения будут находится друг от друга на максимально возможном «расстоянии Хэмминга» (измеряется числом позиций с разными данными). Обладая хорошими автокорреляционными свойствами, они являются идеальными как коды для радиолокационных систем, в которых ответный сигнал сравнивается (точнее взаимно коррелируется) с передаваемой битовой последовательностью. Их можно использовать даже как компактные делители по модулю n.
9.33. Последовательности, генерируемые регистрами сдвига с обратными связями
Наиболее известным (и самым простым) генератором ПСП является регистр сдвига с обратной связью (рис. 9.82).
Рис. 9.82. Генератор псевдослучайной двоичной последовательности.
Регистр сдвига длины m работает от тактовых импульсов с частотой f0. Входная последовательность формируется с помощью вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ, на вход которого поступают сигналы от n-го и последнего (m-го) разрядов регистра сдвига. Такая схема проходит через некоторое множество состояний (совокупность состояний регистра сдвига после каждого тактового импульса), которые после К тактов начинают повторяться, т. е. последовательность состояний является циклической с периодом К.
Максимальное число возможных состояний m-разрядного регистра равно К = 2m, т. е. числу m-битовых двоичных комбинаций. Однако состояние «все нули» является «тупиком» для этой схемы, поскольку на выходе вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ появляется 0, который вновь поступает на вход схемы. Таким образом, последовательность максимальной длины, которую может сформировать данная схема, содержит 2m — 1 бит. Оказывается, что такую последовательность максимальной длины можно получить только при правильном выборе m и n, причем полученная последовательность будет псевдослучайной. (Критерием максимальной длины является неприводимость и примитивность многочлена 1 + хn + хm над полем Галуа). В качестве примера рассмотрим 4-разрядный регистр сдвига с обратной связью, показанный на рис. 9.83.
Рис. 9.83.
Начиная с состояния 1111 (можно было бы начать с любого другого состояния, за исключением 0000), можно записать состояния в порядке их следования:
Мы записали эти состояния как 4-разрядные числа QAQBQCQD. Здесь 15 = (24 - 1) различных состоянии, затем они повторяются вновь. Значит, это регистр максимальной длины.
Упражнение 9.6. Покажите, что 4-разрядный регистр с обратной связью от второго и четвертого разрядов не является регистром максимальной длины. Сколько существует различных последовательностей? Сколько состояний в каждой последовательности?
Отводы обратной связи. Сдвиговые регистры максимальной длины можно выполнить с числом отводов в цепи обратной связи больше 2 (в этом случае используются несколько вентилей ИСКЛЮЧАЮЩЕЕ ИЛИ, соединенных в виде стандартного дерева четности, т. е. в виде суммы по модулю 2 нескольких разрядов). На самом деле, для некоторых значений m регистр максимальной длины можно сделать только в том случае, когда число отводов будет больше 2. Ниже перечислены все значения m до 40, для которых регистр максимальной длины реализуется с использованием ровно двух отводов, т. е. с обратной связью от n-го и m-го (последнего) разрядов по типу регистра, приведенного ранее.
Представлены также значения n и длина цикла К по числу тактов. В некоторых случаях подойдут и другие значения n и во всех случаях n можно заменить на m — n; таким образом, для предыдущего примера можно использовать отводы n = 1 и m = 4.
Длина регистров сдвига обычно кратна 8 и, возможно, как раз такую длину вы захотите использовать. В этих случаях может потребоваться более двух отводов. Вот эти магические числа:
В ИМС ММ5437 (генератор шума) используется 23-разрядный регистр с отводом от 18-го разряда. Внутренний тактовый генератор обеспечивает работу на частоте около 160 кГц; схема генерирует белый шум в диапазоне до 70 кГц (затухание 3 дБ) с временем цикла около 1 мин. На рис. 7.61 эта ИМС была использована в схеме генератора «розового шума». При использовании 33-разрядного регистра, работающего на частоте 1 МГц, время цикла будет около 2 ч. Время цикла 100-разрядного регистра, работающего на частоте 10 МГц, будет в миллион раз больше, чем возраст Вселенной!
Свойства последовательностей максимальной длины. Псевдослучайную последовательность двоичных символов мы получаем путем тактирования одного из таких регистров и наблюдения последовательных выходных двоичных символов. Выход можно взять от любого разряда регистра; обычно в качестве выхода используют последний (m-й) разряд. Последовательность максимальной длины обладает следующими свойствами:
1. В полном цикле (К тактов) число «1» на единицу больше, чем число «0». Добавочная «1» появляется за счет исключения состояния «все нули». Это свидетельствует о том, что «орлы» и «решки» равновероятны (дополнительная «1» большой роли не играет; 17-разрядный регистр будет вырабатывать 65 536 «1» и 65 535 «0» за один цикл).
2. В одном цикле (К тактов) половина серий из последовательных «1» имеет длину 1, одна четвертая серий — длину 2, одна восьмая — длину 3 и т. д. Такими же свойствами обладают и серии из «0» с учетом пропущенного «0». Это говорит о том, что вероятности «орлов» и «решек» не зависят от исходов предыдущих «подбрасываний» и поэтому вероятность того, что серия из последовательных «1» или «0» закончится при следующем подбрасывании равна 1/2 (вопреки обывательскому пониманию «закона о среднем).
3. Если последовательность полного цикла (К тактов) сравнить с этой же последовательностью, но циклически сдвинутой на любое число символов n (n не является нулем или кратным К), то число несовпадений будет на единицу больше, чем число совпадений. Научно выражаясь, автокорреляционная функция этой последовательности представляет собой дельта-функцию Кронекера при нулевой задержке и равна — 1/К при любой другой задержке. Отсутствие «боковых лепестков» автокорреляционной функции — это как раз то свойство, которое делает ПСП очень полезными в радиолокационных системах.
Упражнение 9.7. Покажите, что последовательность, полученная с помощью 4-разрядного регистра сдвига (с отводами n = 2, m = 4), удовлетворяет этим свойствам. В качестве «выхода» возьмите QΑ: 100010011010111.
9.34. Формирование аналогового шума с использованием последовательностей максимальной длины
Преимущества шума, полученного цифровым способом. Как ранее уже отмечалось, цифровой выход регистра сдвига с обратной связью, вырабатывающего последовательность максимальной длины, можно преобразовать в белый шум с ограниченной полосой, используя фильтр нижних частот, частота среза которого существенно ниже тактовой частоты регистра. Прежде чем вдаваться в детали, покажем некоторые преимущества аналогового шума, полученного цифровым способом. Помимо всего прочего, при таком подходе появляется возможность генерировать шум с заданными спектром и амплитудой с подстройкой полосы (путем подстройки тактовой частоты), используя надежные и простые в обращении цифровые схемы.
Здесь отсутствуют нестабильность генераторов на шумящих диодах, проблемы взаимовлияния и помех, которые не дают покоя чувствительным маломощным аналоговым схемам диодных или резисторных генераторов шума. Наконец, цифровые схемы генерируют повторяемый «шум»; если его отфильтровать с помощью взвешенного цифрового фильтра (более подробно об этом несколько позже), то можно получить повторяемые колебания шума, независящие от тактовой частоты.
9.35. Энергетический спектр последовательности, сформированной при помощи регистра сдвига
Спектр выходного сигнала, генерируемого регистром сдвига максимальной длины, составляют колебания шума от частоты повторения всей последовательности fтакт/K до тактовой частоты и выше. До частоты 12 % от тактовой спектр имеет плоскую часть с неравномерностью ±0,1 дБ, затем наблюдается быстрое падение до уровня —0,3 дБ на частоте 44 % /такт. Таким образом, фильтр нижних частот с частотой среза в верхней области 5-10 % от тактовой частоты будет преобразовывать выходной сигнал регистра сдвига в аналоговое напряжение шума с ограниченной полосой. Для этой цели достаточен даже простой RC-фильтр, хотя, если возникает необходимость в точной полосе шума, то желательно использовать активные фильтры с крутой характеристикой на частоте среза (см. гл. 5).
Для того чтобы эти утверждения звучали более убедительно, обратимся к выходному сигналу регистра сдвига и его спектру. Обычно желательно исключить постоянную составляющую в цифровом сигнале, формируя выходной сигнал, в котором «1» соответствует напряжение +а В, а «0» — а В (рис. 9.84).
Рис. 9.84.
Это можно легко сделать с помощью двухтактного транзисторного каскада, показанного на рис. 9.85.
Рис. 9.85. Прецизионная биполярная выходная ступень с низким Zвых.
Можно также использовать МОП-транзисторы, схемы стабилизации напряжения с фиксирующими диодами, быстродействующий операционный усилитель с регулировкой тока постоянной составляющей в точке суммирования или КМОП-ключ `4053, работающий от ±а В, с двумя входами, подключенными к источникам питания.
Как мы отмечали выше, автокорреляционная функция последовательности символов на выходе содержит один пик. Если состояния на выходе представить числами +1 и —1, то цифровая автокорреляционная функция будет иметь вид, показанный на рис. 9.86; (цифровая автокорреляция — это сумма произведений соответствующих разрядов при сравнении последовательности двоичных символов с ее сдвинутой копией). Не путайте ее с непрерывной автокорреляционной функцией, которую рассмотрим несколько позже.
Рис. 9.86. Дискретная автокорреляционная функция для полного цикла максимальной последовательности.
Функция на этом графике определена только для сдвигов, соответствующих целому числу тактов. Для всех ненулевых сдвигов и сдвигов, не кратных общему периоду К, автокорреляционная функция постоянна и имеет значение — 1 (поскольку в последовательности есть дополнительная 1); по сравнению со значением функции при нулевом сдвиге (К) величина —1 пренебрежимо мала.
Если же неотфильтрованный выход регистра сдвига рассматривать как аналоговый сигнал (принимающий только два значения +а и — а), то нормализованная автокорреляционная функция будет, как показано на рис. 9.87, непрерывной. Другими словами, при сдвигах более чем на один такт вправо и влево корреляция между значениями сигнала полностью отсутствует.
Рис. 9.87. Непрерывная автокорреляционная функция для полного цикла максимальной последовательности.
Энергетический спектр неотфильтрованного сигнала на выходе регистра сдвига можно получить по автокорреляционной функции, используя стандартные математические средства. В результате получаются равноудаленные серии пичков (дельта-функций), начинающихся с частоты повторения всей последовательности fтакт/K и затем идущих через равные интервалы fтакт/K. То, что спектр состоит из совокупности дискретных спектральных линий, отражает тот факт, что последовательность время от времени (периодически) повторяется. Пусть вас не удивляет странный вид спектра; он будет выглядеть непрерывным при любых изменениях и приложениях, которые занимают время, меньшее чем время цикла регистра. Огибающая спектра неотфильтрованного сигнала на выходе регистра показана на рис. 9.88. Она пропорциональна квадрату функции (sin х)/х. Обратите внимание на одно необычное свойство-на тактовой частоте и ее гармониках энергия шума равна нулю.
Рис. 9.88. Энергетический спектр неотфильтрованного сигнала на выходе регистра сдвига.
Напряжение шума. При генерации аналогового шума используется, разумеется, только часть низкочастотной области спектра. Оказывается, что удельную мощность шума на герц несложно выразить через половинную амплитуду а и тактовую частоту fтакт. Мощность, выраженная через среднеквадратичное напряжение шума, будет
Это относится к нижней части спектра, т. е. к той части, которая обычно используется (для того чтобы определить плотность мощности в любой части спектра, можно использовать огибающую).
Предположим, например, что регистр сдвига максимальной длины работает на частоте 1,0 МГц и организован таким образом, что выходное напряжение изменяется от +10,0 до —10,0 В. Выходной сигнал пропускается через RC-фильтр нижних частот с затуханием 3 дБ на частоте 1 кГц (рис. 9.89).
Рис. 9.89. Простой источник псевдослучайного шума.
Можно точно вычислить среднеквадратичное напряжение шума на выходе. Из предыдущего выражения мы знаем, что среднеквадратичное напряжение на выходе преобразователя уровней равно 14,14 мВ/Гц1/2. Из разд. 7.21 мы знаем также, что полоса шума НЧ-фильтра составляет (π/2) (1,0 кГц) или 1,57 кГц. Поэтому выходное напряжение шума будет равно Ucp.кв = 0,01414·(1570)1/2 = 560 мВ, а его спектр будет соответствовать низкочастотному RС-фильтру.
9.36. Низкочастотная фильтрация
Аналоговая фильтрация. Полезный спектр шума, создаваемого генератором псевдослучайной последовательности, простирается от низкочастотной границы, обратной периоду повторения (fтакт/K), до высокочастотной границы, равной примерно 20 % от тактовой частоты (на этой частоте мощность шума на герц падает на 0,6 дБ).
Простая низкочастотная фильтрация с использованием RС-звеньев, как показано в предыдущем примере, равнозначна установке точки 3 дБ намного ниже тактовой частоты (например, ниже 1 % fтакт). Для того чтобы использовать часть спектра более близкую к тактовой частоте, желательно применить фильтры с более крутым срезом, например фильтры Баттерворта или Чебышева. В этом случае плоскость результирующего спектра будет определяться параметрами фильтра, которые должны быть измерены, поскольку отклонения в параметрах могут вызывать колебания коэффициента передачи в полосе пропускания. С другой стороны, если требуется точное значение напряжения шума на Гц-1/2, то необходимо измерить реальный коэффициент передачи фильтра по напряжению.
Цифровая фильтрация. Недостаток аналоговой фильтрации заключается в том, что если тактовая частота изменяется в несколько раз, то требуется подстройка частоты среза фильтра. В тех случаях, где это необходимо, изящное решение дает цифровая фильтрация, которая осуществляется с помощью взвешенной аналоговой суммы последовательных выходных разрядов (нерекурсивная цифровая фильтрация). С ее помощью эффективная частота среза подстраивается под изменение тактовой частоты. Кроме того, цифровая фильтрация позволяет спуститься до предельно низких частот среза (доли герца), где аналоговая фильтрация становится практически беспомощной.
Для того чтобы осуществить взвешенное суммирование одновременно нескольких последовательных выходных разрядов, можно просто воспользоваться различными параллельными выходами разрядов регистра сдвига и использовать резисторы различного номинала, подключенные к суммирующей точке операционного усилителя. Для НЧ-фильтра весовые коэффициенты должны быть пропорциональны (sin x)/x; обратите внимание, поскольку весовые коэффициенты могут быть обоих знаков, потребуется инвертирование некоторых уровней. Так как в этой схеме не используются конденсаторы, выходной сигнал будет состоять из набора дискретных уровней выходного напряжения.
Используя весовую функция для большого числа разрядов последовательности, можно улучшить приближение к гауссову шуму. Более того, в этом случае аналоговый выходной сигнал становится фактически непрерывным сигналом. По этим причинам желательно использовать как можно больше выходов регистра сдвига, используя в случае необходимости дополнительные ступени регистра сдвига, включенные в обратную связь с вентилем ИСКЛЮЧАЮЩЕЕ ИЛИ. Как и ранее, для задания стабильных цифровых уровней напряжения следует использовать резисторную «подвеску» к питанию или КМОП-ключи (для этих целей КМОП-логика является идеальным решением, поскольку выходы при этом точно соответствуют UCC и земле).
Схема, показанная на рис. 9.90, генерирует псевдослучайный аналоговый шум, полосу которого можно менять с использованием рассмотренного способа в огромном диапазоне.
Рис. 9.90. Лабораторный генератор шума с широким частотным диапазоном.
Сигнал кварцевого генератора с частотой 2,0 МГц поступает на 24-разрядный программируемый делитель 14536, который формирует тактовую частоту от 1,0 МГц до 0,12 Гц с коэффициентом деления кратным 2. 32-разрядный регистр сдвига охвачен обратной связью от 31- и 18-го разрядов и генерирует последовательность максимальной длины с миллиардом состояний (на максимальной тактовой частоте полный цикл регистра проходит за полчаса). Здесь мы использовали взвешенное суммирование с функцией (sin x)/x на 32 последовательных разрядах последовательности. Элементы Y1 и Y2 усиливают инвертированные и неинвертированные выходы соответственно и запускают дифференциальный усилитель Y3. Коэффициенты усиления выбираются таким образом, чтобы сформировать на 50-омной нагрузке напряжение 1,0 В ср. кв. без постоянной составляющей (2,0 В ср. кв. на холостом ходу). Обратите внимание на то, что эта амплитуда шума не зависит от тактовой частоты, т. е. от общей полосы. Такой цифровой фильтр имеет частоту среза на 0,05 fтакт и формирует спектр белого шума от полосы постоянный ток ÷ 50 кГц (максимальная тактовая частота) до полосы постоянный ток ÷ 0,006 Гц (минимальная тактовая частота) на 24 диапазонах. Схема вырабатывает выходной сигнал от +1,0 до -1,0 В. Относительно этой схемы можно сделать несколько важных замечаний.
Обратите внимание на то, что в этой схеме в обратной связи используется инвертирующий вентиль ИСКЛЮЧАЮЩЕЕ ИЛИ, поэтому инициализацию регистра можно осуществить простым обнулением. Использование инверсии входных последовательных сигналов исключает состояние «все единицы» (а не «все нули» как при использовании обычного вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ), но все другие свойства остаются в силе.
Взвешенное суммирование конечного числа битов не может сформировать настоящий гауссов шум из-за ограничения по амплитуде пика. Можно показать, что выходная амплитуда пика (на 50 Ом) составляет ±4,34 В, что дает коэффициент формы 4,34. Эти цифры имеют важное значение, поскольку для того, чтобы исключить эффект ограничения, коэффициент усиления Y1 необходимо с помощью Y2 поддерживать достаточно низким. Внимательно приглядитесь к методам, используемым для формирования выходных сигналов с нулевой постоянной составляющей из уровней КМОП со средним значением +6,0 В (низкий уровень — 0 В, высокий — +12 В).
Описанный метод цифровой низкочастотной фильтрации последовательностей максимальной длины используется во многих коммерческих генераторах шума.
9.37. Краткое заключение
Несколько заключительных замечаний относительно последовательностей, генерируемых регистрами сдвига, как источников аналогового шума. На основании трех перечисленных ранее свойств регистров максимальной длины вы, возможно, склонны заключить, что выходная последовательность «чересчур случайна» в том смысле, что она имеет точное число серий заданной длины и т. п. Настоящая случайная машина для подбрасывания монеты не генерировала бы на единицу больше «орлов», чем «решек», а ее автокорреляционная функция не была бы абсолютно плоской для конечной последовательности. Посмотрите на это с другой стороны. Если бы вы использовали единицы и нули, вырабатываемые регистром сдвига, для управления случайным блужданием, двигаясь вперед на один шаг при получении единицы и назад на один шаг при получении нуля, то оказались бы на расстоянии ровно в один шаг от начальной точки после того, как регистр пройдет весь цикл. Этот результат уж никак нельзя назвать случайным!
Вместе с тем упомянутые свойства регистра сдвига верны только для всей последовательности из 2n — 1 бит, взятой как одно целое. Если вы используете фрагмент полной битовой последовательности, то его свойства будут довольно точно аппроксимировать случайный автомат для подбрасывания монеты. Представьте себе аналогичный процесс — извлечение красных и синих шаров наугад из урны, в которую вначале помещены К шаров (половина красных, половина синих). Если вы вытаскиваете шары без возвращения, то сначала вы рассчитываете получить почти случайную статистику. По мере убывания шаров в урне статистика изменяется за счет того, что общее число красных и синих шаров должно оставаться тем же самым.
Представление о том, как это происходит, можно получить, вновь вернувшись к случайному блужданию. Если предположить, что единственным «неслучайным» свойством последовательности является точное равенство «1» и «0» (не обращая внимание на одну лишнюю «1»), то можно показать, что описанное случайное блуждание после r вытаскиваний из общей «популяции» К/2 единиц и К/2 нулей приведет к среднему расстоянию от начальной точки, равному
Х = [r(К — r)/(К — 1)]1/2.
(Этим выражением мы обязаны Ε. М. Purcell.) Поскольку при полностью случайном блуждании X равно корню квадратному из r, коэффициент (К — r /(К — 1) отражает влияние конечных содержимых урны. Пока r << К, случайность блуждания чуть-чуть отличается от случая абсолютно случайного блуждания, и генератор псевдослучайной последовательности практически неотличим от реального автомата. Мы проверили это на нескольких тысячах случайных блужданий под управлением ПСП (каждое в несколько тысяч шагов) и обнаружили идеальную случайность по этому простому критерию.
Тот факт, что генераторы ПСП выдерживают этот тест, разумеется, не гарантирует, что они будут удовлетворять и более сложным тестам на случайность, например тестам на корреляцию более высокого порядка. Такие корреляционные зависимости также оказывают влияние на свойства аналогового шума, генерируемого путем фильтрации ПСП. Несмотря на то что амплитуда шума имеет гауссово распределение, возможно наличие корреляции амплитуд более высокого порядка, не свойственной настоящему случайному шуму. По этому поводу сейчас принято считать, что чем больше отводов участвует в обратной связи (предпочтительно порядка m/2), тем «лучше» шумовые свойства (при использовании для формирования последовательных входов дерева четности на элементах ИСКЛЮЧАЮЩЕЕ ИЛИ).
Те, кто проектирует генераторы шумов, должны познакомиться со сдвиговым регистром переменной длины в КМОП-логике 4557 (от 1 до 64 разрядов); конечно, вы должны использовать его в сочетании с регистром с параллельным выходом (типа `4015 или `164) для того, чтобы обеспечить n отводов.
В разд. 7.20 обсуждается вопрос о шумах и приводится пример генератора «розового» шума на ИМС регистра максимальной длины ММ5437.
9.38. Цифровые фильтры
Последний пример затронул интересную тему цифровой фильтрации, в данном случае формирование НЧ-сигнала путем взвешенного суммирования 32 значений псевдослучайной последовательности, каждое из которых соответствует уровню напряжения 0 или +12 В. На вход такого «фильтра» поступают сигналы, которые могут иметь только два уровня напряжения. Вообще говоря, то же самое можно сделать с аналоговым сигналом на входе, образуя взвешенную сумму его значений (xi), распределенных во времени через равные интервалы
Здесь xi являются дискретными выборками из входного сигнала, hk — весовые коэффициенты, а yi - значения выходного сигнала. В реальных условиях цифровой фильтр будет суммировать только конечное множество входных значений, как, например, в генераторе шума, где было использовано 32 члена. На рис. 9.91 схематично показано, как это происходит.
Рис. 9.91. Нерекурсивный цифровой фильтр.
Заметьте, что такой фильтр может обладать интересным свойством симметричности во времени, т. е. усреднением прошлого и будущего для того, чтобы сформировать текущее значение выхода.
Разумеется, реальные аналоговые фильтры умеют лишь смотреть в прошлое и соответствуют цифровым фильтрам с ненулевыми весовыми коэффициентами только при k >= 0.
Частотная характеристика симметричного фильтра. Можно показать, что частотная характеристика симметричного фильтра (hk = h-k) имеет вид
где tотс — время между выборками (отсчетами). Нетрудно заметить, что hk представляют собой коэффициенты разложения в ряд Фурье требуемой частотной характеристики. Это объясняет, почему в случае представленной ранее схемы генератора весовые коэффициенты были выбраны в соответствии с функцией (sin x)/x: они являются компонентами Фурье заграждающего НЧ-фильтра. В таких симметричных фильтрах фазовый сдвиг на любой частоте либо равен 0, либо 180°.
Рекурсивные фильтры. Можно получить интересный класс цифровых фильтров, если на вход фильтра в дополнение к внешнему входному сигналу подать собственный выходной сигнал фильтра. Такой фильтр можно рассматривать как фильтр с обратной связью. Он имеет причудливое название рекурсивный фильтр (или с бесконечной импульсной характеристикой) в противоположность рассмотренному выше нерекурсивному (с конечной импульсной характеристикой) фильтру. Можно, например, сформировать выходной сигнал в соответствии со следующим выражением:
yi = Ayi-1 + (1 — A)xi
Это соответствует низкочастотной характеристике, эквивалентной той, которой обладает простой низкочастотный RC-фильтр
А = е-tотс/RC
где tотс - интервал времени между последовательными выборками хi из входного сигнала. Эта ситуация, конечно, не является идентичной ситуации с аналоговым низкочастотным фильтром, работающим с аналоговым сигналом, по причине дискретной природы отсчетов.
Пример НЧ-фильтра. В качестве числового примера предположим, что вам требуется отфильтровать ряд числовых значений, соответствующих сигналу с затуханием 3 дБ на частоте f3 дб = 1/20tотс. Таким образом, постоянная времени соответствует интервалу времени 20 последовательных отсчетов. В этом случае А = 0,95123, а выходной сигнал определяется по выражению yi = 0,95123yi-1 + 0,04877хi. С увеличением постоянной времени относительно времени между отсчетами tотс приближение к реальному НЧ-фильтру улучшается.
Для обработки данных уже представленных в виде дискретных отсчетов, как, например, массив данных в компьютере, вы, возможно, предпочтете использовать такой фильтр. Рекурсивный фильтр при этом будет реализовываться с помощью однократного прохода по данным с тривиальной арифметической обработкой. Программа НЧ-фильтра на языке Фортран будет выглядеть следующим образом:
A = exp(-TS/TC)
В = 1. — А
DO 10I = 2,N
10X(I) = A*X(I — 1) + B*X(I),
где X — матрица данных, TS — интервал времени между отсчетами (т. е. TS = 1/tотс), а ТС — выбранная постоянная времени фильтра. Эта маленькая программа осуществляет фильтрацию на месте, т. е. она заменяет первоначальные данные отфильтрованными. Можно, конечно, создавать из отфильтрованных данных отдельный массив.
НЧ-фильтр с коммутацией. Такой же фильтр можно построить аппаратным путем, используя схему, показанную на рис. 9.92.
Рис. 9.92. Рекурсивный фильтр на коммутируемых конденсаторах.
Ключи на полевых транзисторах S1 и S2 коммутируются с некоторой тактовой частотой, периодически заряжая конденсатор С1 до входного напряжения и затем передавая его заряд на конденсатор С2. Если С2 имеет напряжение U2, а С1 заряжается до входного уровня U1, то при подключении С1 к С2 напряжение на обоих конденсаторах будет определяться соотношением U = (С1U1 + С2U2)/(C1 + С2), что эквивалентно рассмотренному ранее рекурсивному фильтру при
уi = С2/(C1 + C2)уi-1 + С1/(C1 + C2)xi.
Приравнивая эти коэффициенты к заданному ранее значению А, получим
f3 дB = (1/2π)fотсln(C1 + C2)/C2.
Упражнение 9.8. Покажите, что этот результат правилен.
Этот фильтр практичен во всех отношениях и обладает одной привлекательной особенностью — электронной настройкой посредством тактовой частоты fотс. В обычных схемах используются КМОП-ключи, а емкость С1 берется много больше С2. Поэтому сигнал переключения должен быть несимметричным и большую часть времени тратить на замыкание S1.
Приведенная схема представляет собой простой пример фильтра с коммутацией; в этот класс фильтров входят фильтры, выполненные на матрицах коммутируемых конденсаторов. Они имеют периодическую частотную характеристику, что делает их удобными для использования в качестве гребенчатых и узкополосных режекторных фильтров.
Для всех фильтров классического типа (Баттерворта, Чебышева и т. п.) можно построить их приближенные дискретные аналоги в форме ВЧ, НЧ, полосовых и заграждающих фильтров, как симметричных во времени, так и с истинным временем запаздывания. Такие фильтры очень удобны при обработке квантованных данных, перед которыми, безусловно, большое будущее.
В настоящее время выпускают большое число недорогих ИМС фильтров с коммутируемыми конденсаторами. ИМС MF4 фирмы National, например, является 4-звенным НЧ-фильтром Баттерворта, размещенным в корпусе мини-DIP; он не требует внешних компонентов и работает от одного источника питания с напряжением от +5 до +14 В. Частота среза фильтра (0,1 Гц мин. и 20 кГЦ макс.) устанавливается с помощью внешней тактовой частоты fтакт = 100f3 дB. ИМС MF5 и MF10 («универсальные фильтры с коммутируемыми конденсаторами») работают несколько иначе. С помощью внешних резисторов устанавливаются тип фильтра (ВЧ, НЧ, полосовой, заграждающий) и характеристика фильтра (Баттерворта, Чебышева и т. п.), а с помощью тактовой частоты, как и раньше, устанавливается частота среза. Другими изготовителями фильтров с коммутируемыми конденсаторами являются фирмы American Microsystems (AMI), Linear Technology (LTC) и Reticon. Фирма LTC как всегда использовала несколько хитроумных приемов для улучшения технических характеристик. Ее фильтры LTC1062 и МАХ280 похожи на MF4, но являются 5-звенными и имеют нулевую ошибку на постоянном токе! Последнее свойство реализовано путем размещения фильтра вне пути постоянного тока (рис. 9.94).
Рис. 9.94. Цифровой НЧ-фильтр с малым сдвигом по постоянному току.
Гибкие фильтры серии МАХ260 допускают управление важными параметрами фильтра от микропроцессора. Вообще говоря, такие фильтры с коммутируемыми конденсаторами работают только на верхнем конце звукового диапазона. В них также наблюдается существенное проникновение тактовой частоты на выход обычно в пределах 10–25 мВ. Это ограничивает их динамический диапазон в тех применениях, где тактовая частота находится внутри полосы пропускания (например, ВЧ-фильтры). Они могут иметь значительный шум, ограничивающий динамический диапазон до 80 дБ и менее (сравните со 140 дБ и выше для хорошего операционного усилителя). С другой (положительной) стороны, фильтры на коммутируемых конденсаторах просты в применении и позволяют осуществлять эффективную настройку (с помощью тактовой частоты). Фильтры такого типа широко используют в модемах (при передаче данных по телефонным линиям) и в других областях связи. См. разд. 5.11.
Формирование синусоидальных колебаний цифровым способом. С нерекурсивной цифровой фильтрацией связан интересный способ синтеза синусоидальных колебаний с использованием взвешенных сумм сигналов с выходов счетчика Джонсона (кольцевой счетчик с коэффициентом пересчета, вдвое превышающим число разрядов). Схема на рис. 9.93 показывает способ реализации такого генератора.
Рис. 9.93. Цифровой генератор синусоидальных сигналов.
ИМС 4015 представляет собой 8-разрядный регистр сдвига с параллельным выходом. Подавая на вход инвертированный сигнал с последнего разряда, можно организовать счетчик Джонсона, который будет проходить через 16 состояний (в общем случае 2n состояний для n-разрядного регистра сдвига). Начиная с состояния «все нули», происходит заполнение счетчика слева направо «1» (марш «1») до полного заполнения всеми единицами, затем начинается марш «0» и т. д. Показанное на рисунке взвешивание формирует 8-уровневое приближение к синусоидальному колебанию с частотой, равной 1/16 тактовой частоты, и с первым ненулевым членом искажения на 15-й гармонике, имеющей затухание 24 дБ.
Схемы, не требующие пояснений
9.39. Удачные схемы
На рис. 9.95 приведено несколько примеров сопряжения логических и линейных схем.
Рис. 9.95. а — преобразователь отрицательных уровней в уровни ТТЛ; б — управление нагрузкой; подключенной на землю;
Рис. 9.95. в — амплитудный дискриминатор; г — схема управления соленоидом;
Рис. 9.95. д — 8-канальный мультиплексор с дифференциальным входом;
Рис. 9.95. е — фазовый детектор с подавлением 60 дБ; ж — прецизионный триггер Шмитта.
9.40. Негодные схемы
На рис. 9.96 показаны схемы с основными грубыми ошибками сопряжения. Для каждой схемы попытайтесь объяснить, в чем состоит ошибка и как ее устранить.
Рис. 9.96. а — формирователь задержанного фронта; б — индикатор логического состояния;
Рис. 9.96. в — сопряжение элемента ТТЛ с высокоомным выходом (две неудачные схемы); г — повышение нагрузочной способности элемента ТТЛ с помощью повторителя;
Рис. 9.96. д — проводное ИЛИ на вентилях с активной нагрузкой; е — счетчик пересечений нуля;
Рис. 9.96. ж — RS-триггер; з — сопряжение элемента ТТЛ со схемами высоких уровней.
Дополнительные упражнения
(1) Постройте схему для обнаружения кратковременного пропадания напряжения питания +5 В. Схема должна иметь кнопку СБРОС и светодиод для индикации НЕПРЕРЫВНОГО ПИТАНИЯ. Сделайте так, чтобы она работала от напряжения +5 В.
(2) Почему нельзя построить 2n-разрядный ЦАП с помощью двух n-разрядных ЦАП и пропорционального суммирования их выходов (ВЫХ1 + ВЫХ2/2n)?
(3) Убедитесь в том, что максимальное значение сигнала на выходе псевдослучайного генератора шума на рис. 9.90 равно +8,68 В.
(4) Эксперимент осуществляется под управлением программируемого вычислителя, соединенного с различными исполнительными и измерительными приборами. Вычислитель дает приращение различным переменным, находящимся под его управлением (например, длине волны излучения, поступающего от монохроматора), и обрабатывает результаты соответствующих измерений (например, количество переданного света, скорректированное с учетом известной чувствительности детектора). В результате образуются пары значений х, у. Задача состоит в том, чтобы спроектировать схему для вычерчивания графика на аналоговом графопостроителе. Выходы вычислителя для каждой пары значений представляют собой два 3-разрядных (двоично-десятичных) символа. Для уменьшения количества связей числа представляются по одному в единицу времени («бит — параллельно, символ — последовательно») в сопровождении 2-разрядного адреса. Импульс СИМВОЛ ВЕРЕН показывает, что данные и адрес правильны и их можно, например, зафиксировать. Уровень х'/у сообщает о том, какому числу принадлежит выводимый символ (х или у). Это показано на рис. 9.97.
Рис. 9.97.
Данные передаются в следующем порядке: хn (МЗЦ)… хn (СЗЦ), yn (МЗЦ)… уn (СЗЦ); таким образом, после поступления СЗЦ величины у (Α1 = 0, А2 = 1, х'/у = 1) известно, что вы получили всю пару х, у. В этот момент вы должны обновить цифры, поступающие на ЦАП (не обновляйте их по одной). Нет необходимости присваивать ИМС отдельные номера; дайте им общее наименование, например D-триггер или дешифратор «1 из 10». Укажите, в каких местах входы или выходы инвертируются (с помощью маленьких кружочков). Считайте, что в вашем распоряжении имеются ЦАП, которые воспринимают 3-разрядные двоично-десятичные символы с логическими уровнями и обладают токовыми выходами от 0 до 1 мА, соответствующие входным кодам от 000 до 999. Поскольку двухкоординатный графопостроитель имеет 10-вольтовую полную шкалу, вам придется преобразовать ток в напряжение. Проверьте свою изобретательность, введя дополнительное усложнение: предположите, что размах выходного сигнала ЦАП всего 1 В.
Глава 10 МИКРОЭВМ
Перевод К.Г.Финогенова
Мини-ЭВМ, микроЭВМ и микропроцессоры
Доступность недорогих малых ЭВМ, стоимостью порядка 1 К долл., сделала их привлекательными для использования при управлении экспериментом и технологическими процессами, для накопления данных и выполнения оперативных вычислений. Малые ЭВМ широко используются в лабораторных исследованиях и промышленности, поэтому информация об их потенциальных возможностях, языках программирования и способах сопряжения с внешними устройствами составляет существенную часть электронного «ноу-хау».
МикроЭВМ эволюционировали от ранней мини-ЭВМ — малой электронно-вычислительной машины, центральный процессор (ЦП) которой был собран на микросхемах малой и средней степени интеграции, как правило расположенных на одной или нескольких больших печатных платах. По мере совершенствования микросхем БИС стало возможно реализовать рабочие характеристики центрального процессора мини-ЭВМ на одном кристалле высокой степени интеграции; таким образом, микроЭВМ — это электронно-вычислительная машина, центральный процессор которой собран на нескольких, а зачастую на одной микросхеме БИС, а тип микросхемы ЦП или соответствующий микропроцессорный комплект определяет тип микроЭВМ. Например, на смену популярным мини-ЭВМ фирмы DEC PDP-11, ЦП которых занимал несколько печатных плат, пришло семейство ЭВМ под таким же названием, ЦП которых был собран на нескольких микросхемах БИС, заменивших большое количество микросхем малой и средней степени интеграции; приблизительно в то же время фирма Motorola представила высокопроизводительный микропроцессор МП (серии 68000), несомненно испытавший влияние PDP-11, рабочие характеристики которого во многом были сходны с характеристиками ЦП этой ЭВМ.
В основе большинства современных малых ЭВМ, являющихся на самом деле микроЭВМ, лежат впечатляющие характеристики современного поколения микропроцессоров. Не так давно возникло идиоматическое выражение «супермини-ЭВМ», по-видимому, для того, чтобы выделить класс ЭВМ, имеющих более высокие технические характеристики и подчас конкурирующих с большими и дорогостоящими ЭВМ, построенными в соответствии с традиционными техническими решениями. В некоторых случаях различия между ними относятся скорее к габаритным размерам или количеству внешних устройств, чем к степени интеграции ЦП.
Более существенно различие между микроЭВМ и микроконтроллерами. Термин микроконтроллер использован для обозначения устройства, в котором микропроцессор вместе с небольшим по объему ЗУ и другими необходимыми элементами используют для специализированного управления процессом или аппаратом. В такой ситуации микропроцессор да несколько подходящих микросхем плюс ПЗУ могут с успехом заменить сложную комбинационную схему, состоящую из логических элементов, триггеров, аналого-цифровых и цифро-аналоговых преобразователей; это надо иметь ввиду, как только вы включаетесь в крупный технический проект.
Для такого рода приложений разработаны специализированные МП, характеризующиеся тем, что такие узлы, как тактовые генераторы, схемы ввода-вывода и некоторые другие, обычно собираемые с использованием дополнительных микросхем, реализованы на том же кристалле, что и собственно микропроцессор за счет вычислительной мощности и большого адресного пространства, которые характеризуют МП, предназначенные для построения микроЭВМ, ориентированных на вычислительные задачи.
В этой главе мы опишем архитектуру и программирование микроЭВМ, а также их сопряжение с внешними устройствами на примерах полезных и простых способов подключения внешних устройств к IBM PC/XT. Здесь мы ссылаемся на стандартную PC-магистраль и ее модификации, такие как магистраль PC/AT и совместимых с ней ЭВМ, а также младших моделей линии PS/2. Большинство изложенных в настоящей главе идей будет перенесено в следующую главу, где мы углубимся в обстоятельное обсуждение по поводу проектирования и конструирования схем и целых систем на основе МП, а для примеров будем использовать МП «Motorola 68008» из серии 68000, которая совместно с серией Intel 8086 господствует в малых ЭВМ. Говоря о микроЭВМ в целом, надо отметить, что проектирование собственно ЭВМ, включая ОЗУ, внешние запоминающие устройства, устройства ввода-вывода, а также системное программирование и разработка сервисных программ являются предметом заботы изготовителя, а также его коллег, производящих комплектующие аппаратные и программные средства. Пользователю надо только позаботиться о специализированных интерфейсах и программировании своих прикладных задач. Напротив, в специализированных МП-системах выбор типа ЗУ, схемных и программных решений, вообще говоря, должен быть сделан проектировщиком. Изготовители микроЭВМ, как правило, принимают на себя вопросы разработки системного и сервисного программного обеспечения, как части вычислительной системы в целом (часто-совместно с внешними устройствами), тогда как изготовители МП-комплектов и интегральных микросхем сосредоточены на вопросах проектирования и сбыта как собственно МП, так и вспомогательных микросхем. В настоящей главе мы рассмотрим архитектуру и программирование микроЭВМ и сосредоточимся на подробностях внутренних связей и сопряжений с внешними устройствами.
10.01. Архитектура микроЭВМ
Рисунок 10.1 представляет типовую обобщенную схему большинства микроЭВМ. Рассмотрим эту схему.
Рис. 10.1. Блок-схема компьютера.
Центральный процессор. Центральный процессор — это сердце ЭВМ. Компьютеры выполняют вычисления в центральном процессоре над порциями данных, организованных как машинные слова. Размер слова может составлять от 4 до 32 бит и более, наиболее популярные современные микроЭВМ имеют 16-битовое слово. Восемь бит составляют байт, а половину байта-четыре бита-иногда называют «нибл». Часть ЦП, называемая дешифратором команд, интерпретирует последовательные команды, выбираемые из памяти, выясняя тем самым, что надлежит делать процессору в каждом случае. В состав ЦП входит арифметическое устройство, которое может выполнять такие операции, как сложение, нахождение дополнения, сдвиг, пересылку и некоторые другие над числами, находящимися в регистрах, а в некоторых случаях и в памяти. Программный счетчик постоянно отслеживает ход выполнения программы. Обычно значение программного счетчика инкрементируется после выполнения очередной команды, но оно может получить другое значение в результате выполнения команд безусловного перехода или ветвления — условного перехода. Управляющие линии магистрали обеспечивают сопряжение с памятью и устройствами ввода-вывода. Большинство компьютеров (и чем дальше - тем больше) имеют также регистр указателя стека и несколько флажков (переноса, нуля, знака), проверяемых при выполнении условных переходов. В состав многих высокопроизводительных процессов входит также сверхоперативная память (кэш-память), которая для ускорения доступа содержит величины, незадолго до этого извлеченные из памяти.
Значительная активность наблюдается в области экспериментов с параллельными процессами, где вы соединяете между собой много ЦП с целью достижения потрясающей вычислительной мощности. Со временем в области высокопроизводительной обработки такая тенденция может стать определяющей. В наше же время, однако, стандарт архитектуры микро-ЭВМ представлен однопроцессорными ЭВМ, которые выполняют команды последовательно.
Память. Все компьютеры имеют некоторый объем быстрой памяти с произвольным доступом, такую память, бывало, называли «сердцем» компьютера, поскольку запоминали и сохраняли данные малюсенькие магнитные сердечники - по одному на каждый запоминаемый бит. В большой микроЭВМ объем ОЗУ может достигать 10 Мбайт и более, хотя типичным значением является 1 Мбайт, а в микроконтроллерах объем ОЗУ может составлять всего 16 Кбайт. (Когда память измеряют в единицах К, это означает не 1000 байт, а 1024 или 210 байт; таким образом, 16 Кбайт на самом деле составляют 16 384 байт. Для обозначения 1000 мы употребляем строчную букву к.) Для того чтобы записать в такую память какой-либо код или считать его, обычно требуется около 100 не. Память с произвольным доступом почти всегда «разрушаема», это означает, что, когда электропитание отключается, информация улетучится (возможно, эту характеристику следовало бы назвать «забывчивостью»). Поэтому все компьютеры в своем составе имеют и неразрушаемую память, обычно доступную только для чтения (ПЗУ) и предназначенную для того, чтобы «завести»[2] машину, находящуюся до включения питания в состоянии полной амнезии.
В дополнительное ПЗУ часто записывают системные и графические процедуры, а также другие программы, которые должны быть доступны в любой момент.
Для того чтобы считать из памяти или сохранить в памяти ту или иную информацию, ЦП «адресует» то слово (памяти), какое пожелает. Большинство компьютеров адресует память побайтно, начиная с нулевого байта и последовательно перебирая байты вплоть до последнего в памяти. Поскольку машинное слово большинства компьютеров составляет несколько байт, обычно за один раз вы заносите в память или извлекаете из нее группу байт; обычно необременительно иметь шину данных с разрядностью в несколько байт. Например, микроЭВМ, которые построены на МП 80386 или 68020, имеют 32-разрядную шину данных (что равно 4 байт), так что 32-разрядное слово может быть записано в память или считано из нее за один цикл выборки. Для того чтобы указать длину последовательности передаваемых байт, используют управляющие сигналы, причем даже для «солидных» шин вам на это потребуется всего 1–2 байт.
В компьютере с большим количеством сегментов памяти для указания произвольного адреса памяти необходимо 3–4 байт. Поскольку большинство адресов памяти в реальной программе обычно близко, все компьютеры поддерживают упрощенные модели адресации: «относительная» адресация определяет адрес по удалению его от текущей команды в памяти; «косвенная» адресация использует содержимое регистра ЦП для указания ячейки в памяти; «страничная» адресация использует укороченные адреса для указания на заданную ячейку памяти в пределах малого диапазона (страницы); «прямая» или «абсолютная» адресация использует несколько следующих за командой байт для указания адреса. Современные ЦП венчают этот краткий список «индексной», «автоинкрементной» и другими полезными способами адресации, которых мы коснемся в следующей главе.
Во время выполнения программы в памяти находятся как собственно программа, так и данные. Центральный процессор извлекает команды из памяти, выясняет, что они означают и поступает соответственно, при этом часто требуется сохранить данные где-нибудь в памяти. Обычно неспециализированные универсальные компьютеры хранят программы и данные в одной и той же памяти, причем компьютер на самом деле не отличает одних от других. Если программа пойдет не туда и начнет «исполнять» данные, могут начаться забавные вещи!
Поскольку компьютерные программы большую часть своей жизни проводят в циклах, состоящих из сравнительно коротких последовательностей команд, вы можете увеличить производительность машины, используя малую по объему, но быструю кэш-память, в которую вы просто заносите копии ближайших используемых ячеек памяти. Центральный процессор с кэш-памятью сначала обращается именно к ней, перед тем, как осуществить выборку из более медленной основной памяти, когда циклы «крутятся» по одним и тем же адресам; часто можно достичь рекордной эффективности использования кэш-памяти до 95 % и выше, разительно увеличивая быстродействие.
Массовая память. Компьютеры, предназначенные для разработки программ или вычислений, в противоположность специализированным управляющим процессорам, обычно имеют одно или более запоминающее устройство достаточной емкости, называемое устройством массовой памяти. Жесткие диски (именуемые также «винчестерскими») и гибкие диски (флоппи-диски или дискеты) — вот типичные представители устройств массовой памяти, емкость которых изменяется от нескольких сотен килобайт до нескольких мегабайт для гибких дисков, и от нескольких десятков до нескольких сотен мегабайт для жестких дисков. Наиболее полно экипированные компьютеры имеют в своем составе дополнительно одно или два устройства ввода-вывода на магнитную ленту, конструкция которых может быть различна-от простого кассетного «стриммера» до магнитофона, рассчитанного на большие катушки 9-дорожечной полудюймовой стандартной ленты, те самые, которые всегда вращаются на заднем плане в научно-фантастических кинофильмах. Более современная технология, используя 8-мм видеокассеты, те же самые, что обитают в легких переносных видеокамерах, позволяет записать на одну такую кассету 1 Гбайт. Последним достижением в разработке массовой памяти являются компакт-диски, предназначенные только для чтения и использующие ту же технологию производства оптических дисков, что и при изготовлении аудио компакт-дисков; их емкость составляет 600 Мбайт на сторону 5-дюймового пластикового диска, обладающего к тому же гораздо меньшим временем доступа, чем любая магнитная лента.
В отличии от аудио компакт-дисков существуют такие устройства массовой памяти на компакт-дисках, которые позволяют как считывать, так и записывать информацию путем образования на пустом ровном компакт-диске ямок за счет лазерного нагрева; такие устройства называют WORM от английской аббревиатуры «записать однажды - читать многократно». Более того, сейчас доступны также устройства внешней памяти на магнитооптических дисках, поддерживающие операции чтения-записи и позволяющие полностью обновлять содержимое таких дисков.
По сравнению с ОЗУ произвольного доступа устройства массовой памяти, вообще говоря, обладают меньшим быстродействием, причем самыми медленными являются устройства на магнитных лентах (их время доступа достигает многих секунд), а самыми быстрыми (и дорогими) — жесткие диски (среднее время доступа порядка десятков миллисекунд). Скорость обмена данными для всех устройств массовой памяти высока и составляет от 10 Кбайт до 100 Кбайт в секунду и более, без учета задержки доступа к устройству. Как правило, вы храните программы, файлы данных, в том числе файлы графической информации, на некотором устройстве массовой памяти и загружаете их в ОЗУ только на время вычислений. С одним диском одновременно могут работать несколько пользователей; средних размеров оптический диск может хранить несколько копий Британской энциклопедии.
Если ваш компьютер имеет ОЗУ достаточно большого объема, элегантный способ поднять быстродействие компьютера, в том случае, если он часто обращается к диску, заключается в том, чтобы организовать псевдодиск путем загрузки всех необходимых дисковых файлов в ОЗУ в начале работы. Таким образом, вы можете загрузить в ОЗУ текстовый редактор, компилятор, редактор связей, загрузчик, после чего можно обращаться к такому диску для чтения или записи без потерь времени на ожидание. Тем не менее будьте бдительны: если компьютер отключится, ничто из результатов вашей работы не будет сохранено на внешнем носителе и вы потеряете всю наработку.
Алфавитно-цифровой и графический ввод-вывод. Замечательно иметь мощный компьютер, способный выполнять миллионы интеллектуальных вычислений в секунду, но если он все результаты держит в себе, вам от этого мало проку. Такие внешние устройства, как клавиатура с экраном, составляющие вместе терминал, «мышь», печатающее устройство и другие обеспечивают общение человека с машиной и существенны для любой «дружественной» по отношению к пользователю вычислительной системы. Эти устройства ориентированы в основном на программирование, редактирование текстов, работу с электронными таблицами и на графику; вы используете их, когда пишете, отслеживаете и распечатываете программу, вводите и печатаете документы, манипулируете числами или изображениями, играете в компьютерные игры. Такие внешние устройства вкупе с соответствующей интерфейсной частью легко найти у многих поставщиков, включая фирмы-изготовители собственно компьютеров.
Ввод-вывод в реальном времени. В лабораторных исследованиях, управлении технологическими процессами, при сборе данных или для таких экзотических приложений, как синтез речи или музыки, вам необходимы аналого-цифровые и цифро-аналоговые устройства, которые могут общаться с компьютером в реальном масштабе времени, т. е. в то же самое время, когда продолжается процесс, контролируемый этими устройствами. Возможности здесь практически безграничны; если взять хотя бы набор мультиплексируемых АЦП общего назначения, немного быстрых ЦАПов и несколько цифровых «портов» (последовательных или параллельных) для обмена данными, это уже обеспечит массу интересных приложений. Для наиболее популярных стандартов внутренней магистрали компьютеров подобная периферия общего назначения коммерчески доступна. Если же вы хотите от этих устройств чего-нибудь более причудливого, например, улучшенных характеристик (повышенного быстродействия, увеличенного числа каналов) или специализированных функций (генерации звуков, частотного синтеза, генерации временных интервалов и т. п.), вам придется сделать такие устройства самостоятельно. Вот здесь-то сведения об организации магистрали компьютера и технике программирования существенны, хотя подобные сведения полезны всегда.
Сетевой протокол. Даже мощные настольные компьютеры приобретают дополнительные возможности в тех случаях, когда они могут обмениваться файлами с другими ЭВМ. Один из способов сделать так — это подключиться к удаленной ЭВМ по телефонной сети и затем, по мере необходимости, использовать ресурсы этой ЭВМ. Таким образом можно получить доступ к большой базе данных или к каким-либо специализированным программам, мощной суперЭВМ, электронной почте, а также к файлам с текстами или данными ваших коллег по службе. Для этого вам требуется «модем» (модулятор-демодулятор), который либо подсоединяется непосредственно к внутренней магистрали вашего компьютера, либо подключается снаружи к последовательному порту. Подробнее об этом мы поговорим ниже.
Другим путем расширения сферы действия вашего компьютера является использование локальной вычислительной сети (ЛВС) для совместного объединения группы ЭВМ. Примером такой сети является ЛВС (Ethernet), которая обеспечивает передачу данных между машинами сети со скоростью до 10 Мбит/с по одному коаксиальному кабелю. Локальная вычислительная сеть позволяет вам обмениваться файлами с любой ЭВМ, включенной в эту сеть; на самом деле, работая в хорошо организованной сети, вы скорее всего приумножите ресурсы своего компьютера, совместно с другими ЭВМ используя быстрый диск большой емкости, дорогостоящие графопостроители и печатающие устройства и т. д. В этом случае каждая рабочая станция ЛВС может иметь внешнюю память весьма ограниченной емкости, зато обладать значительными вычислительными возможностями. Такая идеология организации ЛВС является идеальной, например, для издательств, где в процессе подготовки рукописи к публикации с ней работают разные люди. Для большинства компьютеров разработаны интерфейсы их подключения к Ethernet или другим ЛВС.
Магистраль данных. Для обмена данными между ЦП и ОЗУ или адаптерами внешних устройств все компьютеры используют магистраль — набор обобщенных «линий» (проводников), по которым осуществляется обмен двоичными словами. (Многие магистрали допускают также обмен данными непосредственно между адаптерами внешних устройств, хотя такие возможности используются менее часто.) Использование магистрали с обобщенными линиями значительно упрощает межсоединения, поскольку в противном случае вам потребовались бы многожильные кабели, соединяющие каждую пару взаимодействующих друг с другом устройств. Немного внимания как при проектировании самой магистрали, так и при подключении к ней — и все работает отлично. Магистраль состоит из набора линий данных (их обычно столько же, сколько разрядов (бит) составляет слово данных-8 для микроконтроллера и ПЭВМ с невысокими рабочими характеристиками, 16 или 32-для более сложных микрокомпьютеров), нескольких линий адреса для определения того, какое устройство будет «вещать», а какое - «слушать», подключившись к соответствующим линиям, а также набора управляющих линий, которые определяют, какое действие выполняется (передача данных от или к ЦП, обработка прерываний, прямой доступ к ОЗУ и т. п.). Все линии данных, равно как и ряд других линий, являются двунаправленными - они либо подключены к выходу элементов с тремя состояниями, либо в некоторых случаях к открытому коллекторному выходу логических элементов с нагрузочными резисторами (эти резисторы обычно устанавливают на конце магистрали, при этом они дополнительно выполняют функцию согласования для уменьшения отражений сигналов в линиях магистрали, см. также разд. 13.09); нагрузочные резисторы могут оказаться необходимыми и в случае применения устройств с тремя состояниями в том случае, когда магистраль имеет большую физическую длину.
Элементы с тремя состояниями или с открытым коллектором подключаются таким образом, чтобы их можно было перевести в отключенное состояние, поскольку при нормальной работе магистрали в каждый момент времени только одно устройство должно выставлять данные на соответствующие линии данных. Каждая ЭВМ придерживается тщательно разработанного протокола для определения того, какое устройство выставляет данные и когда. Если этого не сделать, возникает полный беспорядок, когда все кричат одновременно. (Компьютерщики не могут устоять перед искушением одушевить свои ЭВМ, а также их периферийные устройства и другие узлы. Инженеры идут дальше и обращаются как с живыми с триггерами и другими логическими схемами. Мы, естественно, будем следовать этой традиции.)
Среди разных типов внутренних магистралей компьютеров существует одно интересное различие. Они могут быть либо синхронными, либо асинхронными, в популярных микрокомпьютерах можно найти примеры каждого типа. Что это значит, вы увидите, когда мы будем детально рассматривать взаимодействие отдельных узлов компьютера через магистраль.
Мы вернемся к подробному рассмотрению магистрали с примерами соответствующих интерфейсов, рассматривая популярное семейство IBM PC/XT. Однако сначала нам необходимо познакомиться с набором команд ЦП.
Набор команд компьютера
10.02. Язык ассемблера и язык машинных кодов
Для того чтобы понять сигналы магистрали и функционирование компьютера, необходимо выяснить, что делает ЦП во время выполнения различных команд. Соответственно нам хотелось бы познакомить читателя с набором команд семейства IBM PC/XT. К сожалению, набор команд большинства реально существующих микропроцессоров имеет тенденцию к расширению, сопровождающуюся усложнением, наряду с добавлением дополнительных возможностей, и МП Intel 8086 не исключение. Однако поскольку нашей целью является только иллюстрация сигналов магистрали и функционирования компьютера (а не изощренное программирование), рассмотрим сокращенный набор команд — подмножество набора команд МП 8086. Исключив «лишние» команды, мы тем самым решаем проблему выбора ограниченного содержательного подмножества понятных команд, достаточных для программирования любой задачи. Далее мы используем этот набор команд для того, чтобы продемонстрировать несколько примеров функционирования аппаратной части и программирования. Эти примеры помогут выразить идею программирования на уровне машинных команд, что решительно отличается от программирования на таких языках высокого уровня, как
Фортран или Си. Несколько слов по поводу языка машинных кодов и языка ассемблера. Как уже упоминалось выше, ЦП компьютера предназначен для интерпретации определенных машинных слов в качестве команд и выполнения соответствующих программных процедур. Такой машинный язык состоит из набора двоичных команд, каждая из которых занимает один или несколько байт. Например, команда инкрементирования (увеличения на единицу) содержимого регистра ЦП будет однобайтовой, в то время как загрузка в регистр содержимого памяти обычно требует как минимум двух байт, причем это число может быть увеличено до пяти (при этом первый будет определять собственно команду и регистр, а четыре будут необходимы для указания произвольной ячейки памяти для большой машины). Печальной реальностью нашей действительности является то, что разные компьютеры имеют отличающиеся машинные языки и здесь нет совершенно никакой стандартизации.
Программирование непосредственно в машинных кодах является исключительно тоскливым занятием, так как приходится иметь дело с колонками двоичных чисел, каждый бит которых существенен. Поэтому вы неизбежно должны использовать программу, называемую ассемблером; она позволяет писать программы, используя легко запоминаемые мнемонические обозначения команд и символьные имена, которые вы можете придумывать сами для ячеек ОЗУ и переменных. Программа на языке ассемблера на самом деле не более, чем набор похожих на шифр строк, содержащих буквы и числа; ее следует передать «в руки» программы, называемой ассемблер, для того чтобы получить в результате законченную программу в машинном объектном коде, которую компьютер может выполнить[3]. Каждая строка ассемблерного кода превращается в несколько байт машинного кода (1–6 байт для МП Intel 8086). Непосредственно выполнять команды на языке ассемблера компьютер не в состоянии.
Для того чтобы конкретизировать высказанные соображения, рассмотрим наше подмножество команд языка ассемблера МП Intel 8086/8 и выполним несколько примеров.
10.03. Упрощенный набор команд процессора Intel 8086/8
Intel 8086 — это 16-разрядный процессор с богатым и несколько своеобразным набором команд, сложность которого отчасти обусловлена стремлением разработчиков сохранить совместимость с 8-разрядным МП Intel 8080 ранней модели. Более поздние разработки, такие как МП Intel 80286 и 80386, все еще поддерживают полный набор команд МП Intel 8086. Вооружившись подходящим мачете, выберемся из джунглей полного набора команд, сохранив лишь нужные нам сейчас 10 арифметических команд и 11 прочих. Вот они:
Краткий обзор. Некоторые пояснения: первые шесть арифметических команд работают с парами чисел (2-х операндные команды), которые мы обозначим как Ь, а и которые могут представлять собой любую из пяти пар, указанных в примечании; при этом m означает содержимое ячейки памяти, r означает содержимое регистра ЦП (их 8), a imm — непосредственный аргумент, который представляет собой число, располагаемое в следующих за командой от 1 до 4 байт памяти. Таким образом, например, команды:
MOV count,CX
ADD small,02H
AND AX,007FH
имеют аргументы типов m, r, m, imm, r, imm соответственно. Первая копирует содержимое регистра СХ в ячейку памяти, именуемую count; вторая прибавляет 2 к содержимому другой ячейки памяти, именуемой small; третья обнуляет 9 старших разрядов 16-разрядного регистра АХ, сохраняя при этом 7 младших разрядов неизменными (так называемая операция маскирования). Отметим принятое фирмой Intel соглашение о порядке аргументов: первый аргумент замещается вторым или модифицируется на основе значения второго аргумента. (В следующей главе мы увидим, что Motorola предписывает другой порядок действий).
Последние четыре арифметические операции имеют только один операнд, который может быть содержимым либо регистра, либо ячейки памяти. Вот два примера:
INC count
NEG AL
Первая команда прибавляет 1 к ячейке памяти, именуемой count, а вторая изменяет знак содержимого регистра AL.
Лирическое отступление: адресация. Прежде, чем продолжить, несколько слов по поводу адресации регистров и памяти. Процессор Intel 8086 предлагает использовать 8 его регистров общего назначения, однако после изучения рис. 10.2 вы придете к заключению о том, что большинство этих регистров используются специфически.
Рис. 10.2. Регистры общего назначения МП 8086.
Четыре из них (A-D) могут быть использованы как в виде единых 16-разрядных регистров (АХ, где X означает extended — расширенный), так и в виде пар байтовых регистров [АН, AL, соответственно Η означает старший (high) байт регистра АХ, a AL- младший (low) байт]. Регистры ВХ и ВР, так же как и SI, DI, могут содержать адреса и предназначены для использования при адресации (см. ниже). Специальные циклические команды (которые мы исключили из нашего краткого перечня) используют регистр С, а команды умножения/деления и ввода-вывода используют регистры А и D.
Данные, используемые в командах, могут представлять собой константу, величину, содержащуюся в регистре или величину, содержащуюся в памяти. Константы вы указываете, просто записывая их, а регистры - по именам, так, как было показано выше. Для адресации памяти МП Intel 8086 обеспечивает 6 режимов адресации, три из которых пояснены схемами на рис. 10.3.
Рис. 10.3. Некоторые способы адресации.
Вы можете прямо указать имя переменной, в этом случае ее адрес при ассемблировании будет определяться парой байтов, следующих сразу же за командой; вы можете занести адрес переменной в один из регистров, используемых для адресации (ВХ, ВР, SI или DI), а затем выполнить команду, в которой предусмотрена косвенная адресация через соответствующий регистр; можно модифицировать последний режим адресации и получать адрес переменной, прибавляя константу смещения к содержимому регистра, используемого для адресации. Косвенный режим быстрее (в предположении, что адрес уже загружен в соответствующий регистр) и является гораздо более приемлемым, если вы хотите выполнять некоторые операции над множеством чисел (строкой или массивом).
Вот несколько примеров адресации:
MOV count,100Н (прямая, непосредственная)
MOV [ВХ],100Н (косвенная, непосредственная)
MOV [ВХ + 1000Н], (адресация по базе, регистр)
АХ
В двух последних командах предполагается, что мы уже загрузили адрес в ВХ. Последняя команда копирует содержимое АХ в ячейку памяти, смещенную на 4 К (1000-ричное) выше от ячейки, на которую указывает ВХ; ниже мы вкратце рассмотрим пример, иллюстрирующий, как можно использовать эту команду для копирования массива.
При адресации памяти для МП 8086 существует сложность другого рода, которую мы было «замели под ковер»: адрес, формируемый в любом из вышеуказанных режимов адресации, не является окончательным, действительным адресом, поскольку получаемый таким образом адрес имеет только 16 разрядов (и может адресовать только 64 Кбайт памяти). На самом деле то, что вычисляется по указанным выше правилам, называется смещением. Для того чтобы получить действительный, физический адрес, вы должны прибавить к смещению 20-разрядную базовую величину, получаемую сдвигом на 4 разряда влево содержимого 16-разрядного сегментного регистра (таких регистров имеется 4). Другими словами, МП 8086 позволяет вам обращаться к областям памяти по 64 Кбайт; положение этих «сегментов» внутри полного адресного пространства 1 Мбайт, что в свою очередь определяется содержимым сегментных регистров. Использование 16-разрядной адресации в МП 8086 по большому счету было большой ошибкой, унаследованной от ранних поколений.
Более современные МП (начиная с 80386, а также серии 68000) сделаны как надо во всех отношениях, с 32-разрядной адресацией. Для того чтобы не усложнять наши примеры, мы просто игнорируем сегменты вообще; на практике вы, конечно, должны будете о них побеспокоиться.
Обзор набора команд (продолжение). Рассмотрим теперь команды управления стеком PUSH и POP. Стек — это часть памяти, организованная специальным образом: когда вы заносите некоторое значение в стек (выполняя операцию push), это значение заносится в очередную доступную ячейку (вершину стека); а когда вы извлекаете значение из стека (выполняя операцию POP), оно выбирается из вершины стека, т. е. выбирается то, что было занесено в стек последним. Таким образом, стек — это последовательный набор данных, организованный по принципу: последним пришел-первым вышел. Вам, может быть, будет легче освоить это понятие, если вы представите себе монетную кассу водителя автобуса или стопку подносов в столовой.
Рис. 10.4 показывает, как работает стек. Стек располагается в обычном ОЗУ, а указатель стека (регистр SP) ЦП обеспечивает возможность доступа к той ячейке памяти, которая является «вершиной» в данный момент времени. Для МП 8086 стек состоит из 16-разрядных слов и по мере занесения в него данных «растет» вниз в ОЗУ. Содержимое регистра SP автоматически декрементируется на 2 перед каждой операцией PUSH и инкрементируется на 2 после каждой операции POP. Таким образом, например, 16-разрядное содержимое регистра АХ копируется в вершину стека командой PUSH АХ; SP указывает на последний занесенный байт. Команда POP выполняется в обратном порядке, как показано на рис. 10.4.
Рис. 10.4. Операции со стеком.
Мы увидим, что при реализации вызовов подпрограмм и прерываний стек играет ведущую роль. Команда JMP заставляет ЦП отклониться от обычной процедуры последовательного выполнения команд, переходя к выполнению той команды, на которую совершается переход. Команда условного перехода (возможно 8 различных вариантов, обозначаемых обычно Jcc) проверяет регистр флагов[4], который располагается в ЦП (биты разрядов этого регистра устанавливаются в соответствии с результатом выполнения самой последней арифметической операции), а затем либо выполняет переход (если условие истинно), либо выполняет следующую за командой условного перехода команду (если условие не истинно). Программа 10.1 показывает пример условного перехода.
Она копирует 100 слов из массива, начинающегося с адреса 1000Н, в новый массив, начинающийся на 1 Кбайт (400Н), выше. Отметим явную загрузку указателя (в регистр ВХ, используемый для адресации) и счетчика цикла (в CL). Собственно массив слов должен быть пропущен через регистр (мы выбрали АХ), поскольку МП 8086 не поддерживает команды типа память-память (см. примечание к набору команд). В конце 100-го цикла CL = 0 и команда «перейти, если не нуль» (JNZ) более не выполняется. Этот пример будет работать[5], однако на практике вам, возможно, следует использовать более быстрые команды МП 8086-пересылки строк. Хорошим тоном в практическом программировании считается использование символьных имен для обозначения массивов и их размеров вместо соответствующих констант, таких как 400Н и 1000Н.
Оператор CALL является вызовом подпрограммы; он подобен каманде перехода, за исключением того, что адрес возврата (адрес команды, следующей за командой CALL) заносится в стек. В конце подпрограммы вы выполняете оператор RET, который извлекает из стека его содержимое так, чтобы программа могла найти «обратную дорогу» (рис. 10.5).
Рис. 10.5. Работа команды CALL.
Три оператора STI, CLI и IRET имеют отношения к прерываниям, их работу мы проиллюстрируем вместе с примерами соответствующих электрических схем и ниже в этой главе. Наконец, команды ввода-вывода IN и OUT пересылают слово или байт между регистром А и соответствующим образом адресованным портом; подробнее об этом чуть позже.
10.04. Программный пример
Примеры, приведенные выше, наводят на мысль о тяге языка ассемблера к многословию; требуется множество маленьких шажков для того, чтобы сделать в общем-то простую вещь. Вот пример другого рода: допустим, вам необходимо инкрементировать число N, если оно равно другому числу — Μ. Таким будет типичный крошечный фрагмент большой программы, и на языках высокого уровня такое действие будет выполняться единственной командой:
IF(n = = n) + + n; (Си)
IF(N. EQ. M) N = N + 1; (Фортран)
IF n = m then n: = n + 1; (Паскаль) и т. п.
На ассемблере МП 8086 эти действия будут выглядеть, как показано в программе 10.2.
Программа-ассемблер превратит этот набор мнемонических выражений в машинные коды, как правило, транслируя каждую строку исходного ассемблерного текста в несколько байтов машинных команд, и полученные коды машинных команд прежде чем быть исполненными, будут загружены в последовательно расположенные ячейки памяти.
Отметим, что ассемблеру надо указать на необходимость выделения некоторого объема памяти под переменные. Это делается с помощью ассемблерного псевдооператора DW (Define Word-определить слово) (этот оператор является псевдооператором, так как ему не соответствует никакой исполняемый код). Для того чтобы помечать команды, могут быть использованы уникальные символьные метки (например, NEXT). Команды обычно помечаются лишь в тех случаях, когда на них осуществляется переход (JNZ NEXT). Присваивая переменным понятные вам самому имена и вводя комментарии (отделенные точкой с запятой), вы облегчаете себе процесс программирования; эти рекомендации означают также, что у вас будет шанс несколькими неделями позже понять, что вы написали. Программирование на языке ассемблера может по-прежнему оставаться неприятным делом, однако часто на этом языке бывает необходимо написать короткую процедуру управления вводом-выводом, вызываемую из программы, написанной на языке высокого уровня. Программы на языке ассемблера работают быстрее, чем скомпилированные с языка высокого уровня, так что их часто используют там, где показатель скорости работы является решающим (например, во многократно выполняемых внутренних циклах численных вычислений большого объема).
Разработка языка программирования Си, обладающего большими возможностями, минимизировала количество тех случаев, когда вы должны использовать ассемблерные программы, тем самым расширив сферу применимости Си. В любом случае вам трудно будет понять, как отдельные узлы компьютера работают совместно, без уяснения существа ассемблерных команд ввод-вывода. Соответствие между мнемоникой языка ассемблера и исполняемыми машинными командами будет изучено ниже в разд. 11.03, где будет проиллюстрировано примерами программирования МП 68000.
Сигналы магистрали и ее функционирование
Типовая магистраль данных микроЭВМ имеет около 50-100 сигнальных линий, предназначенных для передачи данных, адресов и управляющих сигналов. IBM PC/XT — типичный микрокомпьютер, внутренняя магистраль которого состоит из 53 сигнальных линий и 8 линий, предназначенных для подачи питания и заземления. Для того чтобы не обрушивать на вас все эти сигналы сразу, мы будем приближаться к осмыслению полного набора сигналов, «надстраивая» магистраль, начав с такого количества сигнальных линий, какое необходимо для простейшего режима обмена данными (программируемого ввода-вывода) и добавляя по мере необходимости дополнительные сигнальные линии. Далее мы приведем несколько полезных примеров организации сопряжения тех или иных узлов с магистралью для того, чтобы всесторонне обсудить эту тему, не теряя интереса читателя.
10.05. Основные сигналы магистрали: данные, адрес, синхронизация
Для того чтобы переслать данные на магистраль с разделяемыми ресурсами (мультиплексируемую), вы должны уметь описать сами данные, приемник, а также момент, когда данные являются достоверными. Таким образом, по минимуму магистраль должна иметь шину данных (для передачи данных), адресную шину (для того чтобы идентифицировать устройство ввод-вывода или адрес в памяти) и несколько линий синхронизации, или стробирования (которые сообщают, когда передаются данные). Обычно в шине данных предусматривается столько же проводников, сколько разрядов в компьютерном слове, чтобы можно было сразу передать все слово. Однако в PC есть только 8 проводников шины данных (D0-D7); за один цикл передачи вы можете переслать байт, но для того, чтобы переслать 16-разрядное слово, необходимо выполнить два цикла передачи. Количество разрядов шины адреса определяет количество адресуемых устройств: если магистраль используется для обращения как к устройствам ввода-вывода, так и к памяти (стандартная ситуация), она должна иметь от 16 до 32 проводников адресной шины, что соответствует адресному пространству от 64 Кбайт до 4 Гбайт; магистраль, используемая только для ввода-вывода, может иметь от 8 до 16 разрядов адреса (от 256 до 64 К устройств ввода-вывода). [IBM PC общается по своей магистрали как с памятью, так и с устройствами ввода-вывода и имеет 20 адресных проводников (А0-А19), что соответствует 1 Мбайт адресного пространства.] И наконец, передаваемые данные синхронизуются стробирующими импульсами, передаваемыми по дополнительным проводникам магистрали. Для того чтобы реализовать описанную схему, существуют два пути: предусмотреть отдельные линии «чтение» и «запись» (с названиями, например, READ и WRITE) и возбуждать на той или другой из этих линий сигналы, синхронизирующие передачу данных; иметь одну линию стробирующих сигналов (STROBE) и одну линию READ/WRITE', причем импульс на линии STROBE синхронизирует передачу данных в направлении, которое определяется уровнем сигнала на линии READ/WRITE'. IBM PC использует схему (действующий уровень сигнала-низкий) с линиями «чтение/запись», названными IOR', IOW', MEMR' и MEMW'. Поскольку PC различает память и устройства ввода-вывода, то и линий этих четыре, по два строба (чтения и записи) на тот и другой тип ввода-вывода.
Сигналы данных, адреса и четыре строб-сигнала — это обычно все, что требуется для организации простейшего режима передачи данных. Однако для PC необходим еще один сигнал, названный выбор адреса (AEN — Adress ENable) для того, чтобы различать обычную передачу данных в устройстве ввода-вывода от режима передачи, называемого прямой доступ к памяти (ПДП) (DMA — Direct Memory Access). Режим ПДП мы рассмотрим в разд. 10.12, а сейчас вам достаточно знать, что AEN имеет низкий уровень для обычного ввода-вывода и высокий-для режима ПДП. Таким образом, сейчас у нас есть 33 сигнала магистрали: D0-D7, А0-А19, IOR', IOW', MEMR', MEMW' и AEN. Давайте посмотрим, как они работают.
10.06. Программируемый вывод данных ввод-вывод:
Простейший метод обмена данными по магистрали компьютера известен как программируемый ввод-вывод, это обозначает, что данные передаются с помощью операторов программы IN или OUT (направления передачи для IN и OUT входят в состав тех немногих правил, которых придерживаются все изготовители компьютеров: IN всегда означает направление к ЦП, a OUT всегда означает направление из ЦП). В целом процесс вывода данных (и записи в ОЗУ) предельно прост и логичен (рис. 10.6).
Рис. 10.6. Цикл ввода-вывода при записи (все измерения в нc).
Адрес приемника и данные, которые необходимо передать, выставляются на соответствующие линии магистрали центральным процессором. Строб-сигнал записи (IOW' или MEMW') устанавливается в низкое состояние цетральным процессором для того, чтобы сигнализировать приемнику о том, что данные установлены и их можно считывать. На магистрали PC адрес гарантированно установлен, начиная с момента времени приблизительно за 100 нс до IOW', а данные гарантированно установлены по крайней мере за 500 нс до окончания IOW' (и в течение следующих 185 нс после окончания этого сигнала).
Для того чтобы принимать участие в подобных играх, периферийное устройство (пусть в нашем случае это — графический дисплей) наблюдает за шинами адреса и данных. Когда устройство обнаруживает свой собственный адрес, оно считывает информацию с шины данных по спаду сигнала IOW'. Вот и все.
Рассмотрим пример, приведенный на рис. 10.7.
Рис. 10.7. Растровый дисплей.
Здесь мы спроектировали растровый графический дисплей; вы последовательно передаете ему пары чисел X, Υ и на его экране отображается каждая точка в декартовой прямоугольной системе координат, причем первое число соответствует абсциссе, а второе — ординате отображаемой точки. Сначала мы должны выбрать адрес устройства ввода-вывода. На рис. 10.8 приведены зарезервированные и доступные адреса устройства ввода-вывода для IBM PC; мы выбираем 3C0H для Х-регистра и ЗС1Н для Y-peгистра.
Рис. 10.8. Адреса ввода-вывода IBM PC.
Микросхема `688-8-разрядный компаратор со стробированием; состоянию равенства сравниваемых кодов которого соответствует низкий уровень на выходе, вырабатывает низкий выходной сигнал в том случае, когда 8 бит разрядов А2-А9 совпадают с заданными значениями, в нашем случае - когда адрес на магистрали лежит в диапазоне 3C0H-3С3Н (вы можете использовать комбинационную схему, но компаратор адреса компактнее). Мы также потребуем в соответствии с ранее приведенными разъяснениями, чтобы AEN был низкого уровня. Трехвходовые логические схемы И-НЕ завершают дешифрацию адреса, используя адресные линии А0, А1 для того, чтобы установить низкий уровень на своих выходах отдельно для адресов 3C0H и ЗС1Н (другой способ будет вкратце описан ниже). В конце концов указанные выходы логически перемножаются с IOW' для того, чтобы получить синхросигнал для Х- и Y-регистров, которые представляют собой 8-разрядные регистры на D-триггерах (микросхемы `574). Эти регистры фиксируют байты с шины данных в тех случаях, когда а) выбран требуемый адрес, б) сигнал AEN — в низком состоянии, в) был выработан сигнал IOW'. Восьмиразрядные цифро-аналоговые преобразователи (ЦАП) преобразуют считываемые байты в аналоговое напряжение, подаваемое на Х- и Y-входы устройства управления выводом на электронно-лучевую трубку (ЭЛТ) дисплея. Спустя несколько микросекунд после считывания Y-координаты, два одновибратора вырабатывают 5-микросекундный импульс подсветки, увеличивающий интенсивность свечения изображаемой на экране точки (все устройства управления выводом на ЭЛТ имеют для этого вход Z). Для того чтобы изобразить график или набор символов на экране, необходимо последовательно выводить Х- и Y-координаты, повторяя их в одном и том же порядке (сначала X, а затем Y) достаточно быстро, чтобы глаз не видел мерцания.
Микрокомпьютеры достаточно быстры для того, чтобы успевать в цикле отображать на дисплее несколько тысяч точек без раздражающего мерцания. Учитывая, что растровый дисплей — это стандартное устройство микрокомпьютера для вывода изображений, приведенный пример более полезен в качестве модели фотографического графопостроителя сверхвысокого разрешения, использующего 14-разрядный ЦАП и дисплей с микроскопическим размером точек (см. следующее упражнение).
Несколько полезных замечаний:
а) Отметим, что мы подобрали полярность сигналов таким образом, что D-триггеры переключаются по спаду сигналов IOW'; это существенно, так как в момент времени, соответствующий фронту этого импульса, данные могут еще не установиться. Для большей надежности следует удостовериться, что временные соотношения сигналов удовлетворяют временам упреждения и удержания схем `574; фактически, однако, для такой медленной, как у IBM PC магистрали трудно заставить схему, подобную описываемой, работать правильно, поскольку с момента установки данных до спада IOW' проходит более 500 нc.
б) Вы можете сэкономить несколько логических элементов, использовав в цепи дешифрации адреса стробируемый дешифратор так, как показано на рисунке. Дешифраторы типа,138 (3 разряда на 8 направлений) и типа `139 (сдвоенный, 2 разряда на 4 направления) имеют один или более стробирующих входов и удобны для построения схем такого рода.
в) Отметим также, что мы могли бы объединить 3-входовые и 2-входовые элементы И-НЕ в 4-входовые И-НЕ, здесь этого не сделано для того, чтобы четче выделить отдельно факт дешифрации адреса и затем — совпадения результата дешифрации со строб-сигналом IOW'.
г) На самом деле мы можем полностью игнорировать разряд А1 и схема будет работать по-прежнему! Однако тогда она начнет откликаться также на адреса 3С2 и 3С3 (как X и Y, соответственно) и произойдет потеря двух адресов ввода-вывода. На практике, однако, часто идут этим путем и, не полностью дешифруя адрес, экономят микросхемы (ведь адресное пространство остается достаточно обширным, даже если вы и потеряете таким образом некоторое количество адресов). В рассматриваемом примере мы можем подключить IOW' вместо А1 и полностью отказаться от 2-входовой схемы И-НЕ.
д) Сопряжение с магистралью, подобное обсуждаемому, будет более гибким, если адрес устанавливать DIP-переключателями (или DIP-перемычками); тогда вы сможете выбрать адрес верно, чтобы не было конфликта с адресом другого устройства, подключенного к той же магистрали. Внести соответствующие изменения в схему несложно-достаточно восемь входов компаратора подсоединить через ключи к общему проводнику («земле»), а через резисторы — к цепи +5 В.
е) Для пояснения существа дела в этом примере мы использовали отдельные микросхемы 8-разрядных регистров и ЦАПов. На практике у вас есть возможность применить ЦАП со встроенной схемой выборки адреса (например, «микропроцессорно-совместимый» ЦАП типа AD 7528-сдвоенный ЦАП с входной схемой выборки адреса); такая схема выпускается даже в счетверенном варианте (AD7226), а также в варианте с двойной буферизацией, двухкаскадной выборкой адреса для каждого ЦАП (счетверенный ЦАП AD 7225).
Упражнение 10.1. Нарисуйте функциональную схему адресного компаратора с настройкой адреса.
Упражнение 10.2. Нарисуйте схему сопряжения растрового дисплея с магистралью, используя 16-разрядные ЦАП для преобразования как Х-, так и Υ-κοординат. Вам потребуется 4 последовательно расположенные адреса. Используйте первые 2 для регистрации Х-регистра, а два последних-для Y-регистра; конечно, надо предусмотреть возможность настройки базового адреса ввода-вывода с использованием переключателей в DIP-исполнении. Как для Х-, так и для Y-координат четным адресам соответствует младший, а нечетным — старший байт соответствующего кода; это удобно (поскольку МП 8086 оперирует 16-разрядными словами, можно пользоваться командами ввода-вывода слов для передачи данных этому устройству).
Программирование графического дисплея. Программирование такого устройства не представляет сложностей. Как это делается показывает программа 10.3, которой надо указать адреса ячеек, где хранятся Х- и Y-координаты первой точки и количество точек, которое надо отобразить. Программа обслуживания дисплея возможно, будет оформлена как подпрограмма с этими параметрами, передаваемыми при ее вызове. Программа заносит адреса массивов Х- и Y-координат (т. е. адрес первой пары Х-, Y-координат) в индексные регистры SI и DI, а байт количества точек в регистр СХ. Этот регистр потом используется в цикле, в котором пары Х-, Y-координат последовательно передаются в порты ввода-вывода по адресам 3C0 и ЗС1. В каждом цикле перемещаются указатели массивов X и Υ; а содержимое счетчика декрементируется и сравнивается с нулем, который характеризует отображение последней точки; затем указатели и счетчик устанавливаются в исходное состояние и процесс вывода начинается снова.
Пара важных моментов: однажды запустившись, программа постоянно отображает массив точек. В действительности программа должна проверять состояние клавиатуры, чтобы заметить, если оператор захочет прекратить вывод на дисплей. Можно также прекратить вывод спустя заданное время или с помощью прерывания, о чем речь будет идти ниже.
Обычно при регенерации изображения на дисплее, организованной подобным образом, для дополнительных продолжительных вычислений во время вывода изображения времени нет. Гораздо лучшим методом является обновление изображения на экране из собственной памяти дисплея, что разгружает компьютер. Как бы то ни было, если ваша цель — построить изображение с высоким разрешением для получения фотографической копии, эта программа и схема сопряжения, спроектированная по условиям упражнения 10.2, будет работать замечательно.
10.07. Программируемый ввод-вывод: ввод данных
Передача данных в другом направлении при программируемом вводе-выводе осуществляется столь же просто. Схема сопряжения следит за шиной адреса так же, как и ранее. Если эта схема обнаруживает свой собственный адрес (и сигнал AEN находится в низком состоянии), она выставляет данные на шину данных, обеспечивая их совпадение во времени с сигналом IOR' (рис. 10.9).
Рис. 10.9. Цикл ввода-вывода при чтении.
Пример такой схемы приведен на рис. 10.10.
Рис. 10.10. Параллельный входной порт.
Схема позволяет компьютеру считать байт, хранящийся в регистре на D-триггерах типа `574. Поскольку и тактовый вход, и входы данных регистра доступны внешнему устройству, в регистр может быть занесена цифровая информация практически любого характера (выход цифрового прибора, АЦП и т. п.). Для разнообразия мы использовали вместо всех логических элементов 2-разрядный дешифратор адреса типа `679. Эта «умная микросхема» имеет 12 адресных входов, вход выборки и 4 «программируемых» входа. Если вы хотите дешифровать некоторый определенный адрес, это делается хитро: функционально такая микросхема представляет собой 12-входовую схему И-НЕ, программируемое число этих входов может быть дополнительно инвертировано; инвертируются всегда входы с меньшими номерами, а их количество вы можете задавать с помощью 4-х отдельных программируемых входов.
Пусть мы хотим «добраться» до резервного порта ввода-вывода с адресом 200Н (рис. 10.8). Нам необходимо распознать состояние А9 — высокий уровень, А0-А8 — низкий. Ко всему прочему мы можем использовать микросхему `679 для стробирования дешифрованного адреса низкими уровнями сигналов AEN и IOR'.
Итак, окончательно нам требуется схема И-НЕ с 11-ю инвертирующими входами и одним неинвертирующим входом, что обеспечивается подачей кода 1011, осуществляемой аппаратным образом на программируемые входы. Затем подключим адресную шину и синхросигналы так, как показано на рис. 10.10. Как только команда
IN AL,200H
выполнится, ЦП выставляет адрес 200Н на линиях А0-А9 и затем устанавливает IOR' на время 630 нc. Центральный процессор считывает то, что он обнаруживает на шине данных (D0-D7) в момент времени, соответствующий спаду сигнала IOR', затем сбрасывает А0-А9.
Реакция периферийного устройства должна заключаться в том, чтобы выдать данные на соответствующие разряды D0-D7 по крайней мере за 50 нc до конца IOR'; выполнить это условие не составляет никакого труда, так как устройству известно, что от него требуются данные, уже по меньшей мере 600 не. Для типовой задержки срабатывания используемых здесь микросхем 10 нc, 600 нс выглядят вечностью.
Начиная с этого примера, мы прекратим пристально рассматривать весь клубок линий магистрали, а просто будем называть отдельные линии по именам.
Сигналы магистрали: двунаправленность и однонаправленность. Из двух примеров, которые мы рассмотрели до сих пор, вы могли увидеть, что некоторые линии магистрали являются двунаправленными, например линии шины данных: во время записи на них выставляется выходной код ЦП, а во время чтения — выходной код периферийного устройства. Как ЦП, так и периферийное устройство для подключения к таким линиям используют элементы с третьим состоянием на выходе.
Другие сигналы, такие как IOW' и IOR', всегда вырабатываются ЦП с помощью стандартных драйверов. Типичным для компьютерных магистралей является существование обоих типов линий, двунаправленных линий для данных, передаваемых как в одном, так и в другом направлении, и однонаправленных линий для сигналов, которые всегда вырабатываются ЦП (или, более точно, соответствующими логическими схемами управления магистралью). Процессор всегда использует какой-то простой протокол, вроде наших правил установки/чтения в соответствии с сигналами IOW', IOR' и адресными, который предотвращает конфликтные ситуации на совместно используемых линиях магистрали.
Среди перечисленных до сих пор только шина данных является двунаправленной; адрес, сигнал AEN и синхросигналы распространяются только в одном направлении — от ЦП. (Чтобы не создавать неправильного впечатления, надо уточнить, что более сложные компьютерные системы позволяют другим адресатам магистрали становиться ее «хозяевами»; очевидно, в таких системах почти все сигналы магистрали являются мультиплексируемыми и двунаправленными. IBM PC в этом отношении необычайно проста.)
10.08. Программируемый ввод-вывод: регистры состояний
В нашем последнем примере компьютер мог считать байт из схемы сопряжения в любое время, когда захочет. Это замечательно, но как узнать, когда можно считать что-нибудь стоящее? В некоторых случаях вы можете потребовать, чтобы компьютер считывал данные через равные интервалы времени, отсчитываемые его таймером реального времени. Пусть например, компьютер «заставляет» АЦП начинать преобразование через равные промежутки времени (командой OUT) и затем считывает результат несколькими микросекундами позже (командой IN). В измерительных системах этого может быть вполне достаточно. Однако часто встречаются такие случаи, когда внешнее устройство имеет свой собственный «интеллект», и было бы хорошо, если бы оно могло без промедления сообщить компьютеру, что что-то произошло.
Классическим примером является алфавитно-цифровой ввод при нажатии каких-либо клавиш клавиатуры дисплея. Если вы не хотите терять символы, компьютер должен ввести каждый из них и без большой задержки. Еще более серьезная ситуация с быстрым накопительным устройством, таким как диск или ленточный магнитофон; данные необходимо передавать со скоростью до 100000 байт в секунду без задержки. Для того чтобы решить эту проблему, существуют три реальные возможности: использовать регистры состояний, прерывания и прямой доступ в память (ПДП). Давайте начнем с простейшего метода-регистров состояния — проиллюстрированного схемой сопряжения клавиатуры на рис. 10.11.
Рис. 10.11. Интерфейс клавиатуры с битом состояния.
В этом примере ASCII-код записывается в 8-разрядный регистр на D-триггерах типа `574 строб-сигналом, вырабатываемым клавиатурой при нажатии на очередную клавишу. Мы соорудили типовое программируемое устройство ввода данных так, как показано на рис. 10.11, используя трехстабильные выходы микросхемы `574 для непосредственной связи с шиной данных. Входной сигнал, обозначенный как KBDATA SEL', поступает от схемы дешифратора адреса того же в точности типа, который приведен в предыдущем примере, и устанавливается в низкое состояние, когда код адреса, предварительно присвоенного данному устройству, появляется на шинах адреса магистрали (вместе с низким уровнем сигнала AEN).
Что в этом примере нового, так это — триггер, который устанавливается в единичное состояние, когда клавиша некоторого символа нажата и сбрасывается, когда символ считывается компьютером. Фактически это — одноразрядный регистр состояния, высокий уровень выходного сигнала которого означает возможность считать очередной символ, низкий уровень — отсутствие таковой. Компьютер может опросить бит состояния, выполнив команду ввода данных IN с другого адреса рассматриваемого устройства, дешифрованного как KBFLAG SEL' (с помощью логических вентилей, дешифраторов или каких-либо других элементов).
Для того чтобы описать состояние этого устройства, требуется только один бит, поэтому схема сопряжения управлялась только битом старшего разряда, в данном случае с помощью буфера с тремя выходными состояниями типа `125. (Никогда не подключайте двунаправленные линии к выходам устройств, специально для этого не предназначенным!) Линия, подходящая на рисунке к изображению буфера снизу, управляет трехстабильным выходным сигналом, разрешая его своим низким уровнем, что обозначено кружком.
Клавиатура терминала: пример программы. Итак, теперь у компьютера имеется возможность узнать, когда готовы очередные данные. Программа 10.4 показывает как.
Эта программа предназначена для того, чтобы считывать символы с клавиатуры терминала, адрес порта данных которого — KBDATA (хорошим стилем программирования является определение действительного кода адреса порта, который соответствует адресу, определяемому аппаратным образом, как KBDATA SEL и т. п. — несколькими операторами, располагаемыми в начале программы, как показано); каждый символ отображается (режим «эхо») на экране дисплея компьютера (адрес порта = OUTBYTE). Когда набирается целая строка, программа передает управление блоку обработки строки, функционирование которого определяется символьным содержанием строки. Когда программа готова к обработке другой строки, она печатает звездочку. Если у вас есть какой-то опыт в работе на компьютере, программа покажется вам достаточно очевидной.
Программа начинается с инициализации указателя буфера символов, осуществляемой пересылкой адреса буфера в адресный регистр ВР. Отметим, что мы не можем записать
MOV BP,charbuf
так как такая команда загрузит содержимое, а не адрес; в языке ассемблера процессора 8086 для обозначения адреса ячейки памяти используют слово offset перед идентификатором этой ячейки. После этого программа с помощью команды IN считывает бит состояния клавиатуры, логически умножает его на 80Н, чтобы оставить только бит состояния (это называется «маскированием») и результат сравнивает с нулем. Нуль означает, что бит не равен единице и программа выполняет цикл. Когда обнаружен ненулевой бит состояния, программа считывает данные из порта данных клавиатуры (при этом обнуляется бит состояния триггера) и последовательно запоминает их в буфере строки, инкрементируя указатель (ВР) и вызывая подпрограмму, которая отображает символ на экран. Наконец, программа проверяет, не оканчивается ли строка символом возврата каретки: если этого нет, то управление передается циклу повторной проверки бита состояния клавиатуры; если последний символ является символом перевода строки (CR), программа передает управление обработчику строки, после чего печатает звездочку и начинает все заново.
Даже простая подпрограмма, используемая для вывода символа на дисплей, требует нескольких операций проверки флага (бита) состояния и маскирования. Сначала подпрограмма запоминает байт в регистре АН, затем считывает и маскирует флаг занятости экрана дисплея. Ненулевой флаг означает, что дисплей занят и надо продолжить проверку этого флага; в противном случае подпрограмма заносит символ в регистр AL, пересылает этот символ в порт данных дисплея и завершается.
Несколько замечаний по программе: а) поскольку бит старшего разряда (который мы аппаратным образом определили как бит флага) является знаковым, стадию маскирования флага клавиатуры можно опустить; при этом можно использовать команду JPL KFCHK. Эта уловка, однако, срабатывает только при проверке старшего разряда и поэтому весьма специфична; б) продолжая практику хорошего стиля программирования, символ возврата каретки (0DH) и звездочки можно было бы определить как константы, подобно KBMASK; в) блок обработки строки может быть оформлен в качестве подпрограммы; г) в том случае, если процедура обработки строки слишком длинна, могут быть потеряны символы; это соображение приводит к использованию более изящного механизма прерывания, который мы вскоре рассмотрим; д) программы обслуживания клавиатуры и дисплея используются настолько часто, что PC имеет встроенные программы такого рода, вызываемые посредством программных прерываний (рассмотрим их позже); таким образом, наша программа вообще не нужна!
Обобщение битов состояний. Пример с клавиатурой иллюстрирует протокол обработки бита состояния; однако протокол настолько прост, что у вас может создаться неправильное представление об этом предмете. На самом деле интерфейс внешнего устройства несколько сложнее, как правило он предусматривает несколько флагов для фиксации различных условий. Например, в интерфейсе ленточного магнитофона вам, как правило, надо иметь следующие биты состояний: начало ленты, конец катушки, ошибка четности, движение ленты и т. д. Традиционная процедура заключается в том, чтобы свести все биты состояний в один байт или слово так, чтобы сразу считать все биты из регистра состояний с помощью команды ввода данных IN. Обычно надо назначить бит, показывающий наличие любой из ошибочных ситуаций, старшему разряду слова состояний с тем, чтобы простая проверка знака сигнализировала бы о наличии какой-нибудь ошибки; если это обнаруживается, можно проверять отдельные разряды слова (накладывая маску с помощью логической функции «И») для выявления конкретной ошибки. Более того, в сложных интерфейсах, возможно, не требуется, чтобы биты состояния сбрасывались «автоматически», как это происходило с единственным битом в нашем примере; вместо этого можно воспользоваться командой вывода данных, каждый бит которых сбрасывает соответствующий флаг.
Упражнение 10.3. У нашего интерфейса клавиатуры нет средства, позволяющего компьютеру определить, был ли пропущен символ. Измените схему так, чтобы она использовала два бита состояний: «готовность символа» (это у нас уже есть) и «потеря данных». Флаг «потеря данных» должен устанавливаться на линии D6 того же порта состояний, что и «готовность символа»; флаг «потеря данных» должен становиться равным единице, если клавиша была нажата до того, как предыдущий символ был считан компьютером, в остальных случаях он должен быть равен нулю.
Упражнение 10.4. Дополните программу 10.4 блоком проверки потерянных данных. Это должно осуществляться вызовом подпрограммы с именем LOST в тех случаях, когда флаг «потеря данных» установлен равным единице; в остальных случаях программа должна работать как и раньше.
10.09. Прерывания
Только что проиллюстрированное использование флагов состояний является одним из трех способов, используемых внешним устройством для того, чтобы «намекнуть» компьютеру на необходимость выполнения каких-то действий. Хотя во многих простых случаях этого вполне достаточно, имеется серьезный недостаток в том, что внешнее устройство не может само объявить о необходимости выполнения каких-то действий — оно должно ждать до тех пор, пока ЦП не опросит его посредством считывания содержимого регистра состояния командой IN. Устройствам, которым требуется быстродействие (такие, как диски или другие, чья работа предусматривает ввод-вывод в реальном масштабе времени), необходим частый опрос флагов состояний, и в компьютерной системе с несколькими подобными устройствами ЦП вскоре обнаружит себя проводящим основное время за проверкой флагов состояний, как в последнем примере.
Более того, даже при постоянно выполняемой проверке флагов состояний у вас еще остается повод для беспокойства. В частности, в последнем примере ЦП будет успевать вводить символы, набираемые на клавиатуре, если он находится в главном цикле проверки флагов. Но что, если ЦП затратит 1/10 секунды в той части алгоритма, которая обеспечивает обработку строки? Или дисплей медленный и заставляет программу ждать, пока сбросится флаг занятости? Все, что в таких случаях необходимо, это — механизм, позволяющий внешнему устройству прервать обычный порядок работы ЦП в тех случаях, когда надо что-нибудь сделать. Затем ЦП может проверить регистр состояния для того, чтобы определить, чем вызвано беспокойство, аккуратно сделать то, что положено и вернуться к нормальной работе.
Для того чтобы дополнительно использовать потенциальные возможности прерываний в компьютере, необходимо добавить несколько новых сигналов на магистрали: по крайней мере, одна обобщенная линия для передачи прерываний от внешних устройств и (обычно) пара линий, с помощью которых ЦП может определить, какое устройство выдало сигнал прерывания. К сожалению, пример с IBM PC не очень удачен, так как эта машина не использует всех возможностей прерываний. Однако недостаток гибкости более чем компенсируется простотой; реализация аппаратных прерываний в периферийных устройствах PC проще пареной репы.
Теперь о том, как это все работает: магистраль PC имеет набор из 6-ти линий для передачи сигналов запросов прерываний, именуемых IRQ2-IRQ7. Эти линии используют положительную логику и подключены к схемам обрамления ЦП (в частности, к контроллеру прерываний типа 8259). Для того чтобы возбудить прерывание, вы просто устанавливаете на одной из линий высокий уровень сигнала. Если прерывания разрешены (в том числе и то конкретное IRQ, которое вы выбрали), ЦП после завершения очередной команды прерывает выполнение программы, а затем (после сохранения в стеке флагов и текущего указателя команд) переходит к программе обработчика прерывании, расположенной где-то в памяти.
В обработчике вы предусматриваете любые требуемые действия (например, чтение данных с клавиатуры), и поместить его вы можете где угодно по своему усмотрению; ЦП выясняет, по какому адресу надо совершить переход, анализируя 4-байтовый адрес обработчика, расположенный в выделенной области в начале памяти. Адрес этой области зависит от выбранного IRQ; для МП 8086 16-ричное значение этого адреса вычисляется по формуле 20 + 4n, где n-уровень прерывания. Например, ЦП будет реагировать на прерывание IRQ2 посредством перехода по 4-байтовому адресу, который хранится в ячейках памяти с адреса 28Н по 2ВН (это похоже на косвенную адресацию, с той лишь разницей, что адрес располагается в памяти, а не в регистре); конечно, начальные адреса ваших обработчиков прерываний следует заранее поместить в память. В конце обработчика надо выполнить команду IRET, которая обеспечит восстановление предварительно сохраненного содержимого регистра флагов и передачу управления обратно в точку вызова.
Проиллюстрируем это, добавив в схему интерфейса клавиатуры прерывания (рис. 10.12).
Рис. 10.12. Интерфейс клавиатуры с прерываниями.
Мы оставили флаг «символ готов» и схему программируемого ввода-вывода практически без изменений, за исключением того, что сигнал сброса флага включен по схеме «ИЛИ» с новым сигналом магистрали RESET DRV, который является выходным для ЦП, он на короткое время устанавливается в высокое состояние при включении компьютера. Обычно этот сигнал используется для установки триггеров и других элементов последовательной логики в определенное состояние при включении питания. Очевидно, этот сигнал должен сбросить флаг готовности байта к приему его в программу (в нашем новом интерфейсе установленный флаг готовности даже вызвал бы прерывание). Еще одно внесенное нами изменение — использование сокращенных обозначений для описания разрядности шины данных для того, чтобы сделать схему более удобочитаемой.
Новая схема обработки прерываний включает драйвер для установки IRQ2 в случае готовности символа. Вот и все схемные новшества, которые вам необходимы. Мы добавили, хотя в этом нет обязательной необходимости, возможность отключения устройства выработки сигнала прерывания (которое представляет собой трехстабильный буферный элемент) путем передачи байта, младший разряд которого установлен в низкое состояние, по адресу порта KBFLAG. Это можно будет использовать в том случае, если вам захочется подключить к тому же уровню IRQ другое устройство, вырабатывающее прерывания, причем так, чтобы в каждый момент только одно устройство могло инициировать прерывание (ниже мы дополнительно поясним этот щекотливый момент).
10.10. Обработка прерываний
Компьютеры семейства IBM PC/XT реализуют обработку прерываний просто (хотя и ограничивая при этом гибкость), используя интегральную микросхему контроллера прерываний типа 8259, установленную на базовой плате. Эта микросхема выполняет основной объем работы, которая включает в себя определение приоритетов, маскирование и выбор векторов прерываний (мы опишем это после примера, приведенного ниже). Со своей стороны ЦП определяет, что наступило прерывание и реагирует на это сохранением указателя команд и регистра флагов, а также запрещением дальнейших прерываний, а затем-совершая переход по соответствующему адресу, записанному в области векторов прерываний в начальных ячейках памяти. Ваша программа обработки прерываний делает остальное, а именно: а) сохраняет с помощью команды push все регистры, которые вы собираетесь использовать (напомним, что прерываемая программа не может заранее подготовиться к прерыванию, поскольку оно может произойти в любой момент во время выполнения программы как гром среди ясного неба); б) выясняет, при необходимости, с помощью чтения одного или нескольких регистров состояний, что именно требуется выполнить; в) выполняет это; г) восстанавливает ранее сохраненные регистры из стека; д) сообщает микросхеме 8259, что все сделано (передавая байт признака завершения прерывания 20Н и, наконец, е) выполняет возврат из прерывания — команду IRET, что заставляет ЦП восстановить содержимое прежнего регистра флагов, сохраненное предварительно в стеке и передать управление (использовав прежнее, также предварительно сохраненное в стеке значение указателя команд) обратно в ту программу, выполнение которой было прервано. Где-то в программе вы должны ж) загрузить адрес программы-обработчика прерываний по адресу вектора прерываний, соответствующего уровню IRQ, используемого аппаратной частью компьютера, и сообщить контроллеру прерываний 8259 о том, что необходимо разрешить прерывание указанного уровня.
Программа 10.5 демонстрирует программирование клавиатуры с использованием прерываний. Вот общая схема: главная процедура выполняет необходимые предустановки, а затем в цикле прерывает значение флага (программного, не аппаратного), который устанавливает обработчик прерываний, обнаружив код «возврата каретки»; когда главная процедура замечает, что флаг установлен, она переходит к заданным действиям над строкой, а затем происходит возврат к циклу проверки флага. Обработчик прерываний, в который передается управление при каждом прерывании, заносит символ в буфер строки, устанавливает флаг, если символ оказался «возвратом каретки» и возвращает управление.
Давайте более пристально посмотрим на программу. После задания адреса порта и адреса вектора прерываний IRQ2 она выделяет 100 байт под буфер строки (первоначально буфер заполняется нулями). Собственно выполнение программы начинается с занесения адреса буфера в адресный[6] регистр SI, обнуление флага конца строки, и помещения адреса обработчика прерываний (который начинается с ΚΒΙΝΤ) в ячейку 28Н. Для того чтобы разрешить контроллеру прерываний 8259 прерывания 2-го уровня, обнулим бит 2 маски (команды IN, AND, OUT); затем разрешим прерывания ЦП и передадим единицу в KBFLAG, что приводит к разрешению трехстабильного драйвера.
Теперь можно работать. После этого программа выполняет цикл, а прямо под «носом» главной процедуры скрыто обрабатывается прерывание до тех пор, пока не будет обнаружено, что "buflg" загадочным образом установился. Флаг и указатель буфера немедленно устанавливаются в исходное состояние (на тот случай, если придет следующее прерывание), затем строка «проглатывается». Хорошим советом было бы пожелать либо быстрее выполнять программу, либо скопировать строку в другой буфер, поскольку через несколько миллисекунд может произойти другое прерывание (сопровождаемое занесением нового байта в буфер), однако за это время можно выполнить несколько тысяч команд, что более чем достаточно для копирования строки.
Обработчик прерываний является отдельной программой, которая не входит в главную процедуру. Он активизируется с помощью прерывания 2-го уровня через свой адрес, который, в свою очередь, заранее был загружен по адресу 28Н. Обработчик в точности знает, что должно быть сделано, и делает это безропотно: он сохраняет содержимое регистра АХ (поскольку планирует разнести последнее вдребезги), считывает символ из порта данных клавиатуры, заносит этот символ в буфер, инкрементирует указатель, дополнительно отображает символ на экран (в эхо-режиме), устанавливает флажок (если был введен символ возврата каретки), посылает сигнал об окончании прерывания контроллеру 8259, восстанавливает содержимое регистра АХ и возвращает управление.
Если вы еще раз взглянете на приведенный выше перечень действий, выполняемых обработчиком, то можно заметить, что мы не упомянули только один этап, а именно, считывание флажков состояний, которые позволяют выяснить, какие из нескольких действий должны быть выполнены. В данном случае, поскольку существует единственная причина, вызывающая прерывание, а именно, запрос на ввод очередного символа с клавиатуры, чтение флажков не требуется. (Программист должен отчетливо понимать, при каких условиях происходит аппаратное прерывание и что требуется для его обработки.)
Несколько замечаний по поводу этой программы: во-первых, даже хотя мы и использовали прерывания, программа выглядит столь же тупой, что и раньше — она постоянно выполняет цикл, проверяя состояние признака конца строки. Однако при необходимости можно организовать цикл и по-другому, если необходимо выполнять еще какие-то действия. Это и происходит на самом деле в нашей программе, в той ее части, которая начинается с метки LINE и выполняет вывод символа «звездочка»; в течение этого времени прерывания обеспечивают занесение новых символов в буфер, в то время как в нашем предыдущем примере без прерываний эти символы были бы потеряны.
Второе замечание можно сформулировать следующим образом: даже в том случае, когда мы используем прерывания, остается беспокойство, не выполняет ли программа какие-либо операции с предыдущей строкой в то время, когда следующая строка уже полностью введена. Конечно, в среднем, программа просто обязана не отставать от ввода с клавиатуры; тем не менее может возникнуть ситуация, при которой обработчик строки случайно затратит много времени, и вам потребуется временный буфер более чем на одну строку. Одно решение этой проблемы — скопировать информацию во второй буфер или поочередно обращаться к каждому из двух буферов. Изящной альтернативой является организация входного потока в виде очереди, устроенной как кольцевой буфер, в котором два указателя обеспечивают извлечение очередного входного символа, а предыдущий символ удаляется. Обработчик прерываний продвигает вперед входной указатель, а обработчик строки продвигает выходной указатель. Подобный кольцевой буфер как правило имеет емкость 256 байт, что позволяет поддерживать обработку нескольких строк.
Третье замечание относится к обработчику прерываний самому по себе. Обычно чем он короче и проще, тем лучше, например, в нем возможна установка флажков для указания на необходимость выполнения в главной процедуре более сложных операций. Если обработчик прерываний будет долго переводить дух после каждого прерывания, вы рискуете потерять данные, источником которых являются другие устройства, вырабатывающие прерывания, поскольку в то время, когда ЦП обрабатывает прерывание, другие прерывания запрещены. В такой ситуации выход заключается в том, чтобы вновь разрешить обработку прерываний в вашем собственном обработчике командой STI после того, как будут выполнены критические отрезки программы, которые должны выполняться в первую очередь. Затем, если возникло прерывание, ваш обработчик прерываний будет сам прерван. Поскольку флажки и адреса возврата сохраняются в стеке, программа сумеет найти обратную дорогу, сначала в ваш обработчик, а затем в главную программу.
10.11. Прерывания в целом
Наш пример с клавиатурой демонстрирует суть прерываний, которые являются внезапными аппаратно вырабатываемыми запросами от периферийных устройств, вызывающими программную передачу управления специализированной программе обработки прерывания (которая обычно выполняет программно-управляемый ввод-вывод), а затем возврат управления в ту часть программы, выполнение которой было прервано.
Другим примером устройств, использующих прерывания, являются часы реального времени, в которых периодически (часто 10 раз в секунду, но в ПЭВМ типа IBM PC 18,2 раза в секунду) вырабатываемое прерывание «подталкивает» подпрограмму определения текущего времени; еще одним примером является параллельный интерфейс печатающего устройства, который вырабатывает прерывания всякий раз, когда готов новый символ. Используя прерывания, такие периферийные устройства позволяют компьютеру одновременно выполнять другие задания; вот почему вы можете работать с текстовым редактором, пока ваша ПЭВМ печатает файл (и при этом еще и отсчитывает текущее время).
IBM PC, однако, не иллюстрирует всех возможностей прерываний. Как мы видели, имеются 6 линий IRQ на магистрали, каждая из которых может быть задействована только одним устройством, использующим прерывания. Линии IRQ пронумерованы в соответствии с приоритетом; в том случае, когда вырабатываются несколько прерываний, первым отрабатывается то, номер которого меньше. Четыре из IRQ-линий предопределены для таких устройств, как последовательный порт (IRQ4), жесткий диск (IRQ5), гибкий диск (IRQ6) и порт печатающего устройства (IRQ7), оставляя неиспользуемыми только IRQ2 и IRQ3 [линии, соответствующие двум другим, используемым в IBM PC уровням IRQ, даже не выведены на магистраль, а используются на системной плате для обеспечения работы таймера с частотой пересчета 18,2 Гц (IRQ0) и клавиатуры (IRQ1)]. В том случае, если вы хотите дополнительно подключить стример или локальную сеть, придется использовать IRQ2 и IRQ3. Более того, прерывания отрабатываются по фронту сигнала, что делает тщетным какие бы то ни было разумные попытки использовать проводное «ИЛИ» для того, чтобы подключить несколько периферийных устройств к одной IRQ-линии.
Общие линии прерываний. Обычный протокол обработки прерываний, применяемый во многих компьютерах, обходит подобные ограничения. Посмотрите на рис. 10.13.
Рис. 10.13. Линии прерываний, совместно используемые несколькими устройствами.
Имеется несколько приоритетных линий IRQ-типа; здесь на входах ЦП (или других узлов, непосредственно с ними связанных) используется отрицательная логика. Для того чтобы сформировать сигнал прерывания, вы должны задать низкий уровень потенциала на одной из IRQ'-линий, используя, как показано, микросхему с открытым коллекторным выходом (или с тремя выходными состояниями). (Отметим хитрость, которая заключается в использовании элемента с трехстабильным выходом в качестве имитатора элемента с открытым коллектором.) Линии IRQ', каждая из которых подключена к нагрузочному резистору, используются несколькими периферийными устройствами совместно, так что к каждой IRQ'-линии можно подключить столько устройств, сколько захочется; в нашем примере два порта совместно используют IRQL Вообще говоря, более «нетерпеливое» устройство следует подключать к IRQ'-линии с более высоким приоритетом.
Поскольку линии IRQ' используются совместно, всегда может возникнуть прерывание, вызванное еще одним устройством в то же время и на той же линии (где уже выставлено прерывание). Центральный процессор должен знать, чем инициировано прерывание для того, чтобы передать управление соответствующему обработчику. Для этого существуют два пути - простой и сложный. Простой путь называется автовекторизованным опросом и используется практически повсеместно (хотя и не в IBM PC). Это делается следующим образом.
Автовекторизованный опрос. На одной плате с ЦП расположены некоторые электронные схемы (для примера мы возьмем электронные узлы, описываемые в гл. 11), которые инструктируют микропроцессор, что ему надо делать для поддержания режима автовекторизации, которая организована подобно тому, что сделано в IBM PC-каждый уровень прерывания вызывает передачу управления, адресуемую с помощью вектора, соответствующим образом расположенного в младших адресах памяти. Например, для МП серии 68000, с которой мы встретимся в гл. 11, существует 7 уровней приоритетных прерываний, которые адресуются 4-байтовыми указателями, располагаемыми в 28-ми (7x4) ячейках памяти с 64Н по 7FH. Адрес вызова обработчика прерываний вы записываете в эти ячейки как в вышеприведенном примере. Например, 4-байтовый адрес для обработчика, соответствующего 3-му уровню прерывания, вы должны записать в ячейки памяти с адресами (в 16-ричной форме) с 6С по 6F.
Перейдя в обработчик, вы знаете, какой уровень прерываний вы обслуживаете; вам только неизвестно, какое конкретно устройство инициировало прерывание. Для того чтобы выяснить, вы просто должны проверить регистры состояний каждого из устройств, подключенных к линии, соответствующей этому уровню прерываний (устройство никогда не должно выставлять запрос на прерывание без дополнительной установки одного или более битов состояний, которые можно считать). Если бит установлен, показывая, что надо бы что-то сделать, вы делаете то, что надо, и еще заботитесь о сбросе сигнала IRQ'. Некоторые устройства (такие, как клавиатура) сами сбрасывают в исходное состояние сигнал прерывания, когда осуществляется чтение данных, тогда как другие могут потребовать передачи специального байта по некоторому адресу порта ввода-вывода.
Если устройство, которое вы обслуживаете, было единственным источником прерываний данного уровня, то теперь, после передачи управления обратно в прерванную программу и продолжения ее выполнения, сигнал IRQ' будет установлен в высокое состояние. Однако если существовало второе устройство, выработавшее прерывание того же уровня, то сигнал на IRQ'-линии будет по-прежнему оставаться в низком состоянии (с помощью приводного «ИЛИ») и после возврата управления из обработчика прерываний ЦП немедленно адресуется к тому же самому вектору и соответственно обработчику. При этом путем опроса будет обнаружено другое устройство, инициировавшее прерывание, выполнено то, что надо и управление будет вновь передано прерванной программе. Отметим, что порядок, в котором вы опрашиваете регистры состояний, эффективно устанавливает программный приоритет, дополнительно к аппаратному приоритету нескольких IRQ'-уровней.
Подтверждение прерывания. Мы не можем проститься с прерываниями без того, чтобы не упомянуть о более сложной процедуре идентификации источника прерывания — подтверждении прерывания. При этом ЦП не должен опрашивать регистры состояний возможных кандидатов, поскольку устройство, инициирующее прерывание, сообщает по запросу ЦП свое имя. Устройство осуществляет это, устанавливая «вектор прерывания» (обычно-уникальный 8-разрядный код) на шине данных, в ответ на сигнал подтверждения прерывания, вырабатываемый ЦП в процессе реализации прерывания. Необходимые сигналы вырабатывает почти каждый МП. Последовательность событий такова: а) ЦП замечает ожидающее прерывание; б) ЦП завершает выполнение текущей команды, затем вырабатывает (1) сигналы магистрали, говорящие о прерывании, (2) определяет уровень прерывания (по младшим разрядам шины адреса), а также (3) вырабатывает подобные сигналам чтения строб-сигналы, которые приглашают устройство, инициировавшее прерывание, идентифицировать себя; в) устройство отвечает на такой набор сигналов магистрали, выставляя свой идентификатор (вектор прерывания) на шину данных; г) ЦП считывает вектор и передает управление обработчику прерываний, соответствующему прерывающему устройству; д) программная часть обработчика прерываний, как в нашем последнем примере, считывает флажки, получает и передает данные и т. д. В число прочих обязанностей обработчика прерываний входит наблюдения за тем, чтобы устройство, затребовавшее прерывание, не «забыло» потом его отменить; е) в конце концов обработчик прерываний возвращает управление той программе, выполнение которой было прервано.
Возможно, проницательные читатели заметили слабое место в изложенной процедуре. В частности, она рассчитана на то, что только одно устройство выставляет свой вектор, тогда как одному IRQ-уровню могут соответствовать несколько устройств, которые вырабатывают запросы на прерывание одновременно. Традиционный метод обработки прерываний в такой ситуации заключается в том, что на магистрали формируется дополнительный сигнал (называемый INTP, приоритет прерывания), необычность которого состоит в том, что линия магистрали, соответствующая этому сигналу, не является общей для устройств, подключенных к магистрали, а, наоборот — проходит через схемную часть интерфейса каждого устройства, пронизывая все интерфейсы, начиная с ближайшего к ЦП устройства с наивысшим уровнем приоритета. На цветистом языке электроники такая конструкция называется daisy chain (дейзи-цепочка, или шлейфовое соединение). Правило, в соответствии с которым аппаратная логика обрабатывает сигнал INTP, следующее: в том случае, если вы не запрашивали прерывание на том уровне, требующем подтверждения, пропустите сигнал INTP к следующему устройству без изменения; если вы хотите подтвердить прерывание на данном уровне, поддерживайте низкий уровень сигнала INTP, выходящего из вашего устройства.
Правило, в соответствии с которым надо теперь выставить вектор, выглядит следующим образом. Как только будет выработан вопрос от ЦП, установите код вашего вектора на шине данных только в том случае, если а) прерывание ожидает на том уровне, который требует подтверждение и б) на входе вашего устройства сигнал INTP имеет высокий уровень. Это гарантирует, что только одно устройство выставит свой вектор; таким образом, также устанавливается цепочка последовательных приоритетов для каждого IRQ-уровня, при этом устройство, электрически ближайшее к ЦП, будет обслуживаться в первую очередь. В таких компьютерах, где применяется подобная схема, для того, чтобы пропустить сигнал INTP через неиспользуемые разъемы магистрали, применяются малогабаритные разъемные замыкатели. Не забудьте их удалить, когда будете устанавливать дополнительную интерфейсную плату (а затем не забудьте их вернуть на место, когда будете отключать соответствующую плату!).
У метода подтверждения прерывания, реализуемого с помощью последовательной дейзи-цепочки, имеется изящная альтернатива: вместо того, чтобы пропускать сигнал через каждый возможный источник прерываний, вы соединяете каждое подобное устройство отдельной линией с приоритетным шифратором (см. разд. 8.14), который, в свою очередь, подтверждает прерывание, идентифицируя наиболее приоритетное из устройств прерывания. Такая схема исключает суету с перетыканием замыкателей. Детально мы это обсудим в разд. 11.4 (рис. 11.8).
В большинстве микрокомпьютерных систем описанная только что организация подтверждения запроса прерывания не используется в полной мере. В конце концов при 8-ми уровневой автовекторизации можно обслужить 8 устройств — источников прерываний без опроса и в несколько раз большее их количество с опросом. Только в больших компьютерных системах, где требуется быстрая реакция при наличии десятков устройств, которые вырабатывают прерывания, возможно, вы поддадитесь искушению усложнить протокол подтверждения прерывания, либо используя аппаратно реализованную последовательную дейзи-цепочку приоритетов, либо — параллельное приоритетное кодирование.
Однако важно понимать, что даже простые компьютеры могут использовать внутреннее векторизованное подтверждение прерывания. Например, простая 6-ти уровневая автовекторизованная схема прерываний IBM PC, как она представляется пользователям магистрали, на самом деле поддерживается микросхемой программируемого контроллера прерываний типа 8259, которая размещается вблизи ЦП и генерирует надлежащую последовательность подтверждений прерывания, описанную ниже. Это необходимо, так как МП 8086 (и его «наследники») не могут сами по себе использовать автовекторизацию. С другой стороны, МП популярной серии 68000 могут использовать автовекторизацию всего лишь с использованием одной дополнительной микросхемы (см. гл. 11).
Маскирование прерываний. В нашем простом примере с клавиатурой мы включили триггер таким образом, что прерывания клавиатуры могут быть заблокированы, даже несмотря на то, что контроллер типа 8259 позволяет выключать («маскировать») каждый уровень прерывания в отдельности. Мы поступили таким образом, чтобы какое-нибудь другое устройство могло затем использовать IRQ2. Для магистрали с совместно используемыми IRQ'-линиями (чувствительными к уровню) особенно важно сделать каждый источник прерываний маскируемым с помощью бита выходного порта ввода-вывода. Например, порт печатающего устройства обычно вырабатывает прерывание всякий раз, когда его выходной буфер пуст («дайте еще данных»); но после завершения печати этот запрос уже не нужен. Очевидное решение заключается в том, чтобы выключить прерывания печатающего устройства. Поскольку могут быть другие устройства, «захватившие» тот же уровень прерываний, надо не маскировать целиком весь уровень, а передать бит в порт печатающего устройства для того, чтобы блокировать его прерывание.
Как IBM PC это делает. Используемый в IBM PC МП 8086/8 в самом деле использует полный протокол подтверждения векторизованных прерываний. Однако для простоты проектировщики IBM PC использовали микросхему контроллера прерываний 8259 на системной плате. Эта микросхема используется следующим образом. К ней подключены линии IRQ от устройств ввода-вывода, расположенных на вставных печатных платах (где вырабатываются соответствующие запросы на прерывания), сам же контроллер соединен с линиями данных и управления собственно МП. Когда контроллер получает от внешнего устройства запрос на прерывание по линии IRQ, он выясняет его приоритет и осуществляет весь комплекс действий, связанных с формированием соответствующего вектора на шине данных. Он имеет регистр маски (доступный через порт ввода-вывода 21Н) так, что вы можете запретить произвольный набор прерываний.
Контроллер типа 8259 позволяет выбирать (программным образом) способ формирования прерывания либо по уровню, либо по фронту соответствующего сигнала на входных линиях IRQ; выбор осуществляется с помощью записи байта в управляющий регистр (порт ввода-вывода 20Н). К сожалению, конструкторы PC решили использовать формирование по фронту, возможно из-за того, что это несколько упрощает формирование прерываний (например, можно непосредственно подать выходной прямоугольный сигнал таймера реального времени на линию IRQ0). Если же вы вместо этого выбрали способ формирования прерываний по уровню сигнала, вы можете «повесить» на каждую IRQ'-линию множество устройств, вырабатывающих прерывания и программно опрашивать их так, как это было описано выше. К несчастью, базовая система ввода-вывода PC (ROM BIOS) и операционная система (за исключением аппаратной части) предполагают формирование по фронту, так что выбор окончателен. (Почти все остальные компьютеры, включая даже «потомков» PC и PC/AT, используют формирование прерываний по уровню.)
Существует частичное решение этой проблемы. Постольку, поскольку IRQ- линия доступна, вы можете объединить на одной плате PC несколько устройств, вырабатывающих прерывания, и логическую схему, которая формирует прерывания для соответствующей IRQ-линии по фронту; для этого можно даже воспользоваться дополнительным контроллером типа 8259 (порты ввода-вывода которого должны быть доступны ЦП). Но поскольку устройство, вырабатывающее прерывание, должно знать о каждом из остальных устройств, такую схему нельзя использовать при независимом подключении внешних устройств. Более того, вы по-прежнему вынуждены использовать по одной IRQ-линии на плату внешних устройств, и сложную систему так построить трудно: в IBM PC имеются только два незадействованных IRQ-уровня.
Программные прерывания. Микропроцессоры серии Intel 8086 имеют команду (INT n, где n = 0… 255), которая позволяет вам осуществить векторизованную передачу управления того же рода, что и настоящее аппаратное прерывание. В самом деле, среди 256 возможных векторов переходов имеются и соответствующие 8 уровням IRQ-запросов аппаратных прерываний (с ΙΝΤ 8 по ΙΝΤ 15, чтобы быть точным). Таким образом, вы можете организовать программное прерывание из некоторой программы. IBM PC использует такие программные прерывания для того, чтобы разрешить вам взаимодействовать с операционной системой и различными программами, «зашитыми» в ПЗУ. Например, INT 5 пересылает копию экрана на печатающее устройство. Особенно важно применение INT 21Н, поскольку это прерывание обеспечивает вызов системных функций: вы сообщаете системе, какую из системных функций хотите использовать, записывая соответствующее число в регистр АН прежде, чем выполнить INT 21Н.
Не следует путать такие программные прерывания с аппаратными прерываниями, вырабатываемыми внешними устройствами, о чем мы говорили выше. Выполнение программных прерываний — это искусный прием использования векторизованной передачи управления из программы пользователя системному программному обеспечению. Но такие прерывания не являются настоящими прерываниями в смысле аппаратно вырабатываемых запросов внешних автономных устройств. Напротив, вы можете встроить эти прерывания в свою программу, вы знаете, когда они произойдут (вот почему вы можете передавать аргументы через регистры ЦП) и они являются всего навсего реакцией (почти такой же, какая следует в случае «истинного» прерывания) ЦП на свою собственную команду. Можете считать программные прерывания мудрым способом расширения набора команд ЦП.
10.12. Прямой доступ в память
Встречаются ситуации, когда данные должны быть переданы от устройства или в устройство очень быстро. Классическим примером является быстрое устройство массовой памяти, например диск или магнитная лента, а также такие приложения, связанные со сбором данных в реальном времени, как многоканальный амплитудный анализ. Программная передача каждого отсчета, инициируемая по прерыванию, в таком случае будет неудобной и, возможно, слишком медленной. Например, данные считываются с гибкого диска с высокой плотностью записи со скоростью около 500 Кбит/с или 1 байт каждые 16 мкс. Если соблюдать все описанные этапы обработки запроса на прерывание, данные почти наверняка будут пропущены, даже если гибкий диск будет единственным источником прерываний в компьютере; с несколькими подобными устройствами ситуация становится безнадежной. Еще хуже дело обстоит с жестким диском, для которого типичное время, затрачиваемое на передачу байта, составляет 2 мкс, что полностью исчерпывает возможности программируемого ввода-вывода. Такие устройства, как диски и магнитные ленты (не говоря уж об упомянутых сигналах и данных в реальном масштабе времени), не могут остановиться на полпути так, что требуется метод, обеспечивающий возможно более быструю реакцию и высокую общую скорость передачи данных. Даже для внешних устройств с низкой средней скоростью передачи данных может требоваться малое время реакции, т. е. время от начального запроса до собственно передачи данных.
Решением этих проблем является прямой доступ в память (ПДП), метод непосредственной связи внешнего устройства с памятью. В некоторых микрокомпьютерах (в том числе и IBM PC) такая связь фактически поддерживается аппаратным устройством (архитектурой ЦП), но не это главное. Важным моментом является то, что при передаче данных отсутствует программирование; байты передаются между памятью и внешним устройством по магистрали, без участия программы. Единственным влиянием на программу является некоторое замедление ее работы, поскольку режим ПДП «захватывает» такты магистрали, которые в противном случае могли бы быть использованы для доступа к памяти при выполнении программы. Аппаратная реализация интерфейса, поддерживающего режим ПДП, сложна, не следует без необходимости использовать этот режим. Однако полезно знать потенциальные возможности, поэтому мы вкратце опишем, что необходимо для построения интерфейса, поддерживающего режим ПДП. Как и в случае с прерываниями, конструкторы IBM PC упростили протокол ПДП; основную работу выполняет контролллер ПДП, расположенный на системной плате, что делает протокол ПДП сравнительно простым. Однако интерфейсы, поддерживающие режим ПДП, обычно оказываются машинно-зависимыми и сложными. Сначала мы поясним функционирование более употребительного метода ПДП с управлением сигнала магистрали, а затем — упрощенный протокол ПДП для PC.
Типовой протокол ПДП. При пересылках данных в режиме ПДП внешние устройства получают доступ к магистрали с помощью специализированных линий «запроса магистрали» (которые также, как IRQ-линии, имеют приоритеты), являющихся составной частью магистрали. Центральный процессор разрешает и ПДП и отдает управление адресами, данными и строб-сигналами. Затем внешнее устройство выставляет адреса памяти на магистраль и либо передает, либо принимает данные побайтно, синхронизуясь с устанавливаемыми им же строб-сигналами; другими словами, внешнее устройство «захватывает» магистраль и работает как ЦП, непосредственно пересылая данные. Устройство, которое в режиме ПДП управляет магистралью, отвечает за вычисление адресов (как правило, непрерывную область адресов, вырабатываемых с помощью двоичного счетчика) и подсчет количества переданных байтов. Обычно для этого достаточно иметь счетчик байтов и адресный счетчик в составе интерфейса.
Эти счетчики первоначально загружаются на ЦП, посредством программируемого ввода-вывода, для того, чтобы предустановить требуемые параметры передачи данных в режиме ПДП. По команде ЦП (посредством записи управляющего бита с помощью программируемого ввода-вывода) интерфейс формирует требование ПДП и начинает пересылать данные. Интерфейс может освобождать магистраль в промежутки времени между передачей байтов (позволяя тем самым ЦП «урвать» время и выполнить несколько команд), или он может вести себя более эгоистично, захватывая магистраль на все время передачи блока данных. После того, как все данные переданы, интерфейс освобождает магистраль до следующего раза и сообщает программе о том, что все закончено, устанавливая бит состояния и вырабатывая прерывание, после чего ЦП может решить, что делать дальше.
Загрузка данных или программ с диска-наиболее общий пример передачи данных в режиме ПДП. Выполняемая программа запрашивает какие-нибудь файлы по именам; операционная система (подробнее - чуть позже) преобразует эти имена в команды программируемого вывода данных для управляющего (или командного) регистра интерфейса диска, регистра счетчика байтов и адресного регистра (описывая с какого места на диске, и сколько байтов надо считать, и в какую область памяти их поместить). Затем интерфейс диска отыщет необходимую область на диске, сформирует запрос ПДП и начинает передавать блоки данных в заданную область памяти. Когда это будет выполнено, интерфейс установит определенные биты в регистре состояния для того, чтобы обозначить завершение работы и затем инициирует прерывание. Центральный процессор, который тем временем выполняет другие команды (или, возможно, как раз ожидает данных с диска), «откликается» на прерывание, по содержимому регистра состояния интерфейса диска определяет, что данные находятся в памяти и затем переходит к выполнению следующих команд. Таким образом, программируемый ввод-вывод (простейший вариант ввода-вывода) был использован для инициализации режима ПДП, собственно ПДП (перехватывающий у ЦП циклы магистрали) был использован для быстрой передачи данных, а прерывание было использовано для того, чтобы дать знать компьютеру о том, что передача выполнена. Такого рода иерархия ввода-вывода — исключительно частый прием, особенно для устройств массовой памяти; максимальная скорость передачи данных по типовой микрокомпьютерной магистрали в режиме ПДП может составлять от 1 до 10 млн. слов в секунду.
ПДП в IBM PC. Компьютер IBM PC, который в общем-то прост, поддерживает упрощенный протокол ПДП. На системной плате установлен контроллер ПДП (Intel 8237) со встроенными адресным и байтовым счетчиками, а также дополнительными логическими схемами для блокировки ЦП и перехвата управления магистралью. Таким образом, внешнее устройство, которое хочет выполнить ПДП, не должно вырабатывать адреса и управлять магистралью. Вместо этого он сигнализирует контроллеру с помощью одной из трех DRQ1-DRQ3 линий запроса ПДП; контроллер откликается по соответствующей линии DACK0-3' (подтверждение ПДП). Затем контроллер управляет передачей данных, формируя адрес и соответствующие строб-сигналы, синхронно с формированием внешним устройством данных для передачи в память (или синхронно с приемом данных из памяти). Во всем этом процессе память не замечает ничего необычного, поскольку генерация адресов и строб-сигналов управления памятью (MEMW' или MEMR'), которая обычно поддерживается ЦП, в данном случае поддерживается контроллером 8237 и, если ПДП сопровождает передачу данных в память, данные формируются внешним устройством. С другой стороны внешние устройства «знают» все особенности того, как надо формировать запрос ПДП (и что делать при получении подтверждения посредством сигнала DACK'); таким образом, когда контроллер ПДП выставляет сигнал IOR' (или IOW'), внешнее устройство вырабатывает (или принимает) соответствующие байты. Вы можете удивиться, как это такой простодушный, сторонний наблюдатель, как внешнее устройство, не запутается во время ПДП, когда выставлены и строб- сигналы ввода-вывода, и адреса, причем эти адреса являются адресами в памяти, установление которых сопровождается строб-сигналами управления памятью MEMW' или MEMR', генерируемыми контроллером; эти адреса не имеют никакого отношения к портам ввода-вывода.
Секрет здесь заключается в нашем старом знакомом-сигнале AEN, который добавлен к магистрали специально только для решения подобных проблем. Уровень сигнала AEN во время передачи данных в режиме ПДП устанавливается высоким, и функции разрешения адресации всех портов ввода-вывода должны вычисляться как логическое произведение с низким уровнем сигнала AEN для того, чтобы предотвратить ложную реакцию при адресации памяти в режиме ПДП.
Даже при использовании отдельной микросхемы контроллера вам все еще надо задать начальный адрес, количество байтов и направление передачи данных для грядущего режима ПДП. Эти параметры заносятся в контроллер 8237, который обязан иметь набор регистров, куда из ЦП (с помощью программируемого ввода-вывода) можно записать соответствующие значения. Настройка ПДП осуществляется весьма просто (см. книгу Эггбрехта для более детального ознакомления), если не считать того, что, как и у большинства микросхем БИС, здесь также имеется ошеломляющее разнообразие выбора различных режимов работы (посимвольная передача, поблочная передача и т. п.). К счастью IBM PC достаточно примитивна и позволяет вам использовать только режим посимвольной передачи, при котором каждый запрос DRQ сопровождается передачей лишь одного байта. Если вы настаиваете на передаче целого блока данных, поддерживая сигнал DRQ в высоком состоянии, контроллер 8237 освобождает магистраль на один цикл ЦП между циклами ПДП; это позволяет компьютеру сохранять работоспособность даже в том случае, когда у вас такое «прожорливое» внешнее устройство, что оно старается «заграбастать» магистраль полностью.
Стандартная PC обладает довольно скромными возможностями режима ПДП-около 2 мкс на передаваемый байт. По сравнению с количеством прерываний количество каналов ПДП в IBM PC меньше. Для шины ввода-вывода доступны три канала DRQ1-DRQ3 (DRQ0 уже задействован на внутренние нужды — для регенерации динамической памяти): DRQ1 используется жестким диском, а DRQ2 — гибким. На все остальное остается DRQ3.
10.13. Сводный перечень сигналов магистрали IBM PC
На рассмотренных нами примерах-программируемого ввода-вывода, прерываний, ПДП-мы познакомились с большинством сигналов магистрали, поступающими на плату внешнего устройства IBM PC В табл. 10.1 (и на рис. 10.14) приведен полный перечень сигналов магистрали с цоколевкой разъема. Для полноты изложения ниже описан каждый из этих сигналов, начиная с тех, с которыми мы уже встретились.
Рис. 10.14. Магистраль IBM PC.
А0-А19. Шина адреса. Два состояния, работает только на запись, действующий уровень сигнала-высокий. Все 20 разрядов используются для адресации памяти (совместно с сигналами MEMR' и MEMW', которые играют роль строб-сигналов, по аналогии с сигналами IOR' и IOW'), но только 16 младших разрядов используются при адресации ввода-вывода, (64 К адресов портов); устройства ввода-вывода должны осуществлять выборку адреса только при низком уровне сигнала AEN.
Важное замечание: ввод-вывод в пределах системной платы предусматривает адресацию только десятью младшими разрядами, используя при этом лишь адреса 000H-1FFH, поэтому адреса устройств ввода-вывода должны иметь в своих младших разрядах коды в диапазоне 200H-3FFH. Вы можете поступить умнее, используя наряду со свободными 10-разрядными адресами еще и 6 старших бит, расширив таким образом адресное пространство портов ввода-вывода до 64К.
D0-D7. Шина данных. Три состояния, двунаправленная, действующий уровень сигнала-высокий. Данные выставляются ЦП при записи в память или в порт ввода-вывода: выставляются памятью при чтении из памяти, в том числе и при ПДП; выставляются портом ввода-вывода при чтении из порта, в том числе и в память при ПДП.
IOR', IOW', MEMR', MEMW'. Строб-сигналы данных. Два состояния являются выходными (по отношению к ЦП), действующий уровень сигнала — низкий. Формируются ЦП при чтении или записи. При записи данные должны быть зафиксированы по спаду (положительному) и при надлежащем адресе; при чтении должны быть выставлены одновременно со строб-сигналом при заданном адресе.
AEN. Разрешение адреса. Два состояния, является выходным (по отношению к ЦП), действующий уровень сигнала — высокий. Вырабатывается ЦП во время циклов ПДП. Порты ввода-вывода не должны дешифровать адрес при наличии сигналов IOR', IOW', за исключением тех случаев, когда порты ввода-вывода принимают сигнал DACK и используют сигналы IOR' и IOW' для стробирования байтов данных ПДПН.
IRQ2-IRQ7. Запрос прерывания. Два состояния, является входным (по отношению к ЦП), действующим является нарастающий фронт. Вырабатывается устройством, запрашивающим прерывания. Приоритеты установлены таким образом, что IRQ2 имеет наивысший, a IRQ7 — наинизший приоритет. Контроллер прерываний 8259 допускает их маскирование, устанавливаемое ЦП посредством записи в порт по адресу 21Н. Каждый уровень IRQ может быть использован одновременно только одним устройством.
RESET DRV. Предустановка драйвера. Два состояния, является выходным (по отношению к ЦП), действующий уровень — высокий. Вырабатывается ЦП при включении электропитания. Используется для предустановки устройства ввода-вывода в заданное начальное состояние.
DRQ1-DRQ3. Запрос ПДП. Два состояния, является входным (по отношению к ЦП), действующий уровень — высокий. Вырабатывается устройством ввода-вывода, которое запрашивает канал ПДП. Приоритеты установлены таким образом, что DRQ1 имеет наивысший, a DRQ3 — наинизший приоритеты. Подтверждается сигналами DACK1'-DACK3'.
DACK0'-DACK3'. Подтверждение ПДП. Два состояния, является выходным (по отношению к ЦП), действующий уровень — низкий. Вырабатывается ЦП (или контроллером ПДП) для того, чтобы обозначить подтверждение соответствующего запроса ПДП.
ALE. Разрешение фиксации адреса. Два состояния, является выходным (по отношению к ЦП), действующий уровень — высокий. Микропроцессор Intel 8088 использует мультиплексируемую шину данные/адрес, и этот сигнал соответствует строб-сигналу МП, используемому регистрами-фиксаторами на системной плате для фиксации адреса. Может быть использован в качестве сигнала начала цикла ЦП; обычно при проектировании ввода-вывода игнорируется.
CLK. Тактовый сигнал. Два состояния, является выходным (по отношению к ЦП). Это-тактовый сигнал ЦП; он асимметричен, 1/3 периода поддерживается высокий уровень, а 2/3 — низкий. Исходные PC работали на частоте 4,77 МГц, сейчас используются более высокие частоты. Сигнал CLK применяется для синхронизации состояний ожидания при запросах (с использованием сигнала I/O CHRDY) для того, чтобы удлинить цикл ввода-вывода для медленных устройств.
OSC. Тактовый сигнал. Два состояния, является выходным (по отношению к ЦП). Этот сигнал представляет собой меандр с частотой 14,31818 МГц, который может использоваться (будучи поделенным на 4) для синхронизации работы цветного дисплея.
Т/С. Завершение передачи. Два состояния, является выходным (по отношению к ЦП), действующим является высокий уровень. Этот сигнал сообщает порту ввода-вывода, что передача блока данных в режиме ПДП завершена. Устройство, выполняющее ПДП, должно обрабатывать этот сигнал по совпадению с сигналом DACK' для используемого канала, поскольку сигнал Т/С вырабатывается независимо от того, по какому из каналов ПДП завершилась передача блока.
I/O СН СК'. Проверка канала ввода-вывода. Открытый коллекторный выход, является входным (по отношению к ЦП), действующий уровень-низкий. Инициирует прерывание с наивысшим приоритетом (немаскируемое прерывание); используется для того, чтобы сигнализировать о состоянии ошибки в каком-то из внешних устройств. Центральный процессор определяет «возмутителя спокойствия» опросом внешних устройств (см. разд. 10.11); следовательно, каждое устройство, которое вырабатывает сигнал I/O СН СК', должно иметь бит состояния, который может быть прочитан ЦП.
I/O СН RDY. Готовность канала ввода-вывода. Открытый коллекторный выход, является входным (по отношению к ЦП), действующий уровень — высокий. Формирует состояние ожидания, если перед вторым фронтом сигнала CLK цикла процессора (в цикле обычно 4 такта сигнала CLK) уровень сигнала I/O СН RDY установлен низким. Используется для удлинения цикла магистрали для медленных устройств ввода-вывода или при обращении к памяти.
GND,+5VDC, —5VDC, +12VDC, -12VDC. «Земля» и уровни постоянных напряжений питания. Регулируемые уровни постоянного напряжения, передаваемые по магистрали для питания внешних устройств, размещенных на вставных платах. Изучите описание вашего компьютера для того, чтобы выяснить ограничения на суммарную потребляемую электрическую мощность, которая зависит от модификации компьютера. Вообще говоря, мощности должно хватить для питания всего того, что вы подключите с помощью разъемов расширения магистрали.
10.14. Синхронный и асинхронный протоколы магистрали
Протокол ввода-вывода, описанный нами ранее, является примером синхронного обмена данными; данные выставляются на шину или принимаются с нее синхронно со стробирующими сигналами, которые генерируются ЦП (или контроллером ПДП). Этот метод отличается простотой, однако он чреват неприятностями в случае использования протяженных длинных шин, поскольку большое время распространения сигнала может привести к тому, что данные в операции ввода будут устанавливаться недостаточно быстро, чтобы обеспечить надежную передачу. Собственно говоря, при синхронном протоколе устройство, посылающее данные, так никогда и не узнает, получены ли эти данные! Это может показаться серьезным недостатком, но в действительности компьютерные системы с синхронными магистралями превосходно работают.
Альтернативой является асинхронная магистраль, на которой операция, например, ввода осуществляется следующим образом. ЦП устанавливает адрес порта, а на стробирующей линии (назовем ее, как и раньше, IOR') уровень (не импульс), который показывает адресному устройству, что идет операция ввода. Адресуемое устройство устанавливает данные на линиях DATA, а также уровень, сигнализирующий о наличии достоверных данных (назовем его DTACK', data transfer acknowledged, подтверждение передачи данных). ЦП, обнаружив DTACK', фиксирует («защелкивает») данные и затем снимает уровень IOR'. Как только интерфейс замечает, что линия IOR' переходит в высокое состояние, он снимает сигналы с линий DTACK' и DATA. Другими словами, ЦП заявляет: «Дай мне данные». Периферийное устройство отвечает: «Вот они, бери». Тогда ЦП говорит: «Готово, взял». И, наконец, периферийное устройство завершает диалог: «Отлично! Пойду снова спать». Описанную процедуру иногда называют «рукопожатием», или квитированием. Асинхронный протокол допускает использование длинных шин и позволяет взаимодействующим устройствам убедиться, что данные действительно передаются. Если удаленное устройство будет выключено, ЦП узнает об этом. Собственно говоря, эта информация доступна (через регистры состояния) на магистралях любого вида, и основное достоинство асинхронного протокола заключается в возможности использовать линии связи любой длины за счет незначительного усложнения аппаратуры.
Иногда вам может понадобиться подключить к магистрали относительно медленные интерфейсные ИС; примером может служить ПЗУ с большим временем доступа или даже ОЗУ. Все магистрали предоставляют какие-то средства удлинения цикла магистрали, однако при асинхронном протоколе это происходит само по себе, поскольку цикл магистрали продолжается до тех пор, пока не будет снят сигнал DTACK'. Синхронные магистрали всегда содержат какую-то линию типа HOLD' (в компьютерах PC она называется I/O СН RDY) для организации состояний ожидания и задержки во времени конца цикла. Результирующая длительность цикла всегда увеличивается на целое число тактов генератора ЦП, т. е. на число включенных в цикл «состояний ожидания». Например, стандартная IBM PC имеет тактовую частоту 4,77 МГц (период 210 нc), а длительность обычного цикла магистрали при обращении к памяти составляет 4 тактовых периода (840 нc). Если сигнал I/O СН RDY переводится в низкое состояние при обращении к памяти перед вторым фронтом сигнала CLK и снова переходит в высокое состояние перед третьим, генерируется одно состояние ожидания с удлинением цикла магистрали (а также и сигналов MEMW' или MEMR') до 5 тактов (1050 нc). Удерживая сигнал I/O СН RDY в низком состоянии на протяжении большего числа тактов, вы создаете дополнительные состояния ожидания, вплоть до 10 периодов тактового генератора.
Теперь мы можем открыть тщательно скрываемый секрет про синхронные и асинхронные магистрали: практически все микрокомпьютеры с одним процессором (или, точнее, с одним ведущим на магистрали) являются синхронными, потому что вся синхронизация привязана к единственному генератору ЦП (вроде 4,77 МГц тактового генератора исходных IBM PC). В результате если периферийное устройство задерживает свое подтверждение на «асинхронной» магистрали, цикл всегда удлиняется на целое число тактов ЦП. Разница между синхронными и асинхронными магистралями в действительности заключается в следующем. На «асинхронной» магистрали состояния ожидания включаются в цикл по умолчанию, если только не установлен в низкое состояние сигнал DTACK' (поступающий через проводное ИЛИ), в то время как на «синхронной» магистрали состояния ожидания по умолчанию не возникают; они генерируются лишь если линия проводного ИЛИ (HOLD') устанавливается в низкое состояние. Однако различие не носит лишь семантический характер — «синхронный» протокол не позволяет работать с длинными шинами, потому что в этом случае сигнал HOLD' поступает в ЦП слишком поздно, чтобы удлинить цикл, в то время как на «асинхронной» магистрали ЦП не завершит цикл обмена без вашего разрешения (сигнал DTACK'). Со свойственной нам скромностью мы предлагаем, во избежание недоразумений, пользоваться следующей многообещающей терминологией: если состояния ожидания генерируются на магистрали по умолчанию («асинхронная» магистраль), будем называть ее «с ожиданием по умолчанию» (default-wait); если состояния ожидания возникают только при их запросе («синхронная» магистраль), будем называть ее «с ожиданием по запросу» (request-wait). Магистраль IBM PC характеризуется ожиданием по запросу, а магистраль VME (см. ниже) — по умолчанию.
Процессы на магистрали еще более усложняются в многопроцессорных системах, где управление магистралью переходит из рук в руки. На синхронной магистрали с несколькими ведущими все ведущие должны использовать единый тактовый генератор, в то время как асинхронная магистраль допускает различные тактовые частоты. К счастью для вас, обсуждение многопроцессорных систем выходит за рамки этой книги! Следует отметить обстоятельство, могущее привести к недоразумениям. Вы не добавляете состояния ожидания при работе с медленными периферийными устройствами (например принтером); это следует делать лишь при наличии медленных ИС (скажем, ПЗУ с временем доступа 250 нc или медленной периферийной БИС). Медленная периферия обычно безнадежно медленна (миллисекунды, а не наносекунды); с такими устройствами следует посылать (или принимать) байт на полной скорости магистрали, фиксируя его в регистре байтовой ширины, после чего ожидать прерывания (или, возможно, установки флага состояния), чтобы инициировать следующую передачу на, полной скорости.
10.15. Магистрали других микрокомпьютеров
Для иллюстрации архитектуры микрокомпьютерной магистрали-сигналов на магистрали, разновидностей ввода-вывода, прерываний, прямого доступа к памяти, мы выбрали магистраль IBM PC. Для книги по электронике это оправданный выбор, так как компьютеры типа PC выпускаются повсеместно и широко применяются в технике вообще и в системах сбора данных и управления в частности. К тому же, магистраль PC исключительно проста в объяснении и использовании.
Однако за простоту приходится платить. Магистрали исходных IBM PC свойственны серьезные ограничения, уже упоминавшиеся ранее (например, малое число уровней прерываний и каналов ПДП). Кроме того, магистраль IBM PC имеет по нынешним меркам слишком маленькое адресное пространство (20 бит, и доступны только 640 К), слишком узкую шину данных (8 бит), недостаточную скорость передачи данных (максимально 1,2 Мбайт/с) и невозможность работы с несколькими ведущими шины. Для последующих поколений машин PC фирма IBM разработала улучшенные магистрали, сначала магистраль PC/AT (совместимое усовершенствование исходных PC), а затем новую (и несовместимую!) «микроканальную» магистраль для серии машин PS/2. Вне мира IBM можно найти конкурирующие магистрали конкретных разработчиков (например, Q-bus и VAXBI фирмы DEC), а также типовые магистрали (Multibus, NuBus, VME). Давайте пройдемся по компьютерным магистралям, перечисленным в табл. 10.2.
PC/AT и Micro Channel. Компьютеры IBM PC/AT (сокращение от Advanced Technology, улучшенная технология) появились в 1984 г., а в 1987 г., на вершине популярности, их производство было приостановлено, чтобы уступить место серии машин IBM PS/2, использовавших улучшенную магистраль Micro Channel и призванных одним махом прихлопнуть производителей АТ-аналогов. (Однако машины PC/AT продолжали процветать, поскольку производители их аналогов, как и многие покупатели, сначала игнорировали новинку IBM, улучшенные качества которой требовали несуществующего программного обеспечения.) В PC/AT используется микропроцессор 80286 и расширенная (но совместимая) магистраль исходных PC: дополнительный (и необязательный) разъем для добавочных 8 бит данных, 4 бит адресов и 5 линий IRQ (со срабатыванием, как и прежде, по фронту). В результате 16-разрядная шина данных и более высокая тактовая частота подняли пропускную способность магистрали до 5,3 Мбайт/с, что в сочетании с расширением адресного пространства и увеличением числа уровней прерываний сделали PC/AT весьма серьезным микрокомпьютером. Магистраль PC/AT (иногда называемая Industry Standard Architecture, или ISA - стандартная промышленная архитектура) даже допускает нескольких ведущих на магистрали, хотя ее возможности в этом отношении ограничены. Платы, предназначенные для исходных PC, будут работать и на PC/AT (если они обладают необходимым быстродействием), так как усовершенствования, собранные на дополнительном разъеме, можно игнорировать; в этом случае, конечно, вы возвращаетесь к 8-разрядной шине данных и 20-разрядному адресному пространству. АТ-совместимые компьютеры обычно эксплуатируют свою магистраль ввода-вывода на высоких скоростях, и при использовании старых вставных плат могут возникнуть дополнительные трудности синхронизации.
Магистраль Micro Channel была впервые применена в серии персональных компьютеров второго поколения IBM PS/2, появившихся в 1987 г. Магистраль характеризуется большой шириной шин адресов и данных (до 32 разрядов у моделей с микропроцессором 80386), 11 уровнями разделяемых прерываний (чувствительных к уровню), возможностью работы нескольких ведущих шины и асинхронным протоколом. Платы, подключаемые к магистрали Micro Channel, не содержат запаянных адресов портов ввода-вывода; адреса (вместе с другими конфигурационными характеристиками) назначаются ЦП в процессе загрузки на основе информации, прочитанной в ПЗУ на плате. Это приятное качество избавляет вас от необходимости настраивать каждую плату с помощью микропереключателей или беспокоиться о возможности наложения адресных пространств разных плат. Платы Micro Channel характеризуются очень небольшими геометрическими допусками, что связано с использованием разъемов с расстоянием между контактами всего 1,27 мм.
EISA. Расширенная стандартная промышленная архитектура (Extended Industry Standard Architecture, EISA) явилась ответом производителей АТ-аналогов на наступление магистрали Micro Channel. Магистраль EISA была предложена в 1988 г. девятью фирмами, выпускающими АТ-совместимые компьютеры. Добавив к АТ-магистрали дополнительный разъем, разработчики EISA реализовали многие привлекательные черты магистрали Micro Channel, сохранив совместимость с существующими вставными платами AT. Таким образом, вы можете вставить стандартную плату AT в магистраль EISA и получить обычную машину AT. Однако при использовании с магистралью EISA специально разработанных для нее плат, магистраль поддерживает 32-бит передачу данных (с максимальной скоростью передачи 33 Мбайт/с), 32-бит адресацию памяти, несколько ведущих магистрали, программируемые прерывания по уровню или по перепаду, а также автоматическое конфигурирование платы.
Multibus I и II. Форматы магистрали Multibus, первоначально предложенные фирмой Intel, нашли применение во многих компьютерах. Исходная магистраль Multibus I имеет большие возможности, в том числе 16-разрядную шину данных, 24-разрядное адресное пространство и несколько ведущих на магистрали. Miltibus II предназначена для высокопроизводительных микропроцессорных систем и отличается 32-разрядными шинами адресов и данных, контролем четности, распределенным арбитражем, протоколами передачи сообщений. Магистраль использует 10 МГц тактовый генератор в синхронном режиме и может передавать до 40 Мбайт/с по последовательным адресам в режиме «блочной передачи». Так же, как и некоторые другие сложные магистрали, в Multibus II экономятся контакты путем мультиплексирования данных и адресов на подшине из 32 линий. В Multibus II используются также 96-контактные соединители DIN, укрепленные на платах, вместо торцевых плоских позолоченных соединителей; хорошо разработанный «составной» соединитель на плате обеспечивает большую надежность, и система соединения оказывается нечувствительной к искривлению плат и грубому обращению.
Хотя Multibus II отличается многими преимуществами, гибкость этой магистрали усложняет ее использование. Например, на магистрали отсутствуют обычные прерывания; вы «прерываете» путем запроса на захват магистрали и посылки затем сообщения в процессор о вашем желании прервать его работу! Для простых систем удобнее использовать более простую магистраль Multibus 1 (или какую-то другую того же класса).
NuBus. Это еще одна высокопроизводительная синхронная многопроцессорная магистраль с 32-разрядными мультиплексированными данными и адресами, соединителями DIN и высокой скоростью передачи данных (до 40 Мбайт/с в режиме блочной передачи). Как и в случае Multibus II, прерывания реализуются путем запроса на захват магистрали. Магистраль NuBus используется в старших моделях компьютеров Macintosh, где, к счастью, фирма Apple добавила к каждому разъему линию прерываний. Таким образом, каждый разъем для установки вставной платы имеет назначенный ему вектор; соответствующий обработчик прерываний определяет плату-источник прерывания без процедуры опроса, которая требуется лишь в тех случаях, когда плата содержит несколько прерывающих устройств.
Магистраль VME. Эта магистраль, как и NuBus или Multibus II, предназначена для многопроцессорных 32-разрядных систем. Однако в ней не используются мультиплексированные линии данных/адресов. Нет в ней и главного тактового генератора для синхронной передачи, поскольку для магистрали принят асинхронный протокол; это дает возможность без труда объединять процессоры, работающие с разными скоростями. Магистраль VME включает обычную многоуровневую систему прерываний IRQ-типа, с полным подтверждением прерывания (и линией INTR, образующей последовательную цепочку). Магистраль VME часто рассматривают, как альтернативную по отношению к Multibus; например, исходные компьютеры Sun фирмы Sun Microsystems использовали Multibus, в то время как в более поздних моделях Sun2 и Sun3 применена магистраль VME. Магистрали VME и Multibus II под одобрение фирм Motorola и Intel постоянно выясняют свои отношения в технической прессе с обличительными заявлениями и бранью.
Fastbus и Futurebus. Это весьма высокопроизводительные магистрали, работающие с ошеломляющей скоростью. Магистраль Fastbus использует платы большого размера (14x16 дюйм), ECL — драйверы и протоколы арбитража для работы с несколькими ведущими на магистрали. Сильной стороной этих магистралей является система магистральных взаимодействий с возможностью изощренной «географической» адресации за пределы собственно крейта плат.
Q-bus иVAXBI. Это патентованные магистрали компьютеров фирмы DEC. Магистраль Q-bus, использовавшаяся в машинах LSI-11 и ранних компьютерах Micro VAX, произошла от магистрали Unibus исходных машин PDP-11 фирмы DEC. Q-bus поддерживает 16-разрядные данные и 22-разрядную адресацию, асинхронный протокол с несколькими ведущими и многоуровневые прерывания IRQ-типа. VAXBI является высокопроизводительной магистралью с мультиплексированной 32-разрядной шиной данных/адресов, предназначенной для более совершенных машин VAX серии 8600.
10.16. Подключение к компьютеру периферийных устройств
Интерфейсы обычно изготавливаются в виде печатных плат, либо плат с накруткой (см. гл. 12), предназначенных для вставления в плоские разъемы («слоты») микрокомпьютера. Обычно в микрокомпьютере предусматривается некоторое количество свободных разъемов именно для этой цели (либо занятые разъемы допускают «расширение» и вставление новых плат), причем по всем разъемам разводятся сигналы магистрали и питающие напряжения. Некоторые машины используют «патентованные» магистрали (например IBM PC), другие базируются на стандартных микрокомпьютерных магистралях (например рабочая станция Sun3 с магистралью VME), наконец, в некоторых вообще не предусматривается дополнительных разъемов (например исходные машины Macintosh). Каждая магистраль рассчитана на платы некоторого стандартного размера (или размеров), от крошечных плат IBM PS/2 размером 3,2x11,5 дюйм до гигантских 14,4x15,9 дюйм плат Fastbus. Каждая плата, в зависимости от магистрали, для которой она предназначена, имеет вдоль одного края от 50 до 300 соединений либо в форме позолоченных печатных ламелей, либо в виде многоштырьковых соединителей, припаянных к плате; последние известны под именем «составных» (two-part) соединителей и, как правило, более надежны, чем печатные плоские разъемы. Имеющиеся на рынке интерфейсы для решения стандартных задач (диски, графика, связь, аналоговый ввод-вывод) обычно монтируются на платах, которые вставляются в свободные разъемы машины. Если интерфейс управляет периферийным устройством, они связываются кабелями; в тех случаях, когда у интерфейса очень много входов и выходов (как, например, у цифрового логического анализатора), он может соединяться кабелем с внешней частью в виде панели или коробки, где больше места для разъемов (и дополнительных схем). В любом случае обычно используется гибкий ленточный кабель, причем предусматриваются меры для снижения уровня перекрестных помех на сигнальных и стробирующих линиях.
Один из способов заключается в заземлении каждой второй линии в кабеле; другой предполагает использование гибкого кабеля, скрепленного с гибкой же металлической заземленной подложкой, которая уменьшает индуктивность и помехи и в то же время обеспечивает почти постоянный импеданс кабеля. Для обоих конструкций в продаже имеются многоконтактные «оконечные заземлители», которые подключаются к кабелю путем обжатия; смотрите каталоги AMP, Berg, Т&В Ansley, ЗМ и т. д. Альтернативой ленточному кабелю служит кабель, сделанный из многих скрученных пар, каждая из которых содержит одну сигнальную и одну заземленную линию. Кабель из скрученных пар выпускается во многих модификациях, включая щеголеватый плоский кабель, напоминающий ленточный (кабель Twist-'n-flat — «кручено-плоский» фирмы Allied/Spectra). В кабель через каждые полметра включается плоский нескрученный участок, на который можно надеть обычный обжимающий соединитель для ленточного кабеля. Поскольку для передачи данных между интерфейсной платой и устройством обычно используется протокол со стробированием, защищать все сигнальные линии от наводок нет необходимости. Защита требуется лишь для синхронизирующих импульсов и, других линий стробов и разрешений. Если линии имеют значительную длину, следует использовать согласованные нагрузки и комбинации приемников и драйверов, как это описано в разд. 9.14.
Нестандартные интерфейсы лучше всего выполнять таким же образом, либо путем разработки для них печатной платы, либо используя одну из универсальных интерфейсных плат, выпускаемых такими компаниями, как Douglas, Electronic Solutions и Vector. Эти пустые платы имеют места для подключения микросхем и других компонентов (включая оконечные заземлители для внешних кабелей) как припаиванием, так и накруткой (подробнее об этом см. в гл. 12). Некоторые платы содержат встроенные схемы для взаимодействия с магистралью, включая обслуживание прерываний и даже ПДП.
В некоторых случаях наилучшим решением является разработка интерфейса, частично располагаемого в компьютере, а частично-снаружи, как это показано на рис. 10.15.
Рис. 10.15. Структура разделенного интерфейса.
Тогда «компьютерная» часть интерфейса может включать, например, лишь простой параллельный порт ввода-вывода, либо в виде покупной платы, либо собственной разработки. Кабель, соединяющий две части интерфейса, оказывается простым; если требуется скоростная передача при большой протяженности кабеля, можно использовать высокопроизводительные комбинации драйверов/приемников, обсуждавшиеся в разд. 9.14 (например RS-232 или симметричные микросхемы 75S110, или даже волоконную оптику). Такой подход к конструированию интерфейсов может быть особенно полезен при работе со слабыми аналоговыми сигналами, поскольку в этом случае чувствительные к помехам линейные цепи можно удалить от рева наводок цифровых схем компьютера (и приблизить к источнику аналоговых сигналов); это также позволяет с особым вниманием отнестись к поддержанию «в чистоте» заземленных линий аналогового сигнала.
SCSI, IEEE-488 и другие интерфейсы. В продаже имеются буквально сотни вставных плат для распространенных магистралей вроде IBM PC, Multibus, VME и Q-bus, выполняющих необозримое множество функций. Эти платы недороги и просты в использовании, так что перед разработкой собственной платы вы должны сначала выяснить (а) нет ли такой же платы в продаже и (б) нельзя ли использовать в качестве «резидентной в компьютере» части вашего интерфейса простую плату параллельного порта, как это описывалось в предыдущем разделе. Есть и другая возможность-подключить ваше устройство к компьютеру через стандартный встроенный параллельный порт Centronics либо через последовательный порт RS-232 (см. разд. 10.19 и 10.20). Поскольку эти порты одинаковы на всех микрокомпьютерах, такое решение сделает ваше устройство переносимым, даже на микрокомпьютер с другой магистралью (или вообще без магистрали!). Если ваше устройство подключается к последовательному порту, оно, скорее всего, будет включать собственный микропроцессор, что даст вам право думать о нем скорее как о компьютере, чем о периферийном устройстве. Однако как мы покажем в следующей главе, разработка небольшого прибора, управляемого микропроцессором — дело забавное, простое и недорогое; собственно, нет никаких причин выделять микропроцессор среди других БИС, а их-то вы не колеблясь используете в своем приборе!
Развивая дальше предложенную идею, следует сказать, что имеется целый ряд стандартов на «кабельные интерфейсы», ставшие последнее время весьма популярными. Они называются SCSI (Small Computer System Interface-интерфейс малых компьютерных систем), IPI (Intelligent Peripherals Interface-интерфейс интеллектуальной периферии), ESDI (Enhanced Small-Disk Interface — улучшенный интерфейс малого диска) и IEEE-488 (известный также под именами HPIB и GPIB, General-Pur-Кабель — Внешняя часть интерфейса pose Interface Bus-интерфейсная магистраль общего назначения). Интерфейс SCSI (произносится «скази»), в особенности благодаря обилию дисков и другой периферии, подключаемой непосредственно к порту SCSI, стал стандартным элементом многих микрокомпьютеров. При этом для компьютеров, не имеющих встроенного порта SCSI, выпускаются вставляемые интерфейсные платы с этим портом.
SCSI является потомком SASI (Shugart Assosiates System Interface-простой параллельной магистрали, которую фирма Shugart придумала для своих дисководов жестких дисков) и в простейшем виде представляет собой байтовый двунаправленный параллельный протокол с квитированием. Интерфейс обеспечивает несколько режимов, включая синхронную и асинхронную передачу с симметричными или несимметричными драйверами; хотя первоначально он использовался для связи единственного ЦП с единственным диском, однако с его помощью можно несколько ЦП подключить к нескольким дискам. Типичные скорости передачи составляют 1,5 Мбайт/с для асинхронного режима и 4 Мбайт/с для синхронного; асинхронный протокол медленнее, так как в процессе каждой пересылки туда и сюда передаются сигналы квитирования. С несимметричными драйверами SCSI обеспечивает передачу на 6 м, а с симметричными на 24 м.
Магистраль IEEE-488 (первоначально — интерфейс HPIB фирмы Hewlett-Packard) была разработана для подключения лабораторных приборов к компьютеру. Интерфейс включает полный протокол связи по магистрали нескольких приборов и использует терминологию локальных сетей. IEEE-488 занимает прочные позиции в инструментальной технике; фирмы Hewlett-Packard, Keithley, Philips/Fluke, Tektronix и Wavetek комплектуют этим интерфейсом большую часть выпускаемых ими приборов. Платы с интерфейсом IEEE-488 выпускаются почти для всех микрокомпьютеров. В разд. 10.20 мы еще вернемся к обсуждению интерфейсов SCSI и IEEE-488.
Системные концепции программного обеспечения
В этом разделе мы обсудим некоторые общие аспекты программирования для малых компьютеров, имея в виду, что изучение средств связи с компьютером имеет мало смысла, если вы не знакомы с иерархией программ, фактически вызывающих к жизни компьютер. Нам в особенности хотелось бы остановиться на таких важных вопросах, как программирование, операционные системы, файлы и использование памяти. Очень легко унестись в царство мечты, восторгаясь красотой аппаратного обеспечения компьютера и недооценить важность хорошего программного обеспечения. Именно программное обеспечение придает компьютеру крылья, и хорошая операционная система вместе с пакетом «утилит» необходимы ему, как воздух.
Рассмотрев программное обеспечение и системы программирования, мы закончим главу разделом о принципах передачи данных, остановившись на стандартизованном последовательном протоколе ASCII RS-232, параллельном порте Centronics, других возможностях параллельной передачи данных (SCSI, IPI, GPIB) и, наконец, на локальных сетях.
10.17. Программирование
Язык ассемблера. Как уже упоминалось выше, ЦП компьютера распознает определенные комбинации бит, как команды, и действует в соответствии с их значением. Однако этим двоичным машинным языком пользуются крайне редко. Обычно вы составляете программы на мнемоническом языке ассемблера (как это было сделано в приводившихся ранее примерах программирования интерфейсов), а специальная программа, называемая ассемблером, преобразует их в выполнимые машинные коды. Язык ассемблера очень близок к машинному языку; каждая команда языка преобразуется непосредственно в одну или несколько строк машинного кода (из которых первая обычно представляет код операции, а последующие описывают адресацию переменных или содержат константы). Программирование на языке ассемблера позволяет получить максимально эффективную программу и дает возможность обращения к флагам и регистрам, что недоступно из языков высокого уровня. Однако такое программирование утомительно, как это показывают приведенные примеры, и для решения большинства задач (особенно требующих значительного объема вычислений) более целесообразно использовать компилятор или интерпретатор с языка высокого уровня, такого как Си или Фортран, а к процедурам на языке ассемблера обращаться лишь в случае необходимости.
Компиляторы и интерпретаторы. Си, Фортран, Паскаль и Бейсик — примеры популярных языков высокого уровня. При составлении программы вы можете использовать алгебраические выражения вроде
χ = (—Ь + sqrt (b*b — 4*а*с))/(2*а)
и управляющие структуры типа if…elseif… else, for…, while… и do…. Вам не приходится гонять туда и обратно крошечные порции информации объемом 1 байт или заботиться об адресации, сохранении регистров и прочем; вы просто объявляете переменные и массивы с указанием типов и размеров, а затем используете их в арифметических и логических выражениях. Не жизнь, а малина.
Выше шла речь об исходном тексте, который можно преобразовать в выполнимую программу двумя способами. Исходные программы на языках Си или Фортран компилируются, т. е. преобразуются специальной программой (компилятором языка) в строки на языке ассемблера; затем программа ассемблера переводит этот промежуточный язык ассемблера в машинный язык[7]. Программы же на языках Бейсик и АПЛ обычно интерпретируются; вместо преобразования исходной программы в программу на языке ассемблера интерпретатор анализирует предложения программы и выполняет соответствующие машинные команды.
В целом интерпретация занимает гораздо больше времени, чем компиляция. Поскольку, однако, в случае интерпретации отсутствуют процессы компиляции, ассемблирования или компоновки (о компоновке см. ниже), программу можно запустить немедленно после ее ввода в машину. Интерпретирующие программы часто включают простые редакторы, удобные для быстрой модификации программы перед ее повторным пуском в процессе отладки. На заре микрокомпьютерной техники, когда жесткие диски были редкостью, интерпретатор Бейсик приобрел широкую популярность, поскольку он работает целиком в памяти; этому можно противопоставить утомительный многоступенчатый процесс компиляции. Однако сегодня быстрые диски и эффективные компиляторы снимают с нас все заботы. Любопытно отметить, что современные компиляторы часто следуют примеру интерпретирующей системы Turbo Pascal фирмы Borland и предоставляют вам «среду программирования», в которой можно без всяких усилий переходить от редактора к выполняемой программе. Если программа натыкается на ошибку, система возвращает вас в редактор и отмечает при этом неправильное предложение; такого рода системы включают отладчики, библиотекари и другие полезные и приятные средства.
Очевидным любимцем серьезных программистов является язык Си, сочетающий в себе мощность языка высокого уровня с красотой структурированных языков и гибкостью программ на языке ассемблера, обеспечивающих доступ к отдельным битам. Однако в научных приложениях львиная доля программирования все еще выполняется на языке Фортран.
Компоновщики и библиотеки. Ассемблер образует программу на машинном языке (собственно говоря, не совсем; ее часто называют «настраиваемым» или «перемещаемым»[8] модулем) из программы на языке ассемблера, образованной компилятором, или из отдельных подпрограмм, непосредственно написанных на этом языке. Кроме этого, обычно имеются программы, используемые отдельными командами языка высокого уровня. Так, в программе на языке Си может потребоваться обратиться к математической функции вроде sqrt (вычисление квадратного корня), или к сонму функций ввода-вывода, таких как printf или fopen. Весь бюрократический кошмар получения из «библиотеки» необходимых подпрограмм (в объектной форме), а затем настройки переходов и адресаций в программе, чтобы вся эта каша разместилась в памяти должным образом, берет на себя программа, называемая компоновщиком[9]).
В функции компоновщика входит назначение конкретных числовых значений ссылкам на ячейки памяти и адресам переменных в ассемблированной программе, и сделать это компоновщик может, только выяснив, какая программа вызывает какую и сколько места занимает каждая программа в памяти. Именно поэтому программа на машинном языке, получаемая с выхода ассемблера, должна быть настраиваемой, так же, как и ассемблированные подпрограммы, хранящиеся в различных библиотеках [обычно их несколько — библиотека встроенных функций компилятора, библиотека ввода-вывода, математическая библиотека, библиотека системных вызовов и, возможно, созданная дома (или купленная в магазине) библиотека полезных подпрограмм].
Редакторы и форматирующие программы. В доисторическую эпоху (до 1970 г.) вы могли наткнуться на программиста, несущего колоду перфокарт. Действительно, вы писали программу от руки на бланках программирования, затем пробивали, ее (или платили кому-то за пробивку) на «картах IBM» — аккуратных прямоугольниках из тонкого картона пастельных оттенков. В наши дни даже первоклашки умеют работать с текстовыми редакторами, обеспечивающими универсальный метод ввода программ в машину. Ветераны (те, кому за 30) помнят еще первые неуклюжие «интерактивные» редакторы, с помощью которых можно было создать и модифицировать текстовый файл; от этого файла по причинам, ведомым лишь самому редактору, вы всегда могли наблюдать лишь кусочек. Дан Ланкастер искушал нас своей «телевизионной пишущей машинкой», которая позволяла вывести на телевизор строку текста. И больше ничего. Ни редактирования, ни памяти, ни ничего. Поэтому легко поверить, что наш восторг не имел границ, когда мы впервые познакомились с «полноэкранным» редактором.
Хороший редактор (а сейчас они все хорошие) позволяет вам вводить и корректировать текст по мере его ввода, искать требуемые слова, изменять текст, перемещать блоки текста, открывать несколько окон для работы с несколькими файлами и создавать «макроопределения» для выполнения сложных манипуляций. Экран быстро отражает вносимые в текст изменения, даже если вы добавляете строки в начале большого файла. Даже очень большой размер файлов не замедляет процесса редактирования.
Универсальный редактор не знает, да и не интересуется тем, что вы пишите; это может быть программа, или сонет, или книга. Редактор просто создает текстовый файл в соответствии с вашими инструкциями, вводимыми с клавиатуры. Если файл состоит из предложений языка программирования, компилятор, интерпретатор или ассемблер читает его непосредственно. Если, с другой стороны, файл представляет собой текст, который вы хотите напечатать, у вас есть две возможности: прямо послать файл на принтер или дополнить его информацией о форматировании и передать форматирующей программе, которая скажет принтеру, как именно следует печатать текст. Хорошая программа форматирования заботится о полях, выравнивании строк, выделении разного места под буквы разной ширины, смене шрифтов, курсиве, жирном тексте, подчеркивании и т. д. Часто редактор и программа форматирования объединяются, причем иногда вы можете посмотреть на экране, как в действительности будет выглядеть напечатанная страница текста [это средство называется WYSIWYG (произносится «визивиг»), What You See Is What You Get-что вы видите, то вы и имеете]; однако чаще экран лишь частично отображает окончательный вид печатной страницы. Наиболее совершенные редакторы могут вставлять в текст математические и научные формулы. Для получения оригинал-макета вы вводите текст с клавиатуры наборной машины, которая сама выполняет экспонирование фотобумаги или фотопленки; лазерные или электролюминесцентные принтеры обеспечивают весьма приличное качество печати при умеренной цене и высокой скорости; ударные матричные принтеры относятся к самым дешевым, и результат оказывается соответствующим.
Редакторы, выполняющие форматирование, имеют характерные имена, например, MacWrite, Manuscript, Microsoft Word, Sprint, WordPerfect.
К популярным программам форматирования (которые могут работать и с текстом и с формулами) относятся ТЕХ и Troff. Одно предупреждение: в процессе создания текста (в противоположность программам) большинство редакторов с форматированием включают в поток редактируемого текста необычные символы, с помощью которых отмечается, например, курсив или временный конец строки. Эти символы не принимаются компиляторами или ассемблерами. Если вы не хотите, чтобы компилятор подавился вашей программой, вы должны создать текст без всяких упражнений, для чего запустить редактор в самом простом режиме «чистого» текста.
Вот еще пара бесплатных советов: а) найдите хороший редактор и держитесь его; б) не пытайтесь убедить коллег, что ваш редактор лучше какого-нибудь другого.
10.18. Операционные системы, файлы и использование памяти
Операционные системы. Из предыдущих обсуждений можно сделать вывод, что пользователю микрокомпьютера приходится часто запускать разнообразные программы, которые, к тому же, должны обмениваться между собой данными. Если, например, вам надо написать программу, то вы начинаете с запуска текстового редактора и создаете с его помощью текстовый файл, вводя строки программы с клавиатуры (хорошие программисты, насколько мы можем об этом судить, никогда не берут в руки карандаш). Сохранив на время этот файл, вы вызываете программу компилятора и компилируете сохраненный текстовый файл, чтобы получить файл с программой на языке ассемблера. Этот файл вы тоже сохраняете и запускаете ассемблер, который из файла с программой на языке ассемблера создает файл с перемещаемой программой на машинном языке. Наконец, компоновщик объединяет перемещаемую программу с другими ассемблированными подпрограммами и библиотечными программами и выдает выполнимую программу, которую вы (наконец-то!) запускаете. Для выполнения всех этих операций вам нужна сверх-программа, которая жонглировала бы всем этим хозяйством, отыскивая файлы на диске, загружая их в память и передавая управление соответствующим программам. Хотелось бы также избавиться от необходимости включения в каждую программу всех команд, требуемых для записи или чтения диска (включая обработку прерываний, загрузку регистров команд и состояний и проч.) или выполнения других операций по пересылке данных. Все это (и многое другое) входит в функции операционной системы, обширной программы, наблюдающей за загрузкой и запуском пользовательских программ (т. е. тех, которые вы пишите) и утилит (редактора, компилятора, ассемблера, компоновщика, отладчика и др.), а также управляющей вводом-выводом, системой прерываний и различными манипуляциями с файлами. Операционная система включает монитор для связи с пользователем (именно ему вы говорите, что надо вызвать редактор, или компилятор, или запустить программу) и набор «системных запросов», с помощью которых выполняемая программа может прочитать или записать строку текста на некотором устройстве, определить текущее время суток, передать управление другой программе, позволить нескольким «процессам» в многозадачной среде разделять между собой время ЦП или обмениваться данными, загружать программные «оверлеи» и т. д. Хорошая операционная система выполняет всю работу по управлению вводом-выводом, включая «спулинг» (буферизацию входных или выходных данных, позволяющую программе выполняться в то время, когда данные читаются или записываются на некотором устройстве). Выполняясь под управлением операционной системы, программа пользователя может не заботиться о прерываниях; прерывания обслуживаются системой и затрагивают ход программы только если программа сама хочет принять участие в обработке прерываний от конкретного устройства. Вершиной системного программирования является «разделение времени» (использование одного компьютера многими пользователями одновременно), когда диск служит в качестве «виртуальной памяти» для программ неограниченного размера. Примерами популярных микрокомпьютерных операционных систем являются MS-DOS (используемая на машинах IBM PC и их аналогах), OS/2 (предназначенная для машин PS/2, преемников IBM PC), UNIX (разработанная в Bell Labs и широко используемая на машинах VAX, а также на компьютерах с микропроцессором 68000), MacOS и VMS (операционная система машин VAX, предоставляемая компанией).
Файлы. В качестве среды для массовой памяти широчайшее распространение получили магнитные диски, как гибкие («флоппи»), с контактирующими головками чтения-записи, так и жесткие («винчестер»), с плавающими головками. Типичные емкости лежат в пределах 1 Мбайт для гибких дисков и 20-500 Мбайт для небольших винчестеров. Данные организуются в виде файлов. Все машинные материалы — тексты, программы пользователей, утилиты (т. е. редактор, ассемблер, компилятор), библиотеки и проч., хранятся одинаковым образом и составляют файлы. Хотя среда массовой памяти разделяется на физические блоки, или секторы жестко определенного размера (обычно размер сектора составляет 512 байт), сами файлы могут иметь любую длину. Операционная система милосердно берет на себя всю заботу об адресации к дорожкам и секторам; она извлекает требуемые данные, если вы указываете имя файла. Имеется масса любопытнейших деталей файловой организации, которые мы не можем здесь обсудить из-за недостатка места. Важно только понять, что все эти программы (редактор, компилятор и др., так же как и исходный текст, скомпилированная программа и даже данные) хранятся на некотором устройстве массовой памяти как поименованные файлы, и система умеет извлекать их для вас (прочитайте, однако, в следующем разделе об электронных дисках). Осуществляя свои служебные обязанности, система выполняет огромный объем работ по обслуживанию файлов.
Недавние прибавления семейства устройств массовой памяти имеют в своей основе потребительскую электронику и обеспечивают очень высокую плотность хранения в маленьком объеме. Сюда относятся: (а) оптические диски вроде тех, что используются в проигрывателях, с емкостью около гигабайта. Они служат в качестве ПЗУ, WORM-памяти (Write Once, Read Many — записать один раз, прочитать многократно) или как полностью стираемая память для записи/чтения; (б) видеокассеты формата VHS или 8 мм, которые позволяют иметь гигабайты памяти с возможностью записи/чтения на недорогой ленте. Основной недостаток кассет — большое время доступа. Обе упомянутые системы памяти используют изощренные методы коррекции ошибок, возникающих из-за дефектов поверхности и по другим причинам; в обычных аудио/видеоприменениях эти ошибки не имеют особого значения, однако при хранении данных или программ они, не будучи исправлены, носили бы разрушительный характер.
Использование памяти. Файлы хранятся в устройствах массовой памяти, однако программы в процессе их выполнения должны находиться в оперативной памяти. Простую автономную программу вроде той, что будет рассмотрена в следующей главе, можно загрузить почти в любое место памяти. Однако в компьютере с операционной системой всегда имеются специальные области, зарезервированные для выполнения специальных функций. Например, сама операционная система MS-DOS, вместе с ее интерпретатором команд, дисковыми буферами, стеком и прочим, обычно загружается в начало памяти, заполняя при этом векторами прерываний выделенные ячейки, адреса которых известны ЦП, в то время как часть MS-DOS, заключенная в ПЗУ, располагается в конце памяти, за областью, отведенной под видеобуферы дисплея. Если компьютер работает под управлением операционной системы, выделением памяти под программы пользователя ведает система. Понимание этого момента особенно важно при использовании ПДП; в этом случае вы должны предоставить системе возможность определить, где будет располагаться ваш буфер данных, и использовать этот адрес в качестве стартового для блочной передачи по каналу ПДП.
Ситуация еще более усложняется, если программы по ходу выполнения выгружаются и загружаются (так называемый «свопинг») или перемещаются по памяти. В памяти одновременно может находиться много программ, которым в многозадачном режиме выделяются «кванты времени» ЦП. К тому же большинство микрокомпьютеров используют «отображение памяти», при котором физические адреса памяти отображаются на различные логические адреса (т. е. те, по которым программа располагается с ее точки зрения). Если всего сказанного недостаточно, чтобы сбить вас с толку, подумайте о «виртуальной памяти», используемой в более совершенных моделях микрокомпьютеров, когда ваша программа разделяется на небольшие «страницы», каждая из которых в любой момент времени может быть, а может и не быть в памяти; программа «листает» эти страницы, гоняя их между памятью и диском в безумном пароксизме бешеной активности.
Обсуждение памяти нельзя считать законченным, если не упомянут электронный (псевдо) диск, который можно организовать даже на относительно простых машинах, если только хватит оперативной памяти. Идея псевдодиска заключается в такой организации памяти, чтобы с точки зрения операционной системы она выглядела, как диск; в эту псевдодисковую память можно затем загрузить часто используемые программы. Такая процедура может оказаться полезной при разработке программ, когда приходится постоянно обращаться к редактору, компилятору, ассемблеру и компоновщику. При использовании псевдодиска работа идет значительно быстрее, поскольку отпадает необходимость в обращениях к настоящему диску. Правда, если произойдет отказ компьютера, вы потеряете все, что сделали, так как файлы не сохраняются на диске автоматически. Схожая идея лежит в основе кеш-памяти; в этом случае область ОЗУ хранит результаты последних обращений к диску.
Драйверы. Компьютерный мир полон разнообразия — каждый месяц мы сталкиваемся с новинками технологии в области запоминающих устройств (магнитных, оптических), принтеров (лазерные, электролюминесцентные), сетей и проч. Различное электронное оборудование требует и различных управляющих сигналов с разными требованиями к временной синхронизации и т. д. Это могло бы привести к серьезным программным трудностям, так как программное обеспечение, разработанное, например, для матричного принтера, абсолютно не годилось бы для лазерного наборного автомата.
Решение лежит в использовании драйверов, специальных программ, предназначенных для организации единого программного интерфейса с разнообразным оборудованием. Так, например, наборный язык ТЕХ создает файлы в формате dvi (device-independent-не зависящий от устройств); драйвер принтера (специфический для каждого используемого вами принтера) пережевывает файл dvi и выплевывает соответствующие принтерные коды, заставляющие принтер работать должным образом. ТЕХ может работать с любым принтером, если только к этому принтеру у вас есть «dvi-транслирующий» драйвер. Сказанное относится и к устройствам массовой памяти, таким, как дисководы дисков; в результате вы можете взять любой из имеющегося на рынке множества дисков и подключить его к любому компьютеру — типа PC или Macintosh или с системой UNIX.
Драйверы являются частью системного программного обеспечения и средний пользователь компьютера может и не подозревать об их функционировании. Если, однако, вы разрабатываете новое оборудование для компьютера, вы, скорее всего, вскоре станете экспертом по драйверам, так как для того, чтобы заставить вашу аппаратуру играть заодно со всей остальной командой, вам придется написать для нее ваши собственные драйверы.
Принципы передачи данных
Простая вычислительная система обычно комплектуется устройствами массовой памяти (диски, ленты), интерактивными устройствами (алфавитно-цифровой терминал), а также устройствами для получения твердой копии (принтеры, плоттеры). Кроме того, в систему может входить модем (модулятор-демодулятор), чтобы компьютер мог «позвонить» другому компьютеру по обычной телефонной линии. Наконец, все более популярными становятся локальные вычислительные сети (ЛВС). Включив компьютер в ЛВС, вы получите доступ к файлам, хранящимся на остальных компьютерах сети и, кроме того, право совместного использования дорогостоящих ресурсов (больших дисков, ленточных магнитофонов, принтеров и наборных машин). Во всех этих случаях ваш ЦП должен пересылать данные. Посмотрим, как это делается.
Несовместимость. В мрачные времена компьютерного средневековья (скажем, до 1975 г.) ситуация была довольно унылой. Каждое семейство компьютеров использовало собственную структуру магистрали и собственный протокол обмена (не говоря уже о языках программирования). Вы покупали (или иногда делали) интерфейсные платы, подходящие к данному компьютеру и связывали эти платы с самими периферийными устройствами самодельными кабелями. Такая всеобщая несовместимость распространялась и на сами периферийные устройства: ленточный магнитофон нельзя было подключить к интерфейсу диска, а терминал — к интерфейсу плоттера и т. д. Дело осложнялось еще и тем, что периферийные устройства, выпускаемые разными производителями, часто использовали разные сигналы и соглашения для передачи данных и были несовместимы «на уровне разъемов».
Совместимость. В какой-то степени отмеченная выше несовместимость была неизбежна, так как с целью повышения производительности различные периферийные устройства по-разному пересылают свои данные. Например, магнитный диск для передачи слов с высокой скоростью использует параллельный формат шириной 1 байт, а соответствующий интерфейс, как отмечалось выше, должен обладать прямым доступом к памяти; в противоположность этому клавиатура терминала передает данные в стандартном бит — последовательном алфавитно-цифровом формате с использованием более простого программного ввода-вывода по прерываниям. Хотя какая-то доля этой несовместимости сохранилась и до настоящего времени, в целом ситуация существенно улучшилась, так как большая часть выпускаемого оборудования использует ограниченное число общепринятых стандартов на передачу данных. Появление компьютеров IBM PC привело к определению магистрали и долгожданных форматов для малых машин, в то время как высокопроизводительные магистрали общего назначения вроде VME или Multibus стали основой ряда других компьютеров. Многие фирмы выпускают интерфейсы для этих магистралей (да и для других, вроде Q-bus машин фирмы DEC), что существенно упростило их использование. Что еще более важно, производители периферийного оборудования договорились об ограниченном числе стандартизованных «кабельных интерфейсов». Наиболее важными являются (а) последовательный формат RS-232, обычно используемый с алфавитно-цифровыми данными в коде ASCII; (б) формат Centronics для параллельного принтера; (в) параллельная магистраль SCSI; (г) магистраль IPI; и (д) приборная магистраль IEEE-488 (GPIB).
Рассмотрим эти стандарты, заключив главу кратким обсуждением двух популярных локальных сетей, Ethernet и локальной сети с маркерным кольцом.
10.19. Последовательная связь и коды ASCH
Как уже упоминалось, передача алфавитно-цифровой информации между компьютером и устройствами с умеренным быстродействием чаще всего выполняется с помощью 7-бит кода ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией), при бит-последовательной передаче по единственной линии.
В табл. 10.3 представлен список 7-бит кодов. Устройства, обменивающиеся данными с помощью последовательной ASCII-передачи, почти всегда посылают 8 бит, но этот 8-й бит не является частью кода ASCII; часто он представляет бит аппаратного контроля четности (иногда четности, иногда нечетности, хотя чаще всего он устанавливается в 0 и игнорируется), но иногда этот бит используется как «мета-клавиша» регистра для образования дополнительных 128 символов, которые могут быть греческими буквами, альтернативным шрифтом и д. Для этих дополнительных символов не существует стандарта.[10] (Восьмой бит используется и в тех случаях, когда по последовательной связи передаются двоичные данные; это, однако, не всегда возможно, так как для аппаратуры последовательной связи столь привычно отбрасывать этот 8-й бит при передаче кодов ASCII, что она может не допустить его использования в качестве элемента данных.)
Несколько замечаний по поводу таблицы кодов ASCII. Буквы верхнего регистра (прописные) начинаются с кода 40Н; установка в 1 бита 5 генерирует соответствующие буквы нижнего регистра (строчные). Код ASCII цифры равен самой цифре плюс 30Н. Первые 32 символа ASCII являются «неотображаемыми», управляющими символами. Некоторые из них достаточно важны, чтобы удостоиться собственных клавиш на клавиатуре, например CR (клавиша «возврата каретки», которая может называться return — возврат, поскольку у клавиатур отсутствует каретка), BS (backspace — возврат на шаг), НТ (tab — табуляция) и ESC (escape — выход). Любые управляющие символы, включая и перечисленные выше, можно ввести, нажав (и не отпуская) клавишу CTRL и введя соответствующую букву на верхнем регистре; например, CR эквивалентно CTRL-M (попробуйте это на своем компьютере). Управляющие символы используются для управления печатью или выполнением программ; они могут также восприниматься в качестве управляющих программ, которые предназначены для обработки алфавитно-цифровых символов, например, программами редакторов.
Помимо отмеченных выше, к важным символам можно отнести: NUL (ноль), символ, состоящий из одних двоичных нулей, и используемый иногда для разделения символьных строк; FF (Form Feed — перевод страницы), которым начинается новая страница; EXT (End of Text — конец текста, нежно называемый «control С»), который воспринимается многими операционными системами, как команда завершения текущей программы; DC3 (control S), используемый в качестве «мягкого рукопожатия» для приостановки последовательной передачи; DC1 (control Q), символ, возобновляющий передачу. К сожалению, в таблице кодов ASCII отсутствуют индексы, показатели степени, а также греческие буквы и научные знаки. Было бы полезно иметь по меньшей мере знаки π, μ, Ω и символ градусов (°), которые часто встречаются в технических текстах. Разумеется, с помощью управляющих символов (или их последовательности) можно указать на необходимость смены шрифта или алфавита. Так обычно и делают в текстовых процессорах, где после ввода управляющего символа программа форматирования воспринимает последующие символы ASCII по-иному. Возможно, такой подход является наилучшим решением проблемы, так как при работе с техническими текстами вряд ли вам надолго хватит одного фиксированного набора ASCII-символов, даже очень большого.
Заметьте, что компьютерные клавиатуры часто конструируются так, что они не являются просто генераторами кодов ASCII (одна клавиша - один код); общепринятой методикой является генерация каждой клавишей некоторых определенных кодов при нажатии и отпускании. Специальное системное программное обеспечение («драйвер клавиатуры», см. разд. 10.18) транслирует затем эти коды в обычные коды ASCII. Такой подход существенно повышает гибкость процедуры ввода с клавиатуры, так как возникает возможность настройки драйвера клавиатуры с целью отработки автоповтора клавиш или многоклавишных комбинаций, переотображения всей клавиатуры (например, в клавиатуру Дворака) и организации «горячих клавиш» и т. д.
Бит-последовательная передача. Код ASCII (или любой другой алфавитно-цифровой код) может быть передан либо группой из 8 параллельных бит (по 8 отдельным проводам), либо последовательностью из 8 бит, один за другим. Для организации передачи со скоростями от низкой до средней более удобной является экономичная в смысле используемых проводов последовательная связь. Модем (подробнее о модемах см. ниже) преобразует последовательность бит в звуковой сигнал и наоборот (например, используя одну звуковую частоту для «1» и другую для «0»), который затем может быть послан в телефонную линию; здесь так же, естественно, используется последовательная передача. При этом используется стандартный протокол и стандартные скорости передачи. При асинхронной передаче к концам каждого 8-бит символа присоединяются старт-бит и стоп-бит (иногда два), образуя группу («кадр») из 10 бит. Передатчик и приемник используют фиксированную скорость из допустимого набора; наиболее популярны скорости передачи 300, 1200, 2400, 4800, 9600 и 19200 бод (= тактов в секунду). На рис. 10.16 приведен формат кадра последовательной передачи.
Рис. 10.16. Формат кадра при последовательной передаче данных (интерфейс RS-232).
Когда передача данных отсутствует, передатчик находится в состоянии «маркера» (терминология осталась еще от времен телетайпов). Каждый символ начинается со старт-бита, за которым следуют 8 бит кода ASCII, младшим битом вперед (обычно в эти 8 бит входят 7 бит данных плюс 1 необязательный бит контроля четности) и, наконец, стоп-бит; последний должен поддерживаться по меньшей мере один такт, но может длиться сколько угодно. На приемной стороне УАПП (универсальный асинхронный приемо-передатчик, см. разд. 11.11), работая с той же частотой, синхронизируется к каждой 10-бит группе и преобразует входную последовательность в 8-бит параллельные группы данных. Поскольку приемник заново синхронизируется к старт- и стоп-битам каждого символа, ему не требуется очень высокая точность тактовых сигналов; равенство и стабильность частот передатчика и приемника должны обеспечивать рассогласование не более доли длительности одного бита на длине кадра, т. е. не более нескольких процентов.
Приемный УАПП запускается фронтом старт-бита, выжидает половину длительности бита чтобы удостовериться, что старт-бит еще присутствует, а затем фиксирует значение данных в середине каждого бита. Стоп-бит завершает каждый символ и одновременно выполняет роль промежутка между кадрами, если следующий символ не посылается немедленно за предыдущим. Приемный УАПП проверяет наличие уровня стоп-бита через 10,5 длительностей бит после фронта старт-бита, что помогает удостоверить правильность посылки символа. «Разрыв» (break) представляет собой длительный пробел, который не может возникнуть в ходе нормальной передачи символов. На рынке имеются программируемые тактовые генераторы (т. е. программируемые делители частоты), которые преобразуют входную частоту от генератора в стандартный набор тактовых частот, определяющих скорость передачи, причем конкретный коэффициент деления определяется входным двоичным кодом. Большинство современных УАПП (например, двухканальная синхронно-асинхронная микросхема 8530 фирмы Zilog) включает внутренние программно-управляемые генераторы скорости передачи.
RS-232. Сами сигналы при последовательной передаче ASCII-кодов могут посылаться различными способами. Самый первый из них, предложенный еще несколько десятков лет назад, состоит в переключении, с выбранной скоростью передачи, тока величиной 20 (или иногда 60) мА. Это так называемая «токовая петля». Иногда этот способ реализуется, как альтернативный вариант, но для умеренных скоростей передачи он был вытеснен стандартом ассоциации электронной промышленности (EIA) RS-232C 1969 г. (и последующим стандартом RS-232D 1986 г.), в которых передача осуществляется биполярным напряжением. Стандарт RS-232 определяет характеристики и драйверов, и приемников. Драйвер должен создавать уровни напряжения от +5 до +15 В (логический вход низкого уровня) и от — 5 до —15 В (логический вход высокого уровня) на нагрузке от 3 до 7 кОм с крутизной перепада менее 30 В/мкс и способностью противостоять замыканию на любой другой выход даже со столь неблагоприятными характеристиками, как 5 В при 500 мА; приемник должен представлять нагрузочное сопротивление от 3 до 7 кОм, преобразующее входное напряжение от +3 до +25 В в низкий логический уровень, а входное напряжение от —3 до —25 В в высокий логический уровень. Заметьте, что логическая 1 преобразуется драйвером RS-232 в отрицательный уровень, называемый «маркером»; логический 0 представляет собой положительный уровень («пробел»). При передаче с помощью токовой петли ток течет в течение логической 1 (маркер) и прекращается на время действия логического 0 (пробел).
Для приемников RS-232 характерно наличие гистерезиса входного напряжения; некоторые приемники позволяют подключать конденсатор с целью увеличения постоянной времени и уменьшения чувствительности к шумовым импульсам. Стандартные микросхемы приемника и драйвера RS-232 описаны в разд. 9.14 и 14.17. При расстояниях 10–20 м интерфейс RS-232 обеспечивает высокое качество передачи на скоростях вплоть до 38400 бод даже при использовании неэкранированного многожильного кабеля; связь на короткие расстояния иногда осуществляют со скоростью 115200 бод.
Стандарт RS-232 определяет также тип разъема и назначение его контактов. К сожалению, это описание не полно! Это вечный источник неприятностей, потому что, вообще говоря, два устройства с интерфейсами RS-232, соединенные друг с другом, работать не будут. Это настолько неожиданно и неприятно, что читатели предыдущего издания этой книги даже обвинили нас, потому что мы не написали в книге, как бороться с этой несовместимостью. К счастью для вас, вы читаете второе издание. Разгадка состоит в следующем.
В этой истории с последовательным интерфейсом имеется два источника неприятностей: (а) Определены два типа устройств, причем входные контакты устройств одного типа соответствуют выходным контактам другого; вам может понадобиться связать между собой два устройства одного типа или два взаимно дополняющих устройства; (б) Имеется пять сигналов квитирования; одни устройства генерируют эти сигналы и ожидают их приема, другие же игнорируют соответствующие входы (и ничего не подают на выходы). Чтобы все у вас работало, в этих деталях придется разобраться. Приступим.
Интерфейс RS-232 был разработан для связи DTE (Data Terminal Equipment — оконечное оборудование данных, ООД) с DCE (Data Communication Equipment — аппаратура передачи данных, АПД). Терминал всегда выглядит, как DTE, а модем всегда выглядит, как DCE; однако другие устройства, включая микрокомпьютеры, могут быть и тем, и другим. Компьютер IBM PC выглядит как DTE и укомплектован вилочной частью разъема, но большинство больших компьютеров имеют выход типа DCE. Подключая DTE к DCE, вы просто соединяете одноименные контакты разъемов DB-25 (которые могут быть как вилочными, так и розеточными!), и, если вам повезет, все будет работать. Мы говорим «если повезет», потому что результат все еще зависит от того, какие квитирующие сигналы одно устройство ожидает от второго, и устанавливает само. (Само собой разумеется, что решив проблему с кабелем, вы еще должны выбрать скорость передачи, четность и некоторые другие программные параметры!) С другой стороны, связывая два одинаковых устройства, вы не можете соединить одноименные контакты, потому что тем самым вы соедините вместе два выхода: DTE передает через контакт 2 и принимает через контакт 3, a DCE делает как раз наоборот. Поэтому такую пару устройств следует соединять кабелем (так называемым «нуль-модемом»), в котором контакты 2 и 3 соединяются друг с другом крест-накрест. К сожалению, это еще не все
В табл. 10.4 показаны все основные линии. TD и RD - это линии передачи и приема данных; RTS и CTS — запроса передачи и готовности передачи; DTR, DSR и DCD — «оконечное оборудование данных готово», «аппаратура передачи данных готова» и «детектор принимаемого линейного сигнала». В разъеме имеются две земли: защитное заземление (или корпус, контакт 1) и сигнальное заземление (контакт 7); в большинстве машин их просто соединяют вместе. Пять сигналов, не относящихся к данным, являются управляющими сигналами квитирования. Устройство DTE устанавливает RTS и DTR, когда оно готово к передаче, а устройство DCE устанавливает CTS и DSR, когда оно готово к приему. Некоторые устройства DTE требуют, чтобы до выполнения ими любых действий был установлен их вход DCD. На всех сигнальных линиях действуют биполярные уровни RS-232, причем установленные данные (TD, RD) имеют отрицательную полярность, а установленные управляющие сигналы (RTS, CTS, DSR, DTR, DCD) — положительную.
Заметьте, что названия сигналов имеют смысл только если их рассматривать со стороны DTE. Например, контакт 2 называется TD (Transmitted Data-передаваемые данные) на обеих сторонах, несмотря на то, что DTE устанавливает данные, a DCE принимает их. Поэтому название контакта не говорит вам однозначно, вход это или выход - вам еще надо знать, рассматривает ли себя устройство, как DTE или DCE (вы можете обойти это затруднение с помощью вольтметра!).
Если бы все устройства RS-232 устанавливали все сигналы, требующие установки, и анализировали состояние всех сигналов, требующих анализа, то всегда можно было бы просто соединить соответствующие контакты (для пары DTE-DCE) или соединить соответствующие контакты крест-накрест (для пар DCE-DCE или DTE-DTE). Если, однако, вы к устройству, игнорирующему все линии квитирования, подключите устройство, реализующее полный протокол квитирования, ничего хорошего из этого не получится. Разрабатывая стратегию своих действий, вы должны опираться на реальность; иногда для этого требуется некоторая хитрость. На рис. 10.17 показаны схемы кабелей, обеспечивающих правильные соединения для всех (ну, скажем, почти всех) ситуаций.
Рис. 10.17. Кабели RS-232, обеспечивающие правильные соединения. Указанные номера контактов соответствуют 25-контактным разъемам DB-25; разводка альтернативного 9-контактного разъема приведена на схеме д.
На схеме а показаны соединения для пары устройств DTE—DCE, когда оба устройства используют полный протокол квитирования. Одна пара квитирующих сигналов представлена линиями RTS/CTS, другая - линиями DTR/DSR. На схеме в показан кабель «нуль-модема» с перекрещенными входами и выходами для пары DTE-DTE. Тот же кабель годится и для пары DCE-DCE, только надо изменить направление стрелок на рисунке и опустить соединение контакта 8. Если, однако, одно устройство реализует протокол квитирования, а другое - нет, кабели а и в не годятся. В этом случае самое простое — распаять кабель таким образом, чтобы устройство само отвечало на свои же сигналы квитирования и разрешало самому себе переход к следующим операциям. Такое соединение показано на схеме б для пары DTE-DCE и на схеме г для пары DTE-DTE (или пары DCE-DCE, но тогда следует опустить соединение контакта 8). Как сделаться гением RS-232. Если вы распаяете эти четыре кабеля с розеткой и вилкой на каждом конце, вы сможете заставить что угодно работать с чем угодно (почти). Ваши коллеги признают в вас гения. Правда, только в том случае, если им в руки не попадется действительно профессиональная штучка — «индикаторная коробка для RS-232». Она оснащена световыми индикаторами на ЭЛД для каждой линии интерфейса, что позволяет наблюдать, какое устройство какие сигналы устанавливает, и имеет набор перемычек для соединения контактов разъемов в любом порядке. Использовать индикаторную коробку надо следующим образом. Прежде всего, наблюдая световые индикаторы, соедините правильно TD и RD, затем по состоянию индикаторов определите, какое устройство посылает сигналы квитирования. Если устройство устанавливает RTS, оно, скорее всего, ожидает ответной установки CTS. Если это делают оба устройства, соедините их друг с другом; в противном случае замкните RTS на CTS того же устройства. То же самое проделайте с сигналами DTR и DSR. Если в устройстве используется только одна пара квитирующих сигналов, то это, скорее всего, DTR/DSR. Вообще пара DTR/DSR используется для оповещения о том, что устройство на противоположной стороне подсоединено и включено, в то время как пара RTS/CTS запускает и останавливает передачу.
Если скупость не позволяет вам приобрести индикаторную коробку, можете проанализировать состояние линий с помощью вольтметра: любая линия, находящаяся под большим (> 4 В) отрицательным или положительным напряжением, несет установленный сигнал; если напряжение на линии около нуля, сигнал сброшен.
Программное квитирование. Некоторые устройства используют аппаратные сигналы квитирования RTS/CTS для индикации начала и конца передачи данных, в то время как более медленные устройства (например принтер) просто держат их установленными. Другие осуществляют программное квитирование: CTRL-S (для остановки) и CTRL-Q (для возобновления). Если вам повезет, у вас будет возможность выбора. Программный метод позволяет упростить кабель, и если устройства полностью игнорируют сигналы аппаратного квитирования, в кабеле будут лишь провода, подключенные к контактам 1, 2, 3 и 7 (вам только надо выяснить, соединять ли контакты 2 и 3 прямо или крест-накрест). Однако, даже если устройство использует CTRL-S и CTRL-Q для управления передачей, оно может требовать подключения линий аппаратного квитирования для установления связи. В этом случае вам понадобится одна из схем соединений, приведенных на рис. 10.17, б и г. Не забудьте только включить питание на обеих сторонах линий связи, так как ни одно из соединенных устройств не имеет никакой возможности определить, включено ли другое и вообще существует ли оно!
Другие стандарты на последовательную передачу: RS-422, RS-423 и RS-485. Стандарт RS-232C был введен в 1969 г., когда последовательная передача данных осуществлялась медленно. Интерфейс обеспечивает дальность связи до 15 м со скоростью до 19200 бод. Однако скорости компьютеров и периферийных устройств удваивались каждые год-два, и потребовались лучшие стандарты на последовательную передачу. Как уже отмечалось в разд. 9.14, RS-423 представляет собой улучшенный протокол для биполярных несимметричных цепей, обеспечивающий скорость передачи до 100 кбод и дальность до 1200 м (но не одновременно); он принципиально совместим с RS-232. RS-422 представляет собой протокол для однополярных симметричных цепей с граничными возможностями 10 Мбод и 1200 м (см. рис. 9.37, где приведена зависимость скорость-дальность). RS-485 подобен RS-422, но содержит дополнительные спецификации для подключения к одной линии многих драйверов и приемников. В табл. 10.5 собраны характеристики этих четырех стандартов.
Модемы. Как уже отмечалось ранее, модем («модулятор/демодулятор») используется для преобразования бит — последовательных цифровых величин в аналоговые сигналы, которые можно пересылать по телефонным линиям или другим каналам передачи данных (рис. 10.18).
Рис. 10.18. Связь через модем.
Внутренний модем вставляется в разъем (слот) вашего компьютера (либо поступает к вам уже встроенным в компьютер), в то время как внешний модем представляет собой автономный прибор, питающийся от сети переменного тока и имеющий соединитель в стандарте RS-232 для подключения к последовательному порту компьютера. Любой модем имеет выход на телефонную линию одним из двух способов: (а) с помощью прямого соединения через телефонную розетку или (б) акустически, когда телефонная трубка кладется в обрезиненное гнездо, содержащее микрофон и динамик. Модемы с акустическим подключением в настоящее время вышли из моды, хотя они могут пригодиться, например, в гостинице, где иначе вам пришлось бы лазить под кроватями в поисках телефонной розетки (возможно и несуществующей!).
В большинстве случаев требуется пересылать данные по одному телефонному каналу в обоих направлениях одновременно («полнодуплексная связь»); передача и прием совместно используют телефонную полосу частот, которая занимает область приблизительно 300 Гц-3 кГц. Широко используются три полнодуплексных формата: 300 бод FSK (Bell 103) 1200 бод дибитный PSK (Bell 212А) и 2400 бод дибитный PSK (FSK обозначает Frequency-shift Keying — частотная манипуляция, a PSK — Phase-Shift Keying — фазовая манипуляция; о дибитах см. ниже). Модем, предназначенный для передачи со скоростью, скажем, 1200 бод, обычно поддерживает и связь со скоростью 300 бод и т. д. Хотя для использования модема нет необходимости вникать в тонкости кодирования им данных, однако методы кодирования интересны сами по себе, и мы не можем удержаться, чтобы кратко не описать их.
Стандарт на 300 бод (Bell 103) использует частотную манипуляцию (FSK), при которой выбранная пара звуковых тонов обозначает маркер и пробел: 1270 Гц (маркер) и 1070 Гц (пробел) в одном направлении, 2225 Гц и 2025 Гц в другом. Модем Bell 103 очень прост и состоит из переключаемого генератора для передачи и пары звуковых фильтров для приема (рис. 10.19, а). Обратите внимание на использование гибридной цепи (рис. 10.19, б) для разделения передаваемого и принимаемого сигналов. Если принять, что импеданс телефонной линии близок к его номинальному значению 600 Ом, передаваемый сигнал модема (Тх) совершенно не проходит на выход принимаемого сигнала (Rx). На практике гибридные цепи работают не так уж хорошо, потому что импеданс телефонной линии может заметно отклоняться от номинального значения 6000 м (см. разд. 14.5). Поэтому желательно иметь узкополосный приемный фильтр, а это приводит к усложнению модема.
Рис. 10.19. Модем с частотной манипуляцией (а) и гибридная цепь (б).
Упражнение 10.5. Разберитесь, как работает гибридная цепь на рис. 10.19. После этого вы сможете поражать коллег своей эрудицией.
Стандарт на 1200 бод (Bell 212А) работает иначе. Поток цифровых данных группируется в пары бит («дибиты»); каждый из четырех возможных дибит передается в виде заданного сдвига фазы несущей постоянной частоты (00:90°, 01:0°, 10:180° и 11:-90°), с плавным переходом фазы от одного дибита к следующему. Таким образом, скорость передачи дибит составляет 600 Гц. Частота (фазово-модулированной) несущей равна 1200 Гц в одном направлении и 2400 Гц в другом.
Приемный модем расшифровывает данные, определяя разность фаз между соседними дибитами. Эта остроумная идея имеет один недостаток, именно, приемник теряет значение относительной фазы, если поступает длинная последовательность одинаковых дибит. Для того чтобы предотвратить длинные посылки данных с неизменной фазой, передаваемый поток данных рандомизуется (скремблируется) путем выполнения над данными операции исключающего ИЛИ с псевдослучайной последовательностью (генерируемой с помощью 17-разрядного сдвигового регистра с петлей обратной связи из 14-го разряда по исключающему ИЛИ, см. разд. 9.32). На приемном конце выполняется аналогичный процесс дескремблирования.
Полно-дуплексные модемы со скоростью передачи 2400 бод также передают дибиты с фазовым кодированием, хотя и с другим набором фаз. В этих сложных устройствах обычно используются адаптивные корректоры частотных и временных ошибок на телефонной линии, а также глубоко оптимизированные фильтры для передаваемых и принимаемых сигналов. В результате частота ошибок уменьшается в незначительной степени по сравнению с ранними FSK-модемами на 300 бод.
Нет никакой необходимости разрабатывать модемы заново, так как фирмы AMI/Gould, Exar, National, Rockwell, Silicon Systems и ΤΙ выпускают микросхемы и модули модемов. Еще проще купить готовый модем, либо в виде вставной платы, либо в виде отдельного прибора с соединителем в стандарте RS-232 для подключения к компьютеру. Модемы, в зависимости от характеристик, стоят 100–300 долл. Стоит поискать «Hayes-совместимый» модем, воспринимающий стандартизованный набор команд для передачи номера абонента и проч.; эти модемы стали стандартом де-факто для всего связного программного обеспечения.
Полезный совет: передавая через модем файлы данных между компьютерами, используйте модемный протокол с проверкой блоков, например, Kermit или XMODEM. Такой протокол посылает данные блоками фиксированной длины, сопровождая каждый блок контрольной суммой. Приемный модем сравнивает контрольные суммы, автоматически запрашивая повторную передачу дефектных блоков. Принятые таким образом файлы гарантированно не имеют ошибок; напротив, файлы, посланные просто в виде набора кодов ASCII, почти наверняка будут содержать ошибки!
10.20. Параллельная связь: Centronics, SCSI, IPI, GPIB(488)
Для кабельных соединений со скоростными периферийными устройствами параллельная связь обычно оказывается удобнее последовательной. Ниже описаны популярные представители этого направления.
Centronics. Это простой байтовый однонаправленный параллельный порт с квитированием, первоначально предложенный фирмой Centronics и широко используемый для подключения принтеров. В отличие от RS-232 он всегда работает! В табл. 10.6 перечислены сигналы, выходящие на 36-контактный разъем; их полагается передавать по скрученным парам.
На рис. 10.20 показаны временные соотношения этих сигналов.
Рис. 10.20. Временные соотношения для (принтерного) интерфейса Centronics.
Базовые сигналы перечислены в первой группе: D0-D7, STROBE', ACKNLG' и BUSY. Сигнал BUSY является флагом: если он в низком состоянии, принтер не «занят», т. е. готов принимать данные; источник данных (компьютер) устанавливает тогда данные, а затем STROBF (при гарантированной достоверности данных по обе стороны этого импульса). После этого устанавливается в высокое состояние сигнал BUSY, который возвращается в низкое состояние только когда принтер готов принимать следующий байт. Компьютер должен, как это показано на рисунке, наблюдать за состоянием линии BUSY, чтобы определить момент посылки следующего байта. Сигнал ACKNLG' (который представляет собой импульс, а не уровень) можно использовать в качестве сигнала прерывания; не пытайтесь, однако, подменить им сигнал BUSY, потому что он может закончиться к тому времени, когда вы захотите считать его состояние, и вы будете ждать вечно. В состав порта входят еще несколько сигналов, позволяющие обнаружить, что в принтере нет бумаги (РЕ') или что он отключен (ERROR' или BUSY); компьютер может инициализировать принтер (INIT'), запросить автоматический перевод строк (AUTO FEED XT') или послать байт для отмены выбора принтера (установить IN' в высокое состояние, затем послать ASCII-код DC3). Обратите внимание на щедрые временные соотношения в диаграмме синхронизации, с очевидностью рассчитанные на медленные (механические) устройства, которые не могут принимать данные с высокой скоростью.
В большинстве принтеров предусмотрен какой-то объем буферной памяти, что позволяет им быстро принять первую посылку данных, однако в среднем байты можно посылать лишь со скоростью их печати. Для матричного принтера скорость посылки данных составляет 100–300 байт/с. Если вам надо разработать интерфейс Centronics для подключения к магистрали какого-либо компьютера, то самый простой способ организации всех выходных линий заключается в использовании зафиксированных («защелкнутых») данных, управляемых программным вводом-выводом. Линии D0-D7 можно выполнить в виде одного порта, а оставшиеся линии (включая STROBE') в виде второго. Входные сигналы (BUSY и др.) не фиксируйте, просто пропустите их на шину в операции программного чтения.
Полезным дополнением является использование ACKNLG' для возбуждения прерывания. На рис. 10.21 все сказанное проиллюстрировано применительно к магистрали IBM PC.
Рис. 10.21. Порт Centronics для PC.
Заметьте, что организация прерываний в этом случае не составляет труда, поскольку прерывания в PC активизируются перепадом; попросту используйте спад сигнала ACKNLG', как это показано на рис. 10.20. Для запрещения прерываний мы использовали один из фиксируемых выходных бит, как это описывалось в разд. 10.09 и 10.11. Обратите также внимание на использование сигнала магистрали RESET DRV для сброса всех выходов (и прерываний) при включении питания; именно ради этого мы выбрали микросхему `273 восьмиразрядного D-peгистра (в котором предусмотрен вход RESET).
В процессе работы с этим интерфейсом вы избирательно устанавливаете и сбрасываете выходные управляющие сигналы, подавая выходные байты с соответствующим образом установленными или сброшенными битами, в порт В. Поскольку на выходе предусмотрены фиксаторы, вы можете спокойно изменять состояние любого выходного бита, не боясь появления выбросов на других выходах. Однако храните в памяти копию байта, зафиксированного в порте В, чтобы можно было посылать в этот порт новые байты, отличающиеся единственным битом (используя операции И и ИЛИ, см. пример ниже). Импульс STROBE' следует генерировать программно, поскольку в интерфейсе нет безобразных одновибраторов. В программе 10.6 показано, как можно создать «программный импульс» на линии STROBE'.
Отметьте использование операций И и ИЛИ для сброса и установки, соответственно, одного бита. В этом примере мы не стали тратить время на модификацию текущего байта в ячейке current, поскольку в итоге он не изменяется. Если бы нам надо было изменить (и оставить измененным) какой-то другой управляющий бит, новый байт пришлось бы сохранить с помощью команды mov current, AL.
Аппаратный альтернативой хранения в памяти копии байта порта является включение в состав интерфейса порта с возможностью чтения, чтобы операция программного ввода позволила вам определить, что, собственно, зафиксировано в порте. Следующий пример позволит вам сообразить, как это делается.
Упражнение 10.6. Представьте себе, что вы полны энтузиазма и хотите добавить к схеме интерфейса Centronics порт с возможностью чтения. Сделайте так, чтобы чтение из порта В решало эту задачу. Вы будете приятно удивлены, обнаружив, как мало дополнительных цепей требует это усовершенствование.
Упражнение 10.7. Теперь перепишите программу 10.6, используя ваш новый порт и опустив ячейку current.
Порты Centronics используются практически во всех микрокомпьютерах; если вам нужен простой и быстрый параллельный выходной порт, без колебаний выбирайте Centronics. Во многих случаях (но не в IBM PC) микрокомпьютер позволит даже использовать порт в обе стороны. Обычно это делается путем посылки в порт управляющего бита, после чего изменяется направление передачи данных по единственной 8-разрядной шине данных.
SCSI и IPI. Это стандартные универсальные параллельные интерфейсы для подключения к компьютерам дисков и других высокопроизводительных периферийных устройств, как уже кратко упоминалось в разд. 10.16. SCSI (Small Computer System Interface — интерфейс малых компьютерных систем) представляет собой 8-бит параллельный кабельный интерфейс с квитированием и протоколами для обслуживания нескольких машин и нескольких периферийных устройств. В SCSI предусмотрены и синхронный, и асинхронный режимы, а также определенные программные протоколы. Вы можете найти интерфейсную плату SCSI для установки на магистраль практически любого популярного микрокомпьютера, включая VME и Multibus I и II; затем вы подсоединяете этот «главный адаптер» SCSI с помощью плоского кабеля SCSI-шины к плате периферийного контроллера (рис. 10.22). Плата контроллера часто является элементом самого периферийного устройства (т. е. располагается в дисководе жесткого диска) и взаимодействует с дисководом через «интерфейс уровня устройства», который может называться ST-506/412, ESDI или SMD.
Рис. 10.22. Магистраль SCSI с единственным периферийным устройством.
Достоинством SCSI является то, что с помощью этого интерфейса все микрокомпьютеры становятся совместимыми со всеми периферийными устройствами. Каждый разработчик считает своим долгом использовать SCSI, и в новых микрокомпьютерах этот интерфейс располагается прямо на системной плате. Со стороны периферийного устройства тоже удается избавиться от контроллера путем использования «архитектуры встроенного SCSI», когда магистраль SCSI становится одновременно и интерфейсом уровня устройства. Другими словами, вы соединяете кабелем системную плату микрокомпьютера с дисководом. SCSI обеспечивает передачу данных со скоростью до 1,5 Мбайт/с (при асинхронной передаче) или 4 Мбайт/с (при синхронной) при длине кабеля до 7 м (несимметричный) или 27 м (симметричный).
Интерфейс SCSI достаточно сложен, и мы не можем описывать здесь все его сигналы, режимы, командные протоколы и интерфейсные возможности. Ввиду его популярности, для облегчения вашей жизни, выпускаются однокристальные интерфейсные микросхемы (например, серии NCR 5380, Western Digital ЗЗС90, а также фирмами Fujitsu, Ferranti и др.).
SCSI хорошо работает с нынешними дисками. Однако для увеличения скорости передачи промышленность подумывает о переходе на 16-разрядную шину. Тогда, возможно, вступит в свои права интерфейс IPI (Intelligent Peripheral Interface- интеллектуальный периферийный интерфейс). IPI определяет 16-разрядную параллельную магистраль, работающую на скоростях до 10 Мбайт/с (частота передачи 5 МГц); как и SCSI, IPI обслуживает несколько машин и несколько периферийных устройств. Последнее время жесткие диски увеличивают свою скорость и плотность семимильными шагами; если еще принять во внимание рост скорости передачи, становится ясно, что мир быстро идет к универсальным интерфейсам (SCSI или IPI) со встроенной шиной. Через несколько лет, возможно, все остальные форматы будут забыты.
IEEE-488 (GPIB, HPIB). Когда появились первые приборы с выходами данных на задней панели, каждая компания все делала по-своему. Протоколов было почти столько же, сколько самих приборов, с параллельной или последовательной передачей, положительной или отрицательной полярностью и невообразимыми процедурами квитирования. Это был сумасшедший дом. Живо вспоминается разработка цифрового индикатора с огромными (высотой 15 см) цифрами для лекционного зала Гарвардского университета; для каждого из наших приборов у него были отдельные входные цепи!
В середине 60-х гг. фирма Hewlett-Packard решила покончить со всем этим безобразием, предложив универсальный приборный интерфейс. Фирма с присущей ей скромностью назвала его HPIB (Hewlett-Packard Interface Bus — интерфейсная магистраль Hewlett-Packard) и использовала его в качестве единственного интерфейса во всех новых разработках. HPIB позволяет подключать к магистральному кабелю (до 20 м длиной) до 15 приборов с помощью остроумно устроенных соединителей, которые можно вставлять друг в друга. По протоколу HPIB данные на магистрали имеют ширину 1 байт и передаются с квитированием; скорость передачи доходит до 1 Мбайт/с; предусмотрены программные команды, разрешающие любому устройству, подключенному к магистрали, стать «ведущим» (т. е. источником сообщений), а любой комбинации остальных устройств — «ведомыми» (т. е. приемниками сообщений). «Контроллер» диктаторски распоряжается, что делать каждому устройству.
Интерфейс HPIB оказался столь удачным, что комиссия по стандартизации Института инженеров по электротехнике и радиоэлектронике (ШЕЕ) официально признала его. В результате появился стандарт IEEE-488-1975/ANSI МС1.1, который все (кроме фирмы Hewlett-Packard) называют GPIB (General-Purpose Interface Bus-интерфейсная магистраль общего назначения), или «магистраль 488». GPIB стал универсальным цифровым интерфейсом для лабораторных приборов. С помощью GPIB можно связать вместе приборы любых компаний, да еще заставить микрокомпьютер (или настольный калькулятор) отдавать приказания. Например, вы можете задать форму сигнала, частоту и амплитуду синтезатору частот, а затем выполнить измерения напряжения в том же эксперименте или процессе.
10.21. Локальные вычислительные цепи
В доисторические времена вычисления выполнялись на больших централизованных ЭВМ в «пакетном» режиме. Это были мощные (более медленные, чем наименее мощные из современных персональных компьютеров, с крошечной памятью) и дорогие (сравнимые по цене с современными супер-ЭВМ) машины. Вы пробивали свои программы на колодах перфокарт, затем запускали задание. При удачном стечении обстоятельств к концу дня вы получали результаты аварийно завершившегося счета, и на следующее утро могли снова запустить свое задание, чтобы выловить следующую ошибку. Сегодня мы все развращены невероятной мощностью настольных компьютеров, быстрыми дисками, изящной графикой. Нам хочется большего. Нам хочется обмениваться файлами с приятелем, сидящим в соседней комнате, не вставая со стула. Нам хочется иметь мгновенный доступ к любым базам данных, принтерам и уникальной периферии. Все это доступно при наличии сетей-глобальных сетей вроде BITNET или DECNET и локальных вычислительных сетей (ЛВС) типа Ethernet или LocalTalk. Сети находятся еще в младенческом периоде своего развития, и в ближайшее десятилетие можно ожидать драматических изменений в этой области. Однако тенденции уже ясны, поэтому стоит остановиться на типах ЛВС, используемых сегодня.
Протокол CSMA/CD (Ethernet). Ethernet является типичным представителем сетей с коллективным доступом, опознанием несущей и обнаружением конфликтов (CSMA/CD). Для передачи сообщений адресуемому приемнику со скоростью 10 Мбит/с используется коаксиальный кабель. Сообщения Ethernet пересылаются «пакетами» с преамбулой и контролем ошибок. Протокол передачи выглядит примерно таким образом: (а) ждите прекращения активности в сети; (б) начинайте передачу своего пакета (см. ниже); (в) продолжая передачу, одновременно контролируйте наложение сообщений («конфликт»); (г) (1) пока наложений нет, продолжайте передавать свое сообщение, но (2) если вы обнаруживаете наложение, пошлите сигнал затора сети (чтобы все знали, что обнаружен конфликт), затем прекратите передачу, выждите случайный интервал времени и попробуйте снова; после каждой последовательной неудачи выжидайте больший по величине «случайный» интервал времени.
Сообщения сети Ethernet передаются относительно короткими пакетами (максимально 1 Кбайт), каждый из которых включает заголовок (идентифицирующий отправителя и получателя), несколько байт с информацией о длине пакета, его типе и последовательном номере, затем группу собственно байтов данных и, наконец, контрольную сумму циклического избыточного кода (CRC), с помощью которой получатель может проверить правильность передачи сообщения. Заметьте, что конфликт может произойти только в начале передачи пакета, поскольку (по правилу (а), см. выше) передача, длящаяся более удвоенного времени обхода сети, прерываться уже не будет.
Стандарт Ethernet, изобретенный фирмой Xerox, используется сейчас очень широко. Он достаточно широкополосен для большинства локальных сетей, а его производительность, благодаря протоколу случайных повторных передач, ухудшается при высокой загрузке не очень быстро. Контроллеры Ethernet можно найти для большинства серьезных микрокомпьютеров (VAX, IBM PC и т. д.) и магистралей (Multibus, VME); Ethernet является официально принятой сетью для популярных рабочих станций Sun и NeXT. Сеть Ethernet может иметь протяженность до 1 км на сегмент и содержать до 2 повторителей; можно также использовать волоконно-оптические «мосты» большей длины. Несколько настольных компьютеров могут совместно использовать многопортовый RS-232-сервер, выступающий в качестве узла на коаксиальном кабеле Ethernet. Серверы могут также обслуживать разделяемые между пользователями ресурсы, такие, как принтеры и большие диски.
Кольцевая сеть с маркерным доступом. В кольцевой сети с маркерным доступом каждый узел соединяется с соседним однонаправленной линией так, чтобы все узлы были объединены в кольцо. Конфликты здесь не допускаются, а правила игры выглядят следующим образом. Представьте себе некоторый объект (маркер); тот, у кого он имеется, может посылать сообщения, в то время как остальные могут только «слушать». В кольцевой сети с маркерным доступом маркер представляет собой короткое сообщение, передаваемое соседнему узлу, как только его владелец закончил пересылку пакета. В любой момент времени маркером владеет один из узлов; именно он имеет право посылать сообщения. Как и в сети Ethernet (да и в любой другой разумной сети), сообщения пакетизированы, причем часто используется формат SDLC (Synchronous Data Link Control — синхронное управление передачей данных: один пакет = флаг + адрес + заголовок + сообщение + контрольная сумма + флаг). Пакеты сообщений циркулируют по сети до тех пор, пока адресуемый получатель не примет их. После того, как отправитель закончил передачу всего сообщения (обычно состоящего из многих пакетов), он посылает маркер. Маркер циркулирует по кольцу до тех пор, пока какой-то другой узел в сети, желающий передать сообщение, не поглотит его, став, таким образом, новым владельцем маркера.
LocalTalk. LocalTalk (первоначально Appletalk), разработанная (угадайте, кем?) фирмой Apple Computer, представляет собой упрощенную сеть с конфликтами. Это не кольцевая сеть, а линейная. Один из узлов может передавать, остальные слушают. В качестве среды передачи используется одна симметричная пара; сигналы в стандарте RS-422 поступают на нее из узлов через трансформаторы. Формат пакета соответствует стандарту SDLC. Максимальная протяженность сети составляет 330 м, и к ней можно подключить до 32 узлов. Пропускная способность сети составляет 230,4 Кбит/с. Совместимый вариант, известный под именем PhoneNET (Farallon Computing Inc.) использует телефонные кабели и соединители и, как утверждается, работает при расстояниях до 1300 м.
Протокол сети схож с Ethernet, но проще: если вы не слышите передачу по сети, вы можете посылать свой пакет. Аппаратура сети не пытается обнаружить конфликты: она просто передает принятые пакеты с правильными контрольными суммами следующему уровню программного обеспечения. Конфликт обычно разрушает сталкивающиеся пакеты, приводя к неправильным значениям обеих контрольных сумм; в результате программное обеспечение просто не получает эти пакеты! Обнаружить ошибку — дело программного обеспечения. Например, отправитель сообщения ожидает ответ; если ответ не приходит в течение некоторого времени, отправитель инициирует идентичное сообщение и ждет снова. LocalTalk относится к сетям с протоколом CSMA/CA; СА здесь обозначает Collision Avoidance — избежание конфликтов, в противоположность обнаружению конфликтов в сети Ethernet.
В сети LocalTalk предусмотрены протоколы для совместного использования файлов и ресурсов (принтеров, модемов и проч.), а также способ наименования устройств, подключенных к сети. Можно даже раздобыть интерфейсы LocalTalk для «не-Аррlе»-компьютеров, что дает вам возможность пересылать файлы между компьютерами типов Macintosh, IBM и UNIX, а также совместно использовать такие ресурсы, как лазерный принтер.
10.22. Пример интерфейса: аппаратная упаковка данных
Если все ваши приборы подключаются к стандартной интерфейсной магистрали (например, GPIB), ваши дела блестящи: просто купите интерфейсную плату для вашего компьютера и несколько кабелей, соедините все вместе и наймите программиста. Талант тут не требуется, только деньги. Однако эта глава посвящена магистральным интерфейсам, и мы хотели бы завершить ее примером законченной разработки.
Надо полагать, что вы, как и мы, не выбрасываете все ваши работоспособные приборы, если появляется что-нибудь новенькое. Некоторые исключительно полезные приборы были созданы еще до эпохи GPIB; в них можно вдохнуть новую жизнь, смастерив к ним интерфейс для подключения к лабораторному компьютеру. Например, частотомер с 8-разрядным цифровым индикатором скорее всего имеет на задней панели «цифро-последовательный, бит-параллельный» выход, на котором появляются друг за другом индицируемые цифры в двоично-кодированном десятичном коде (BCD); весьма вероятно, что скорость вывода цифр совпадает со скоростью регенерации индикатора. Контролировать временные соотношения вы не можете; каждая достоверная цифра, вместе с ее трехбитным адресом позиции в числе, сопровождается стробом. Такого рода прибор скорее всего использует выходные уровни TTL.
На рис. 10.23 показано, как подключить такой прибор к IBM PC.
Рис. 10.23. Символьно-последовательный интерфейс.
Это законченный интерфейс, вместе с флагом состояния, прерываниями и выбираемым адресом порта ввода-вывода. Работа интерфейса начинается в левом нижнем углу рисунка, где обозначены данные, посылаемые из частотомера: последовательные цифры, их адреса (0–7) и стробирующий импульс STROBE7, говорящий о достоверности данных. Частотомер посылает цифры от самой младшей (LSD) до самой старшей (MSD), так что весь цикл заканчивается приемом самой старшей цифры (разряда 7). Восемь регистров `173 (4-разрядные D-регистры с тристабильными выходами) фиксируют последовательные цифры; для этого их информационные входы объединены, а на тактовые входы подаются отдельные сигналы с дешифратора адреса цифр. Обратите внимание на использование микросхемы `138-стробируемого дешифратора 1 из 8, с помощью которого из сигналов адреса и строба образуются тактовые сигналы для фиксации цифр.
Таким образом, выходные данные частотомера фиксируются в восьми 4-разрядных регистрах, выходы которых образуют 4 группы по 2 цифры (8 бит) в группе. PC может принять все восемь цифр четырьмя командами IN ввода данных шириной 1 байт из четырех последовательных адресов портов ввода-вывода (начиная с адреса, установленного на DIP-переключателе). Можно даже поступить еще лучше, читая данные из 16-разрядного регистра (т. е. выполняя вместо команды IN AL,DX, команду IN AX,DX), что приведет к двум последовательным операциям чтения байтов из двух соседних портов ввода-вывода. Обратите внимание на простоту схемы дешифрации адреса. 8-разрядный компаратор `682 выдает низкий уровень на выходе, когда 7 старших бит адреса совпадают с комбинацией, установленной на переключателях (при условии, что этот зануда AEN находится в низком состоянии); этим «базовым адресом» разрешается дешифратор 1 из 8 `138, стробируемый сигналом IOR', который декодирует три младшие бита адреса и генерирует отдельные импульсы ввода, соответствующие последовательным адресам портов. Это весьма распространенный способ дешифрации адресов, так как обычно вы назначаете различным регистрам интерфейса несколько последовательных адресов портов.
Флаг состояния устанавливается при приеме последней цифры числа из частотомера; состояние можно прочитать по адресу PORT + 4, где PORT — адрес, установленный на DIP-переключателях. Флаг состояния сбрасывается, когда ЦП читает последний (самый старший) байт данных (по адресу PORT + 3). Интерфейс позволяет работать и в режиме прерываний, которые через перемычку подключаются к любому из уровней IRQ2 или IRQ3, и разрешаются посылкой 1 по адресу PORT (а запрещаются посылкой 0); обратите внимание на неполную дешифрацию адреса в цепи записи, что позволило сэкономить вентили. Как и положено законопослушным гражданам, при включении питания мы сбрасываем оба триггера — и состояния, и разрешения прерываний.
Описанный интерфейс выполняет «упаковку» данных, объединяя несколько чисел в одно компьютерное слово. Если «числа» состоят из одного бита каждое, в 16-разрядное слово компьютера их можно упаковать 16 штук. Это не такое бессмысленное рассуждение, как кажется на первый взгляд: в цифровой обработке сигналов приходится иметь дело с периодическими выборками жестко ограниченных колебаний (которые можно рассматривать, как 1-бит аналого-цифровое преобразование); для повышения скорости выполнения операций ввода-вывода эти биты можно упаковать аппаратно и читать затем целыми словами. Конечно, если скорость не имеет значения, проще получать данные с помощью минимальных аппаратных средств, а всю упаковку и преобразования выполнять программно. Например, в приведенном примере можно было фиксировать и передавать в ЦП по одной цифре, если только быстродействие компьютера достаточно высоко, чтобы цифры не терялись.
Упражнение 10.8. Видоизмените схему интерфейса так, чтобы можно было программно выбирать линию запроса прерывания IRQ, используемую интерфейсом: посылкой 01Н по адресу PORT разрешать прерывания по IRQ2, посылкой 02Н по адресу PORT разрешать прерывания по IRQ3, а посылкой 0 по адресу PORT (или включением питания) запрещать и то, и другое.
Практическое замечание по поводу нашей схемы: следует избегать чрезмерной нагрузки линий шины. В приведенной схеме к каждой линии Dn подключаются выходы четырех тристабильных регистров `173, что создает чрезмерную емкостную нагрузку. Хотя наш интерфейс будет, несомненно, работать правильно, его подключение ограничит число дополнительных плат, которые можно установить на шине (особенно, если остальные разработчики окажутся грешными в том же отношении!). В нашем случае следовало использовать тристабильный 8-разрядный буфер (микросхема `244), включив его между выходами D0-D7 и шиной данных PC. Сигнал разрешения микросхемы можно получить, образовав логическое И декодированного адреса и сигнала IOR.
10.23. Форматы чисел
Формат байтов (или слов), получаемых из частотомера в рассмотренном примере, отличается от внутримашинного двоичного формата; частотомер образует двоично-кодированные десятичные коды, упакованные по две цифры в байте (или четыре цифры в слове). Чтобы с этими числами можно было выполнять какие-то вычисления, их следует преобразовать в целые числа или в числа с плавающей точкой (хотя в системе команд микропроцессора предусмотрены и команды с «десятичной коррекцией», позволяющие выполнять арифметические операции непосредственно над упакованными двоично-кодированными десятичными числами). Рассмотрим форматы чисел, обычно используемые в компьютерах (рис. 10.24), предмет, кратко затронутый нами в начале гл. 8.
Рис. 10.24. Форматы чисел. S-знак.
Целые числа. Целые числа (integer) со знаком всегда представляются, как дополнение до 2 и занимают 1,2 или 4 байт (см. рис. 10.24). Старший бит является знаковым, хотя дополнение до двух не совпадает с представлением в виде знака и числа (т. е. — 1 записывается, как 11111111, а не 10000001; см. разд. 8.03). Дополнение до 2 можно представить себе, как «смещенное» двоичное[11] с инвертированным старшим битом; но можно рассматривать его и как целое число со значением бит, указанным на рис. 10.24. Многие компьютеры позволяют объявлять переменные, как целые без знака в дополнение к объявлению целых со знаком в виде дополнения до 2. Двухбайтовое беззнаковое целое может иметь значение от 0 до 65535.
Числа с плавающей точкой. Числа с плавающей точкой, называемые также действительными числами (real), обычно занимают 32 бит («одинарная точность») или 64 бит («двойная точность»), однако иногда для промежуточных результатов вычислений используется дополнительный 80-бит формат. К сожалению, имеется несколько употребительных представлений этих чисел. Наиболее распространен формат IEEE (официальное название ANSI/IEEE Std 754-1985), который реализован почти во всех микропроцессорных наборах с плавающей точкой (включая Intel 8087/287/287, Motorola 68881, а также наборы фирм AMD, Weitek и др.) и по этой причине является стандартным для микрокомпьютеров, использующих эти наборы (в том числе IBM PC).
На рис. 10.24 показаны 32-бит и 64-бит форматы IEEE. 32-бит формат одинарной точности предусматривает 1 знаковый бит, 8 бит порядка и 23 бит мантиссы. Порядок определяет степень 2, на которую следует умножить мантиссу (см. ниже). Порядок «смещен» путем прибавления 127, так что поле порядка 01111111 соответствует порядку 0; в результате диапазон порядка составляет от —127 до +128. Мантисса также записывается любопытным способом, который был впервые использован фирмой DEC в своем формате с плавающей точкой. Двоичное число с плавающей точкой всегда можно записать в виде f.fff x 2е, где f.fff — мантисса (по основанию 2) («значащая часть»), а е — порядок (степень 2). Для того чтобы получить при заданном числе бит мантиссы максимальную точность, она «нормализуется» путем сдвига влево (с соответствующим декрементом порядка), пока лидирующий бит не станет равен 1, в результате чего мантисса представляется в виде 1.fff x 2е. Далее, используется прием «скрытого бита». Поскольку результирующая значащая часть мантиссы всегда имеет ненулевой старший бит, хранить его в памяти было бы избыточно; вместо 1fff можно записать просто fff, где лидирующая 1 подразумевается. В результате точность числа возрастает, так как его представление увеличивается на 1 бит, образуя диапазон от ±1.2·10-38 до ±3.4·1038.
Упражнение 10.9. Сконструируйте на бумаге минимальное и максимальное нормализованные числа с плавающей точкой и убедитесь, что приведенные выше предельные значения соответствуют истине.
Формат IEЕЕ с двойной точностью образуется аналогично, но точность мантиссы более чем удваивается (увеличиваясь на 29 бит), а порядок получает дополнительные 3 бит. Диапазон чисел указан на рисунке. Формат IEEE допускает также хранение ненормализованных чисел, что несколько увеличивает диапазон со стороны маленьких чисел (за счет уменьшения точности); «ненормализованные» числа могут доходить до величины ±1.4·10-45. Стандарт также определяет нуль (е = fff = 0; таким образом, есть 2 нуля, +0 и — 0), бесконечность (е = все единицы, fff = 0; поэтому оба знака), а также любопытный класс зарезервированных величин, имеющих официальное название «не число» (NAN = Not A Number).
Другой важный микрокомпьютерный формат чисел с плавающей точкой принадлежит фирме DEC и используется в компьютерах Micro VAX и LSI-11 (а также в их предках, мини-ЭВМ VAX и PDP-11). Он почти совпадает со стандартом IEЕЕ, имея то же число бит в порядке и мантиссе (включая использование скрытого бита) чисел с одинарной точностью. Отличия заключаются в другом значении смещения (128 вместо 127), а также в отсутствии лидирующих бит в мантиссе, которая представляется в виде.1fff (со скрытой 1). DEC определяет только один нуль (все биты которого равны 0); и не допускает ненормализованных чисел и бесконечности; имеются, однако, величины, аналогичные «не числам» IEEE. DEC также определяет 64-бит формат удвоенной точности.
Последние два формата, приведенные на рис. 10.24, используются не в микрокомпьютерах, а в больших ЭВМ или в машинах специального назначения. Формат «IBM» в течение некоторого времени использовался в универсальных ЭВМ фирмы IBM и даже в некоторых мини-ЭВМ, например, Nova фирмы Data General. 7-бит смещенный порядок определяет степень 16, а не 2, увеличивая диапазон чисел. Мантисса в результате может иметь до трех лидирующих нулей, т. е. нормализованная часть содержит ненулевую старшую шестнадцатеричную цифру.
Упражнение 10.10. Чтобы понять смысл последней фразы, напишите представление числа 1.0 в формате IBM. После этого напишите следующее меньшее число в том же формате.
Использование в формате IBM числа 16 в качестве основания увеличивает динамический диапазон, но уменьшает точность. Более того, точность несколько изменяется от числа к числу из-за переменного количества лидирующих двоичных нулей; это явление известно, как «качание» (wobble). В формате IBM отсутствуют «не числа» и бесконечность, и имеется только один нуль (все биты нули); не нормализованные числа не допускаются. Имеется формат IBM и для чисел с двойной точностью (64 бит). Последний формат на рис. 10.24, MIL STD-1750A, используется в военных системах. Он необычен в том отношении, что вместо знака и величины числа в нем записывается мантисса в форме дополнения до двух и порядок тоже в форме дополнения до двух (строго говоря, предыдущие форматы характеризуются записью мантиссы в форме знак/величина, а порядка в форме смещенного двоичного). В формате отсутствуют бесконечности, «не числа» и не нормализованные числа; имеется вариант для чисел с удвоенной точностью.
Хранение чисел в памяти. Разработчики микропроцессоров любят выражать свою индивидуальность, предусматривая хранение чисел в памяти в своеобразном порядке. Микропроцессоры 8086/8 (а, следовательно, и компьютеры IBM PC и совместимые с ними) записывают числа в память, начиная с самого младшего байта, который располагается в байте памяти с наименьшим номером; для семейства 68000 характерен обратный порядок. Вот счастье-то!
Преобразование данных в процессе ввода-вывода. Нам пришлось уже обсуждать форматы данных в контексте аппаратного интерфейса, который выдавал упакованные двоично-десятичные числа. Каков наиболее оптимальный способ работы с 8-разрядными данными, получаемыми из такого интерфейса? В зависимости от типа входных данных, числа значащих цифр, диапазона их изменения и проч. может оказаться удобным преобразовывать входные данные в числа с плавающей точкой (для получения максимального динамического диапазона), или в целые числа (для получения максимального разрешения), или выполнить какие-то другие числовые процедуры (например, вычисление отклонений от среднего значения или разностей последующих отсчетов). Все это можно делать в программном «драйвере» конкретного устройства, т. е. в программном модуле, который управляет вводом данных. Мы видим, таким образом, что оптимизация программного обеспечения не может быть выполнена без понимания особенностей аппаратуры и смысла принимаемых данных. Еще одна причина, по которой столь важно освоиться в этом чудесном мире электронной аппаратуры!
Таблицы
7
8
9
10
* * *
Примечания
1
Шум лопающихся при поджаривании, кукурузных зерен. — Прим. перев.
(обратно)2
Многие читатели, имеющие дело с персональными компьютерами, наверняка слышали слово boot-сектор (сектор начальной загрузки). Для того чтобы дать понять читателю, какие образы возникали у отцов — основателей персональных компьютеров, отметим, что среди множества значений слова boot есть и такое как «ударить сапогом», а термин bootstrap фигурирует в выражении, которое переводится как «поднять самого себя за шнурки ботинок». — Прим. перев.
(обратно)3
Точнее говоря, выполнить после дальнейшей обработки полученного объектного кода программой-редактором связей. Непосредственно исполнять объектный код компьютер не может. — Прим. перев.
(обратно)4
Кроме арифметических флагов регистр флагов содержит еще три дополнительных флага для управления некоторыми действиями ЦП: флаг направления (DF), флаг разрешения прерываний (IF), флаг трассировки (ТF). — Прим. перев.
(обратно)5
Для того чтобы этот пример работал, надо изменить идентификатор LOOP на какое-нибудь другое, не зарезервированное ассемблером выражение, например LOOP1. — Прим. перев.
(обратно)6
Индексный. — Прим. перев.
(обратно)7
Большинство компиляторов преобразуют исходный текст непосредственно в машинные команды (либо в строки вызова процедур, обрабатываемых компоновщиком) и необходимость в их дополнительном ассемблировании отпадает, хотя некоторые компиляторы, например транслятор языка Паскаль для машин типа ДВК, действуют именно так, как описано авторами. — Прим. перев.
(обратно)8
А еще чаще — объектны. — Прим. перев.
(обратно)9
Из мира больших машин пришло другое название этой программы — редактор связей; в среде пользователей микрокомпьютеров бытует жаргонное выражение «линкер». — Прим. перев.
(обратно)10
В настоящее время эта «вторая половина» кодовой таблицы практически стандартизована и включает символы национальных алфавитов (в частности, русского), символы псевдографики и некоторые математические знаки. — Прим. перев.
(обратно)11
Т.е. вычисленное как смещение относительно нижней границы знакового представления (-128, -32768). — Прим. перев.
(обратно)
Комментарии к книге «Искусство схемотехники. Том 2 [Изд.4-е]», Уинфилд Хилл
Всего 0 комментариев