Глава 8. Цифровая логика

8.1. Логика: числа, коды, элементы

Зачем сигналы превращают в числа и почему цифровая линия не копит шум; два уровня напряжения, запас помехоустойчивости и паспортные уровни семейств; двоичная, шестнадцатеричная и восьмеричная запись, двоично-десятичный код, числа со знаком и код Грея; логические элементы и их таблицы истинности, вентили из диодов и транзисторов, изображение схем в логике заданных уровней.

≈ 66 мин чтения · пунктирное подчёркивание — наведите или нажмите, чтобы увидеть пояснение

8.1.1Цифровые и аналоговые сигналы

≈ 6 мин2 упр.
Главное
  • Внутри цифровой схемы сигнал бывает только двух видов: ВЫСОКИЙ уровень или НИЗКИЙ.
  • Связь с непрерывным миром дают два преобразователя: АЦП превращает напряжение в числа, ЦАПЦАП — цифроаналоговый преобразователь: превращает двоичный код в пропорциональный ток или напряжение (раздел 9.3). — числа в напряжение.
  • Цифровую линию можно сделать сколь угодно длинной: каждый узел заново решает «0 или 1», и шум дальше не идёт (ИКМ).
  • Пример масштаба: компакт-диск хранит отсчёты по 16 бит через каждые ≈23 мкс — миллиарды бит на одном диске.

Начнём с житейского наблюдения. Если переписывать магнитофонную кассету с кассеты, а потом копию — ещё раз, к пятому поколению запись тонет в шипении: каждая перезапись добавляет свой шум, и убрать его потом нечем. А файл с песней можно пересылать из телефона в телефон сколько угодно раз — сотая копия звучит так же, как первая. Разница не в качестве аппаратуры, а в способе представления сигнала, и именно с неё удобно начинать разговор о цифровой электронике.

Почти всё, что мы строили до этой главы, — фильтры, интеграторыИнтегратор — схема, выход которой пропорционален интегралу входа по времени: ., выпрямители, усилители на транзисторах и ОУ, — обрабатывало напряжения, которые могут принимать любое значение в своём диапазоне. Это естественный выбор, когда непрерывен сам сигнал: звук с микрофона, температура с термопары, ток фотодиодаФотодиод — диод, обратный ток которого пропорционален падающему свету; быстрый (наносекунды), но ток мал., потенциал электрода в химической или биологической пробе.

Есть, однако, сигналы, которые по природе «штучные»: отдельные импульсы от счётчика частиц, нажатия кнопок клавиатуры, биты, которыми обмениваются компьютер и принтер. Им подходит цифровая электроника — схемы, которые хранят и перерабатывают информацию, записанную только «единицами» и «нулями».

Граница миров: АЦП и ЦАП

Чаще всего обе электроники работают в одной системе. Аналоговую величину, которую нужно запомнить или обсчитать на процессоре, превращают в поток чисел аналого-цифровым преобразователем (АЦП); обратный путь, от чисел к напряжению, проделывает цифро-аналоговый преобразователь (ЦАП). Типичный пример — метеостанция на микроконтроллере: она опрашивает датчики, по результатам включает обогрев или вентиляцию и складывает измерения в память.

Из чего обычно состоит цифровая система
Датчиктермопара, фотодиод, микрофон: величина меняется непрерывно
АЦПчерез равные промежутки времени измеряет амплитуду и выдаёт её числом
Процессор и памятьпересчёт, калибровка, хранение, решения об управлении
ЦАПпревращает вычисленные числа обратно в напряжение
Исполнительный узелнагреватель, динамик, стрелочный индикатор, клапан

Почему цифровая линия не копит шум

Вернёмся к кассете. Когда звук или картинку передают в аналоговом виде — по кабелю, по радио, через перезапись, — к ним по дороге неизбежно примешивается шум. Приёмник получает сумму «сигнал плюс шум» и не имеет способа разделить её обратно: шум выглядит так же, как полезные колебания.

Поступим иначе: будем через равные промежутки времени измерять амплитуду сигнала, записывать результаты числами и передавать эти числа двумя уровнями напряжения. Приёмник должен лишь различить, какой уровень пришёл. Пока шум в канале не столь велик, чтобы «единица» превратилась в «ноль», принятые числа совпадают с отправленными бит в бит, и ЦАП на приёме восстанавливает в точности исходный сигнал. Такой способ называется импульсно-кодовой модуляциейИКМ: сигнал заменяют последовательностью чисел — отсчётов амплитуды через равные промежутки времени — и передают эти числа двоичными уровнями. (ИКМ).

Особенно ярко выигрыш виден на длинной линииДлинная линия — соединение, время пробега сигнала по которому сравнимо со временем фронта или больше; тогда важны волновое сопротивление и отражения. с промежуточными узлами-ретрансляторами. Аналоговый ретранслятор вынужден усиливать всё, что пришло, — вместе с уже накопленным шумом. Цифровой поступает по-другому: он заново решает, ноль пришёл или единица, и отправляет дальше свежие, чистые уровни. На этом построены магистральная телефония, связь с межпланетными аппаратами и, конечно, компакт-диск: на диске диаметром 12 см стереозвук хранится 16-разрядными отсчётами, следующими через ≈23 мкс, — всего несколько миллиардов бит.

аналоговая линияусил.усил.шум ↑цифровая линия (ИКМ)0/1?0/1?чистоwww.reknow.ru
Верхняя строка: усилитель на каждом участке поднимает и сигнал, и шум, так что к концу линии шума всё больше. Нижняя: цифровой узел лишь решает «0 или 1» и отправляет дальше свежие уровни.
Длинная линия из одинаковых участков
Аналоговый узелЦифровой узел (ИКМ)
Работа узлаусиливает принятую смесь сигнала и шумарешает «0 или 1» и посылает новый чистый уровень
Шум с ростом длинымощности шумов всех участков складываютсяне переходит на следующий участок
Что всё-таки копитсяшумредкие ошибочные решения
От чего зависит качествоухудшается с каждым новым участкомопределяется разрядностью отсчётов
16 битна один отсчётКаждое значение амплитуды на компакт-диске — одно из 65 536 возможных.
≈23 мксмежду отсчётамиДискретизация 44,1 кГц: мкс.
12 смдиаметрНа такой площади записаны несколько миллиардов бит звука.

Цифра выручает и там, где задача на вид чисто аналоговая. Термометр с дешёвым нелинейным датчиком можно снабдить микроконтроллером, который хранит калибровочную таблицу и пересчитывает по ней каждое показание, — нелинейность исчезает без единой прецизионной детали. Таких применений будет много, и перечислять их заранее нет смысла: они сами появятся в следующих разделах.

Упражнение 8.1.1

Студийный аудиоинтерфейс пишет звук в два канала, по 24 бита на отсчёт, с частотой дискретизации 48 кГц. Какой поток данных он отдаёт в компьютер (без служебных битов) и сколько бит займёт часовая запись?

Решение

За секунду в каждом канале делается отсчётов по 24 бита, каналов два:

Час — это 3600 с: бит, то есть около 1 ГБ. Для сравнения, компакт-диск ( кГц, 16 бит, 2 канала) даёт Мбит/с — на треть меньше. В реальных файлах и на диске добавляются ещё служебные поля и коды исправления ошибок.

Упражнение 8.1.2

Подводный кабель разбит на 32 одинаковых участка с усилительными пунктами. На каждом участке отношение сигнал/шум 55 дБ, шумы участков независимы. а) Каким будет отношение сигнал/шумОтношение сигнал/шум (С/Ш) — дБ, где оба напряжения — эффективные и измерены в одной оговорённой полосе. на берегу, если пункты — аналоговые усилители? б) Если пункты цифровые и каждый ошибается в среднем в одном бите из , какова вероятность ошибки бита в конце линии?

Решение

а) Каждый аналоговый пункт усиливает и сигнал, и шум, накопленный до него; к этому добавляется шум нового участка. Мощности независимых шумов складываются, поэтому на берегу шум в 32 раза мощнее, чем после одного участка: дБ — потеряно 15 дБ.

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

Качество восстановленного сигнала определяется разрядностью отсчётов (шумом квантования) и почти не зависит от того, сколько участков в линии.

8.1.2Логические состояния

≈ 11 мин2 упр.
Главное
  • В любой точке цифровой схемы напряжение находится в одном из двух состояний: ВЫСОКОМ (В) или НИЗКОМ (Н).
  • Если «истину» изображает В — это положительная логикаСоглашение, при котором «истину» (активное состояние) изображает ВЫСОКИЙ уровень на проводе.; если Н — отрицательная, и над именем сигнала ставят черту.
  • Уровни — это полосы, а не точки; запас помехоустойчивостиНаибольшая помеха, которая при самом неблагоприятном сочетании условий ещё не превращает НИЗКИЙ уровень в ВЫСОКИЙ или наоборот; считают по паспортным уровням: и . , .
  • Для ТТЛТранзисторно-транзисторная логика: биполярное семейство, питание +5 В, порог ≈1,3 В, заметный ток покоя. Серии LS, ALS, AS, F. запас — 0,4 В в каждом состоянии; считают его по худшим паспортным значениям, а не по типовым.

