В статье "Типы цифровой логики. Не только ТТЛ и КМОП" я коротко рассказал о разных типах логических микросхем. Это была лишь обзорная статья. И в ней КМОП (CMOS) логика, один из основных сегодня типов логики, была рассмотрена поверхностно. Только общий подход к построению собственно логического элемента.
Между тем, есть много важных нюансов, которые нужно знать, но которые не всегда очевидны. И сегодня мы поговорим о некоторых таких нюансах. В первую очередь о различии между буферизованными элементами, которые можно считать современными, и не буферизованными, которые однако нельзя считать устаревшими. Эта разница может быть почти несущественной, если микросхемы применяются по прямому назначению - построению схем цифровой логики. Но в некоторых случаях разница оказывает решающее значение. Однако, обо все по порядку.
Ссылка на предыдущую статью, о которой я говорил ранее
Типы цифровой логики. Не только ТТЛ и КМОП
Классическая КМОП логика
Я не буду повторять написанное в предыдущей статье, однако нам нужно вспомнить, как выглядит типичный элемент КМОП. Но немного более подробно
Совсем уж старые серии, вроде нашей 176, вспоминать не будем. Типичные представители более современной классической КМОП логики работают при напряжении питания от 3 до 15 В. При этом входные токи можно считать отсутствующими (в статическом режиме!), так как токи утечки затворов чрезвычайно малы. И потребляемый таким элементом ток очень мал, при отсутствии нагрузки и в статическом режиме.
Статический режим означает, что входные сигналы не изменяются. Изменение входных сигналов приводит к появлению входных токов, так как емкости затворов будут перезаряжаться. Соответственно будет возникать и ток нагрузки, так как к выходу элемента подключаются входы последующих элементов. Емкость дорожек печатной платы тоже вносит свой вклад. Нельзя забывать и про инерционность переключения транзисторов.
В результате, на высокой частоте рассеиваемая элементом КМОП мощность оказывается гораздо выше, чем в статике. Малая потребляемая мощность является одним из основных плюсов. Однако, у любой медали есть две стороны. А у каждого плюса найдется свой минус.
Паразитное самопитание КМОП логических элементов
Давайте посмотрим, что будет, если на логический элемент не подано напряжение питания, но на его входах (хотя бы на одном из них) присутствует сигнал высокого логического уровня. Например, на плату нашего устройства поступают сигналы из внешних цепей.
В цепи питания каждой микросхемы обычно установлен конденсатор, который и будет заряжаться от входного сигнала через защитный диод между входом и +Uп. Поскольку в статическом режиме ни вход, ни элемент, ток практически не потребляют даже малого тока от высокоомного источника входного сигнала может оказаться достаточно, что бы конденсатор зарядился до напряжения при котором логический элемент начнет работать. Скорее всего, работать некорректно.
Такое самопитание КМОП логики от входных сигналов является вредным явлением. Однако, есть микросхемы (серии микросхем) в которых это вредное явление отсутствует. В таких микросхемах используется немного иной способ защиты входов. Например, Toshiba приводит такой вариант
Здесь верхний защитный диод отсутствует. Подробности реализации защиты не сообщаются. Причем такое решение используется и для входов и для выходов элементов.
На самом деле, есть несколько различных вариантов защиты выводов с исключением паразитного самопитания. Но поскольку статья немного о другом, я просто приведу пару ссылок (английский язык)
Низкая нагрузочная способность, зависящие от тока нагрузки логические уровни, быстродействие
Это тоже следствие экономичности и простоты схемотехнического решения. Посмотрите еще раз на иллюстрацию с элементом 2ИЛИ-НЕ. В верхнем плече два транзистора включены последовательно. Для элемента 2И-НЕ последовательно будут включены два нижних транзистора.
Да, в статье "Типы цифровой логики. Не только ТТЛ и КМОП" я говорил, что это не так критично, как для биполярных транзисторов. Но если нужен элемент 8ИЛИ или 8И? Если учесть, что в микросхемах стараются сделать транзисторы минимального размера, сопротивление канала получается значительным. А это не только приводит к зависимости выходных уровней напряжения от тока нагрузки, но и отрицательно сказывается на быстродействии.
Для простых логических элементов можно формировать транзисторы большего размера, с малым сопротивлением канала, что снизит остроту проблемы. Но для сложных элементов, например, триггеров или регистров, это решение будет не самым оптимальным.
Логические уровни не ТТЛ
Этот недостаток вовсе не является странным. Микросхемы ТТЛ были господствующими в цифровых устройствах. Поэтому требовалось обеспечить совместимость.
Проблема возникает при подключении входа КМОП логики к выходу ТТЛ. Даже в том случае, если КМОП питается от тех же самых 5 В. Дело в том, что минимальное напряжение высокого уровня в ТТЛ равно 2.4 В, а максимальное напряжение низкого уровня 0.4 В. С учетом помех фактические пороговые уровни равны примерно 2 В для высокого уровня и 0.8 В для низкого.
Да, если вы измерите уровни на выходе отдельного не нагруженного элемента, то они будут близки к 0 и 5 В. Но нагруженный элемент обязан обеспечивать на выходе максимум 0.4 В для "0" и минимум 2.4 В для "1". Поэтому во многих случаях проблему вы не заметите, но это не означает, что ее не существует.
У КМОП логики пороговый уровень примерно соответствует половине напряжения питания. При питании от 5 В это дает 2.5 В. Таким образом, в худшем случае напряжение высокого уровня на входе КМОП подключенном к выходу ТТЛ будет недостаточным, чтобы КМОП восприняла его как действительно высокий уровень. Ведь 2 В меньше 2.5 В (а требуется минимум примерно 3 В для этого случая).
И "1" будет воспринята как "0", что является ошибкой. Самое неприятное, что подобная ошибка может возникать не постоянно, а периодически, например, при повышенной температуре или высокой частоте сигнала.
Проблему можно решить установкой подтягивающего резистора (на +5В) на выходе ТТЛ. Это снизит влияние верхнего плеча выходного каскада ТТЛ и позволит совместимые с КМОП уровни. Я не буду приводить расчет сопротивления подтягивающего резистора. Так же можно использовать ТТЛ элементы с открытым коллектором выходе и тот же самый подтягивающий резистор.
При подключении выхода КМОП ко входу ТТЛ тоже может возникнуть проблема. Особенно, если элемент КМОП является многовходовым элементом И, например 8И. Входы ТТЛ генерируют вытекающий ток при низком уровне на входе. И если к выходу КМОП подключено много ТТЛ входов, суммарный вытекающий ток ТТЛ может привести к повышенному напряжению низкого уровня на выходе, например, элемента 8И.
Совместимая с ТТЛ логика КМОП
Неудивительно, что требование совместимости с ТТЛ было чрезвычайно важным. Это привело к появлению специального семейства микросхем КМОП. В данном случае я буду использовать зарубежные серии микросхем для описания.
Итак, разговор будет идти о следующих сериях:
- 7400 - классическая ТТЛ
- 5400 - классическая ТТЛ малой мощности
- 74НС - классическая КМОП, точнее, CMOS, все таки зарубежная
- 74HCT - классическая совместимая с ТТЛ CMOS
Texas Instruments приводит в документе SN54/74HCT CMOS Logic Family Applications and Restrictions (май 1996) несовместимости логических уровне ТТЛ и КМОП и того, как эта проблема решается серией 74HCT
Там же описывается решение с подтягивающим резистором и расчет этого резистора. Изменение пороговых уровней в серии 74HCT достигается изменением геометрии полевых транзисторов первого каскада.
Примерно аналогичные решения (и документы) есть и у других производителей микросхем. Например, Fairchild Semiconductor Application Note 368 (март 1984).
Следует учитывать, что совместимость с ТТЛ здесь только по входным уровням! Элементы серии 74НСТ не генерируют вытекающий ток входов для напряжения низкого уровня. Иногда это требуется учитывать.
В остальном, совместимая с ТТЛ КМОП логика является классической КМОП логикой. Схемотехнических отличий нет, только измененная геометрия входных транзисторов на кристалле.
Буферизованная логика
Привести в порядок выходные логические уровни и повысить нагрузочную способность можно установив на выходе классических КМОП элементов дополнительные мощные (относительно) каскады. И проще всего использовать для это классические инверторы КМОП, но с более крупными транзисторами, что позволит уменьшить сопротивление канала.
Такая логика называется буферизованной и сегодня является наиболее распространенной и почти вытеснила классическую. Поскольку инверсия выходного сигнала далеко не всегда желательна, возможны два варианта построения базовых элементов (на примере 2ИЛИ)
На практике можно встретить использование обоих вариантов. Кажущаяся меньшая целесообразность второго варианта является ошибочной. Дело в том, что в сложных элементах (триггерах, регистрах, АЛУ, и т.д.) буферные каскады используются только на входах и выходах. Внутренние каскады выполняются по схемам классической КМОП логики!
Включение инверторов на входе позволяет снизить влияние входной емкости элемента на выход предыдущего каскада. Например, один вход дешифратора может объединять внутри множество отдельных входов элементов И/ИЛИ, что дает в сумме значительную входную емкость. И инвертор на входе позволяет решить эту проблему. От него не требуется большой мощности, как от выходного.
Входные инверторы нам не очень интересны, а вот с выходными, мощными, стоит разобраться подробнее.
Сквозной ток и помехи по цепям питания
Давайте посмотрим на модель мощного выходного инвертора, собранную на дискретных транзисторах.
Как и во многих других статьях я буду использовать программу моделирования MPLAB Mindi.
Здесь использованы два почти комплементарных транзистора с близкими параметрами. Это ничем не выдающиеся, кроме большой распространенности, транзисторы с сопротивлением канала 10 Ом (максимум). Источник напряжения V1 обеспечивает схему питанием, а V2 формирует входной сигнал треугольной формы. Скоро вы поймете, почему я использовал сигнал именно треугольной формы. Резистор R1 имитирует выходное сопротивление источника сигнала.
В модели использовано три зонда (щупа). Зонд V2-pos показывает входной сигнал. Зонд Q1-D выходной сигнал инвертора. Зонд Q1-S является токовым, в отличии от других зондов. Он показывает потребляемый инвертором ток от источника питания.
А теперь результат моделирования (по клику открывается в большем размере)
Здесь красным цветом показан входной сигнал. зеленым цветом выходной, синим ток потребляемый инвертором по цепи питания. Масштаб напряжения по вертикальной оси программа выбрала неудачный, не кратный клеткам графика. Но тут уже ничего не поделать.
Итак, при плавной увеличении входного напряжения инвертор начинает переключаться при напряжении примерно 2.5 В, половине напряжения питания, как и ожидалось. Заканчивается переключение при 2.9 В на входе. Этот диапазон входных напряжений, от 2.5 В до 2.9 В, соответствует работе обоих транзисторов инвертора в активном режиме.
В активном режиме через транзисторы инвертора протекает сквозной ток. Именно пики этого сквозного тока и показаны на графике синим цветом, как раз во время переключения инвертора. В модели не принято никаких мер для уменьшения сквозного тока, однако его пиковое значение составило примерно 14 мА. То есть, оба транзистора действительно приоткрыты, работают в активном режиме. При этом у нас к выходу инвертора не подключена нагрузка!
Интересно оценить влияние сопротивления источника сигнала, давайте увеличим его до 10 кОм. И получим такой результат
Видно, что время переключения выросло, но максимальное значение сквозного тока осталось неизменным. Вполне закономерный результат. Возросло влияние емкостей затворов транзисторов, что привело к более долгому нахождению транзисторов в активном режиме. Но сам процесс переключения не изменился.
Можно сдвинуть пороговые напряжения транзисторов инвертора изменив их геометрию на кристалле, как это было сделано в серии HCT. Но полностью исключить протекание сквозного тока очень сложно. Можно уменьшить его пиковое значение.
То есть, мощные буферные инверторы очень не любят плавного изменения входного напряжения. А значит, буферизованную КМОП логику нельзя использовать в аналоговых и полу-аналоговых схемах, что возможно для классической КМОП логики. Примером таких полу-аналоговых схем являются многие RC-генераторы. По той причине, что на выходных транзисторах буфера будет рассеиваться слишком большая мощность.
Однако, нельзя использовать лишь обычные буферизованные элементы, но можно использовать буферизованные элементы с триггерами Шмитта на входе. Триггер Шмитта исключает влияние скорости изменения входного сигнала. Если же элементы с триггерами Шмитта на входе использовать нельзя, то следует поискать обычные, не буферизованные элементы. Они выпускаются, но более редкие и могут быть более дорогими.
Примеры не буферизованных микросхем: MC74VHC1GU04, SN74AHC1GU04. Пример буферизованной микросхемы: NC7WZ04P6X. Пример буфферизованной микросхемы с триггерами Шмитта: SN74LVC2G14DBVR.
Не буферизованные элементы не всегда имеют букву U в наименовании, так что нужно заглядывать в документацию. Важно именно Unbuffered Output.
Из нашей модели видно и очевидное требование - обязательно шунтировать выводы питания микросхем буферизованной логики конденсаторами. Причем важно, что бы конденсатор имел малый ESR (например, керамический) и располагался как можно ближе к выводам микросхемы. Конденсатор позволит замкнуть импульсы тока переключения в контуре микросхема-конденсатор и минимизировать прохождение помех по цепям питания.
Самовозбуждение и звон на фронтах
По большому счету, эта проблема пересекается с предыдущей. Добавление к логическому элементу буферных каскадов увеличивает его коэффициент усиления для активного режима. А это может привести к самовозбуждению при медленном изменении входного сигнала, особенно, при наличии шума и помех. И приводит к паразитной генерации на практике, для медленно изменяющегося входного сигнала.
Я не буду моделировать этот процесс, просто приведу фрагмент из документа Texas Instruments. Understanding Buffered and Unbuffered CD4xxxB Series Device Characteristics. R. E. Funk. Standard Linear & Logic. 2002 год.
Если действительно требуется работа с медленно изменяющимся входным сигналом, используйте не буферизованные элементы или элементы с триггерами Шмитта на входе.
Быстродействие
Поскольку в буферизованных элементах добавлено два дополнительных инвертора, следует ожидать снижения быстродействия, так как задержка распространения сигнала возрастает. И это действительно было так в первых сериях. Однако, технологии не стоят на месте.
Давайте сравним некоторые параметры (рекомендованные) не буферизованной SN74AHC1GU04
- Напряжение питания: 2-5.5 В
- Выходной ток (втекающий/вытекающий): 8 мА
- Время переключения (типовое) при 5В: 3.5 нс
И буферизованной NC7WZ04P6X
- Напряжение питания: 1.65-5.5 В
- Выходной ток (втекающий/вытекающий): 50 мА
- Время переключения (типовое) при 5В: 1.8 нс
- Максимальное время фронта/спада входного сигнала при 5 В: 5 нс/В
Видно, что быстродействие современных буферизованных элементов не ниже, чем классических. При этом выходной ток буферизованных элементов значительно выше. И обратите внимание на последний параметр Максимальное время фронта/спада входного сигнала, этого параметра не было у классических элементов КМОП.
Заключение
Сегодня мы рассмотрели лишь некоторые основные типы КМОП логики. За кадром остались серии VHC, UHC (буферизованная, не смотря на букву U!), LVC, и множество других. Детали их реализации отличаются, но их различие меньше, чем между не буферизованной и буферизованной логикой. И учитывать эти особенности требуется гораздо реже.
Давайте подведем небольшой итог.
Классическая, не буферизованная логика:
- Проста и экономична
- Хорошо подходит как для логических/цифровых схем, так и для полу-аналоговых (RC-генераторы, например) и даже чисто аналоговых.
- Обладает невысокой нагрузочной способностью
- Могут возникать проблемы при совместном использовании с ТТЛ логикой
- Следует избегать подачи входных сигналов при отсутствии питания
ТТЛ-совместимая логика:
- Аналогична классической логике, но имеет некоторые отличия в токе пртребления
- Совместима по уровням входных сигналов с ТТЛ
- Не генеририрует входных токов, в отличии от ТТЛ
Буферизованная логика:
- Самый распространенный на сегодня тип логики
- Большой выходной ток
- Сравнимое с классическими КМОП быстродействие, или даже выше
- Требует обязательной установки конденсаторов в цепях питания, так как генерирует пики тока потребления с крутыми фронтами и малой длительности (отличные помехи!)
- Необходимо обеспечивать минимально возможное время фронта/спада входных сигналов. Этот параметр может нормироваться!
- Непригодна для работы в полу-аналоговых схемах, не говоря уже об аналоговых
Для чисто цифровых устройств можно использовать любой тип КМОП логики, если все элементы именно КМОП.
На сегодня все. Если появились, или остались, какие либо вопросы, задавайте их в комментариях.