Наука и образование / Триггеры на логических элементах

Триггеры на логических элементах

Триггеры на логических элементах
Поделится:

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

Основной RS-триггер на элементах NAND:

Чтобы логическая схема могла «запоминать» и сохранять свое состояние даже после того, как управляющие входные сигналы были удалены, необходимо наличие в ней механизма обратной связи. Для этого можно использовать логические элементы NAND или NOR, а также дополнительные входные линии для управления схемой. Представленная ниже схема является базовым триггером на элементах NAND, где обозначения «S» и «R» указывают на «Установку» (Set) и «Сброс» (Reset) соответственно. Выходы однобитного триггера или памяти традиционно обозначаются как Q и Q’.

Основной RS-триггер на элементах NAND

Принцип работы

Для схемы триггера на элементах NAND оба входа обычно должны находиться на уровне логической 1.
При изменении одного из входов на уровень логического 0 соответствующий выход принудительно устанавливается на уровень логической 1. Этот же логический 1 поступает на второй вход другого элемента NAND, позволяя его выходу перейти на уровень логического 0. Затем этот логический 0 подается обратно на второй вход исходного элемента, заставляя его выход оставаться на уровне логической 1.

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

Запрещено одновременно подавать уровень логического 0 на оба входа. В этом случае оба выхода установятся на уровень логической 1, что нарушит работу обратной связи и самозахватывающее действие триггера. При таком состоянии тот вход, который первым перейдет на уровень логической 1, потеряет контроль, а другой вход (все еще находящийся на уровне логического 0) определит конечное состояние триггера. Если оба входа одновременно перейдут на уровень логической 1, возникает так называемое «состояние гонки» (race condition), при котором конечное состояние триггера заранее предсказать невозможно.

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

Схема включения и выключения нагрузки на логических элементах

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

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

Одна из проблем базового RS-триггера на элементах NAND заключается в том, что входные уровни должны быть инвертированы и находиться в состоянии логической 1 в режиме ожидания, чтобы схема работала корректно. Было бы удобнее, если бы входы находились в состоянии логического 0 в режиме ожидания и переходили в логическую 1 только для управления триггером. Это можно реализовать, добавив инверторы на входы.

Еще одна задача — контроль над тем, когда триггеру разрешено менять состояние, а когда нет. Это необходимо, если требуется, чтобы группа триггеров меняла свое состояние одновременно (или оставалась неизменной).

Обе эти проблемы легко решаются с использованием базового RS-триггера на элементах NOR.

Базовый RS-триггер на элементах NOR:

На рисунке ниже представлена схема базового триггера на элементах NOR. Входы обычно обозначаются как «S» (Set — Установка) и «R» (Reset — Сброс). Так как входы логических элементов NOR должны находиться в состоянии логического 0, чтобы не нарушать действие обратной связи, инверсии входов в данной схеме не требуется.

Для работы триггера на элементах NOR оба входа обычно должны находиться в состоянии логического 0.

Базовый RS-триггер на элементах NOR

Принцип работы

Для триггера на элементах NOR оба входа должны находиться на уровне логического 0. Изменение одного из входов на уровень логической 1 заставляет соответствующий выход перейти на уровень логического 0. Этот же логический 0 поступает на второй вход другого элемента NOR, позволяя его выходу подняться до уровня логической 1. Затем этот логический 1 подается обратно на второй вход исходного элемента, удерживая его выход на уровне логического 0 даже после удаления внешнего входного сигнала.

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

Запрещено одновременно подавать уровень логической 1 на оба входа. В таком состоянии оба выхода устанавливаются на уровень логического 0, что нарушает действие обратной связи. При этом вход, который первым перейдет на уровень логического 0, теряет управление, а другой вход (все еще находящийся на уровне логической 1) определяет конечное состояние триггера. Если оба входа одновременно переходят на уровень логического 0, возникает «состояние гонки» (race condition), и конечное состояние триггера становится непредсказуемым.