Подключите кнопку к входу микроконтроллера самым распространённым способом: вывод через резистор подтянут к питанию, а кнопка замыкает его на землю. Пока кнопку не трогают, контроллер читает ВЫСОКИЙ уровень, нажали — НИЗКИЙ. Больше этот провод ничего сообщить не может: никаких «наполовину нажата». Так устроена любая цифровая схема: в каждой её точке, как правило, транзистор либо заперт, либо полностью открыт, и информацию несёт напряжение (реже — ток), которое бывает ВЫСОКИМ или НИЗКИМ.

Одним таким проводом передаётся один бит (от binary digit — двоичная цифра). Смысл бита может быть очень разным:

  • отдельный разряд какого-то числа;
  • контакт замкнут или разомкнут;
  • импульс пришёл или не пришёл;
  • измеренная величина больше порога или меньше;
  • событие уже наступило или ещё нет;
  • команду надо выполнять или не надо.

Какой уровень считать «истиной»

Двум состояниям напряжения сопоставляют два значения булевой алгебрыБулева алгебра — логика переменных со значениями 1 и 0: операции И, ИЛИ, НЕ. — ИСТИНУ и ЛОЖЬ. Сопоставить можно двумя способами. Если активному, «истинному» состоянию сигнала соответствует ВЫСОКИЙ уровень, говорят, что линия работает в положительной логике; если НИЗКИЙ — в отрицательной.

Наша кнопка — как раз отрицательная логикаСоглашение, при котором «истину» изображает НИЗКИЙ уровень; имя такого сигнала пишут с чертой: . Отрицательного напряжения здесь нет.: утверждение «кнопка нажата» истинно тогда, когда на проводе НИЗКИЙ уровень. Поэтому такой сигнал называют с чертой над именем: . Читается это так: провод ВЫСОКИЙ, когда кнопка не нажата.

Правило. Черта над именем сообщает, какой уровень появится на проводе, когда названное событие произошло: становится НИЗКИМ при нажатии. Никакого отрицательного напряжения здесь нет; точнее было бы говорить «сигнал с активным НИЗКИМ уровнем».
+5 В10 кОмКНОПКА НАЖАТАwww.reknow.ru1Подтягивающий резистор. задаёт ВЫСОКИЙ уровень, пока кнопка отпущена; ток через него идёт лишь при нажатии — 0,5 мА2Кнопка. при нажатии соединяет провод с землёй — уровень падает до НИЗКОГО; «истина» изображается НИЗКИМ уровнем3Вход контроллера. видит сигнал — активный НИЗКИЙ уровень
Кнопка на входе микроконтроллера: пока она отпущена, резистор держит провод ВЫСОКИМ; нажатие замыкает провод на землю. Активный уровень — НИЗКИЙ.
Что здесь что (3)
  1. Подтягивающий резистор. задаёт ВЫСОКИЙ уровень, пока кнопка отпущена; ток через него идёт лишь при нажатии — 0,5 мА
  2. Кнопка. при нажатии соединяет провод с землёй — уровень падает до НИЗКОГО; «истина» изображается НИЗКИМ уровнем
  3. Вход контроллера. видит сигнал — активный НИЗКИЙ уровень

Откуда схема «знает», что означает пришедший бит? Из того, к чему подключён провод, — точно так же, как в аналоговом устройстве выход конкретного ОУ изображает конкретную величину. У цифровой техники здесь есть лишняя степень свободы: по одним и тем же проводам можно по очереди передавать разные данные и даже в разные стороны (мультиплексирование); тогда вместе с данными посылают служебные биты — адрес получателя или признак состояния. Таких устройств будет много, а пока условимся, что у каждой схемы одна задача и ей известно, откуда берутся её входы и куда уходят выходы.

Здесь кроется ловушка обозначений. В булевой алгебре 1 значит ИСТИНА, 0 — ЛОЖЬ. Но электронщики тем же символом 1 часто называют просто ВЫСОКИЙ уровень, а 0 — НИЗКИЙ. При положительной логике оба смысла совпадают, при отрицательной — расходятся, и путаница обеспечена.

Совет. Мы будем писать ВЫСОКИЙ (В) и НИЗКИЙ (Н) — так делают в паспортах микросхем, — а символы 1 и 0 оставим для мест, где ошибиться нельзя, например для разрядов чисел и строк таблиц истинности.

Уровни — это полосы напряжений

ВЫСОКИЙ и НИЗКИЙ — не два точных напряжения, а две полосы. Возьмём быстрые КМОП-микросхемы серии HC с питанием +5 В: всё от нуля до 1,5 В их вход считает НИЗКИМ уровнем, всё от 3,5 В до питания — ВЫСОКИМ. Собственные же выходы HC отстоят от земли и от +5 В всего на десятые доли вольта — это остаточное напряжение открытого МОП-транзистораМОП-транзистор (металл — окисел — полупроводник) — полевой транзистор, затвор которого отделён от канала тонким слоем стекла ; ток затвора практически нулевой (входное сопротивление больше Ом)..

Широкие полосы на входе — не небрежность, а запас. Изготовитель обязан гарантировать работу при разбросе параметров от экземпляра к экземпляру, при нагреве и охлаждении, при разной нагрузке и плавающем питании, а также при помехах — посторонних сигналах, которые подмешиваются к полезному по пути через ёмкостные связиЁмкостная связь (связь по переменному току) — сигнал передаётся через разделительный конденсатор, который не пропускает постоянную составляющую., наводки от соседних проводников и общий провод земли.

Главное свойство цифрового входа: приняв искажённый сигнал, он выносит решение «В» или «Н», и на выходе микросхемы снова стоят чистые уровни. Помеха, не сумевшая перевести сигнал через порог, отбрасывается целиком на первой же ступени и дальше не распространяется. В этом смысле цифровая схема к помехам нечувствительна.

Насколько большую помеху можно выдержать, говорит помехоустойчивость: наибольшая добавка к сигналу, которая даже в самом неудачном сочетании условий ещё не приводит к ошибке. Считают её по гарантированным, паспортным уровням, отдельно для НИЗКОГО и для ВЫСОКОГО состояния:

Запас помехоустойчивости по паспорту
Обозначения:запас в НИЗКОМ состоянии: насколько помеха может поднять НИЗКИЙ уровень без ошибкизапас в ВЫСОКОМ состоянии: насколько помеха может опустить ВЫСОКИЙ уровень без ошибкисамое высокое входное напряжение, которое ещё гарантированно понимается как НИЗКОЕсамое высокое напряжение, до которого может подняться выход в НИЗКОМ состояниисамое низкое напряжение, до которого может опуститься выход в ВЫСОКОМ состояниисамое низкое входное напряжение, которое ещё гарантированно понимается как ВЫСОКОЕ
0 В1 В2 В3 В4 В5 Ввыход ТТЛВНвход ТТЛчитается как Вчитается как Нне определеноΔUН = 0,4 ВΔUВ = 0,4 Вwww.reknow.ru
Слева — где может оказаться выход ТТЛ, справа — что понимает вход ТТЛ. Зазоры между ними по 0,4 В: столько помехи сигнал переносит, не попадая в серую зону.

Посчитаем для ТТЛ. Паспорт обещает, что вход поймёт как НИЗКИЙ любое напряжение до 0,8 В и как ВЫСОКИЙ — любое выше 2,0 В, а выход в худшем случае даёт не более 0,4 В и не менее 2,4 В. Запас получается 0,4 В в обоих состояниях. Живые микросхемы обычно лучше: типичные выходные уровни около 0,2 и 3,4 В, а реальный порог входа лежит около 1,3 В.

0,4 Взапас ТТЛ по паспорту В и В.
1,3 Вреальный порог ТТЛПримерно два прямых падения на p-n-переходах над землёй.
0,2 / 3,4 Втипичные выходы ТТЛЗапас на деле больше паспортного, но закладываться на это нельзя.
Ловушка. Схему считают по наихудшему случаюПроектирование на наихудший случай — расчёт при самом неблагоприятном сочетании входного напряжения, нагрузки, допусков и температуры.. Если она работает только благодаря тому, что попался «хороший» экземпляр, — это ошибка проекта, даже если на столе всё в порядке.

Семейства логики заметно различаются по запасу: у КМОПКМОП — комплементарные МОП-транзисторы: n- и p-канальные приборы на одном кристалле. Основа почти всей цифровой логики и аналоговых ключей. он больше, чем у ТТЛ, у быстрой ЭСЛ — меньше. Но паспортный запас — только половина дела; вторая половина — какой величины помехи создаёт сама схема. Это зависит:

  • от того, какие токи умеют отдавать выходные каскады;
  • от индуктивности общего провода;
  • от длины шин и соединительных линий;
  • от крутизныКрутизна (передаточная проводимость) — сколько ампер выходного тока даёт вольт входного напряжения, в сименсах; у биполярного транзистора мА/В на миллиампер. фронтов: перезаряд ёмкости нагрузки за наносекунды вызывает выбросы на земле и «звон» на линиях.

Подробно об этом — в разделе 9.2.

Четыре числа каждого семейства

