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

8.9. Практикум: разбираем схемы

Удачные цифровые узлы — выделитель фронта, подавитель дребезга, ШИМ, детектор остановки, кольцевой счётчик, таймер, ввод кнопок через регистр, деление на три — и типичные ошибки: найдите, что не так.

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

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

  1. Рассмотрите схемуна некоторых рисунках есть номера — подсказки называют роль деталей, но не ответ
  2. Объясните саминарисуйте временную диаграмму, найдите, что и когда переключается
  3. Сверьтесь с решениемоно спрятано под кнопкой «Решение»

8.9.1Удачные схемы

≈ 11 мин9 упр.
Главное
  • Асинхронный сигнал сначала синхронизируют, потом выделяют фронт: два триггераЭлемент памяти на один бит с двумя устойчивыми состояниями (бистабильный мультивибратор). и вентиль дают импульс длиной ровно в такт.
  • Таймеры и детекторы строят на счётчиках: длительность задаётся числом тактов, а не RC-цепью.
  • Счётчики и регистры сдвига с самокоррекцией выходят в рабочий цикл из любого состояния; выход комбинационнойКомбинационная схема: выход в каждый момент определяется только текущими входами — памяти нет. Строится из одних вентилей. логики перед внешним миром полезно защёлкнуть.

1. Выделитель фронта. Кнопка, датчик или сигнал с другой платы меняется когда угодно, а синхронной схеме нужен аккуратный импульс длиной в один такт на каждое нажатие. Вот как его получают.

DQQ№1DQQ№2&вход (асинхронный)импульс1 такттактwww.reknow.ru1Триггер №1. привязывает асинхронный вход к такту2Триггер №2. помнит, каким вход был тактом раньше3Вентиль И. вход с кружком — инверсия: «сейчас 1, а такт назад было 0»4Общий такт. оба триггера переключаются одновременно
Синхронный выделитель фронта: выход равен 1 ровно один период такта после того, как вход сменился с 0 на 1.
Что здесь что (4)
  1. Триггер №1. привязывает асинхронный вход к такту
  2. Триггер №2. помнит, каким вход был тактом раньше
  3. Вентиль И. вход с кружком — инверсия: «сейчас 1, а такт назад было 0»
  4. Общий такт. оба триггера переключаются одновременно
Упражнение 8.9.1 вывод

Объясните работу выделителя фронта и нарисуйте временную диаграмму для случая, когда вход поднимается в середине периода такта и держится несколько тактов. Как переделать схему, чтобы импульс получался на спаде входа? На обоих перепадах? Что произойдёт, если входной импульс короче периода такта?

Решение

Триггер №1 по каждому фронту такта переписывает вход: — это вход, «увиденный» на последнем фронте. Триггер №2 переписывает : — то, что было на входе тактом раньше. Вентиль вычисляет : «сейчас 1, а раньше было 0». После подъёма входа на ближайшем фронте , а ещё 0 — выход 1. На следующем фронте тоже становится 1 — выход 0. Импульс длится ровно один период и начинается и кончается сразу после фронтов, т. е. полностью синхронен.

Для спада берут , для обоих перепадов — . Если входной импульс короче периода, он может проскочить между фронтами и не попасть в триггер №1 — такой импульс сначала растягивают (например, ловят асинхронным входом установки отдельного триггера). И ещё одна тонкость: триггер №1 работает синхронизатором и в редких случаях может оказаться в метастабильномНеустойчивое промежуточное состояние триггера, когда данные изменились внутри окна установления — удержания: триггер какое-то время «не может решить», в какое состояние перейти. состоянии (раздел 8.8); в быстрых схемах перед ним ставят ещё один триггер, и выделитель становится трёхтриггерным.

Упражнение 8.9.2

Выделитель фронта тактируется частотой 4 МГц. Какова длительность выходного импульса? Какова наибольшая задержка от подъёма входа до начала выходного импульса (задержками триггеров пренебречь)?

Решение

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

2. Подавитель дребезгаМногократное замыкание и размыкание механических контактов в течение ~1 мс после переключения — от 10 до 100 «отскоков». для простой кнопки. У большинства кнопок нет переключающего контакта, поэтому RS-триггер не поставить. Выручает RC-фильтр с триггером Шмитта.