Одной из проблем базового RS-триггера на элементах NOR является то, что входные сигналы активно устанавливают свои соответствующие выходы в состояние логического 0, а не логической 1. Таким образом, сигнал S подается на элемент, который формирует выход Q’, а сигнал R — на элемент, формирующий выход Q. Хотя схема работает корректно, такая инверсия входов может вызывать путаницу.

Тактируемый RS-триггер на элементах NAND:

Добавление пары элементов NAND во входные цепи RS-триггера позволяет достичь двух целей:

  1. Входы становятся нормальными, а не инверсными.
  2. Появляется третий общий вход для обоих элементов, который можно использовать для синхронизации этой схемы с другими аналогичными схемами.

На рисунке ниже представлена схема тактируемого RS-триггера на элементах NAND.

Тактируемый RS-триггер на элементах NAND

Принцип работы

Работа тактируемого RS-триггера схожа с базовым RS-триггером на элементах NOR. Входы S и R обычно находятся на уровне логического 0 и должны быть переведены в логическую 1 для изменения состояния триггера. Однако добавление третьего входа вносит новый элемент. Этот вход, обозначаемый как C или CLK, управляется тактовым генератором, который синхронизирует работу нескольких таких триггеров.

Выходы триггера могут изменять свое состояние только тогда, когда вход CLK находится на уровне логической 1. При уровне логического 0 на входе CLK сигналы S и R не оказывают никакого влияния на состояние триггера.

Правило о недопустимости одновременной активации входов S и R остается в силе. Если оба входа S и R находятся на уровне логической 1 одновременно с входом CLK, действие обратной связи нарушается, и оба выхода устанавливаются на уровень логической 1. В этом случае, если вход CLK первым переходит на уровень логического 0, возникает «состояние гонки» (race condition), и предсказать конечное состояние выходов невозможно.

Для корректной работы необходимо сначала перевести выбранный вход (S или R) в логическую 1, затем установить вход CLK в логическую 1 и снова вернуть его в логическую 0. После этого выбранный вход (S или R) возвращается на уровень логического 0.

Тактируемый RS-триггер решает некоторые проблемы базовой схемы RS-триггера и обеспечивает более точный контроль за работой триггера. Однако он не является окончательным решением. Основная проблема заключается в том, что входы S и R могут изменяться, пока вход CLK находится на уровне логической 1. Это позволяет схеме многократно менять состояние до возвращения CLK на уровень логического 0.

Для устранения этой проблемы можно использовать триггер RS с фронтами (Edge-Triggered RS Flip-Flop), который гарантирует, что изменения выходов триггера происходят только в определенный момент тактового цикла.

Триггер RS с фронтами (Edge-Triggered RS Flip-flop):

Чтобы адаптировать тактируемый RS-триггер для работы с фронтами сигнала, необходимо объединить две идентичные тактируемые схемы триггера, но настроить их на работу на противоположных фазах тактового сигнала. Получившаяся схема называется триггером (flip-flop), поскольку ее выход сначала может переключиться в одно состояние («flip»), а затем вернуться в другое («flop»).

Хотя тактируемый RS-триггер иногда тоже называют триггером, более правильным будет называть его триггерной схемой (latch circuit). Двухсекционный триггер также известен как триггер типа мастер-слейв (master-slave flip-flop), поскольку входная секция работает как «мастер», а выходная секция является «ведомой» (slaved) и синхронизируется с мастером на одной из фаз тактового сигнала.

На рисунке ниже показана схема RS-триггера с фронтами на элементах NAND.

схема RS-триггера с фронтами на элементах NAND

Принцип работы

Триггер RS с фронтами представляет собой конструкцию из двух идентичных RS-триггеров, соединенных последовательно. Ключевой особенностью схемы является использование инвертора между входами CLK, что позволяет секциям работать на противоположных фазах тактового сигнала.