Чтобы соединять микросхемы, про каждое семейство надо помнить четыре напряжения: два гарантированных выходных (для НИЗКОГО и ВЫСОКОГО состояния) и два входных, начиная с которых вход обязан понять уровень правильно. На шкале ниже они показаны для самых ходовых семейств при питании +5 В, а в таблице — вместе с 4000B при +15 В и ЭСЛЭмиттерно-связанная логика: самое быстрое биполярное семейство (до ~500 МГц), питание −5,2 В, уровни около −0,9 и −1,75 В..

Заметьте: ВЫСОКИЙ уровень по определению положительнее НИЗКОГО, даже если оба отрицательны. Так у ЭСЛ 10K с питанием −5,2 В: ВЫСОКИЙ уровень около −0,9 В, НИЗКИЙ около −1,75 В, порог около −1,3 В.

ТТЛ (LS, ALS, F)КМОП HC, ACКМОП HCT, ACTКМОП 4000B, 74C012345напряжение, Вгарантированные выходные уровнивходы, гарантированно понятые как Н / Вwww.reknow.ru
Шкала 0…5 В для четырёх семейств. Над осью — куда гарантированно попадает выход в НИЗКОМ и ВЫСОКОМ состоянии (с учётом наихудшего случая), под осью — какие входные напряжения микросхема обязана понять правильно; стрелкой отмечен типичный порог.
Модель: стыкуются ли два семейства — запас помехоустойчивости
Паспортные уровни распространённых семейств (* — первое число при нагрузке 20 мкА, второе — при 4 мА).
Семейство (питание) max min max minПорог (тип.)
ТТЛ LS (+5 В)0,5 В (8 мА)2,7 В0,8 В2,0 В1,3 В
КМОП HC (+5 В)0,1 / 0,33 В*4,4 / 3,84 В*1,5 В3,5 В≈2,5 В
КМОП HCT (+5 В)0,1 / 0,33 В*4,4 / 3,84 В*0,8 В2,0 В≈1,4 В
КМОП 4000B (+15 В)0,05 В14,95 В4 В11 В≈7,5 В
ЭСЛ 10K (−5,2 В)−1,63 В−0,98 В−1,475 В−1,105 В≈−1,3 В
Упражнение 8.1.3

Выход КМОП-элемента HC (питание 5 В) управляет одновременно входом другого элемента HC и светодиодом, который потребляет 4 мА, когда выход ВЫСОКИЙ. По паспорту при нагрузке 20 мкА выход гарантирует В и В, при 4 мА — В. Вход HC понимает НИЗКИЙ уровень до 1,5 В, ВЫСОКИЙ — от 3,5 В. Найдите запас в НИЗКОМ состоянии (светодиод погашен, нагрузка — только вход), запас в ВЫСОКОМ без светодиода и запас в ВЫСОКОМ при горящем светодиоде.

Решение

НИЗКОЕ состояние: светодиод не горит, выход нагружен только входом КМОП и опускается не выше 0,1 В. Вход уверенно видит НИЗКИЙ уровень до 1,5 В: В.

ВЫСОКОЕ без светодиода: В. Со светодиодом выход отдаёт 4 мА, и гарантия снижается до 3,84 В: В — почти втрое меньше. Вывод: если выход, помимо логических входов, тянет заметный ток, запас по ВЫСОКОМУ уровню у HC тает. Светодиод лучше питать через отдельный буферБуфер — повторитель с : огромное входное и малое выходное сопротивление, развязывает источник и нагрузку. или подключать катодом к выходу, зажигая НИЗКИМ уровнем.

Упражнение 8.1.4

Модуль датчика с выходом ТТЛ серии LS (гарантированно В, В) подключили ко входу сдвигового регистраСдвиговый регистр, на вход которого заведена сумма по модулю 2 нескольких разрядов, выдаёт псевдослучайную последовательность длиной до тактов — это цифровой генератор шума. серии HC, питаемого от +5 В. Как оценить такое соединение?

Решение

НИЗКИЙ уровень: В, запас целый вольт. ВЫСОКИЙ: регистру HC нужно не меньше 3,5 В, а выход LS обещает лишь 2,7 В (типично около 3,4 В). Скорее всего, макет заработает, но гарантии нет, и при нагреве или другой партии микросхем пойдут сбои — это ошибка проекта. Исправление: взять регистр серии HCT ( В, запас 0,7 В) или подтянуть линию резистором к +5 В.

8.1.3Числовые коды

≈ 19 мин7 упр.
Главное
  • В двоичной записи каждая цифра умножается на свою степень двойки: .
  • Одна шестнадцатеричная цифра — ровно четыре бита, байт — две цифры: .
  • Двоично-десятичный кодBCD: каждая десятичная цифра кодируется отдельно четырьмя битами; . (BCD) отводит по четыре бита каждой десятичной цифре: удобно для индикаторов, расточительно для вычислений.
  • Отрицательные числа хранят в дополнительном кодеДополнение до двух: получают инверсией всех битов и прибавлением 1. Стандарт целочисленной арифметики: сложение и вычитание — обычным двоичным сумматором. («инвертировать и прибавить 1»); в коде Грея соседние числа отличаются одним битом.

АЦП из первого пункта выдаёт не «да» и «нет», а числа: 2048, 2051, 2049… Один бит умеет сказать «кнопка нажата» — а как изобразить уровнями напряжения целое число, дробь, отрицательную величину? Ответ — набор кодов, и выбор кода сильно влияет на то, насколько проста будет схема.

Двоичная система

Привычная десятичная запись — это сумма: каждая цифра умножается на степень десяти, которая зависит от её места относительно запятой. Например,

Десятичной системе нужно десять разных символов. Электронике удобнее два, по числу уровней, — так получается двоичная система с основанием 2, где множителями служат степени двойки:

Позиционная двоичная запись
Обозначения:двоичная запись; индекс внизу — основание системы, его всегда пишут по-десятичномувес разряда номер ; разряды нумеруют от нуля справа налевото же число в десятичной записи
1вес 88+0вес 40+1вес 22+1вес 11= 11www.reknow.ru
Как читать 1011₂: у каждой клетки свой вес — степень двойки; горящие клетки (единицы) отдают вес в сумму, погашенные — ноль.

Каждая двоичная цифра — это и есть бит. Индекс основания ставят, когда без него можно ошибиться: строка «10» означает десять, два или шестнадцать — смотря в какой системе её читать.

Делим число на 2 и записываем остатки, пока частное не станет нулём: , остаток 1; , остаток 1; , остаток 0; , остаток 1. Остатки появляются начиная с младшего значащего разрядаМЗР — разряд с наименьшим весом (); старший (СЗР) — с наибольшим. (МЗРМЗР — младший значащий разряд: самый мелкий шаг преобразователя, . Погрешности ЦАП и АЦП меряют в долях МЗР.), поэтому читаем их снизу вверх: .

Шестнадцатеричная и восьмеричная запись

Двоичные числа быстро становятся длинными и неудобочитаемыми, поэтому их сокращают. Самый распространённый способ — шестнадцатеричная запись: биты разбивают на четвёрки начиная от запятой, и каждую четвёрку (значение от 0 до 15) записывают одним знаком — цифрами 0…9 и буквами A…F. Скажем, .

Удобство в том, что четвёрки укладываются в байт без остатка: байт (8 бит) — ровно две шестнадцатеричные цифры, 16-разрядное слово — четыре, 32-разрядное — восемь. Поэтому вся документация на микроконтроллеры и память пользуется именно этой записью.

  • Символы текста обычно занимают по байту. В коде ASCII заглавная «A» — это (пишут и так: 41h, 0x41), «B» — 42h и т. д. Слово «volt» поместится в два 16-битных слова: 766Fh и 6C74h.
  • Память ёмкостью 64K = 65 536 байт адресуется двумя байтами, потому что : первый адрес 0000h, последний FFFFh, вторая половина начинается с 8000h, последняя четверть — с C000h. Микроконтроллер с 32 КБ флеш-памяти занимает адреса 0000h…7FFFh.
1000₁₀ =11111010003E81750= 3E8₁₆= 1750₈www.reknow.ru
Число 1000 в двоичном виде, разрезанное двумя способами: рамки по четыре бита — цифры 3, E, 8; черты по три бита — цифры 1, 7, 5, 0. Резать начинают справа, от запятой.

Восьмеричная запись (тройки битов, цифры 0…7) осталась от старых машин со словами длиной 12 и 36 бит и 6-битными символами: такой символ — ровно две восьмеричные цифры. В байтовом мире она неудобна, потому что ни 8, ни 16 на 3 не делятся, — это хорошо видно в упражнении ниже. Встретить её сегодня можно, например, в правах доступа к файлам в Unix (755, 644).

Упражнение 8.1.5

Микроконтроллер отправляет по последовательному порту ответ «OK». В коде ASCII «O» = 4Fh, «K» = 4Bh. Запишите в восьмеричной системе: а) байт «O»; б) байт «K»; в) 16-разрядное слово «OK» (старший байт — «O»); г) слово «KO». Восьмеричные числа вводите строкой цифр. Почему восьмеричная запись слова не получается склейкой записей байтов?

Решение

а) ; режем на тройки справа: . б) .

в) ; тройки справа: . г) .