+5 ВR110 кОмкнопкаR2100 кОмC0,1 мкФ1'HC14чистый сигналwww.reknow.ru
Подавитель дребезга для простой кнопки (без переключающего контакта): RC-фильтр и инвертор с триггером Шмитта.
Упражнение 8.9.3

В подавителе дребезгаПодавитель дребезга — RS-триггер с переключающим контактом: первый же контакт перебрасывает его, повторные касания ничего не меняют. R1 = 10 кОм, R2 = 100 кОм, C = 0,1 мкФ, питание 5 В. Пороги 'HC14: при спаде входа 1,7 В, при нарастании 3,0 В. Через какое время после нажатия (контакт замкнут без дребезга) сменится выход? Через какое время после отпускания? Током входа пренебречь.

Решение

Нажатие: конденсатор, заряженный до 5 В, разряжается через R2 на землю, мс; порог 1,7 В достигается через мс. Отпускание: заряд от 0 к 5 В через кОм, мс; порог 3,0 В — через мс. Дребезг длится обычно 1–5 мс; короткие отскоки лишь немного «подёргивают» напряжение на C, но не доводят его до другого порога — гистерезисГистерезис — два разных порога переключения: вверх — при одном напряжении, вниз — при другом. Состояние зависит от истории, шум меньше «петли» не вызывает дребезга. и делает фильтр надёжным. Резистор R2 нужен ещё и затем, чтобы кнопка не замыкала заряженный конденсатор накоротко (искрение и износ контакта).

3. ШИМ на счётчике и компаратореКомпаратор — схема, которая сравнивает два напряжения и выдаёт логический ответ, какое больше.. Яркость светодиода, скорость вентилятора, нагрев — всё это удобно регулировать широтно-импульсной модуляциейШиротно-импульсная модуляция: частота постоянна, а сигнал ошибки меняет длительность импульса (коэффициент заполнения).. Её «аппаратный» вариант — свободно бегущий счётчик и компаратор.

N (от МК)2 × 'HC163CLKQ0…Q7'HC682P = NQ = счётP > Q88DQтактШИМwww.reknow.ru1Регистр N. задаёт скважность: число от 0 до 2552Счётчик. бежит по кругу 0…2553Компаратор '682. выход 1, пока N больше счётчика4D-триггер. переписывает выход компаратора по такту — выбросы компаратора наружу не попадают
ШИМ на счётчике и компараторе: выход равен 1, пока число N больше показания счётчика; D-триггер на выходе убирает выбросы компаратора.
Что здесь что (4)
  1. Регистр N. задаёт скважностьСкважность — отношение периода импульсов к их длительности ; обратна коэффициенту заполнения.: число от 0 до 255
  2. Счётчик. бежит по кругу 0…255
  3. Компаратор '682. выход 1, пока N больше счётчика
  4. D-триггер. переписывает выход компаратора по такту — выбросы компаратора наружу не попадают
Упражнение 8.9.4

Счётчик ШИМ — восьмиразрядный, тактовая частота 2,56 МГц, в регистре N = 64. Какова частота ШИМ и коэффициент заполненияКоэффициент заполнения — доля периода, в течение которой выход находится в высоком уровне. выходного сигнала?

Решение

Полный цикл счётчика — 256 тактов: кГц. Выход равен 1, пока счётчик меньше N, т. е. в состояниях 0…63 — 64 такта из 256, 25 %. Отсюда видна и плата за простоту: шаг регулировки 1/256, а поднять частоту ШИМ можно, только подняв такт или уменьшив разрядность. Выходной D-триггер важен: компаратор — комбинационная схема, и при смене показаний счётчика (особенно 0111 1111 → 1000 0000) на его выходе бывают короткие выбросы. Защёлкнутый выход меняется строго по фронтам такта.

4. Детектор остановки вентилятора. У компьютерного вентилятора есть выход тахометра — два импульса на оборот. Если вентилятор встал, надо поднять тревогу.

