Привет, Хабр! Какая волшебная микросхема не только позволяет создавать удивительные световые эффекты бегущих огней, но и помогает расширить порты микроконтроллера, когда всего две его ножки могут управлять восемью, шестнадцатью и так далее светодиодами, реле и прочими полезными штуками?

Конечно же, это регистр сдвига! Сегодня мы с ним познакомимся на нескольких увлекательных примерах.

▍ Что такое регистр сдвига?


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

Вспомним схему электронного кодового замка из статьи про триггеры. Здесь четыре синхронных D-триггера двух микросхем CD4013, или К561TM2, последовательно передают друг другу сигнал со входа, в данном случае логическую единицу.


Это не что иное, как самый настоящий регистр сдвига. Он имеет несколько последовательно включённых ячеек памяти, то есть триггеров. Входом регистра является вход первого триггера U1A, а выходом — выход последнего U2B. То есть перед нами регистр сдвига с последовательным вводом и последовательным выводом.

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

Вот только вход тактирования в этой схеме у каждого триггера свой, что для регистров сдвига нехарактерно. У интегрального регистра сдвига вход тактирования общий для всех триггеров.

▍ Аналоговые регистры сдвига


Удивительно, но факт: существуют и аналоговые регистры сдвига, представляющие собой последовательность устройств выборки-хранения (УВХ), запоминающих значение напряжения на входе при поступлении тактирующего импульса и передающих его на выход.

▍ Устройство выборки-хранения


Прекрасным простым примером УВХ является модуль аналогового синтезатора MFOS Micro-Sample & Hold разработки Рэймонда Уилсона (Music From Outer Space).

Основой модуля является счетверённый операционный усилитель (ОУ) LF444 производства National Semiconductor. Его входы реализованы на полевых транзисторах с управляющим P-N переходом (JFET), благодаря чему обеспечивается экстремально высокое входное сопротивление.


Согласно фирменной документации, типичное входное сопротивление LF444, как и у привычных нам TL074 и TL084, составляет 1 тераом. Это десять в двенадцатой степени Ом.

А входной ток LF444 вообще рекордно низкий: при комнатной температуре типичный 10 пикоампер и максимальный 100 пА, против значительно более высоких величин у TL08x и тем более TL07x.


Получается, что если взять конденсатор (на схеме C1) с малой утечкой (например, полистироловым диэлектриком) и подключить к неинвертирующему входу LF444 (U1-B), то заряд конденсатора будет сохраняться практически неизменным в течение длительного времени. Соответственно, не будет изменяться и напряжение.

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

В схеме Рэя Уилсона ОУ U1-B включён не повторителем, а неинвертирующим усилителем постоянного тока (УПТ). Его коэффициент усиления можно рассчитать исходя из закона Ома, если вспомнить основные свойства идеализированного операционного усилителя. Про них мы уже писали.

  1. При наличии замкнутой петли отрицательной обратной связи (между выходом и инвертирующим входом) ОУ будет поддерживать на выходе такое напряжение, чтобы напряжения инвертирующего и неинвертирующего входов сравнялись.
  2. Через входы операционного усилителя практически не идёт ток (особенно если это LF444). Потому входные токи ОУ мы не учитываем. Учитываем только токи в цепях, подключённых ко входам ОУ. В данном случае, это резисторы R8 и R9.

Итак, мы имеем всего лишь один ток, текущий от шины +12 вольт до выхода операционного усилителя U1-B. Назовём напряжение на выходе ОУ Uвых, а напряжение на неинвертирующем входе, оно же напряжение на конденсаторе, Uвх. На инвертирующем входе U1-B, согласно свойствам ОУ с замкнутой петлей отрицательной обратной связи, будет тоже напряжение Uвх.

Сопротивление резистора R8 вдвое выше, чем R9, потому R9 = R, R8 = 2R.

Ток через R8 равен (12В — Uвх) / 2R. Ток через R9 равен (Uвх — Uвых) / R. И это один и тот же ток.

Получается уравнение:

(12В - Uвх) / 2R = (Uвх - Uвых) / R.

Умножим обе части уравнения на 2R:

12В - Uвх = 2Uвх - 2Uвых.

Перенесём выходное напряжение влево, а 12В и входное напряжение вправо:

2Uвых = 3Uвх - 12В.

Разделим на 2:

Uвых = 1.5Uвх - 6В.

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

Запоминаемое мгновенное значение напряжения поступает на конденсатор С1 через полевой транзистор с управляющим p-n переходом Q1 с выхода UF1-A.

Рассчитать коэффициент усиления неинвертирующего усилителя постоянного тока на UF1-A не составит труда. R1 и R3 обладают равным сопротивлением и делят входное напряжение пополам. R5 = 200 кОм = R, R5 = 560 кОм = 2.8 R. Ток в данном случае будет течь через R5 и R4 с выхода U1-A на шину -12В.