Склейка байтов дала бы 117113, а не 47513. Дело в том, что 8 бит — это две полные тройки и ещё два бита. Младший байт даёт две младшие восьмеричные цифры целиком, а третья тройка собирается из двух старших битов младшего байта и младшего бита старшего; все тройки старшего байта оказываются сдвинутыми. Одна и та же буква в старшем и младшем байте записывается по-разному — главное неудобство восьмеричной системы. В шестнадцатеричном виде слово 4F4Bh — это честные «4F» и «4B».

Двоично-десятичный код

Можно поступить иначе: не переводить число целиком, а закодировать четырьмя битами каждую десятичную цифру по отдельности. Так, — это двоично-десятичный код (BCD). С обычным двоичным представлением он не совпадает: . Если угодно, у разрядов BCD справа налево веса 1, 2, 4, 8, затем 10, 20, 40, 80, затем 100, 200, 400, 800 и так далее.

BCD или обычный двоичный
BCDОбычный двоичный
Число 409 (12 бит) (9 бит)
Расход разрядовтетрада умеет 0…15, а используется только 0…9используются все комбинации
Вывод на индикаторпросто: каждая тетрада сразу даёт цифрунужно громоздкое преобразование
Вычислениясложные правила коррекциипростые и быстрые — так считают процессоры

Сильная сторона BCD — ввод и вывод. Таймер микроволновки или часы на семисегментных индикаторах хранят каждую цифру отдельной тетрадой и выводят её через дешифраторПо -разрядному коду возбуждает один из выходов (у '138 — выбранный выход НИЗКИЙ). без всякой арифметики; выпускаются даже индикаторы, в корпус которых встроены регистр-защёлка, дешифратор BCD и формирователи тока. А вот переход между BCD и обычным двоичным кодом труден: каждая десятичная цифра зависит почти от всех двоичных разрядов сразу.

И всё же двоичная арифметика настолько проще, что вычислительные машины переводят введённые данные в двоичную форму в самом начале и возвращаются к десятичным цифрам только при выдаче результата человеку.

Упражнение 8.1.6

а) Переведите в десятичную систему , и . б) Переведите в двоичную систему и (двоичные ответы — строкой цифр, без ведущих нулей).

Решение

а) ; ; .

б) , то есть (делением на 2 получаются остатки 1, 0, 1, 1, 0, 0, 0, 1, 1, 1 — от младшего разряда). С считать вообще не нужно: каждую шестнадцатеричную цифру заменяем её четвёркой бит, .

Упражнение 8.1.7 задача

Переведите в шестнадцатеричную систему: а) ; б) ; в) .

Решение

а) , то есть . Тот же ответ даёт двоичная запись из предыдущего упражнения, разрезанная на четвёрки: .

б) Четвёрки уже разделены: , , ; ответ .

в) , остаток 14 (E); , остаток 15 (F); , остаток 10 (A); , остаток 12 (C). Остатки читаем от последнего: . Такие «словечки» из букв A…F программисты охотно ставят метками в памяти — их легко заметить в дампе.

Отрицательные числа

Как только схема начинает вычитать или измерять величины обоих знаков, нужны отрицательные числа. В ходу три способа их записи; все три для 4-разрядных чисел собраны в таблице ниже.

Прямой кодЗапись «знак и модуль»: старший бит — знак, остальные — модуль числа. Есть два нуля, и . («знак и модуль»). Старший разряд отдают под знак, остальные хранят модуль — ровно так, как мы пишем числа на бумаге. Им пользуются при выводе на индикатор и в некоторых АЦП.

Считать в прямом коде неудобно: сложение и вычитание требуют разных действий в зависимости от знаков (обычный двоичный сумматорСумматор — инвертирующий усилитель с несколькими входными резисторами в одну мнимую землю: . даёт неверный результат), а нулей получается два, и , и их надо отождествлять.

Дополнительный код: инвертировать и прибавить 1
Обозначения:-разрядное числообратный код: все биты инвертированы; численно равен модуль арифметики: перенос из старшего разряда просто теряется
Пример: .
000000001+10010+20011+30100+40101+50110+60111+71000−81001−71010−61011−51100−41101−31110−21111−1+1 —шаг по часовойпунктир — переполнение (+7 → −8)www.reknow.ru
Шестнадцать 4-битных кодов по кругу, как цифры на циферблате. Плюс единица — шаг по часовой стрелке; выход за 1111 возвращает к 0000, и никакой поправки не нужно. Оранжевые точки — отрицательные числа: у них старший бит равен 1.
Шестнадцать 4-разрядных кодов со знаком: прямой, смещённый и дополнительный.
ЧислоПрямой кодСмещённый кодДополнительный код
+7011111110111
+6011011100110
+5010111010101
+4010011000100
+3001110110011
+2001010100010
+1000110010001
0000010000000
−1100101111111
−2101001101110
−3101101011101
−4110001001100
−5110100111011
−6111000101010
−7111100011001
−8—00001000
(−0)1000——

Как считать в дополнительном коде

Сложение выполняется обычным двоичным сумматором по всем разрядам, включая знаковый; перенос из старшего разряда выбрасывается. Например, плюс :

Вычитание : к уменьшаемому прибавляем дополнительный код вычитаемого
  1. Запишите вычитаемое
  2. Инвертируйте все битыобратный код
  3. Прибавьте 1дополнительный код
  4. Сложите с

Вычитание, таким образом, сводится к сложению: — это плюс дополнительный код , и отдельный вычитатель не нужен. Умножать тоже можно напрямую, если оба сомножителя предварительно расширить знаковым разрядом до двойной длины. Из-за этой простоты все процессоры хранят целые числа в дополнительном коде. Числа с плавающей запятой устроены иначе: они хранятся как «знак — порядок — мантисса», и мантисса записана в прямом коде.

Упражнение 8.1.8

Перемножьте в 4-разрядном дополнительном коде и . Расширьте оба сомножителя знаком до 8 разрядов, перемножьте их как числа без знака и оставьте младшие 8 бит. Введите младшие 4 разряда результата строкой цифр (ведущий ноль можно не вводить).

ПодсказкаДолжно получиться .
Решение

(знаковое расширение — копируем старший бит влево), это 254 без знака; , это 253. Произведение . Младшие 8 бит: , младшие 4 — , тоже (результат уместился в 4 разряда; в общем случае произведению -разрядных чисел нужно разрядов).

Почему это работает: , а все слагаемые, кратные , при отбрасывании старших бит исчезают. Без расширения знаком и читались бы как 14 и 13, и младшие биты произведения дали бы случайно, а младший байт — неверное число.

Упражнение 8.1.9 задача

Проверьте на 4-разрядном коде, что операция «инвертировать и прибавить 1», применённая дважды, возвращает исходное число: начните с . Что произойдёт с , и почему это опасно в программах?

Решение

; инверсия , плюс единица . Ещё раз: инверсия , плюс единица . В общем виде инверсия -разрядного даёт , прибавление единицы — ; повторив, получаем по модулю .

С : инверсия , плюс единица — опять . Числа в 4 разрядах просто нет: диапазон несимметричен. Поэтому смена знака (или взятие модуля) самого отрицательного числа даёт его же, отрицательное, — известный источник ошибок, например при вычислении абсолютной величины отсчёта АЦП.

Код Грея

Представьте ручку громкости с кодовым диском или линейку датчика положения в станке. Пусть разметка сделана обычным двоичным кодом и ползунок переходит из позиции 3 () в позицию 4 (). Меняются все три дорожки, а идеально одновременно три контакта или три фотоприёмника не переключаются никогда. В момент перехода можно прочитать любое число — , , … — и система управления решит, что ручку рывком провернули.

Код ГреяКод, в котором соседние числа отличаются ровно одним разрядом: 000, 001, 011, 010, 110… Исключает ложные промежуточные коды в датчиках угла и счётчиках. устраняет беду: в нём любые два соседних числа различаются ровно одним разрядом. На стыке позиций меняется одна дорожка, и в худшем случае мы прочтём либо старое, либо новое значение — промежуточного ложного кода не существует.

двоичный01234567на границе 3 | 4 меняется разрядов: 3код Грея01234567на границе 3 | 4 меняется разрядов: 1www.reknow.ru
Линейка датчика положения на три дорожки (закрашено — 1). Пусть считыватель замер ровно на стыке позиций 3 и 4. В двоичной разметке на стыке меняются все три дорожки, и прочитаться может любое из восьми чисел; в разметке Грея — одна дорожка, и ошибка не превышает одной позиции.
Правило. Как построить код Грея: начать с нуля и каждый раз инвертировать самый младший разряд, изменение которого даёт ещё не встречавшуюся комбинацию. Для трёх разрядов выходит 000, 001, 011, 010, 110, 111, 101, 100 — и снова 000.

Разрядность кода Грея может быть любой. Кроме датчиков угла и положения, он нужен там, где счётчик читается асинхронно, и в параллельных АЦП (о них — в разделе 9.3). Как переводить двоичный код в код Грея и обратно на вентилях, показано в следующем пункте.

Модель: одно число в разных кодах
Упражнение 8.1.10

а) Запишите 4-разрядным кодом Грея число 13. б) Какое число изображает код Грея ? в) Запишите число 8-разрядным смещённым и 8-разрядным дополнительным кодом (двоичные ответы — строкой цифр, ведущие нули можно не вводить).