Генератор100 Гц&4040CLKRQ9аварияДатчик2 имп/обФормир.фронтаwww.reknow.ru1Генератор 100 Гц. отмеряет время2Вентиль И. пропускает такт, пока Q9 = 0 (инверсный вход)3Счётчик 4040. считает такты, пока его не сбросит очередной импульс тахометра4Формирователь фронта. короткий импульс сброса на каждый импульс тахометра5Авария. Q9 = 1: 256 тактов (2,56 с) без единого импульса
Детектор остановки вентилятора: импульсы тахометра всё время сбрасывают счётчик; если они пропали, счётчик досчитывает до 256, включает аварию и сам останавливается.
Что здесь что (5)
  1. Генератор 100 Гц. отмеряет время
  2. Вентиль И. пропускает такт, пока Q9 = 0 (инверсный вход)
  3. Счётчик 4040. считает такты, пока его не сбросит очередной импульс тахометра
  4. Формирователь фронта. короткий импульс сброса на каждый импульс тахометра
  5. Авария. Q9 = 1: 256 тактов (2,56 с) без единого импульса
Упражнение 8.9.5

В детекторе остановки генератор 100 Гц, авария — выход Q9 счётчика 4040 (вес 256). Через какое время после остановки вентилятора включится авария? При какой наименьшей частоте вращения (об/мин) детектор ещё считает вентилятор работающим, если датчик даёт 2 импульса на оборот?

Решение

После последнего сброса счётчику нужно 256 тактов по 10 мс — 2,56 с. Чтобы авария не включилась, импульсы должны приходить хотя бы раз в 2,56 с, т. е. оборот — не дольше 5,12 с: об/мин. Обратная связь с Q9 на вентиль останавливает счёт: иначе счётчик пошёл бы дальше, и Q9 через 2,56 с снова упал бы — авария мигала бы. Первый же импульс тахометра сбрасывает счётчик и снимает аварию.

5. Кольцевой счётчик с самозапуском. «Бегущий огонь» на восьми светодиодах: единственная единица бежит по регистру сдвигаРегистр сдвига — цепочка D-триггеров с общим тактом (выход каждого — на вход следующего): по каждому фронту слово сдвигается на один разряд.. Простое кольцо (выход Q7 на вход) бежит, но не знает, сколько в нём единиц, — после помехи огней может оказаться два или ни одного (вспомните застывшую гирлянду из раздела 8.8). Вариант ниже от этого защищён.

'HC164вход A·BCLKQ0Q1Q2Q3Q4Q5Q6Q71выходтактwww.reknow.ru
«Бегущий огонь» с самозапуском: ИЛИ-НЕ от семи выходов вдвигает единицу, только когда все они нулевые.
Упражнение 8.9.6 вывод

Объясните, почему этот кольцевой счётчик сам приходит в правильный режим «одна бегущая единица» из любого начального состояния. Сколько тактов это может занять в худшем случае? Каков период полного цикла?

Решение

Вход регистра — ИЛИ-НЕВентиль ИЛИ-НЕ: на выходе низкий уровень, если высокий хотя бы один вход. В КМОП — n-канальные ключи параллельно, p-канальные последовательно. от Q0…Q6. Если среди Q0…Q6 есть хоть одна единица, в регистр вдвигается 0; единица вдвигается, только когда Q0…Q6 все нулевые. Возьмём любое начальное состояние: пока в Q0…Q6 есть единицы, вдвигаются нули, и все единицы постепенно уходят в Q7 и дальше — за борт. Не позже чем через 7 тактов Q0…Q6 обнулятся (самая «ранняя» единица в Q0 уходит из этой зоны за 7 сдвигов), и тогда вдвинется одна единица. Дальше она бежит одна: пока она в Q0…Q6, вдвигаются нули; когда она уходит в Q7, Q0…Q6 пусты — вдвигается новая единица. Цикл — 8 тактов (Q0, Q1, …, Q7). В худшем случае выход в рабочий режим — около 7–8 тактов, после чего схема живёт правильно хоть вечно. Это и есть самокоррекция: запрещённые состояния сами ведут в рабочий цикл.

6. Таймер задержки на счётчике с генератором. Вытяжной вентилятор в ванной должен поработать ещё 15 минут после того, как выключили свет. RC-цепь на 15 минут — плохая идея (огромные ёмкости, утечки, разброс). Хорошая идея — генератор на десяток герц и длинный двоичный счётчик; 4060 содержит то и другое в одном корпусе.

CD4060RSRTCCTCMRQ14RC-цепь470 кОм, 100 нФпуск (сброс)Ключи релеwww.reknow.ru
Таймер задержки на 4060: когда выход Q14 становится высоким, диод останавливает генератор, и схема «замирает» до следующего пуска.
Упражнение 8.9.7