(Uвых - 0.5Uвх) / R = (0.5Uвх +12В)/2.8 R.

Uвых = 0.68 Uвх + 4.3В.

Если учесть усиление и смещение обоих УПТ, на выходе модуля получаем:

Ux2 = (0.68 Ux1 + 4.3В) * 1.5 - 6 В = Ux1 + 0.43В.

Почему Рэй Уилсон не обошёлся просто повторителями? Зачем ему было аттенюировать входное напряжение со сдвигом вверх и затем усиливать со сдвигом вниз?

Это сделано для того, чтобы гарантированно обеспечить работу электронного ключа на транзисторе Q1 во всём диапазоне напряжений входного сигнала, который заявлен от -5 до 5 вольт.

2N5457 является JFET — полевым транзистором с управляющим переходом. В отличие от привычных нам MOSFET — металл-оксид-полупроводник (МОП) транзисторов с изолированным затвором режима обогащения, JFET открыт при нулевом напряжении исток-затвор и закрыт при отрицательном. В этом он подобен редким МОП транзисторам режима обеднения, которые лично мне никогда не приходилось использовать. Напишите в комментариях, если приходилось вам.

Пока через C4 не приходит положительный тактирующий импульс с мультивибратора на U1-D, напряжение на катоде прямосмещённого кремниевого диода D1 равняется примерно 0.67 В. R6=R, R7 = 4.7R.

Ток через управляющий переход Q1 не течёт, совсем как у операционного усилителя. Рассчитаем напряжение на затворе Q1.

(-0.67В - Uз) / R = (Uз + 12В) / 4.7R

-3.15 В - 2.55 В = 5.7 Uз

Uз = -1 В

Таким образом, при отсутствии входного сигнала напряжение между затвором и истоком Q1 будет составлять -5.3 В, а при -5В на входе оно составит -1.9 В.

Напряжение отсечки, при котором JFET транзистор 2N5457 закрывается, варьируется от -0.5 до -6 вольт. С теми экземплярами транзисторов, что были в распоряжении Рэя Уилсона, -1.9 В оказалось достаточным. Если вы решите повторить эту схему, и что-то пойдёт не так, то вы теперь знаете, в каком направлении искать решение возникшей проблемы.

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

Если включить последовательно достаточное число таких УВХ и тактировать их импульсами с одного и того же общего входа, причём частота импульсов будет не ниже частоты Найквиста-Котельникова для верхней границы частотной полосы входного сигнала, мы получим аналоговую линию задержки сигнала.


Именно так работают микросхемы BBD — bucket brigade delay, тему которых мы затрагивали в статье про цифровую линию задержки аудиосигнала PT2399, пришедшую им на смену. И они представляют собой не что иное, как аналоговые регистры сдвига с последовательным входом и последовательным выходом.

▍ Автомат световых эффектов на К555ИР11


А в данном устройстве световых эффектов используются уже настоящие цифровые 4-разрядные регистры сдвига с параллельными входом и выходом К555ИР11 (74LS194). Данная микросхема имеет 4 режима работы, задаваемых управляющими входами S0 и S1.


  • S1=0, S0=0 — блокировка. Микросхема не считывает состояние входов, не изменяет состояние входов, не реагирует на тактовые импульсы. Сохраняется предыдущее состояние выходов.
  • S1=0, S0=1 — сдвиг вправо. Значение выхода Q2 записывается в Q3, Q1 — в Q2, Q0 — в Q1. Логический уровень, считанный со входа SR, записывается в Q0.
  • S1=1, S0=0 — сдвиг влево. Значение выхода Q3 записывается в Q2, Q2 — в Q1, Q1 — в Q0. Логический уровень, считанный со входа SL, записывается в Q3.
  • S1=1, S0=1 — параллельная загрузка. По переднему фронту тактового импульса микросхема считывает состояние параллельных входов и передаёт их на выход. Сдвиг при этом не осуществляется, и на состояние последовательных входов микросхема не реагирует.

Асинхронный, то есть не зависящий от тактовых импульсов сброс всех выходов в ноль происходит при низком логическом уровне на инвертирующем входе сброса CR. При этом микросхема игнорирует состояние всех остальных входов.


В этой схеме параллельные входы D0-D3 первого регистра сдвига U3 можно подтягивать к логической единице или нулю переключателями D0-D3. А параллельные входы второго регистра сдвига U4 жёстко подтянуты к земле.

На каждый из восьми выходов Q0-Q3 двух регистров подключено по светодиоду. Ток светодиодов ограничивается общим резистором R7. Потому чем больше светодиодов включено в данный момент, тем меньше тока ему достаётся, и соответственно тем ниже яркость каждого светодиода.