Решение

а) . Старший разряд кода Грея повторяет старший двоичный, каждый следующий — Исключающее ИЛИ двух соседних двоичных: , , , ; ответ .

б) Обратно: , затем : , , , , то есть . Проверка по правилу построения: 0000, 0001, 0011, 0010, 0110 — пятая комбинация, число 4.

в) Смещённый: . Дополнительный: , инверсия , плюс единица (без знака это ). Как и должно быть, коды различаются одним старшим битом.

Упражнение 8.1.11

Часы-календарь хранят номер года 2026 в двоично-десятичном коде. Сколько бит занимает такая запись и сколько бит понадобилось бы в обычном двоичном коде? Введите также двоичную запись 2026.

Решение

BCD: четыре цифры по четыре бита, — 16 разрядов. Двоичный: , нужно 11 разрядов; . На одну десятичную цифру BCD тратит 4 бита вместо теоретических — примерно на 17 % больше. Тем не менее микросхемы часов реального времени почти всегда хранят время именно в BCD: его не надо переводить перед выводом.

8.1.4Вентили и таблицы истинности

≈ 9 мин2 упр.
Главное
  • Если выход зависит только от того, что сейчас на входах, схема комбинационнаяКомбинационная схема: выход в каждый момент определяется только текущими входами — памяти нет. Строится из одних вентилей. и собирается из одних вентилей.
  • Если выход зависит ещё и от прошлого, схема последовательностнаяПоследовательностная схема: выход зависит и от входов, и от предыдущего состояния — в ней есть память (триггеры).: в ней есть память, прежде всего триггеры.
  • Пять основных функций — ИЛИ (), И (), НЕ (), И-НЕВентиль И-НЕ: на выходе низкий уровень, только когда все входы высокие. В КМОП — n-канальные ключи последовательно, p-канальные параллельно., ИЛИ-НЕ — плюс Исключающее ИЛИ .
  • равно 1, когда входы различны; это сложение по модулю 2, а при — инвертор.

Два класса задач

Всё, что делает цифровая схема, сводится к одному: по входным битам сформировать выходные. Но задачи бывают двух сортов. Посмотрим на несколько примеров.

  • Сумматор складывает два 16-разрядных числа и выдаёт 16-разрядную сумму и бит переноса; рядом в процессоре стоят умножитель и другие арифметические блоки.
  • Схема сравнения проверяет, совпадает ли код, набранный на кодовом замке, с записанным, или все ли датчики установки в норме.
  • Передатчик последовательного порта дописывает к каждому байту бит чётности — такой, чтобы общее число единиц стало чётным; приёмник пересчитывает чётность и замечает одиночную ошибку.
  • Дешифратор превращает двоичное число в набор сегментов десятичного индикатора.

Во всех четырёх случаях выход — раз и навсегда заданная функция текущих входов: подали те же входы — получили тот же выход. Это комбинационные задачи, и решаются они вентилями — элементами, которые выполняют операции булевой алгебры над двоичными переменными.

Другие задачи без памяти не решить. Приёмник последовательного порта получает биты по одному, друг за другом, и должен собрать их в байт; счётчик посетителей считает срабатывания датчика у двери; кодовый замок должен узнать правильную последовательность нажатий; делитель частоты выдаёт один импульс на каждые четыре входных. Здесь выход зависит от предыстории, и схема должна её где-то хранить. Главный элемент памяти — триггерЭлемент памяти на один бит с двумя устойчивыми состояниями (бистабильный мультивибратор)., мультивибратор с двумя устойчивыми состояниями; схемы с памятью называют последовательностными. Начинаем с вентилей: на них держится всё остальное.

Схемы без памяти и с памятью
КомбинационнаяПоследовательностная
Выход определяетсятолько текущими входамивходами и запомненным состоянием
Из чего собранаиз вентилейиз вентилей и триггеров
Примерысумматор, сравнение кодов, бит чётности, дешифратор индикатораприём последовательного кода, счётчик событий, распознавание последовательности, делитель частоты
&И1ИЛИ1НЕ&И-НЕ1ИЛИ-НЕ=1Искл. ИЛИwww.reknow.ru1И («&»). выход ВЫСОКИЙ лишь тогда, когда ВЫСОКИ все входы: 2ИЛИ («1»). выход ВЫСОКИЙ, если ВЫСОК хоть один вход: 3НЕ (инвертор). единственный вход, выход противоположен ему: ; кружок — знак инверсии4И-НЕ. И, за которым сразу стоит инверсия: ; самый ходовой вентиль5ИЛИ-НЕ. ИЛИ с инверсией на выходе: 6Исключающее ИЛИ («=1»). выход ВЫСОКИЙ, когда входы не совпадают:
Шесть элементов в обозначениях ГОСТ. Символ в рамке задаёт функцию («&» — И, «1» — ИЛИ, «=1» — Исключающее ИЛИ), кружок на выходе — инверсию.
Что здесь что (6)
  1. И («&»). выход ВЫСОКИЙ лишь тогда, когда ВЫСОКИ все входы:
  2. ИЛИ («1»). выход ВЫСОКИЙ, если ВЫСОК хоть один вход:
  3. НЕ (инвертор). единственный вход, выход противоположен ему: ; кружок — знак инверсии
  4. И-НЕ. И, за которым сразу стоит инверсия: ; самый ходовой вентиль
  5. ИЛИ-НЕВентиль ИЛИ-НЕ: на выходе низкий уровень, если высокий хотя бы один вход. В КМОП — n-канальные ключи параллельно, p-канальные последовательно.. ИЛИ с инверсией на выходе:
  6. Исключающее ИЛИ («=1»). выход ВЫСОКИЙ, когда входы не совпадают:
Таблица истинностиПеречень значений выхода для всех комбинаций входов логической схемы. перечисляет выход для каждой комбинации входов; здесь — для пяти 2-входовых вентилей в положительной логике (1 — ВЫСОКИЙ). Для инвертора всё проще: .
ABИ: ИЛИ: И-НЕ: ИЛИ-НЕ: Искл. ИЛИ:
0000110
0101101
1001101
1111000

Пять основных функций и Исключающее ИЛИ

И. Самая «строгая» функция: выход ВЫСОКИЙ, только если ВЫСОКИ все входы без исключения. У 8-входового И семи ВЫСОКИХ входов мало — нужен ещё восьмой. Операцию обозначают точкой, которую обычно не пишут: . Бытовой образец — две кнопки безопасности на прессе: пресс опускается, только когда оператор держит обе.

ИЛИ. Самая «снисходительная»: выход ВЫСОКИЙ, если ВЫСОК хотя бы один вход, а уж если все — тем более. Знак операции — плюс: читают «A ИЛИ B». Образец — свет в коридоре, который включает любой из нескольких датчиков движения. Число входов у И и ИЛИ в принципе любое; в стандартном 14-выводном корпусе помещаются четыре 2-входовых, три 3-входовых или два 4-входовых вентиля.

НЕ (инвертор). Один вход, на выходе — противоположный уровень, дополнение. Пишут черту над именем: , иногда штрих: ; в программах и старой документации попадаются , , , , . Мы будем писать , а там, где черта неудобна, — .

И-НЕ и ИЛИ-НЕ — те же И и ИЛИ с инверсией выхода. Ниже станет понятно, почему они встречаются даже чаще «простых» И и ИЛИ.

Исключающее ИЛИ в число основных функций не входит, но без него не обойтись. Выход ВЫСОКИЙ, когда ВЫСОКИЙ ровно один из двух входов; другими словами, когда входы не совпадают. Обычное ИЛИ при двух ВЫСОКИХ входах тоже даёт ВЫСОКИЙ выход, Исключающее — НИЗКИЙ. Такой вентиль выпускают только 2-входовым, а его операция — сложение двух битов без переноса, по модулю 2: . Именно им считают бит чётности.

Исключающее ИЛИ через И, ИЛИ и НЕ
Обозначения:Исключающее ИЛИ: 1, когда входы различныинверсия (НЕ)ИЛИИ (точка опущена)
Полезные частные случаи: , — инвертор, который можно включать и выключать.
Модель: таблицы истинности вентилей
Упражнение 8.1.12 задача

Четыре разряда данных из микроконтроллера идут на сегменты индикатора, но на плате могут стоять индикаторы двух видов: с общим катодом (сегмент горит при ВЫСОКОМ уровне) и с общим анодом (при НИЗКОМ). Покажите, как одним корпусом вентилей Исключающее ИЛИ и одной перемычкой ТИП сделать узел, который либо пропускает данные как есть, либо инвертирует их. Как тот же приём превращает сумматор в вычитатель?

Решение

По таблице истинности: если один вход Исключающего ИЛИ держать НИЗКИМ, — вентиль работает повторителем; если ВЫСОКИМ, — инвертором. Значит, один вход — данные, второй — управление.

Берём корпус '86 (четыре вентиля): на первые входы — разряды , вторые входы соединяем вместе и подключаем к перемычке ТИП. ТИП = Н (общий катод) — данные проходят без изменений; ТИП = В (общий анод) — каждый разряд инвертирован, и сегменты снова горят правильно.