Частота встроенного RC-генератора 4060 примерно ; R = 470 кОм, C = 100 нФ. Выход Q14 впервые становится высоким через периодов генератора. Найдите частоту генератора и выдержку таймера в минутах.

Решение

Гц. периода: с ≈ 14,8 мин. Резисторы и конденсаторы дают разброс ±10–20 %, но выдержка определяется одним генератором и стабильна от раза к разу. Когда Q14 поднимается, диод подтягивает вход генератора и останавливает его — иначе через ещё 8192 периода Q14 упал бы, и вентилятор включался бы и выключался по кругу. Импульс на MR сбрасывает счётчик, Q14 = 0, генератор снова идёт.

7. Восемь кнопок на трёх проводах. Регистр сдвига работает и «в обратную сторону» по сравнению с '595: '165 защёлкивает восемь параллельных входов и выдаёт их последовательно.

8 кнопокподтяжки 10 кОм'HC165D0…D7PLCLKQ78МКпорт SPIMISOGPIOSCKwww.reknow.ru
Восемь кнопок на трёх выводах микроконтроллера: импульс PL защёлкивает состояние кнопок, затем восемь тактов SCK выдвигают его в порт SPI.
Упражнение 8.9.8

Два '165 соединены цепочкой (16 кнопок) и читаются через SPI с тактом 1 МГц. Сколько микросекунд занимает выдвигание всех 16 битов (без учёта импульса PL)? Какую долю времени это занимает, если кнопки опрашиваются 100 раз в секунду?

Решение

16 тактов по 1 мкс — 16 мкс. Опрос 100 раз в секунду: мс в секунду, 0,16 %. Заодно опрос раз в 10 мс решает проблему дребезга программно: контакт дребезжит 1–5 мс, и два подряд одинаковых отсчёта с интервалом 10 мс надёжно говорят о новом состоянии. Подтягивающие резисторы обязательны — входы '165 КМОПКМОП — комплементарные МОП-транзисторы: n- и p-канальные приборы на одном кристалле. Основа почти всей цифровой логики и аналоговых ключей., и висящий вход при отпущенной кнопке читался бы как угодно.

8. Деление на три с симметричным выходом. Из счётчика деление на 3 получается легко, но скважность выходит 1/3 или 2/3. А если нужен ровный меандр с частотой f/3?

DQQ№1DQQ№2DQ№3 (спад)11f/350 %такт fwww.reknow.ru
Деление на 3 с симметричным выходом: триггеры №1 и №2 образуют счётчик на 3, триггер №3 задерживает Q2 на полпериода, ИЛИ склеивает два импульса.
Упражнение 8.9.9 вывод

Объясните работу делителя на три с симметричным выходом и нарисуйте временную диаграмму. Почему третий триггер тактируется спадом? Какое требование это предъявляет к входному такту?

Решение

Триггеры №1 и №2 образуют синхронный счётчик на 3: , ; состояния : 00 → 10 → 01 → 00. равен 1 ровно один период из трёх. Триггер №3 переписывает по спаду такта, т. е. повторяет его с запаздыванием на полпериода. ИЛИ от и равно 1 полтора периода (от фронта, на котором поднялся , до спада, на котором опустился ) из трёх — ровно 50 %.

Спад нужен именно для сдвига на полпериода: сдвинуть на целый период было бы бесполезно (получилось бы 2/3). Отсюда требование: симметрия выхода прямо зависит от скважности входного такта — при такте 40/60 выход будет 46,7/53,3 %. Если нужна точность, входной такт берут с удвоенной частотой и делят на 2 триггером, либо делят на 6 и потом на 2. И ещё: на выходе стоит вентиль ИЛИ от двух триггеров, переключающихся в разные моменты, — выбросов здесь нет, потому что в каждый момент меняется только один из его входов.

8.9.2Схемы с ошибками

≈ 6 мин5 упр.
Главное
  • Такт не пропускают через вентили: для счёта по команде есть вход разрешения.
  • Многоразрядное число из «чужого» тактового домена нельзя читать как есть: биты меняются не одновременно.
  • RC-сброс без триггера Шмитта и без диода, задержка такта RC-цепью, суммарный ток корпуса — классические ловушки.

Каждая из схем ниже на макете, скорее всего, заработает. Неприятности начнутся потом — у заказчика, на морозе, с другой партией микросхем. Найдите, что в них не так.

