Логические уровни: TTL и CMOS, почему 5 В и 3,3 В нельзя соединять напрямую
Логический ноль и логическая единица — это не числа, а диапазоны напряжений. Внутри диапазона схема не различает, 0,9 В или 1,4 В: для неё это ноль. Именно поэтому две микросхемы, обе из которых прекрасно работают поодиночке, могут отказаться работать вместе, если их уровни не совпадают. Тема звучит узкой, но это первое, что проверяют, когда «схема не запускается, хотя все вентили на месте». Остальные части предмета собраны на странице «Схемотехника».
Единица и ноль — это диапазоны
У каждой микросхемы четыре числа, которые описывают её уровни. Два относятся к входу: VIH — напряжение, начиная с которого вход обязан понимать единицу, и VIL — напряжение, до которого вход обязан понимать ноль. Два относятся к выходу: VOH — наименьшее напряжение, которое выход выдаёт, выдавая единицу, и VOL — наибольшее, которое он выдаёт, выдавая ноль. Между VIH и VIL лежит зона, где вход ничего не обещает: там значение не имеет смысла, и в datasheet она называется неопределённой.
Выходные числа зависят от нагрузки, температуры и питания, поэтому в datasheet приводят условия: «при токе нагрузки 4 мА и напряжении питания 4,5 В». Отсюда правило, которое стоит усвоить до всех остальных: конкретные цифры берутся из datasheet конкретной микросхемы, а не из памяти. Ниже — типичные значения для разговора о двух классических семействах при питании 5 В.
| Параметр | TTL, серия 74xx | КМОП, серия 74HC при 4,5 В |
|---|---|---|
| Питание | 5 В | 4,5–5,5 В |
Вход: единица не ниже VIH | 2,0 В | 3,15 В (около 0,7·Vcc) |
Вход: ноль не выше VIL | 0,8 В | 1,35 В (около 0,3·Vcc) |
Выход: единица не ниже VOH | 2,4 В | 4,4 В |
Выход: ноль не выше VOL | 0,4 В | 0,1 В |
| Входной ток | десятки микроампер на вход | практически нулевой |
| Ток покоя | заметный, есть у каждого входа | почти нулевой, а в динамике всё решает частота |
Один взгляд на таблицу объясняет половину инженерных привычек. Выход КМОП подтягивается к самому питанию почти вплотную, поэтому его единица — это почти Vcc, и стык с чем-то, чей порог единицы ниже, получается с большим запасом. Выход TTL работает на токе: он не умеет подниматься выше примерно 2,4 В гарантированно, и в этом проигрыш.
Запас по шуму: сколько вольт можно потерять
Запас по шуму отвечает на вопрос «сколько вольт сигнал может потерять или набрать в пути и всё ещё быть распознан». Считается он просто: для верхнего уровня это VOH(min) − VIH(min), для нижнего — VIL(max) − VOL(max). Это разница между худшим обещанием отправителя и минимальным требованием получателя.
Посчитаем для двух строк таблицы. У 74HC при питании 4,5 В: 4,4 − 3,15 = 1,25 В на верхнем уровне и 1,35 − 0,1 = 1,25 В на нижнем. У классической TTL: 2,4 − 2,0 = 0,4 В и 0,8 − 0,4 = 0,4 В. Вот почему TTL-платы приходилось делать короткими: полвольта запаса съедается помехой от соседнего сигнала, а на двухметровом кабеле ещё и просадкой на сопротивлении провода. Переход к КМОП по сути состоял в том, что запас по шуму вырос втрое, и это позволило поднять частоту и длину линий.
Сюда же относится приём, о котором стоит знать при чтении схем: если на входе стоит резистор, это часто подтяжка. Она нужна не для красоты, а чтобы задать входу состояние, когда сигнал отключён. Подробнее об этом в статье про чтение принципиальной схемы, где плавающий вход разбирается как отдельный случай.
Почему 5 В и 3,3 В не соединяют напрямую
Теперь можно проверить стыки. Первая пара — два выхода TTL на входе КМОП при одном питании 5 В. Выход TTL гарантирует единицу не ниже 2,4 В, а вход 74HC обязан распознать единицу начиная с 3,15 В. Между 2,4 и 3,15 В лежит зона, где обе стороны по datasheet правы, а схема работает случайно: на столе исправно, на производстве через раз. Такой стык называют несовместимым, и его не используют.
Вторая пара — выход КМОП на вход TTL при 5 В. Здесь всё складывается: VOL у КМОП около 0,1 В, что заметно ниже VIL у TTL в 0,8 В, а единица 4,4 В с большим запасом перекрывает требование 2,0 В. Такой стык рабочий, и именно поэтому переход на КМОП был постепенным: старые платы дорабатывали, не выбрасывая.
Третья пара — причина, по которой сегодня больше всего поломок: выход 5 В на вход микросхемы с питанием 3,3 В. Здесь проблема не в логике, а в напряжении на входе. У такой микросхемы допустимое напряжение на входе ограничено напряжением питания с небольшим запасом, и 5 В этот предел превышают. Снаружи такой вход выглядит обычно: он не перегревается, а схема работает до тех пор, пока вход не выйдет из строя. Именно поэтому стык проверяют по datasheet до первого включения, а не по факту неработающей платы.
Способы обойти это известны и не требуют изобретений. Микросхемы с обозначением, где входы приведены к TTL-порогам, принимают сигнал от старой логики напрямую. Преобразователь уровней делает перевод явным. Ограничить верхний уровень можно резистивным делителем: последовательный резистор и резистор на землю подбирают так, чтобы на входе получилось выше порога единицы, но ниже предела для этого входа. Делитель замедляет фронты, поэтому так поступают только на медленных сигналах. Подтягивающий резистор к 3,3 В в этой схеме не помощник: при обычном выходе, который умеет и единицу, и ноль, уровень задаёт сам выход, и подтяжка на него не влияет. А вот для выхода с открытым коллектором подтяжка к 3,3 В — правильное решение, причём она же задаёт скорость нарастания сигнала. Исключение, о котором стоит знать: у многих современных микросхем входы терпимы к 5 В, и это прямо написано в datasheet — тогда стык допустим и без преобразователя. Выбор между вариантами — уже не про логику, а про совместимость, скорость и цену.
Входы и потребление: две разных философии
Помимо уровней, семейства различаются тем, как ведут себя входы без сигнала. У классической TTL вход устроен как эмиттерный переход транзистора, и если провод от входа оторвать, такой вход читается как единица. Это известное свойство, на котором даже строили схемы: любой неиспользуемый вход TTL на плате работал как логическая единица. У КМОП вход — это затвор полевого транзистора, он ничего не потребляет и при этом способен накапливать заряд. Висящий вход КМОП может показать что угодно: значение зависит от того, что осталось на затворе от предыдущего состояния и от наводок вокруг. Поэтому неиспользуемые входы КМОП оставляют в определённом состоянии, а не висящими.
С потреблением картина зеркальная. TTL потребляет ток постоянно, и каждый вход добавляет свой вклад даже без смены сигнала. КМОП в покое почти ничего не потребляет, и вся энергия уходит на переключение: чем выше частота и чем больше ёмкость нагрузки, тем больше ток, и при снижении напряжения потребление падает само, потому что ёмкостная мощность пропорциональна квадрату напряжения. Отсюда практический совет для современной схемы: не понижайте напряжение питания ради экономии без расчёта, потому что вместе с напряжением уходят и запас по шуму, и скорость, а экономия оказывается меньше ожидаемой.
Скорость у семейств тоже разная, и это отдельная тема, а не следствие уровней: у КМОП задержка распространения падает при снижении напряжения питания, поэтому на 3,3 В схема на тех же вентилях обычно быстрее, чем на 5 В. Скорость на длинных линиях, кроме того, ограничена самой линией, и про это отдельно в статье про задержку распространения.
Как это выглядит в симуляторе
Симулятор в этом курсе работает с нулями и единицами, а не с вольтами, и это осознанное упрощение: в нём нет ни порогов, ни запаса по шуму, ни питания. Проверить в нём совместимость уровней нельзя, и любая попытка сделать это через симулятор упрётся в отсутствие модели.
Что переносится без потерь, так это вторая половина темы. В симуляторе выход — источник, и два выхода на одной сети конфликтуют ровно так же, как в железе: тот, кто активнее, продавливает линию, и остальные получают неверный уровень. Шина, к которой подключено несколько выходов, требует разрешения, и мультиплексор с входом разрешения — это и есть модель включения источника. Третьего состояния, когда источник отпускает линию и на ней остаётся напряжение подтяжки, в симуляторе нет, поэтому подтяжка на схеме рисуется явно, а на холсте выглядит как резистор или как отдельный источник логического уровня.
Практический вывод: уровни проверяются по datasheet и по схеме, а симулятор используется для проверки того, верна ли логика. Это разные проверки, и совмещать их не стоит.
Чем TTL отличается от КМОП?
Это два разных способа построить логический элемент. TTL использует многоэмиттерный входной транзистор и токовые выходы: единица на входе означает, что вход ничего не потребляет, а входной ток измеряется десятками микроампер. КМОП строит элемент на полевых транзисторах: вход почти не потребляет тока, зато выход упирается в сам питающий провод, поэтому у КМОП почти нулевой ток покоя. Практическое следствие: у КМОП входы боятся плавающего состояния, а у TTL висящий вход считается единицей.
Почему 5-вольтовый TTL нельзя подключить к входу 5-вольтовой микросхемы КМОП?
Потому что выход TTL не дотягивает до порога единицы КМОП. У TTL гарантированный минимум на выходе единицы около 2,4 В, а у КМОП-серии при 5 В порог входной единицы около 3,15 В. На стыке остаётся зона, где выход уже отпустил сигнал, а вход ещё не признал его единицей, и схема может работать через раз. Решается это микросхемами с порогами в TTL-совместимом варианте, преобразователями уровней или подтягивающим резистором на 5 В: он поднимает слабую единицу TTL до уровня, который вход КМОП распознаёт.
Что такое запас по шуму и зачем он нужен?
Это зазор между тем, что микросхема гарантированно выдаст на выходе, и тем, при котором вход ещё правильно распознаёт логический уровень. Если сигнал по дороге зашумлён или просел на сопротивлении провода, запас по шуму определяет, переживёт ли это схема. У КМОП он около вольта на уровень, у классической TTL заметно меньше, и в этом её главная слабость на длинных линиях.
Можно ли подать 5 В на вход микросхемы с питанием 3,3 В?
Как правило, нет. У микросхемы с питанием 3,3 В допустимое напряжение на входе ограничено напряжением питания плюс небольшой запас, а превышение этого предела выводит вход из строя. Выход 5 В при этом может выглядеть совершенно рабочим, поэтому подключение часто проверяют только после того, как схема уже не запускается. Исключение — микросхемы с 5-вольтными входами: если это прямо написано в datasheet, стык допустим. В остальных случаях нужен преобразователь уровней либо делитель, ограничивающий верхний уровень.
Проверьте себя
Почему 3,5 В на входе микросхемы с питанием 3,3 В — это ещё не «вход выдержит»?
Потому что порог логики и предел напряжения на входе — это разные числа. Единицу вход при питании 3,3 В распознаёт примерно с 0,7 от питания, то есть от 2,3 В, так что 3,5 В этот порог перекрывают. Но ограничивает вход не порог, а предельное допустимое напряжение, которое в datasheet указано отдельно и нередко близко к напряжению питания. Проверять нужно обе цифры, а не одну.
Можно ли объединить выходы двух микросхем, если их выходы заведомо никогда не активны одновременно?
Нет, если это обычные выходы, умеющие и единицу, и ноль. Пока оба включены, а их уровни различаются, между ними получается короткое замыкание: сильный выход тянет линию к своему уровню, а второй получает перегрузку по току. То, что источники «никогда не активны одновременно», ничего не меняет: в момент переключения один уже ведёт линию, а второй ещё нет. Объединять выходы можно только у микросхем с открытым коллектором или с трёхстабильным выходом, и тогда нужен арбитраж — правило, кто из источников ведёт линию в этот момент. В этом курсе таких узлов нет, поэтому источники разводят мультиплексором: активен один, остальные отключены его входами.
Зачем у входа 74HC подтягивающий резистор, если он всё равно почти ничего не потребляет?
Не потребляет ток — не значит не заряжается. Затвор полевого транзистора вместе с ёмкостью канала и дорожек образует конденсатор, и на переключении этот заряд нужно перекачивать каждый раз. Резистор подтяжки существует по другой причине: он задаёт входу состояние, когда управляющая линия отключена и на входе физически никого нет. Побочный эффект тот же, что у всякой подтяжки — вход перестаёт переключаться мгновенно, а значит в схеме появляется задержка, которую приходится считать при проектировании.
Откуда берутся задержки и как они накапливаются, разобрано в статье про задержку распространения, почему нельзя соединять два источника — в статье про конфликты на шине и дешифратор адреса, а почему это всё равно инженерная работа, а не сборка из готовых блоков, — в материале про инженера-разработчика схем.