В арифметическом блоке ту же линию называют ВЫЧ: при ВЫЧ = 1 вентили выдают обратный код второго слагаемого, а если ВЫЧ подать ещё и на вход переноса сумматора, получится «инвертировать и прибавить 1», то есть дополнительный код, — сумматор вычитает.

Перевод в код Грея и обратно

Преобразователи для кода Грея, о котором шла речь в предыдущем пункте, собираются из одних вентилей Исключающее ИЛИ. Прямой перевод: старший разряд переносится как есть, , а каждый следующий разряд кода Грея — сумма по модулю 2 двух соседних двоичных разрядов, . Обратный перевод устроен цепочкой: каждый двоичный разряд вычисляется из уже найденного старшего, .

b3g3b2=1g2b1=1g1b0=1g0СЗРа) двоичный → Грейwww.reknow.ru
g3b3g2=1b2g1=1b1g0=1b0б) Грей → двоичныйwww.reknow.ru
Перевод кода на вентилях Исключающее ИЛИ: слева — из двоичного в код Грея, справа — обратно.
Упражнение 8.1.13 задача

Проверьте схемы-преобразователи на стыке позиций 3 и 4 линейки датчика: переведите числа 3 и 4 в код Грея левой схемой и верните обратно правой. Убедитесь, что коды Грея соседних позиций различаются одним разрядом, и объясните, почему правая схема вынуждена быть цепочкой и что это значит для быстродействия.

Решение

Левая схема: , . Для : . Для : . Коды и различаются только разрядом , тогда как в двоичном коде на этом стыке меняются три разряда.

Правая схема: , . Для : , , , — получили . Для : — .

Почему цепочка: подставив прямое преобразование в обратное, получим , то есть каждому нужен уже готовый . Развернув цепочку, — это чётность всех более старших разрядов кода Грея. Сигнал проходит через вентили один за другим, и задержка растёт пропорционально разрядности; для широких кодов вместо цепочки ставят деревья схем чётности.

8.1.5Схемы вентилей на дискретных элементах

≈ 6 мин2 упр.
Главное
  • Диодное И: любой НИЗКИЙ вход открывает свой диод, и выход прижимается вниз.
  • Диодная логика уровни не восстанавливает: каждая ступень поднимает НИЗКИЙ уровень на ≈0,6–0,7 В, разветвления по выходуЧисло входов того же семейства, которые один выход может питать с гарантированными уровнями (для ТТЛ — 10, LS→LS — 20). почти нет.
  • На транзисторах с резисторами (РТЛ) естественно получается ИЛИ-НЕ; для ИЛИ нужен ещё один инвертирующий каскад.
  • У микросхем ТТЛ и КМОП выход активный: ВЫСОКИЙ уровень держит открытый транзистор, а не резистор.

Микросхема вентиля — не чёрная магия, и полезно один раз собрать вентиль самому из того, что лежит в коробке с деталями. Это объясняет, почему настоящие логические семейства устроены сложнее, чем кажется необходимым.

Диодный вентиль И

Резистор тянет выход к питанию, а к каждому входу выход подключён через диод катодом ко входу. Пока на всех входах ВЫСОКИЙ уровень, диоды заперты и на выходе тоже ВЫСОКИЙ. Стоит хотя бы одному входу стать НИЗКИМ, его диод открывается и стягивает выход вниз. ВЫСОКИЙ выход бывает, следовательно, только при всех ВЫСОКИХ входах — это И.

+U2,2 кОмABQД1Д2www.reknow.ru1Резистор к питанию. поднимает выход; ВЫСОКИЙ уровень получится, только если заперты оба диода2Диод Д1. при НИЗКОМ уровне на A открывается и опускает выход до плюс прямое падение3Диод Д2. то же для входа B: один НИЗКИЙ вход — НИЗКИЙ выход, это и есть И4Выход Q. НИЗКИЙ уровень выхода выше входного на падение на диоде: уровни не восстанавливаются
Вентиль И из двух диодов и резистора: любой НИЗКИЙ вход тянет выход вниз через свой диод.
Что здесь что (4)
  1. Резистор к питанию. поднимает выход; ВЫСОКИЙ уровень получится, только если заперты оба диода
  2. Диод Д1. при НИЗКОМ уровне на A открывается и опускает выход до плюс прямое падениеПрямое падение — напряжение на открытом диоде: 0,5–0,8 В у кремниевого, 0,25–0,4 В у Шоттки, 1,5–3 В у светодиода.
  3. Диод Д2. то же для входа B: один НИЗКИЙ вход — НИЗКИЙ выход, это и есть И
  4. Выход Q. НИЗКИЙ уровень выхода выше входного на падение на диоде: уровни не восстанавливаются

Схема работает, но слабостей у неё три:

  1. НИЗКИЙ уровень на выходе выше входного на прямое падение на диоде; соедините несколько таких вентилей последовательно, и НИЗКИЙ уровень уползёт за порог;
  2. у неё по сути нет разветвления по выходу — способности одного выхода управлять многими входами: ток нагрузки течёт прямо в источник входного сигнала, нагрузка влияет на вход, и схема ничего не восстанавливает;
  3. она медленная: ёмкость нагрузки перезаряжается через резистор.

Транзисторный вентиль ИЛИ-НЕ

Транзистор добавляет усиление и восстанавливает уровни. Самый простой вентиль такого рода — два транзистора с общим коллекторным резистором: ВЫСОКИЙ уровень на любом входе насыщает свой транзистор, и общий выход падает почти до земли. Это схема РТЛ (резисторно-транзисторной логики) — первого массового семейства логических микросхем в начале 1960-х, дешёвого и давно забытого. Схема инвертирует по самой своей природе и даёт ИЛИ-НЕ; если нужно ИЛИ, за ней ставят ещё один транзисторный каскад — инвертор.

+U1 кA3,3 кB3,3 кТ1Т2(A+B)3,3 к+U1 кA+BТ3www.reknow.ru1Резистор в базе Т1. ограничивает ток базы; для выхода, который управляет этим входом, он и есть нагрузка2Т1. ВЫСОКИЙ уровень на A открывает транзистор до насыщения, и общий выход прижимается к земле3Т2. то же для B; коллекторы соединены, поэтому выход НИЗКИЙ при любом ВЫСОКОМ входе — ИЛИ-НЕ4Коллекторный резистор. ВЫСОКИЙ уровень создаёт именно он, пассивно; отсюда слабая нагрузочная способность5Т3 — инвертор. ещё один каскад переворачивает ИЛИ-НЕ в ИЛИ
Транзисторный вентиль ИЛИ-НЕ (Т1, Т2 с общим коллекторным резистором) и инвертор на Т3, который превращает его в ИЛИ.
Что здесь что (5)
  1. Резистор в базе Т1. ограничивает ток базы; для выхода, который управляет этим входом, он и есть нагрузка
  2. Т1. ВЫСОКИЙ уровень на A открывает транзистор до насыщенияНасыщение — внешняя цепь не может пропустить ток ; коллектор опускается почти до эмиттера ( = 0,05–0,2 В), и ток задаёт нагрузка, а не база., и общий выход прижимается к земле
  3. Т2. то же для B; коллекторы соединены, поэтому выход НИЗКИЙ при любом ВЫСОКОМ входе — ИЛИ-НЕ
  4. Коллекторный резистор. ВЫСОКИЙ уровень создаёт именно он, пассивно; отсюда слабая нагрузочная способностьНагрузочная способность — какой ток выход может отдать (в «1») или отвести (в «0»), сохраняя гарантированный логический уровень.
  5. Т3 — инвертор. ещё один каскад переворачивает ИЛИ-НЕ в ИЛИ

Даже транзисторный вариант заметно уступает микросхемам. Свойства ИМС во многом даёт технология, которой нет в навесном монтаже: ионная имплантация, диоды ШотткиДиод Шоттки — переход металл — полупроводник: прямое падение 0,3–0,5 В вместо 0,7–0,9 В и почти нет времени восстановления; обратное напряжение обычно до 40–100 В., согласованные транзисторы на одном кристалле. Но главное отличие видно и без технологии: в ТТЛ и КМОП ВЫСОКИЙ уровень держит не резистор, а открытый транзистор выходного каскада, поэтому выход отдаёт большой ток в обе стороны и быстро перезаряжает нагрузку. Как устроены эти каскады, разобрано в разделе 8.2.

Зачем логику делают в микросхемах
Диодная логикаРТЛТТЛ и КМОП (ИМС)
Восстанавливает уровнинет: +0,6…0,7 В на каждой ступенида, за счёт транзисторада
Кто создаёт ВЫСОКИЙ уровеньрезисторрезистор (пассивно)открытый транзистор (активный выход)
Разветвление по выходупрактически нетнебольшое: ВЫСОКИЙ уровень проседает под нагрузкой10 и больше
Скоростьнизкаянизкаявысокая
Упражнение 8.1.14

Самодельный диодный вентиль И питается от +5 В через резистор 2,2 кОм; диоды кремниевые с прямым падением 0,7 В. Вход A подключён к выходу микроконтроллера, который в НИЗКОМ состоянии даёт 0,25 В. а) Каким будет НИЗКИЙ уровень на выходе вентиля? б) Каким он станет на выходе второго такого же вентиля, которым управляет первый? в) Какой ток должен принимать вывод микроконтроллера в первом случае?

