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

8.10. Задачи к главе

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

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

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

8.10.1Задачи на проектирование

≈ 13 мин15 упр.
Главное
  • Везде, где возможно, проектируйте синхронно.
  • Асинхронные сигналы (кнопки, датчики, внешние импульсы) сначала очищайте от дребезга и привязывайте к такту D-триггеромЭлемент памяти на один бит с двумя устойчивыми состояниями (бистабильный мультивибратор)..
  • Такты не стробируйте вентилями — пользуйтесь входами разрешения счётчиков; сброс и запись — однотактными импульсами.
Типовой входной тракт приборов в задачах ниже
Кнопка или датчикасинхронный, с дребезгом
Подавитель дребезгаRS-триггер или RC + триггер Шмитта
СинхронизаторD-триггер (лучше два) на системном такте
Выделитель фронтадва триггера + И: импульс длиной один такт
Автомат управленияразрешение счёта, синхронный сброс, запись в регистр
Синхронный стиль проектирования
Так нельзяТак надо
Счёт по командестробировать такт вентилемподавать 1 на вход разрешения счётчика
Кнопкапрямо на тактовый входподавитель дребезгаМногократное замыкание и размыкание механических контактов в течение ~1 мс после переключения — от 10 до 100 «отскоков». + синхронизатор
Сброс счётчикаасинхронно, по собственному выходусинхронно, однотактным импульсом
Показ результатапрямо со счётчикачерез буферныйБуфер — повторитель с : огромное входное и малое выходное сопротивление, развязывает источник и нагрузку. регистр, запись — до сброса
Упражнение 8.10.1 задача

(1) Из D-триггера и элемента «исключающее ИЛИ» постройте T-триггер с входом разрешения T: при T = 1 триггер переключается по каждому фронту такта, при T = 0 хранит состояние. Затем из четырёх таких триггеров и вентилей И постройте синхронный 4-разрядный двоичный счётчик с входом разрешения счёта.

Решение

T-триггер: . При T = 0 на D приходит Q — триггер перезаписывает сам себя; при T = 1 — , и триггер переключается. Такт общий, гонок нет: XOR лишь вычисляет следующее состояние.

Счётчик: разряд k должен переключаться, когда все младшие разряды равны 1 (и счёт разрешён). Поэтому , , , — цепочка вентилей И. Выход переноса разрешает следующий такой счётчик — именно так устроены '161/'163 и их выходы RCO. Задержка цепочки И растёт с длиной; в быстрых счётчиках каждое берут многовходовым И прямо от всех младших разрядов.

Упражнение 8.10.2

(2) Кухонный таймер на три минуты: кнопка «пуск», зуммер по окончании. Есть часовой кварц 32 768 Гц и счётчик 4060 со встроенным генератором (наибольший делитель — ). На сколько нужно поделить частоту кварца, чтобы получить секундные импульсы, и до скольких должен досчитать счётчик секунд?

Решение