Входы сброса CR обоих регистров сдвига подтянуты к плюсу питания и не используются. Тактирующие входы CLK соединены вместе и получают тактовые импульсы от мультивибратора на универсальном прецизионном таймере КР1006ВИ1 (NE555). Частоту тактовых импульсов можно регулировать с помощью подстроечного резистора RP1 номиналом 10 кОм.

Управляющие входы обоих микросхем К555ИР11 также соединены вместе: S0 с S0 и S1 c S1. Сигналы на них приходят с логических инверторов на транзисторах Q1 и Q2.

В верхнем по схеме положении ключа K1 на входах S0 будет логическая единица, а на входах S1 — логический нуль. Оба регистра будут осуществлять сдвиг вправо. В нижнем положении K1 S0 = 0, S1 = 1, происходит сдвиг влево.

Однако в момент включения питания посредством выключателя K3 конденсаторы С3 и С4 начнут заряжаться, на мгновение представляя собой почти короткое замыкание, c сопротивлением, равным эффективному последовательному сопротивлению этого конденсатора (ЭПС, ESR). То же самое мы уже видели в схеме сброса десятичного счётчика-дешифратора К561ИЕ8 из статьи про китайскую олимпиаду по электронике.

Благодаря этим электролитическим конденсаторам, в момент включения питания первый регистр сдвига U3 получит управляющие сигналы S0 = 1, S1 = 1, и перейдёт в режим последовательного ввода. Если за время, пока длится это состояние, придёт тактирующий импульс, то U3 прочитает состояние переключателей D0-D3.


А этот импульс придёт, потому что в момент включения логический уровень на выходе таймера NE555 высокий. Низким он станет, когда времязадающий конденсатор, подключённый ко входам 2 и 6, зарядится до порога, составляющего 2/3 напряжения питания.

Микросхема U2 К555ЛН1 (74LS04) содержит 6 логических инверторов с двухтактными выходами. На её КМОП варианте К561ЛН2 (74HC04) мы собирали электронного жучка.


В верхнем по схеме положении переключателя К2 на вход сдвига вправо SR первого регистра U3 приходит логический уровень с выхода Q3 второго регистра U4, а на вход сдвига влево SL U4 — с выхода Q0 U3.

В нижнем положении К2 происходит то же самое, но сигналы инвертированы логическими элементами НЕ U2A и U2B. Остальные четыре инвертора микросхемы не используются.

▍ Выводы


Итак, в момент включения в первый регистр загружаются данные с переключателей D0-D3, а во второй — нули. Направление сдвига задаётся переключателем К1 и может быть изменено в процессе работы.

Положение переключателя К2 определяет, инвертировать ли данные в момент перехода из регистра в регистр. Эти режимы также можно переключать в процессе работы схемы.

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

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

Комментарии (4)


  1. iShrimp
    17.08.2023 16:55
    +1

    В общем, регистр сдвига представляет собой простой способ мультиплексировать цифровые сигналы. Но можно ли его использовать для считывания аналоговых сигналов? Допустим, если у меня есть массив резистивных датчиков (около сотни FSR), можно ли их считывать, подавая на них поочерёдно логическую единицу с помощью регистров сдвига?
    Почему-то не могу найти в интернете примера такой схемы.


    1. sim2q
      17.08.2023 16:55
      +1

      можно ли их считывать, подавая на них поочерёдно логическую единицу с помощью регистров сдвига?

      Если правильно понял идею, то нужен регистр с "открытым" выходом или по диоду на каждый выход (что наверное снизит точность).


      1. Lunathecat Автор
        17.08.2023 16:55
        +1

        Подавать питание на резисторы с регистра сдвига? - Думаю, можно. Параметры выходных буферов микросхемы должны быть одинаковыми. Можно обойтись без диодов, если взять микросхему, у которой выходы не двухтактные, а с открытым коллектором.

        Более простое и экономичное решение - воспользоваться счётчиком-дешифратором CD4017. По одному проводу его можно тактировать, по второму - сбрасывать. Нужное число счётчиков можно соединить каскадом.

        Десятичный счётчик-дешифратор K561ИЕ8 (CD4017) и красивый эффект на нём / Хабр (habr.com)


    1. Lunathecat Автор
      17.08.2023 16:55
      +3

      Для считывания одним входом АЦП нескольких напряжений пригодится аналоговый мультиплексор. Здесь есть пример использования CD4066 - 4 электронные музыкальные шкатулки своими руками. Знакомимся с логическими микросхемами / Хабр (habr.com)

      На днях буду собирать ещё одно устройство с аналоговым мультиплексором. Скоро про него расскажу.