Решение

а) Открытый диод добавляет своё падение: В. Это уже выше паспортного порога НИЗКОГО уровня ТТЛ (0,8 В).

б) Следующий вентиль прибавит ещё 0,7 В: В. Это больше 1,5 В, так что даже вход КМОП HC с питанием 5 В уже не обязан понять такой уровень как НИЗКИЙ. С каждой ступенью НИЗКИЙ уровень ползёт вверх: диодная логика его не восстанавливает.

в) Ток резистора мА целиком уходит через диод в вывод микроконтроллера. Подключите к тому же выводу пять таких вентилей — токи сложатся до 9 мА, и НИЗКИЙ уровень самого вывода тоже приподнимется. Это и есть отсутствие разветвления по выходу.

Упражнение 8.1.15

Выход РТЛ-вентиля (коллекторный резистор 640 Ом, питание +3,0 В) нагружен входами таких же вентилей; каждый вход — резистор 450 Ом в базе открытого транзистора с В. При каком наибольшем ВЫСОКИЙ уровень на выходе не опустится ниже 0,9 В?

Решение

Когда выход ВЫСОКИЙ, его транзистор заперт, и выход — это делитель: от +3,0 В через 640 Ом на параллельных цепочек «450 Ом плюс 0,7 В». Их можно заменить одним источником 0,7 В с сопротивлением :

Требуем : , то есть , Ом и . Ответ: . Восьмой вход опустит уровень до В. Нагрузочную способность РТЛ ограничивает пассивный резистор, создающий ВЫСОКИЙ уровень; у ТТЛ и КМОП его заменяет транзистор.

8.1.6Пример схемы с вентилями

≈ 8 мин4 упр.
Главное
  • Сирена гаража: «открыты ворота ИЛИ калитка, И система на охране» — , сначала ИЛИ, потом И.
  • Если датчики замыкают линию на землю (входы активны НИЗКИМ уровнем), ту же функцию дают И, а за ним ИЛИ-НЕ: И и ИЛИ как будто меняются ролями.
  • Из одних инвертирующих вентилей (только И-НЕ или только ИЛИ-НЕ) собирается любая комбинационная функция.

Возьмём небольшую, но настоящую задачу. В гараже стоят два датчика: на воротах () и на калитке (), а у входа — ключ-выключатель, которым систему ставят на охрану (). Сирена () должна включаться, если открыты ворота или калитка, а система при этом на охране. Стоит переписать условие словами логики — «выход ВЫСОКИЙ, если ВЫСОКИЙ ИЛИ , И при этом ВЫСОКИЙ », — и схема готова: .

Вентиль ИЛИ выдаёт ВЫСОКИЙ уровень, когда открыт хотя бы один вход в гараж; вентиль И пропускает его дальше, только если ВЫСОКИЙ и . Выход вентиля через транзисторный ключ включает реле сирены.

Датчики, замыкающие на землю

На практике и герконовыеГеркон — герметичный магнитоуправляемый контакт: замыкается в поле магнита или катушки. датчики, и ключ охраны почти всегда подключают так же, как кнопку из пункта о логических состояниях: вход подтянут резистором к питанию, а контакт замыкает его на землю. Проводов меньше (второй провод — общий корпус), а для входов ТТЛ, как выяснится в разделе 8.2, так ещё и удобнее электрически. Только теперь «ворота открыты» означает НИЗКИЙ уровень: все три входа работают в отрицательной логике, и мы назовём их , , .

Рассуждение, когда входы активны НИЗКИМ уровнем
  1. Уловить «открыт хотя бы один вход»то есть НИЗКИЙ хотя бы один из — отличить случай «оба ВЫСОКИЕ» от всех остальных. Это умеет вентиль И: его выход НИЗКИЙ, если НИЗКИЙ любой вход. Назовём результат .
  2. Уловить «открыто, и система на охране»то есть НИЗКИЕ одновременно и — отличить «оба НИЗКИЕ» от прочих комбинаций; это работа для ИЛИ.
  3. Сделать выход ВЫСОКИМв нужном случае ИЛИ даёт НИЗКИЙ уровень, поэтому берём ИЛИ-НЕ.

Посмотрите на результат: в первой схеме было ИЛИ, затем И, а теперь И, затем ИЛИ(-НЕ). Задача та же, вентили как будто поменялись ролями. Это не случайность, а закономерность, и в последнем пункте раздела она получит объяснение и удобный способ рисования.

GK1E&Qwww.reknow.ru
Сирена гаража при входах с активным ВЫСОКИМ уровнем: Q = (G + K)E.
GK&ОТКРЫТОE1Qwww.reknow.ru1Вентиль И. по паспорту И, а по смыслу ИЛИ над «истинами» отрицательной логики: выход НИЗКИЙ, если открыты ворота или калитка2Вентиль ИЛИ-НЕ. выход ВЫСОКИЙ только при обоих НИЗКИХ входах — по смыслу это И: открыто И на охране3Вход . ключ охраны замыкает линию на землю: НИЗКИЙ уровень, когда система на охране
Та же сирена, когда датчики и ключ замыкают входы на землю.
Что здесь что (3)
  1. Вентиль И. по паспорту И, а по смыслу ИЛИ над «истинами» отрицательной логики: выход НИЗКИЙ, если открыты ворота или калитка
  2. Вентиль ИЛИ-НЕ. выход ВЫСОКИЙ только при обоих НИЗКИХ входах — по смыслу это И: открыто И на охране
  3. Вход . ключ охраны замыкает линию на землю: НИЗКИЙ уровень, когда система на охране

Один тип вентиля вместо всех

Не обязательно держать на плате корпуса всех типов: нужный вентиль часто удаётся собрать из того, что уже стоит. Скажем, понадобился один вентиль И, а в корпусе 7400 (четыре 2-входовых И-НЕ) осталось две свободных половинки. Ставим два И-НЕ подряд, у второго соединяем входы, и он работает инвертором: .

Правило. Многократно применяя инвертирующий вентиль одного типа — только И-НЕ или только ИЛИ-НЕ, — можно получить любую комбинационную функцию. С неинвертирующими И и ИЛИ это невозможно: из них, как ни соединяй, не получить даже инвертора. Отчасти поэтому И-НЕ и стал самым распространённым вентилем.
AB&&AB≡ И
Два И-НЕ подряд дают И: второй вентиль с объединёнными входами служит инвертором.
=1+&1&+1+=1абвгдеwww.reknow.ru
Шесть вентилей со «связанным» вторым входом. Во что каждый превратился? («+» — ВЫСОКИЙ уровень, земля — НИЗКИЙ; сигнал подаётся на свободный вход слева.)
Упражнение 8.1.16 задача

Определите, что делает каждый из шести вентилей на рисунке выше, если сигнал подан на свободный вход.

Решение

а) Исключающее ИЛИ, второй вход ВЫСОКИЙ: — инвертор. б) И-НЕ с объединёнными входами: — инвертор. в) ИЛИ-НЕ, второй вход на земле: — инвертор. г) И, второй вход ВЫСОКИЙ: — повторитель (буфер). д) ИЛИ, второй вход ВЫСОКИЙ: — выход всегда ВЫСОКИЙ, сигнал заблокирован. е) Исключающее ИЛИ-НЕ, второй вход на земле: — снова инвертор. Все эти включения встречаются на платах постоянно: инвертор из лишнего вентиля, блокировка канала постоянным уровнем, повторитель для развязки. Только не оставляйте неиспользуемые входы КМОП висящими в воздухе — их всегда подключают к питанию, к земле или к соседнему входу.

Упражнение 8.1.17 вывод

Покажите, как получить из 2-входовых вентилей: а) инвертор из ИЛИ-НЕ; б) вентиль ИЛИ из вентилей И-НЕ; в) вентиль И-НЕ из вентилей ИЛИ-НЕ. Сколько вентилей уходит в каждом случае?

Решение

а) Один ИЛИ-НЕ: входы соединить () либо второй вход заземлить ().

б) По теореме де Моргана, : И можно заменить на ИЛИ (и наоборот), проинвертировав все входы и выход. . Два И-НЕ с объединёнными входами дают и , третий И-НЕ над ними — . Три вентиля.

в) . Два ИЛИ-НЕ инвертируют входы, третий ИЛИ-НЕ даёт , четвёртый, включённый инвертором, — . Четыре вентиля.

Упражнение 8.1.18 задача

Как собрать: а) 8-входовый И из 2-входовых И; б) 3-входовый ИЛИ-НЕ из 2-входовых ИЛИ-НЕ; в) 4-входовый И-НЕ из 2-входовых И-НЕ; г) 3-входовый И из 2-входовых ИЛИ-НЕ? Сколько вентилей нужно в каждом случае?

Решение

а) Деревом: четыре вентиля на пары входов, два — на их выходы, один — последний; всего 7 вентилей и три задержки. Цепочка тоже даст 7 вентилей, но задержек будет семь.

б) Соединить ИЛИ-НЕ «в лоб» нельзя: — совсем другая функция. Нужно восстановить ИЛИ: первый вентиль даёт , второй, включённый инвертором, — , третий над и — . Три вентиля.

