bitGateLab Digital · Обучение
Русский
Открыть симулятор

Обучение › Тема 9

Защёлки и триггеры: SR, D, JK и T шаг за шагом

7 мин чтения · Команда bitGateLab

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

SR-защёлка

Два элемента NOR, выходы которых перекрёстно заведены на входы друг друга, образуют SR-защёлку. Память создаёт именно обратная связь: как только выход принял некоторое значение, он удерживает его сам.

≥1 ≥1 R S Q Q̄
SR-защёлка на элементах NOR: Q = NOR(R, Q) и Q = NOR(S, Q). Пересечение линий без точки соединением не является.
SRСледующее QДействие
00QХранение
010Сброс
101Установка
11—Запрещено

При S = R = 1 оба элемента NOR выдают 0, так что Q и Q перестают быть взаимно инверсными. Хуже того: если затем оба входа одновременно вернутся в 0, конечное состояние будет зависеть от того, какой элемент быстрее. Поэтому такая комбинация запрещена. Характеристическое уравнение защёлки, справедливое при условии S·R = 0, таково: Q+ = S + R·Q.

На элементах NAND получается защёлка SR со входами с активным низким уровнем: 11 — хранение, 01 устанавливает Q = 1, 10 устанавливает Q = 0, а 00 — запрещённая комбинация (оба выхода равны 1).

D-защёлка: прозрачна, пока разрешена

Чтобы избавиться от запрещённой комбинации, добавляют вход разрешения EN и формируют S = D·EN и R = D·EN. Поскольку S и R никогда не равны 1 одновременно, проблема исчезает. Поведение простое:

Прозрачность — слабое место защёлки. Если соединить выход защёлки через логику с её же входом, то, пока EN = 1, сигнал может пройти по кругу несколько раз, и результат непредсказуем. Синхронным последовательностным схемам нужно нечто, что захватывает данные в один-единственный момент.

Триггеры, срабатывающие по фронту

D-триггер, срабатывающий по нарастающему фронту, копирует D в Q только в тот момент, когда тактовый сигнал переходит из 0 в 1. Всё остальное время он игнорирует D. Его строят из двух D-защёлок, включённых каскадно (ведущей и ведомой), с противоположными сигналами разрешения: пока тактовый сигнал равен 0, ведущая защёлка повторяет D, а ведомая закрыта; когда тактовый сигнал нарастает, ведущая закрывается, а ведомая передаёт на выход захваченное значение. Его уравнение — самое простое: Q+ = D.

На основе базового триггера определяют ещё два типа, очень употребительных в проектировании:

JKQ+Действие
00QХранение
010Сброс
101Установка
11QПереключение

Пример: JK-триггер начинает с Q = 0 и получает пять фронтов при (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Примените Q+ = J·Q + K·Q на каждом из них:

  1. (1,0), Q = 0: 1·1 + 1·0 = 1.
  2. (0,0), Q = 1: 0·0 + 1·1 = 1 (хранит).
  3. (1,1), Q = 1: 1·0 + 0·1 = 0 (переключается).
  4. (0,1), Q = 0: 0·1 + 0·0 = 0.
  5. (1,1), Q = 0: 1·1 + 0·0 = 1 (переключается).

Последовательность значений Q после каждого фронта: 1, 1, 0, 0, 1.

Таблицы возбуждения

Характеристическая таблица отвечает на вопрос «при данных входах куда перейдёт Q?». Для проектирования нужен обратный вопрос: «я хочу, чтобы Q перешло из этого значения в то, — что подать на входы?». Это и есть таблица возбуждения, и вы будете пользоваться ею в каждом счётчике и конечном автомате.

Q → Q+DTJ KS R
0 → 0000 X0 X
0 → 1111 X1 0
1 → 001X 10 1
1 → 110X 0X 0

Именно из-за X в столбце JK этот триггер обычно даёт более короткие уравнения: для перехода из 0 в 1 всё равно, равно ли K значению 0 (установка) или 1 (переключение), и эта свобода используется на карте Карно.

Времена предустановки и удержания, максимальная частота

Реальному триггеру нужно, чтобы D было стабильным некоторое время до фронта — это время предустановки, или setup (tsu), — и оставалось стабильным некоторое время после него — это время удержания, или hold (th). Если D изменится внутри этого окна, выход может какое-то время пробыть на промежуточном уровне, прежде чем определится: это метастабильность. Кроме того, выход меняется после фронта с задержкой tCQ.

В синхронной схеме сигнал выходит из одного триггера, проходит через комбинационную логику и приходит на следующий. Минимальный период тактового сигнала равен:

Tmin = tCQ + tлогики + tsu

Пример: tCQ = 15 ns, самый длинный комбинационный путь занимает 20 ns, а tsu = 5 ns.

Tmin = 15 + 20 + 5 = 40 ns, поэтому fmax = 1 / 40 ns = 25 MHz.

Для времени удержания берут самый короткий путь: если минимальное tCQ равно 5 ns и между двумя триггерами нет логики, новые данные приходят через 5 ns после фронта. При th = 3 ns условие выполняется, потому что 5 ns ≥ 3 ns.

Время предустановки ограничивает частоту, и нарушение исправляется снижением тактовой частоты. Время удержания от частоты не зависит: если оно не выдержано, схема сбоит даже на очень низкой скорости.

Типичные ошибки

Попробуйте в симуляторе

Разница между защёлкой и триггером сразу видна на временной диаграмме. Соберите и то и другое и подайте на них один и тот же сигнал.

  1. Поместите два элемента NOR и соедините выход каждого с одним из входов другого; добавьте входы S и R и два светодиода.
  2. Меняйте S и R, чтобы проверить все четыре строки таблицы, включая запрещённую, и обратите внимание, что Q и Q одновременно равны 0.
  3. Поместите D-защёлку и D-триггер, подайте на оба один и тот же вход данных и один и тот же тактовый сигнал (сигнал разрешения).
  4. Откройте временную диаграмму и несколько раз измените D, пока тактовый сигнал равен 1: защёлка повторяет изменения, а триггер берёт только значение в момент нарастающего фронта.
  5. Повторите с JK-триггером при J = K = 1 и посмотрите, что частота на его выходе вдвое ниже тактовой.

Упражнения

  1. T-триггер начинает с Q = 1 и получает T = 1, 1, 0, 1 на четырёх фронтах. Какие значения принимает Q?
    Ответ

    Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Последовательность: 0, 1, 1, 0.

  2. Какие значения J и K нужны, чтобы триггер перешёл из Q = 1 в Q = 0?
    Ответ

    J = X, K = 1. При K = 1 и J = 0 происходит сброс; при J = K = 1 — переключение. Оба варианта приводят Q к 0.

  3. При tCQ = 12 ns, tsu = 4 ns и желаемой частоте 40 MHz какую наибольшую задержку может иметь логика между триггерами?
    Ответ

    T = 1 / 40 MHz = 25 ns. tлогики ≤ 25 − 12 − 4 = 9 ns.

  4. Запишите уравнение для D, при котором D-триггер ведёт себя как JK-триггер.
    Ответ

    D = J·Q + K·Q, то есть характеристическое уравнение JK-триггера.

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