Когда сигнал CLK находится в состоянии логического 0, входы S и R отключены от входной (мастер) секции, из-за чего любые изменения на этих входах не оказывают влияния на выходы. При переходе CLK в логическое 1 входы S и R становятся активными и начинают управлять состоянием входной секции, аналогично обычному RS-триггеру. Однако в этот момент инверсный сигнал CLK блокирует воздействие состояния мастер-секции на выходную (слейв) секцию. Таким образом, изменения на входах S и R фиксируются только входной секцией и не передаются на выходы Q и Q’.

Когда сигнал CLK возвращается в логическое 0, входы S и R снова отключаются от мастер-секции, а инверсный сигнал CLK позволяет текущему состоянию мастер-секции быть переданным на слейв-секцию, что приводит к изменению выходов Q и Q’. Таким образом, триггер изменяет свои выходы только в момент спада тактового сигнала с логической 1 на логическое 0, что и дает название триггеру с фронтами.

Проблемой такой схемы остается возможность состояния гонки, если входы S и R находятся в логическом 1 во время спада сигнала CLK. Чтобы избежать этого, добавляют обратную связь между выходной и входной секциями, что позволяет исключить неопределенные состояния. Такая усовершенствованная схема получила название триггера JK, обеспечивая надежную работу без возникновения гонок.

Триггер JK (JK Flip-Flop):

Для устранения возможности возникновения состояния гонки, когда оба входа S и R находятся в состоянии логической 1 в момент спада тактового сигнала CLK (с логической 1 на логическую 0), необходимо исключить влияние одного из этих входов на мастер-секцию схемы. При этом важно сохранить способность триггера изменять свое состояние на каждом спаде CLK, если входные логические сигналы этого требуют.

Решение заключается в том, чтобы отключение входов S или R зависело от текущего состояния выходов слейв-секции. Если выход Q находится в состоянии логической 1 (триггер установлен), вход S больше не может изменить это состояние, так как триггер уже установлен. В таких условиях вход S может быть отключен без влияния на работу триггера. Аналогично, если выход Q равен логическому 0 (триггер сброшен), вход R также можно отключить, не нарушая работу схемы. Реализовав это, удается устранить проблему состояния гонки.

В представленной схеме решение достигается за счет добавления двух обратных связей от выходов Q и Q’ к входным элементам оригинального RS-триггера. При этом обозначения входов и самого триггера изменяются: вход S переименован в J, а вход R — в K. В результате вся схема называется триггером JK.

схема триггера JK

Этот подход позволяет избежать состояния гонки, так как входы J и K динамически управляются состоянием выходов триггера, предотвращая неопределенность при смене состояния. Триггер JK становится более универсальным и устойчивым по сравнению с базовым RS-триггером.

Особенности работы триггера JK

В большинстве случаев триггер JK работает аналогично RS-триггеру: выходы Q и Q’ изменяют свое состояние только на спаде тактового сигнала (CLK), а входы J и K определяют будущее состояние выходов. Однако между этими схемами есть принципиальные различия.

В триггере JK один из входов J или K всегда отключен в зависимости от текущего состояния выходов Q и Q’. Это предотвращает возможность многократного изменения состояния мастер-секции при активном сигнале CLK на уровне логической 1. Активный вход может изменить состояние мастер-секции только один раз, после чего ее состояние остается неизменным. В RS-триггере такая защита отсутствует, что делает его менее стабильным.

Если оба входа J и K находятся в состоянии логической 1, выходы Q и Q’ будут менять свое состояние на каждом спаде сигнала CLK. При этом мастер-секция изменяет свое состояние на каждом нарастающем фронте CLK. Такое поведение предсказуемо и позволяет использовать триггер JK в качестве переключателя состояний (тоггл-функция).

Благодаря тому, что поведение триггера JK остается полностью контролируемым и предсказуемым в любых условиях, он является предпочтительным выбором для большинства схем логики. В отличие от этого, RS-триггер применяется только в тех случаях, где можно гарантировать, что оба входа S и R никогда не будут находиться в логической 1 одновременно. Это ограничивает сферу его применения.

Триггер D (D Latch):

