Как компьютер запоминает данные
Все схемы, которые мы рассматривали ранее, объединяет одно: они не могут хранить информацию о состоянии сигнала в течение какого-то времени. При этом в более сложных схемах это свойство необходимо. В этом теоретическом материале мы познакомимся с триггерами — рассмотрим ближе особенности работы и применения различных их типов в цифровых схемах.
- что такое триггер и как работает базовый RS-триггер
- как читать временные диаграммы триггеров
- какие типы триггеров бывают: D, T, MS
- что такое конденсаторы и зачем они нужны
Что такое триггер
Простейший запоминающий элемент можно представить как два инвертора, объединенных в такую замкнутую систему:
Такое устройство называется триггером.
Допустим, в одном узле схемы при включении у нас логический ноль — тогда в другом будет логическая единица. И через инвертор она поддержит логический ноль в первом узле.
Но что если при включении питания напряжение в обоих узлах одинаковое? Один инвертор может быть мощнее другого буквально на доли процента — частая история. Этого достаточно, чтобы он одержал верх над своим «братом», и все-таки заставлял переключаться в противоположное состояние. Для человека это происходит довольно быстро, поэтому после включения мы этой неопределенности не заметим: в одном узле будет высокий уровень напряжения, в другом — низкий. Самопроизвольных переключений значений после этого уже не будет.
Состояние узлов такой схемы далее можно изменять только с помощью внешнего воздействия. Например, подключить один из них проводом к выводу батарейки, который имеет полярное по отношению к узлу значение. Батарейка точно пересилит выход первого инвертора и заставит переключиться второй узел, а дальше по цепочке изменит состояние всех элементов схемы.
RS-триггер
Но такая перестановка проводов — не путь разработчиков электроники, они предпочитают управлять состоянием схем с помощью электрических сигналов. А еще совпадение выходов и входов схемы — это неудобно. Поэтому инженеры изобрели триггер на двух вентилях 2И-НЕ, которые соединены перекрестно:
У такого триггера два входа (R и S) и два выхода (Q и Qn), которые принимают противоположные значения. Подобные выходы называют парафазными.
Теперь входы и выходы нашей схемы не связаны между собой проводами непосредственно, а только через вентили. А называется она в честь входов — RS-триггером. Позже вы поймете, почему входы обозначаются именно так.
Таблица истинности RS-триггера
Давайте рассмотрим таблицу истинности триггера, которая выглядит не так, как мы с вами привыкли. Это таблица RS-триггера на вентилях И-НЕ:
При нуле на входе S и единице на входе R выход Q принимает значение единицы. Вспомним схему вентиля И-НЕ на транзисторном уровне — из таких и состоит наш триггер:
Если мы подадим логический ноль на любой вход этого вентиля, он сразу переключается в единицу, ведь p-канальные транзисторы, реагирующие на этот ноль, установлены в вентиле И-НЕ параллельно, то есть срабатывают независимо друг от друга. Поэтому что подается на второй вход вентиля с выхода Qn при этом совершенно не важно. Вход S обозначен так в честь слова set, или установка. Когда сигнал Q переключается в высокий уровень (в единицу), он попадает на вход нижнего вентиля и вместе с R = 1 устанавливает Qn = 0. Этот сигнал на входе верхнего вентиля лишь подтверждает то, что уже сделал сигнал S, равный нулю.
Из-за того что схема симметрична, описать, что происходит при низком уровне на R и высоком на S, довольно просто. Попрактикуйтесь и распишите, как меняется сигнал в этом случае, самостоятельно. Уже понятно, что выход Q сбрасывается в ноль. Именно поэтому вход R носит такое название — от английского reset, сброс.
А вот нули на обоих входах — это запрещенное состояние схемы, иначе оба выхода триггера примут одинаковое значение. К фатальным проблемам это не приведет (ничего не сгорит), но логика работы схемы нарушится. Ведь наши парафазные выходы Q и Qn одновременно переключатся в высокий логический уровень, а это противоречит принятой логике работы триггера.
Две единицы подавать при этом можно, даже нужно, если триггер должен перейти в режим хранения. Вы могли заметить, что первые три сценария никак не выделяют триггер среди уже известных нам схем. Но при подаче единицы на оба входа — R и S — появляются новые обозначения схемы.
К названиям выходных сигналов добавляется еще отсчет текущего времени t. Предыдущее изменение состояния произошло в момент, который обозначается t — 1, следующее произойдет в t + 1.
Вернемся к таблице истинности, приведенной ранее. В последней строке вы видите, что при единице на обоих входах выходы будут хранить то значение, которое они приняли во время предыдущего изменения состояния входов. Если при t — 1 комбинация была, например, S = 0, R = 1, то значения выходов такие: Q = 1, Qn = 0. В том же состоянии они останутся, если в момент t сигнал S перейдет в логическую единицу. А если в момент времени t — 1 подать сигнал сброса, то при переходе R в логическую единицу в момент t выходы будут иметь состояние Q = 0, Qn = 1.
Здесь мы наблюдаем коренное отличие триггеров от комбинационных схем. Ведь раньше мы никогда не сталкивались с тем, что одно и то же значение входов может давать разное значение выходов! Было так, что разное значение входов дает одно и то же значение выходов. Например, вентиль 2И в трех возможных входных комбинациях из четырех имеет на выходе 0. Но это тем не менее дает полную предсказуемость состояния выходов в зависимости от состояния входов. А тут при двух единицах на входах выходы могут быть в любом из двух состояний, смотря что было на них в предшествующий момент времени.
Итак, состояние выходов триггера зависит от последовательности состояния входов в разные моменты времени. Поэтому такие схемы называют последовательностными. Внутри них обязательно есть элемент, который запоминает и хранит логический уровень сигнала. В переводной литературе такие схемы могут называть последовательными, но это не очень корректно.
Какая еще особенность устройства триггеров нам не встречалась в комбинационных схемах? Сигнал с выхода поступает обратно на входной или внутренний вентиль — такое подключение называется обратной связью. Без нее нельзя создать элемент памяти в цифровой логике, который хранил бы нужное значение необходимое количество времени. Пока питание схемы включено, именно обратная связь помогает сигналу поддерживать самого себя в стабильном состоянии. И именно она является причиной того, что предыдущее состояние схемы влияет на последующее значение ее выходов.
Временнáя диаграмма RS-триггера
Иллюстрировать поведение триггеров можно с помощью особого вида графиков — временны́х диаграмм. По горизонтальной оси откладывается время, а по вертикальной — сигналы, расположенные один над другим. Такая диаграмма наглядно представляет, в каком состоянии находятся узлы схемы в любой момент времени. Период времени, в который произошло какое-нибудь важное изменение, обозначается пунктирной линией через весь график.
Рассмотрим рисунок. В момент времени t0 сигнал S равняется логическому нулю, а R — единице. То есть по таблице истинности, данной выше, триггер находится в режиме установки, а выходы принимают следующее состояние: Q = 1, Qn = 0. В момент времени t1 ситуация на входах меняется на противоположную, а это соответствует режиму сброса. С этого момента состояние выходов меняется: Q = 0, Qn = 1. Затем в момент времени t2 на оба входа подается единица. Триггер переходит в режим хранения данных, которые были на выходах в предыдущий момент времени t1: Q = 0, Qn = 1.
После этого снова по очереди следуют сигналы установки, хранения и сброса. На временной диаграмме можно увидеть, как это отражается на выходных сигналах. Обратите самое пристальное внимание на интервалы от t2 до t3 и от t4 до t5! В это время были поданы одинаковые комбинации входных сигналов R и S, но состояние выходов в результате совершенно разное, потому что зависит от предыдущего состояния триггера. В комбинационных схемах такие фокусы невозможны.
Проверить, что так оно и будет можно как по схеме из вентилей, так и разложив вентили до транзисторов, что делает анализ еще более явным. Ну, а можно и на макетной плате, что и будет проделано в ролике к этой главе.
1. Соберите эту схему на макетной плате и убедитесь в ее правильной работе во всех режимах в той последовательности, которая изображена на временной диаграмме, и на любой другой по вашему желанию.
Можно создать RS-триггер и на базе вентилей 2ИЛИ-НЕ, как на схеме ниже. При таком сценарии входы установки и сброса меняют активный уровень с логического нуля на единицу. А в таблице истинности, которую вы найдете далее, меняются местами запрещенное состояние и режим хранения. Ведь в ИЛИ-НЕ параллельно стоят n-канальные транзисторы, а p-канальные — последовательно.
Таблица истинности RS-триггера на вентилях ИЛИ-НЕ:
2. Попробуйте свои силы в составлении временной диаграммы для этого варианта триггера при вот таких входных сигналах:
Вход синхронизации
В реальных применениях RS-триггеры, которые мы с вами рассмотрели, встречаются не очень часто. Ведь добиться идеальной одновременности переключения входных сигналов, как это нарисовано на обоих временных диаграммах в момент t1 не получится по ряду причин: может отличаться скорость прохождения сигналов в предшествующих частях схемы или длина проводов.
Представьте, что на этой временно́й диаграмме сигнал S сдвинут немного вправо — это соответствует его задержке относительно сигнала R.
Тогда в момент времени t1 на обоих входах триггера будут нули, а значит, он ненадолго перейдет в запрещенный режим. И только потом — в режим установки. Из-за этого может сбиться работа следующих за ним частей цифровой системы.
Чтобы избежать таких ситуаций, в триггер добавляется еще один вход, который называется тактовым или входом синхронизации (с греческого синхронный переводится как одновременный). Этот новый сигнал обеспечивает одновременность переключения узлов триггера и обозначается как C — от слова clock, часы. Иногда вам будут встречаться альтернативные обозначения — CK или CLK, если на схеме нужно особо выделить это значение среди других.
Триггер с входом С называется синхронным или тактируемым RS-триггером (ранее мы, получается, рассматривали асинхронные). Схема и временна́я диаграмма триггера немного усложняются.
На схеме видно, что при C = 0 никакие изменения на входах сброса и установки не влияют на выходы триггера. Потому что два вентиля И-НЕ слева просто не пропускают их дальше на вход уже известного нам асинхронного RS-триггера. Только переход синхросигнала в логическую единицу (С = 1) как бы становится приглашением для прохода сигналов R и S внутрь схемы. Инженеры говорят, что триггер срабатывает по высокому уровню тактового сигнала. Но бывают и схемы, которые срабатывают по низкому уровню. Можно просто добавить инвертор на вход C, чтобы было именно так.
Также обратите внимание, что теперь входы R и S лишились инверсии на условном обозначении, хотя схема по-прежнему собрана на вентилях И-НЕ. Добавление ступени со входом C к ранее рассмотренному асинхронному триггеру привело к такому явлению. Можете сами по схеме легко проверить, что теперь активные уровни входных сигналов сброса и установки — высокие, а не низкие, как в асинхронном триггере. То же самое касается и режима хранения с запрещенным состоянием.
Ниже — таблица истинности синхронного RS-триггера, показанного на схеме выше. В ней появляется дополнительный столбец для тактового сигнала C.
Входные сигналы R и S теперь могут появиться заранее в любое время, но им придется подождать «приглашения». И конечно, важно, чтобы в течение времени, пока С = 1, то есть синхросигнал активен, состояние входов R и S не изменялось. Так мы исключаем появление запрещенных состояний входов R и S, когда они подключаются с задержкой относительно друг друга.
Отсчеты на временно́й диаграмме, где есть синхросигнал, проходят по моментам, когда он переходит из неактивного уровня в активный и обратно. Голубым цветом для удобства различения выделены области временно́й диаграммы, в течение которых такому триггеру вообще не важно, что происходит на входах. Как видно, изменения на выходах, во-первых, происходят теперь не когда поданы сигналы на вход сброса и установки, а когда тактовый сигнал активен. А во-вторых, изменения на входах могут быть как угодно расположены во времени относительно друг друга, лишь бы они были уже в нужном состоянии в момент активации тактового сигнала.
D-триггер
Возьмем синхронный RS-триггер и подадим сигнал на вход S напрямую, а на вход R — через инвертор. Получится элемент, который задерживает входной сигнал до очередного высокого уровня тактового импульса. Он называется D-триггером — от английского delay, задержка. По сути, у него нет входов установки и сброса, вместо них — один вход данных D.
Таблица истинности D-триггера очень проста — благодаря инвертору между входами сброса и установки запрещенное состояние для схемы отсутствует.
3. Да и временна́я диаграмма D-триггера не очень сложна после ранее изученных синхронных RS-собратьев. Попробуйте составить ее самостоятельно.
Двухступенчатые триггеры
Достоинство триггеров, которые срабатывают по уровню, — в их простоте. Но для корректной работы нужно держать входной сигнал неизменным в течение интервала времени, в котором синхросигнал находится в активном уровне.
Если вы уже собирали схему синхронного RS-триггера, то могли проверить, что изменение состояния входов во время высокого уровня тактового сигнала изменяет и состояние выходов. В таком случае говорят, что триггер «прозрачный» в течение высокого уровня сигнала С. Чтобы снизить эту прозрачность, необходимо сузить временно́е окно, в которое сигнал может проникнуть внутрь триггера. Тогда не придется заботиться о стабильности напряжений на управляющих входах в течение всего активного уровня синхроимпульса. Но в идеале — заставить триггер быть прозрачным только в моменты переключения синхросигналов из одного уровня в другой.
В электронике есть общепринятые названия различных частей временной диаграммы цифровых сигналов. Высокий логический уровень (единица) и низкий логический уровень (ноль) вам уже известны. Но есть еще два участка. Изменение сигнала при переключении из нуля в единицу называется фронтом импульса, а из единицы в ноль — срезом. Эти фрагменты на временной диаграмме рисуются вертикально.
Чтобы заставить схемы переключаться именно на этих участках синхросигнала, применяют двухступенчатые схемы триггеров. Их называют ведущими-ведомыми, или MS-триггерами (от английского Master-Slave). Для примера возьмем два синхронных RS-триггера и поставим их друг за другом, входы синхронизации объединим через инвертор:
Как работает двухступенчатый триггер? Давайте посмотрим на его временну́ю диаграмму — на ней есть все сигналы, кроме инвертированного тактового Cn.
Входы сброса (R) и установки (S) специально «замусорены» множественными переключениями, так будет лучше видно, как двухступенчатая схема отсекает все ненужное. Для удобства восприятия мы не будем принимать во внимание задержки. Мы уже разбирали работу одиночных RS-триггеров и убедились, что они работают исправно.
При высоком уровне синхросигнала первый «ведущий» триггер может принимать команды с входов R и S и передавать их на свои выходы — провода, подписанные U и D на схеме выше. В это время второй «ведомый» триггер — в режиме хранения записанных в него данных, и ему не важно, что происходит на его входах U и D. В момент среза синхросигнала (его переключении из единицы в ноль) ведущий перестает реагировать на изменения уровней на входах до следующего фронта. А ведомый, наоборот, начинает воспринимать информацию с выходов ведущего и переключается в новое состояние.
Если данные на входах MS-триггера менялись в течение высокого уровня C, это не отражалось на выходах Q и Qn всего триггера. Значение имело лишь состояние входов S и R — последнее перед срезом синхросигнала. После среза С, во время его низкого уровня, входные данные могут изменяться произвольным образом, так как ведущий триггер (master) находится в режиме хранения, и на входах ведомого (slave) из-за этого никаких переключений происходить не может, хотя он в это время прозрачный.
Получается, временное окно для проникновения входных данных на выход представляет собой очень узкий, практически ограниченный момент переключения синхроимпульса из одного состояния в другое. И никаких специальных коротких сигналов для синхронизации создавать не пришлось.
В реальной жизни идеальных прямоугольных импульсов не существует — длительности фронта и среза всегда ненулевые. Но они настолько коротки в сравнении со стабильными состояниями синхросигнала, что двухступенчатые триггеры работают без сбоев.
Ну и нетрудно догадаться, что из двухступенчатого RS-триггера с помощью добавления всего одного инвертора легко можно получить двухступенчатый D-триггер. Такие D-триггеры лежат в основе системы регулирования потока данных микропроцессоров и микроконтроллеров, работая светофорами, которые упорядочивают движение нулей и единиц по микросхеме. Ведь она очень велика по количеству находящихся в ней устройств, и проносящимся по проводам битам от устройства к устройству, как большой город с десятками тысяч машин на улицах.
Чтобы не было хаоса, как и в городе, данные периодически останавливаются на D-триггерах и ждут команды на продвижение дальше до следующего светофора-триггера. Многобитные, например, 32-разрядные данные подаются на входы сразу 32 триггеров, управляемых общим для них тактовым сигналам. Такое объединение называется параллельным регистром.
Регистры могут быть любой разрядности в зависимости от того, с чем они работают, важно здесь лишь то, что они «ловят» свои данные и по команде тактового сигнала пропускают их дальше. При этом благодаря своей особенности, которую мы увидели на временно́й диаграмме, они пропустят дальше только то, что было на их входах в момент фронта или среза тактового сигнала, поэтому данные в каждый бит регистра могут приходить и не одновременно. Главное, чтобы они были готовы «на зеленый свет» двигаться дальше.
Т-триггер: простейший счетчик и делитель частоты
Если сигнал с выхода Qn двухступенчатого D-триггера подать на вход, получится схема, в которой каждый такт значение выхода меняется на обратное. Она получила название T-триггер, и это очень простая схема подсчета импульсов, пришедших на тактовый вход. Один триггер «умеет» считать только от нуля до единицы, но в следующей статье на базе этой простой схемы мы построим многоразрядные счетчики.
Так как Т-триггер делается на базе двухступенчатых триггеров, то в его условном обозначении используются 2 буквы T подряд, а не одна, как было ранее. Это сразу подсказывает нам его структурное устройство. К сожалению, не везде при рисовании схем придерживаются этих удобных обозначений.
На диаграмме видно, что, пока тактовый импульс совершает два переключения, выход T-триггера переключается один раз. В таком случае говорят, что триггер делит частоту следования импульсов в два раза. Напомним, что означает термин «частота следования импульсов», или частота сигналов.
Электрические сигналы могут быть:
- периодическими — повторяющимися через одинаковые интервалы времени,
- непериодическими — одиночными или же повторяющимися через разное время.
Примером периодического сигнала может служить тактовый сигнал C на последней временно́й диаграмме. Видно, что через одно и то же время начиная с t1 сигнал начинает изменяться точно по той же «траектории», что и секунду назад. Можно даже мысленно нарезать его, как палку колбасы, на одинаковые кусочки по пунктирным линиям — при наложении друг на друга они полностью совпадут.
В этом случае и говорят, что сигнал периодический. Если предположить, между t1 и t2, как и между следующими интервалами, проходит ровно одна секунда, то говорят, что период повторения равен одной секунде: T = 1 с. Также вводят такой параметр, как частота сигнала, его величина обратна периоду: f = 1 / T. Частота фактически измеряется в 1/c, но единицу измерения назвали в честь физика Герца, изучавшего электромагнитные колебания. Итак, 1 Герц (сокращенно Гц) означает, что сигнал точно повторяет свою форму каждую секунду. Частота в 1 кГц (килогерц) означает, что периодичность повторения равна одной миллисекунде. И так далее.
На временной диаграмме T-триггера видно, что, например, между t1 и t5 у сигнала C было 4 импульса, а у Q — всего два. То есть частота синхросигнала в два раза выше, чем частота выходного сигнала.
Конденсаторы в наших схемах
В ролике к статье про логические вентили мы показывали генератор прямоугольных импульсов на одной микросхеме, но принцип его работы пока не объясняли. Сейчас вы освоили применение микросхем комбинационных и последовательностных схем на макетной плате и готовы воспринимать этот материал. Но для начала разберемся, что такое конденсатор.
В давние времена в городе Лейдене создали накопитель для электрического заряда, дав ему интересное название — лейденская банка. Прибор состоит из двух металлических пластин — обкладок, которые разделены изолирующей поверхностью банки. Также у него есть металлические контакты, к которым подносили заряженный предмет для переноса электрического заряд. Впоследствии такое устройство получило название «конденсатор» от латинского condensatio — «накопление». В ролике СПбГУ показаны опыты с самодельной лейденской банкой.
Конечно, в наше время конденсаторы изготавливают промышленным способом, поэтому они выглядят гораздо аккуратнее и компактнее. Но неизменным остается определение основного параметра конденсатора — емкости — и влияющих на него геометрических характеристик.
Емкость измеряется в фарадах в честь английского физика Майкла Фарадея, одного из основоположников учения об электромагнитном поле. 1 фарад — это очень и очень большая емкость. Поэтому в электронике используются ее дробные части: микрофарады (1 мкФ = 10-6 Ф), нанофарады (1 нФ = 10-9 Ф) и даже пикофарады (1 пФ = 10-12 Ф).
На схемах конденсатор обозначается понятно и выразительно: две обкладки, разделенные зазором.
Существуют конденсаторы самых разных типов, форм и размеров. В наших устройствах мы будем пользоваться только одним типом: электролитическими конденсаторами. В них одной из обкладок является металл (это анод, он же плюсовой вывод конденсатора), а другой жидкий или гелевый электролит (это катод, он же минусовой вывод), разделенные между собой изолирующей пленкой оксида алюминия.
Из-за разнородности веществ, применяемых для создания обкладок, электролитические конденсаторы в отличие от других типов обладают полярностью, которую указывают на их корпусе. Если такой конденсатор долго будет включен неправильно, то электролит может закипеть. Из-за этого оболочка конденсатора разорвется, а закипевший электролит разольется. Поэтому, пожалуйста, всегда проверяйте, что включили конденсатор правильно! Брызги горячего и едкого электролита, попавшие на кожу, не доставят никакого удовольствия, поэтому таких ситуаций надо избегать.
Чтобы электронщики точно знали, где какой вывод у конденсатора, производители обычно маркируют минусовой вывод на его корпусе. Это светлая полоса с хорошо различимым знаком минуса внутри:
А вот на схемах обозначают плюсовой вывод маленьким плюсиком возле него, уж так сложилось.
На корпусе «электролитов», как их называют инженеры на своем жаргоне, помимо обозначения минуса наносят еще и другую полезную информацию. Конечно же, это емкость конденсатора, а также максимальное напряжение, на которое он рассчитан.
Несоблюдение напряжений тоже может привести к закипанию и повреждению конденсатора. В наших экспериментах мы работаем с батарейкой 9 В, поэтому широко распространенные конденсаторы на напряжение 6,3 В нам точно не подойдут, берите рассчитанные на 15 В. Больше ни к чему — они будут и крупнее, и дороже.
Если подключить конденсатор напрямую к батарейке, то за счет малого внутреннего сопротивления, она практически мгновенно зарядит его до своего напряжения, и мы ничего интересного не увидим. А вот если заряжать конденсатор через резистор, подавая напряжение на вход и снимая его с выхода на экран осциллографа, то процесс заряда или разряда конденсатора в такой RC-цепочке будет очень наглядным. Цепочку называют RC по двум составляющим ее компонентам: R — резистор, C — конденсатор.
В ролике вы увидите, как во времени происходит заряд и разряд конденсатора через резистор при разных величинах сопротивления R.
Вот теперь мы окончательно сможем разобраться, как работает генератор прямоугольных импульсов, который мы уже использовали в экспериментах. Одним из важнейших параметров генератора сигналов помимо формы этих самых сигналов является частота. В ролике мы измерим период и частоту работы нашего генератора, построенного на RC-цепочке, изученной в предыдущей главе, поговорим о стабильности задаваемой частоты и о способах повышения этой стабильности. Потому что генератор, как и триггеры, тоже использует обратную связь. И хотя не является последовательностной схемой, но без понимания обратной связи, о которой шла речь в этой главе, разобраться в его работе не получилось бы. Переходите по ссылке!
Ответы на вопросы для самопроверки
1. Ответ дан в ролике.
2. Временна́я диаграмма триггера на базе 2ИЛИ-НЕ при заданных входных сигналах:
3. Временна́я диаграмма D-триггера:
Опечатка в 'Входы сброса ®'
наверно 'Входы сброса (R)'
Спасибо, поправили) это автоматический Типограф на сайте иногда исправляет по своему разумению