: 4060 делит на (выход Q14 — 2 Гц), ещё один триггер — на 2, итого 1 Гц. Три минуты — 180 секундных отсчётов. Удобно взять вычитающий двоично-десятичный счётчик на три декады ('HC192 или 4510) с загрузкой числа 180 по кнопке «пуск»: досчитав до нуля, он выдаёт заём, который включает зуммер и запрещает дальнейший счёт. Кнопку пропустите через подавитель дребезгаПодавитель дребезга — RS-триггер с переключающим контактом: первый же контакт перебрасывает его, повторные касания ничего не меняют.; кроме того, по «пуску» надо сбросить и делитель 4060, иначе первая секунда будет случайной длины (от 0 до 1 с).

Упражнение 8.10.3

(3) Велоспидометр: герконГеркон — герметичный магнитоуправляемый контакт: замыкается в поле магнита или катушки. на вилке замыкается раз за оборот колеса с длиной окружности 2,1 м. Скорость вычисляют по периоду — счётчик считает импульсы 10 кГц между двумя срабатываниями геркона. Сколько отсчётов будет при 25 км/ч? При какой наименьшей скорости (км/ч) не переполнится 16-разрядный двоичный счётчик?

Решение

м/с, период с, отсчёта. Предел 16 разрядов — 65 535 отсчётов, т. е. 6,55 с на оборот: м/с ≈ 1,15 км/ч; медленнее счётчик переполняется, и правильнее показывать ноль. Геркон дребезжит, поэтому после первого срабатывания вход блокируют на несколько миллисекунд (одновибраторОдновибратор — схема, выдающая по запуску один импульс заданной длительности. или счётчик). Скорость — величина, обратная периоду; деление делает микроконтроллер или ПЗУ-таблица. Измерение периода при медленных сигналах точнее, чем счёт импульсов за секунду, — за секунду колесо делает всего 3 оборота.

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

(4) Счётчик посетителей магазина: в дверном проёме два инфракрасных барьера A (снаружи) и B (внутри) на расстоянии 20 см. Человек, входящий внутрь, перекрывает сначала A, потом оба, потом только B; выходящий — в обратном порядке. Спроектируйте автомат, который выдаёт импульс «+1» на каждого вошедшего и «−1» на каждого вышедшего, и не ошибается, если человек заглянул в дверь и передумал.

Решение

Сигналы A и B (1 — луч перекрыт) синхронизируются D-триггерами к такту 1 кГц. Автомат следит за последовательностью комбинаций AB: ПОКОЙ (00) → ВХОД1 (10) → ВХОД2 (11) → ВХОД3 (01) → по 00 выдать «+1», в ПОКОЙ. Для выхода — зеркальная ветвь: ВЫХ1 (01) → ВЫХ2 (11) → ВЫХ3 (10) → по 00 «−1». Из любого состояния ветви по 00, пришедшему «не вовремя» (человек развернулся), — в ПОКОЙ без импульса; по шагу назад (например, из ВХОД2 обратно в 10) — в предыдущее состояние ветви. Импульсы «+1/−1» длиной в один такт подаются на реверсивный счётчикРеверсивный счётчик — считает и вверх, и вниз: направление задаёт вход U/D ('191) или раздельные тактовые входы ('193). ('193 с раздельными входами или '191 с U/D и разрешением). Семь состояний — 3 триггера; неиспользуемый код ведите в ПОКОЙ. Двое, идущие вплотную друг за другом, всё равно обманут такой счётчик — это ограничение датчиков, а не логики.

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

(5) Табло счёта для школьного спортзала: две команды, у каждой счёт от 00 до 99, кнопки «+1» и «−1» у каждой команды и общая «сброс». Ниже нуля счёт опускаться не должен. Спроектируйте схему на двоично-десятичных реверсивных счётчиках.

Решение

На команду — две декады '192 (двоично-десятичные, реверсивные, раздельные входы «вверх» и «вниз») или '190 (U/D). Пять кнопок проходят подавители дребезга и синхронизаторы на общем такте (например, 1 кГц от генератора), выделители фронта дают однотактные импульсы. Импульс «+1» команды разрешает счёт вверх её счётчика на один такт; «−1» — вниз, но только если счёт не равен 00: дешифратор нуля (оба разряда 0000 — вентиль ИЛИ-НЕВентиль ИЛИ-НЕ: на выходе низкий уровень, если высокий хотя бы один вход. В КМОП — n-канальные ключи параллельно, p-канальные последовательно. по восьми выходам или выход заёма старшей декады) запрещает импульс «−1». Аналогично при 99 можно запретить «+1». Сброс — синхронно или асинхронным входом CLR, но через синхронизатор. Индикация — статическая через 4511 на каждый разряд или мультиплексная на четыре знака (раздел 8.7). Если '192 тактируется прямо импульсами, а не разрешением, помните, что у него тактовые входы «вверх» и «вниз» должны быть высокими в покое.

Упражнение 8.10.6

(6) Ультразвуковой дальномер выдаёт импульс, длительность которого равна времени, за которое звук долетает до препятствия и обратно (скорость звука 343 м/с). Длительность измеряют счётом импульсов 1 МГц. Сколько отсчётов будет при расстоянии 1,5 м? Какую частоту счёта нужно взять, чтобы счётчик сразу показывал расстояние в сантиметрах?

Решение

Время мс — 8746 отсчётов по 1 мкс. Один сантиметр расстояния — это 2 см пути звука, мкс; значит, частота счёта кГц, и показание счётчика равно расстоянию в сантиметрах. Частоту удобно получить умножителем частоты или делителем по модулю n от кварца (например, кГц, ошибка 0,1 %). Скорость звука зависит от температуры (+0,6 м/с на градус), так что «сантиметровая» калибровка верна только около 20 °C.

Упражнение 8.10.7

(7) Сигнализатор частоты сети: светодиод должен загораться, если частота выходит за пределы 49,5–50,5 Гц. Схема измеряет период сети счётом импульсов кварцевого генератора 1 МГц. Между какими числами должно лежать показание счётчика за период, чтобы частота считалась нормальной?

Решение

Период при 49,5 Гц — 20,202 мс, т. е. 20 202 отсчёта; при 50,5 Гц — 19,802 мс, 19 802 отсчёта. Нормальная частота — от 19 802 до 20 202 (номинал 50 Гц — 20 000). Сравнение удобно сделать без цифрового компаратораКомпаратор — схема, которая сравнивает два напряжения и выдаёт логический ответ, какое больше.: в начале периода загрузить в вычитающий счётчик число 19 802 и проверить, что к концу периода он дошёл до нуля (иначе частота слишком высокая), но не ушёл дальше ещё на 400 отсчётов (иначе слишком низкая). Сетевое напряжение подают через оптрон или трансформатор с триггером Шмитта и фильтром, иначе помехи дадут лишние фронты.

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

(8) Из дешифраторовПо -разрядному коду возбуждает один из выходов (у '138 — выбранный выход НИЗКИЙ). 74HC138 («1 из 8», входы разрешения G1, G2A, G2B) постройте дешифратор «1 из 64» с выходами в отрицательной логикеСоглашение, при котором «истину» изображает НИЗКИЙ уровень; имя такого сигнала пишут с чертой: . Отрицательного напряжения здесь нет. (вход — 6-разрядный код ). Сколько микросхем понадобится?

Решение

Девять: восемь «рабочих» и один «предварительный». Младшие разряды подаются параллельно на входы A, B, C всех восьми рабочих '138. Старшие идут на предварительный '138 (его разрешения постоянно активны), а его восемь выходов Y0…Y7 (активный низкий) — на входы G2A соответствующих рабочих микросхем (G1 = 1, G2B = 0 или общий сигнал выборки). При любом коде разрешена ровно одна рабочая микросхема, и на её выходе — единственный низкий уровень. Задержка — два дешифратора. Можно обойтись и без предварительного '138, используя три входа разрешения каждого рабочего (как для «1 из 32» из четырёх '138 с одним инвертором), но для восьми микросхем не хватит комбинаций прямых и инверсных входов без дополнительных инверторов — предварительный дешифратор проще.

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

(9) Есть четыре микросхемы статического ОЗУ 8K × 8 (13 адресных входов, входы выборки CS и разрешения выхода OE, вход записи WE, выходы на три состояния) и сдвоенный дешифратор 74HC139. Постройте ОЗУ 32K × 8.

Решение

Адрес — 15 разрядов. Младшие , линии данных , WE и OE подаются параллельно на все четыре микросхемы. Старшие идут на половину '139 («1 из 4», выходы активные низкие), её вход разрешения — общий сигнал выборки модуля; выходы Y0…Y3 — на CS микросхем. В каждый момент выбрана одна микросхема, остальные держат выходы в третьем состоянииТретье (высокоимпедансное) состояние — выход отключён от линии: оба выходных транзистора закрыты. Позволяет нескольким выходам по очереди работать на общую шину. и игнорируют запись. Время выборки модуля по старшим адресам увеличивается на задержку дешифратора (у 'HC139 около 20 нс) — проверьте, укладывается ли оно в такт процессора. Вторая половина '139 остаётся для следующего модуля.