Один из наиболее полезных вариантов схемы RS-триггера — это триггер данных (Data Latch), который создается путем использования инверсного входа S в качестве сигнала для входа R. Таким образом, в схеме остается только один вход, обозначаемый как «D», чтобы подчеркнуть его отличие от других типов триггеров.

В данной конструкции вход D определяет будущее состояние триггера, в то время как сигнал CLK контролирует возможность изменения состояния. Особенность заключается в том, что сигнал R фактически управляется через инверсный вход S, что устраняет необходимость в отдельном управлении.

Работа триггера не нарушается тем, что сигнал R проходит через два логических элемента, поскольку тактовый сигнал (CLK) либо пропускает данные через оба элемента, либо полностью их блокирует.

Триггер D (D Latch)

Особенности работы триггера D (D Latch)

В триггере D, когда сигнал CLK находится на уровне логической 1, выход Q всегда отражает текущее состояние входа D, независимо от того, как изменяется значение на этом входе. Однако, как только сигнал CLK опускается до логической 0, последнее состояние входа D фиксируется и сохраняется триггером, позволяя другим схемам использовать этот сохраненный сигнал.

Поскольку вход D автоматически инвертируется для формирования сигнала сброса (Reset), триггер D исключает возможность возникновения состояния гонки, связанного с одновременным наличием логической 1 на всех входах.

Триггер D (D Flip-Flop):

Триггер D с фронтами (Edge-Triggered D Flip-Flop) создается на основе RS-триггера путем замены входа R на инверсную версию входа S, который в этом случае становится входом D. Эта модификация применяется только к мастер-секции, в то время как слейв-секция остается неизменной.

Основной особенностью триггера D является то, что при спаде тактового сигнала (с логической 1 на 0) выход Q всегда принимает состояние входа D, зафиксированное в момент спада. Это отличает D-триггер от RS и JK триггеров, где выходное состояние зависело от множества факторов.

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

Таким образом, D-триггер обеспечивает более прямое и предсказуемое управление выходным состоянием, точно соответствующее входному сигналу D в момент перехода тактового сигнала.

Триггер D (D Flip-Flop)

Обозначение триггеров:

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

Этот подход является развитием идеи «черного ящика», которая использовалась для обозначения логических элементов как кластеров электронных компонентов. Теперь один символ используется для представления целой группы логических элементов, соединенных для выполнения конкретной функции.

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

Обозначение триггеров
  1. JK-триггер
  • Входы обозначены как J и K.
  1. RS-триггер
  • Входы обозначены как S (Set) и R (Reset).
  • Основной триггер для фиксации состояния, но требует контроля, чтобы оба входа S и R не были одновременно в логической 1.
  1. T-триггер (Toggle)
  • Вход обозначен как T.
  • Используется для переключения (инверсии) состояния выходов при каждом тактовом сигнале.
  1. D-триггер с управлением по уровню (D Latch):
  • Вход обозначен как D.
  • Фиксирует значение входа D при активном уровне тактового сигнала.

Преобразование типов триггеров:

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

Для преобразования RS-триггера в T-триггер требуется создать простую обратную связь. Это обеспечивает такие соединения, чтобы входы S и R всегда задавали изменение состояния триггера на каждом тактовом импульсе.

Преобразование D-триггера в T-триггер

Преобразование D-триггера в T-триггер осуществляется похожим образом. Для этого выход Q’ соединяется с входом D. Такое подключение гарантирует, что каждый тактовый сигнал переключает состояние триггера.

Преобразование D-триггера в T-триггер

Преобразование RS-триггера в D-триггер:

Для преобразования RS-триггера в D-триггер необходимо добавить инвертор, который будет формировать сигнал для входа R. В результате вход S будет использоваться как D-вход, а инвертор автоматически подаст на вход R противоположный сигнал.

Эта модификация гарантирует, что RS-триггер будет функционировать как D-триггер, фиксируя состояние входа D на каждом тактовом импульсе. Благодаря такому подходу, RS-триггер можно легко адаптировать для задач, где требуется использование D-триггера.

Преобразование RS-триггера в D-триггер
  • 25.11.2024