в) Первый И-НЕ: , второй: ; два инвертора дают и ; пятый И-НЕ — . Пять вентилей.

г) . Три ИЛИ-НЕ-инвертора дают , , ; четвёртый ИЛИ-НЕ над и даёт ; пятый инвертирует его в ; шестой ИЛИ-НЕ над и даёт . Шесть вентилей. Общее правило: инвертирующие вентили наращивают, вставляя двойную инверсию.

Упражнение 8.1.19

Схема сравнения двух битов должна выдавать ВЫСОКИЙ уровень, когда биты совпадают (Исключающее ИЛИ-НЕ). Какое наименьшее число 2-входовых вентилей ИЛИ-НЕ для этого нужно, если инверсии входов не даны?

Решение

Схема: ; затем , ; выход . Проверка: ; ; аналогично ; — сигнал совпадения. Четыре вентиля — один корпус '02. Это зеркальное отражение известной схемы Исключающего ИЛИ на четырёх И-НЕ. Меньше нельзя: перебор всех схем из трёх 2-входовых ИЛИ-НЕ не даёт симметричной функции, равной 1 и при , и при .

8.1.7Логические обозначения при заданных уровнях

≈ 7 мин2 упр.
Главное
  • Что делает вентиль, зависит от соглашения: какой уровень на его выводах считать «истиной».
  • Вентиль И в положительной логике — это ИЛИ для сигналов с активным НИЗКИМ уровнем.
  • Правило де Моргана: И превращается в ИЛИ (и обратно), если проинвертировать выход и все входы.
  • В логике заданных уровнейСпособ рисовать вентили по выполняемой функции: например, И-НЕ над сигналами с активным НИЗКИМ уровнем рисуют как ИЛИ с кружками на входах. вентиль рисуют по той функции, которую он выполняет в схеме, ставя кружки на входах и выходах с активным НИЗКИМ уровнем.

В примере с гаражом И и ИЛИ поменялись местами. Разберёмся почему. Вентиль И выдаёт ВЫСОКИЙ уровень, когда ВЫСОКИ оба входа. Если ВЫСОКИЙ уровень означает «истину», то «истина» на выходе появляется, когда «истинны» все входы, — в положительной логике И выполняет функцию И, и ИЛИ тоже выполняет ИЛИ.

Теперь пусть «истину» изображает НИЗКИЙ уровень. Тот же вентиль И даёт НИЗКИЙ выход, то есть «истину», если «истина» хотя бы на одном входе, — а это функция ИЛИ. Вентиль ИЛИ даёт НИЗКИЙ выход, только когда НИЗКИ оба входа, — это функция И. Одна и та же микросхема делает разное в зависимости от того, как понимать уровни на её выводах.

Одна микросхема — две функции
Вентиль по паспортуЕсли «истина» = ВЕсли «истина» = Н
ИИИЛИ
ИЛИИЛИИ
И-НЕИ-НЕИЛИ с инверсными входами
ИЛИ-НЕИЛИ-НЕИ с инверсными входами

Чтобы схема при этом оставалась понятной, есть два подхода.

Разработчик понимает, что нужно, подбирает вентиль с подходящим поведением и рисует его так, как он назван в паспорте. Пусть станок нужно остановить, если нажата кнопка стоп на пульте, ударили по аварийному «грибку» или сработал концевой выключатель, причём все три сигнала активны НИЗКИМ уровнем. Нужно уловить, что НИЗКИЙ хотя бы один из трёх входов; это делает 3-входовый И-НЕ, и его рисуют как И-НЕ, хотя для этих входов он фактически работает как ИЛИ.

Входы подписывают с чертой: , , , а выход СТОП — в положительной логике; он ВЫСОКИЙ, если «истинен» любой из входов, и идёт на драйвер двигателя. Так рисует большинство схем, которые вы встретите.

Теорема де Моргана: два изображения одного вентиля
Обозначения:3-входовый И-НЕ — так вентиль нарисован по паспорту3-входовый ИЛИ с инверсными входами — тот же вентиль в логике заданных уровней
СТОП ПУЛЬТАВАРИЯКОНЦЕВИК&СТОПwww.reknow.ru
Остановка станка: вентиль нарисован по паспорту, как И-НЕ.
СТОП ПУЛЬТАВАРИЯКОНЦЕВИК1СТОПwww.reknow.ru
Тот же вентиль в логике заданных уровней: ИЛИ с инверсными входами.

Перерисуем в логике заданных уровней сирену гаража. Левый вентиль замечает, что «истинен» или (то есть НИЗКИЙ уровень на любом из этих входов), и сообщает результат тоже в отрицательной логике — кружок на выходе. Правый выдаёт ВЫСОКИЙ уровень, когда «истинны» оба его входа, и , то есть когда оба НИЗКИЕ.

Микросхемы те же, что на второй схеме гаража: слева И, справа ИЛИ-НЕ. Но теперь на чертеже прямо написано «(G ИЛИ K) И E», и проверять схему по таблицам истинности не нужно.

GK1(G+K)E&Qwww.reknow.ru1Кружки на входах. входы активны НИЗКИМ уровнем: кружок снимает инверсию, дальше работает обычное ИЛИ2ИЛИ с инверсными входами и выходом. физически это вентиль И ('08); результат тоже с активным НИЗКИМ уровнем3И с инверсными входами. физически ИЛИ-НЕ ('02): ВЫСОКИЙ выход, когда оба входа «истинны» (НИЗКИЕ), —
Сирена гаража в логике заданных уровней: по символам читается Q = (G + K)E.
Что здесь что (3)
  1. Кружки на входах. входы активны НИЗКИМ уровнем: кружок снимает инверсию, дальше работает обычное ИЛИ
  2. ИЛИ с инверсными входами и выходом. физически это вентиль И ('08); результат тоже с активным НИЗКИМ уровнем
  3. И с инверсными входами. физически ИЛИ-НЕ ('02): ВЫСОКИЙ выход, когда оба входа «истинны» (НИЗКИЕ), —

Два вывода, которые стоит запомнить:

  1. «Отрицательная логика» говорит только о том, какой уровень считается «истиной», — НИЗКИЙ, то есть более отрицательный из двух. Полярность напряжения тут ни при чём: и ВЫСОКИЙ, и НИЗКИЙ уровни ТТЛ положительны.
  2. Сам символ вентиля всегда понимается в положительной логике. И-НЕ, выполняющий ИЛИ над сигналами с активным НИЗКИМ уровнем, можно нарисовать как И-НЕ или как ИЛИ с кружками на входах: кружки инвертируют входы, а за ними стоит обычное, «положительное» ИЛИ.
Упражнение 8.1.20

Входы микроконтроллера для датчиков дыма и протечки активны НИЗКИМ уровнем: , . Нужно сформировать общий сигнал (тоже активный НИЗКИЙ), если сработал хотя бы один датчик. Какой стандартный вентиль поставить и как его правильно нарисовать в логике заданных уровней?

Решение

Требуется: выход НИЗКИЙ, если НИЗКИЙ хотя бы один вход. По таблице истинности так ведёт себя вентиль И ('08): любой НИЗКИЙ вход делает его выход НИЗКИМ. В логике заданных уровней это ИЛИ над «истинами» отрицательной логики, причём результат тоже в отрицательной логике — рисуем ИЛИ с кружками на обоих входах и на выходе. По де Моргану : И равно ИЛИ с инвертированными входами и выходом. И-НЕ подошёл бы, если бы тревогу нужно было выдать активным ВЫСОКИМ уровнем.

Упражнение 8.1.21 задача

Двигатель кухонного комбайна управляется через реле сигналом с активным НИЗКИМ уровнем. Мотор должен работать, когда нажата кнопка ПУСК (активный ВЫСОКИЙ) и при этом крышка закрыта (, активный НИЗКИЙ), — либо когда в сервисном режиме замкнута перемычка (активный НИЗКИЙ). Нарисуйте схему в логике заданных уровней и укажите, какие стандартные вентили стоят на месте каждого символа.

Решение

Функция: , выход — с активным НИЗКИМ уровнем.

Шаг 1: И над ПУСК (В) и (Н). Рисуем И с кружком только на входе ; результат удобно сразу выдать в отрицательной логике — с кружком на выходе: . Физически кружок на входе — это инвертор, превращающий в КРЫШКА, а И с инверсией выхода — вентиль И-НЕ. Вариант без инвертора на этом входе: — это ИЛИ, но тогда инвертор нужен для ПУСК. Один инвертор необходим в любом случае.

Шаг 2: ИЛИ над двумя «истинами» с активным НИЗКИМ уровнем (выход шага 1 и ), выход тоже активный НИЗКИЙ: рисуем ИЛИ с кружками на входах и на выходе. Физически это вентиль И: его выход НИЗКИЙ, если НИЗКИЙ любой вход.

Итого: инвертор, И-НЕ и И (инвертор можно сделать из свободного И-НЕ того же корпуса). Проверка: ПУСК = В, = Н (закрыта) → И-НЕ даёт Н → И даёт Н, мотор работает. Крышка открыта, сервис выключен → оба входа И ВЫСОКИЕ → = В, мотор стоит, сколько ни жми ПУСК. = Н → мотор работает при любых остальных.