1счёт по командеТакт через вентиль.
2чтение счётчикаДва такта — два мира.
3сбросТри ошибки в пяти деталях.
4цепочка регистров«Чтобы данные успели».
5светодиоды на '595Посчитайте токи.
Генератор8 МГцМК: «считай»свой такт&'HC590CLKQ0…Q7www.reknow.ru
Счёт «по команде»: такт счётчика проходит через вентиль И, которым управляет микроконтроллер.
Упражнение 8.9.10 задача

Счётчик '590 должен считать импульсы генератора 8 МГц, пока микроконтроллер держит сигнал «считай». Сигнал подан на вентиль И вместе с тактом. Найдите ошибки и предложите правильное решение.

Решение

Сигнал «считай» меняется в такт своего микроконтроллера, т. е. асинхронно по отношению к 8 МГц. Если он поднимется или опустится посреди высокой фазы такта, через вентиль пройдёт обрезок импульса произвольной ширины: счётчик может сосчитать его, может не сосчитать, а может и сбиться (часть разрядов переключится, часть нет). Кроме того, вентиль добавляет такту задержку — если от того же генератора тактируются и другие узлы, появляется перекос тактов. Правильно: такт подавать на счётчик напрямую, а «считай» — на вход разрешения счёта (у '590 это вход CCKEN), предварительно синхронизировав его D-триггером на такте 8 МГц. Тогда счётчик либо пропускает целый такт, либо считает его целиком, и неопределённость сводится к ±1 отсчёту в момент пуска и останова.

Датчикдо 1 МГц'HC590CLKQ0…Q7МК, 16 МГцчитает порт8счётчик тактируется датчиком, порт читается в произвольный моментwww.reknow.ru
Микроконтроллер «на лету» читает восьмиразрядный счётчик, который тактируется своим, чужим тактом.
Упражнение 8.9.11 задача

Микроконтроллер раз в секунду читает порт, к которому подключены выходы восьмиразрядного счётчика импульсов датчика. Почти всегда результат правильный, но иногда показание «прыгает» на 128 или 255 и тут же возвращается. Почему? Предложите три способа это исправить.

Решение

Счётчик тактируется импульсами датчика, а порт читается в такт микроконтроллера — в произвольный момент. Если чтение попало на переход счётчика, часть битов уже новая, часть ещё старая. Хуже всего переходы вроде 0111 1111 → 1000 0000, где меняются все разряды: в момент чтения можно получить 1111 1111 или 0000 0000, т. е. ошибиться на 128. (Если счётчик ещё и асинхронный, на переходах есть и ложные промежуточные числа.)

Исправления: 1) снимок — регистр между счётчиком и портом, который записывается по команде микроконтроллера синхронно с тактом датчика (или счётчик с выходным регистром, как '590), а читается уже неподвижным; 2) код ГреяКод, в котором соседние числа отличаются ровно одним разрядом: 000, 001, 011, 010, 110… Исключает ложные промежуточные коды в датчиках угла и счётчиках. — счётчик, у которого на каждом шаге меняется один бит: ошибка чтения не больше единицы; 3) программно — читать дважды подряд и повторять, пока два отсчёта не совпадут (годится, если счёт медленнее чтения). И общий принцип: любое многоразрядное значение из другого тактового домена передают либо через снимок с подтверждением, либо через FIFOFIFO («первым вошёл — первым вышел») — очередь слов с раздельными тактами записи и чтения; сглаживает пачки данных. с раздельными тактами, но никогда «как есть».

+5 В100 кОм10 мкФRESET МК&СБРОС узлам'HC00www.reknow.ru
Цепь сброса «на скорую руку»: RC-цепь прямо на вход сброса микроконтроллера и на обычный вентиль И-НЕ.
Упражнение 8.9.12 задача

Цепь сброса: резистор 100 кОм к +5 В, конденсатор 10 мкФ на землю, точка их соединения подана прямо на вход RESET микроконтроллера и на оба входа вентиля И-НЕВентиль И-НЕ: на выходе низкий уровень, только когда все входы высокие. В КМОП — n-канальные ключи последовательно, p-канальные параллельно. 'HC00, выход которого сбрасывает остальные узлы. Найдите три недостатка.

Решение

1) Нет диода разряда. Постоянная времениПостоянная времени (или ) — за неё экспонента проходит 63% пути к новому значению; за — 99%. 1 с; при коротком провале питания конденсатор не успевает разрядиться, и повторное включение не даёт сброса — классический «зависший после мигания света» прибор (раздел 8.8). Нужен диод от конденсатора к шине питания.