=1D0D1=1D2D3=1D4D5=1D6D7=1=1=1P = 1:единиц нечётноуровень 1уровень 2уровень 3www.reknow.ru1Первый уровень. четыре XOR: чётность пар битов2Второй уровень. чётность четвёрок3Третий уровень. чётность всего байта
Чётность байта деревом из семи элементов «исключающее ИЛИ»: три уровня, задержка — три вентиля.
Что здесь что (3)
  1. Первый уровень. четыре XOR: чётность пар битов
  2. Второй уровень. чётность четвёрок
  3. Третий уровень. чётность всего байта
Упражнение 8.10.10

(10) Передатчик UART добавляет к каждому байту бит чётности, приёмник проверяет 9 принятых битов. Сколько двухвходовых элементов «исключающее ИЛИ» нужно для генератора чётности на 8 битов и для проверяющей схемы на 9 битов? Какова задержка генератора, построенного деревом, если задержка одного вентиля 10 нс?

Решение

Каждый двухвходовый XOR «съедает» один вход: из n входов один выход — вентилей. Генератор — 7, проверка 9 битов — 8 (на выходе 0, если ошибок нет или их чётное число). Деревом 8 входов сводятся за уровня — 30 нс; цепочкой («каждый следующий XOR с результатом предыдущего») — те же 7 вентилей, но 70 нс. Есть и готовые генераторы-проверщики чётности ('280 — 9 входов). Чётность ловит любую одиночную ошибку, но пропускает двойную.

'HC283A0…A3B0…B3C0Σ0…Σ3C4A (4 бита)=1× 4B (4 бита)ВЫЧ (0 — сложение, 1 — вычитание)A ± Bпереносwww.reknow.ru1Четыре XOR. при ВЫЧ = 1 инвертируют каждый бит B2Сумматор '283. четыре полных сумматора с ускоренным переносом3ВЫЧ → C0. добавляет единицу: в дополнительном коде
Сумматор-вычитатель: при ВЫЧ = 1 элементы «исключающее ИЛИ» инвертируют B, а единица на входе переноса C0 превращает инверсию в дополнительный код.
Что здесь что (3)
  1. Четыре XOR. при ВЫЧ = 1 инвертируют каждый бит B
  2. СумматорСумматор — инвертирующий усилитель с несколькими входными резисторами в одну мнимую землю: . '283. четыре полных сумматора с ускоренным переносом
  3. ВЫЧ → C0. добавляет единицу: в дополнительном кодеДополнение до двух: получают инверсией всех битов и прибавлением 1. Стандарт целочисленной арифметики: сложение и вычитание — обычным двоичным сумматором.
Упражнение 8.10.11

(11) Сумматор-вычитатель на одном '283 и элементах «исключающее ИЛИ» работает с 4-разрядными числами в дополнительном коде. Сколько нужно элементов XOR? Какой 4-битовый код (десятичным числом от 0 до 15) получится на выходе при вычислении 3 − 5?

Решение

По одному XOR на бит B — четыре. При ВЫЧ = 1 сумматор получает . : = 14, что в дополнительном коде означает −2. Диапазон 4-разрядных чисел со знаком — от −8 до +7; переполнение определяют по тому, что перенос в старший разряд и из него различаются (XOR двух переносов; у '283 перенос внутрь старшего разряда наружу не выведен, поэтому его восстанавливают по знакам операндов и результата).

Упражнение 8.10.12

(12) Пятиразрядный счётчик ДжонсонаСчётчик Джонсона — регистр сдвига с инверсной обратной связью (): из k триггеров даёт 2k состояний. (как в 4017) тактируется частотой 1 кГц. Сколько различных состояний он проходит и с какой частотой меняется каждый его выход?

Решение

Счётчик Джонсона из k триггеров проходит 2k состояний: 10. Каждый выход — меандр с периодом 10 тактов, 100 Гц, заполнение 50 %: пять тактов единица, пять — ноль. Соседние выходы сдвинуты на такт, т. е. на 36°: так получают многофазные сигналы. Любое состояние дешифрируется двухвходовым вентилем (по одной паре соседних разрядов), поэтому дешифратор на 10 выходов в 4017 очень прост и не даёт выбросов — на каждом шаге меняется один бит. Не забудьте о 22 запрещённых комбинациях (раздел 8.8).

Упражнение 8.10.13

(13) В программируемой логике с тактом 100 МГц синхронизируется асинхронный сигнал, меняющийся с частотой 10 МГц. Параметры триггеров: нс, нс. Сколько наносекунд на «успокоение» нужно дать синхронизаторуТактируемый триггер, приводящий асинхронный внешний сигнал к такту системы., чтобы MTBF был не меньше 100 лет ( с)? Хватит ли второго триггера?

Решение

с, . Нужно , нс. Второй триггер даёт целый период, но из 10 нс надо вычесть его задержку и время установки следующего (2–3 нс) — остаётся около 7 нс: с, т. е. сбой примерно раз в полтора дня. Значит, на 100 МГц нужен третий триггер: ещё около 7 нс дают выигрыш , и MTBFMTBF — среднее время между сбоями; для синхронизатора растёт экспоненциально со временем, отведённым на «успокоение» триггера. вырастает примерно до с — десятков миллионов лет. Вот почему в быстрых схемах синхронизаторы делают трёхтриггерными.

Упражнение 8.10.14

(14) Микроконтроллер ведёт мультиплексную индикациюМультиплексная (динамическая) индикация — знаки зажигаются по очереди и быстро; общий дешифратор и общие сегментные линии, свой ключ на каждый знак. восьми знаков. Каждый знак должен обновляться не реже 100 раз в секунду, а средний ток сегмента — 2 мА. С какой частотой нужно переключать знаки и какой импульсный ток задать сегменту?

Решение

За 1/100 с нужно обойти все 8 знаков: переключение 800 раз в секунду, каждый знак горит 1,25 мс из 10 мс. Импульсный ток — мА. На ключе знака при цифре «8.» — мА: выводу микроконтроллера это не по силам, нужен транзистор. Если программа иногда задерживает переключение (обработка прерываний), один знак будет гореть дольше и казаться ярче — переключение лучше вести по прерыванию от таймера.

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

(15) Светофор на пешеходном переходе: для машин зелёный, жёлтый, красный; для пешеходов — красный и зелёный; кнопка вызова пешехода. Машинам — зелёный не меньше 30 с, после нажатия кнопки — жёлтый 3 с, затем пешеходам зелёный 15 с (последние 5 с мигает), затем машинам снова зелёный. Спроектируйте автомат и отсчёт времени на программируемой логике.

Решение

Время. Общий такт 1 Гц для отсчёта секунд (от кварца через делитель) и 2 Гц для мигания. Один вычитающий счётчик секунд загружается длительностью нового состояния при каждом переходе и выдаёт сигнал «время вышло» на нуле.

Состояния: МАШ_ЗЕЛ_МИН (машинам зелёный, идёт обязательные 30 с) → МАШ_ЗЕЛ (ждём кнопку) → МАШ_ЖЁЛТ (3 с) → ПЕШ_ЗЕЛ (10 с) → ПЕШ_МИГ (5 с) → МАШ_ЗЕЛ_МИН. Кнопка проходит подавитель дребезга и синхронизатор и запоминается триггером «вызов» (сбрасывается при входе в ПЕШ_ЗЕЛ): нажатие во время обязательных 30 с не теряется, а переход происходит, как только они истекут. Пять состояний — 3 бита, плюс триггер «вызов». Выходы ламп — функции состояния (и сигнала 2 Гц в ПЕШ_МИГ), лучше защёлкнутые регистром, чтобы при переходах не мигали лишние лампы.

Безопасность. Три неиспользуемые комбинации ведите в МАШ_ЖЁЛТ (или в «все красные»), а не в зелёный: при сбое лучше лишний раз остановить машины. В настоящих светофорах есть и независимый контроль «зелёный обоим одновременно» — отдельной схемой, которая отключает питание ламп.

8.10.2Справочник: ходовые микросхемы главы

≈ 3 мин
Главное
  • Самые ходовые микросхемы главы: буферы, дешифраторы, компараторы, одновибраторы, регистры, защёлки, счётчики, регистры сдвигаРегистр сдвига — цепочка D-триггеров с общим тактом (выход каждого — на вход следующего): по каждому фронту слово сдвигается на один разряд..
  • Наличие в семействе (LS, F, HC, AC…) и параметры — всегда по справочнику.

Выбирая микросхему, смотрят на разрядность, число выводов, нагрузочную способностьНагрузочная способность — какой ток выход может отдать (в «1») или отвести (в «0»), сохраняя гарантированный логический уровень., вид входов разрешения, синхронность загрузки и сброса и расположение выводов. Ниже — сжатая выборка типов, которые встречаются в этой главе чаще всего: буферы и приёмопередатчики, дешифраторы, компараторы, одновибраторы, регистры и защёлки, счётчики, регистры сдвига. Наличие типа в конкретном семействе (LS, F, HC, AC…) и точные параметры всегда проверяйте по документации производителя.

Буферы, приёмопередатчики, дешифраторы, компараторы, одновибраторы
ТипЧто этоОсобенности
'125 / '1264 буфера, 3 сост.раздельные разрешения (активный 0 / 1)
'240 / '241 / '2448 буферов, 3 сост.'240 инвертирует; разрешения по 4 разряда
'540 / '5418 буферов, 3 сост.проточная«Проточная» цоколёвка — все входы на одной стороне корпуса, все выходы на противоположной: шина проходит через микросхему без пересечений на плате. цоколёвка ('540 — инверсный)
'2458-разр. приёмопередатчиквход направления и разрешения, проточная цоколёвка
'138 / '139дешифратор 3→8 / 2× 2→4'138: три входа разрешения (два — низким уровнем)
'154 / '42дешифратор 4→16 / BCD → 1 из 10выходы — активный низкий
'85 / '688компаратор 4 / 8 разр.'85 — «больше/меньше/равно» с каскадированием; '688 — «равно»
'121 / '123 / '4538одновибраторы'123, 4538 — перезапускаемыеСвойство одновибратора начинать отсчёт заново от каждого нового запуска во время импульса; выход кончается через после последнего запуска., со сбросом