2) Обычный вентиль на медленном фронте. Напряжение на конденсаторе проходит порог 'HC00 за сотни миллисекунд; в это время вентиль работает как усилитель с огромным усилением, его выход может многократно переключаться от шумов, а ток потребления растёт. Узлы получат пачку сбросов, и каждый закончит сброс в свой момент. Нужен триггер Шмитта ('HC14, '132). У многих микроконтроллеров вход RESET уже имеет гистерезис — для них это не ошибка, но проверьте документацию.

3) Нет резистора перед входами КМОП. При выключении питания заряженный конденсатор 10 мкФ разряжается через защитные диоды входов в шину питания — ток ограничен лишь их сопротивлением. Нужен резистор порядка 1 кОм последовательно со входами. Есть и четвёртый, мелкий недостаток: от питания со «вялым» нарастанием (большой конденсатор блока питания) RC-цепь может закончить сброс раньше, чем питание установится, — для ответственных приборов ставят специальный монитор питания (супервизорСупервизор питания — ИМС, следящая за напряжением питания: формирует сброс процессора, переключает на батарею, сигнализирует о провалах.).

'HC595 №1SERSRCLKQ7′'HC595 №2SERSRCLKQ7′такт1 кОм100 пФ«чтобы данные успели»www.reknow.ru
Цепочка регистров сдвига, в которой такт второго регистра задержан RC-цепью.
Упражнение 8.9.13 задача

Два регистра сдвига соединены цепочкой. Разработчик рассудил так: «Второй регистр должен записать бит, который первый выдаёт по фронту такта; пусть второй регистр тактируется чуть позже, чтобы данные успели прийти», — и поставил в такт второго регистра RC-цепь 1 кОм, 100 пФ. Что не так?

Решение

Всё наоборот. В регистре сдвига каждый следующий разряд должен записать старое значение предыдущего — то, что было перед фронтом. Задержка такта второго регистра на нс (и ещё больше из-за пологого фронта на пороге) означает, что к моменту его срабатывания первый регистр уже выдал новый бит (задержка 'HC595 — 15–20 нс): второй запишет его, и один бит будет потерян — ровно та ошибка, которую мы обсуждали как перекос тактов. Нарушено время удержания. Кроме того, RC-цепь делает фронт пологим, а порог входа КМОП не определён точно — момент срабатывания плавает. Правильно: общий такт на оба регистра без всяких цепей; если линии длинные — буферБуфер — повторитель с : огромное входное и малое выходное сопротивление, развязывает источник и нагрузку. с гистерезисом у каждого регистра. Если когда-то задержка всё-таки нужна, задерживают такт первого (источника) регистра относительно второго, а не наоборот, — или передают данные по противоположному перепаду.

'HC595SERSRCLKRCLKQ0Q1Q2…Q7150 Ом8 × 20 мАодновременноwww.reknow.ru
Восемь светодиодов прямо на выходах регистра '595, каждый с резистором на 20 мА.
Упражнение 8.9.14 задача

Восемь светодиодов подключены к выходам регистра '595 через резисторы 150 Ом, каждый на ток около 20 мА. Отдельный выход в документации допускает ±35 мА. Почему схема всё равно негодная и что будет, если зажечь все светодиоды одновременно?

Решение

Кроме тока каждого выхода, у корпуса есть предельный ток через выводы питания и земли — у 'HC595 это ±70 мА. Восемь светодиодов по 20 мА — 160 мА, более чем вдвое больше. Микросхема перегревается и деградирует; выходное напряжение проседает (выходное сопротивление порядка 25–50 Ом при таком токе), и светодиоды горят тускло и неравномерно — в зависимости от того, сколько их включено. Плюс бросок тока при одновременном переключении восьми выходов — «подскок» земли«Подскок» земли (ground bounce) — бросок на индуктивности вывода земли при одновременном переключении многих выходов., который может сбить сам регистр сдвига (раздел 8.8). Правильно: уменьшить ток (современным светодиодам хватает 2–5 мА), поставить транзисторные ключи или сборку вроде ULN2803, либо специализированный регистр-драйвер светодиодов со стабилизаторами тока (например, TPIC6B595).