Обучение › Тема 9
Защёлки и триггеры: SR, D, JK и T шаг за шагом
7 мин чтения · Команда bitGateLab
До сих пор выходы ваших схем зависели только от входов в текущий момент. Чтобы считать, хранить данные или помнить, на каком шаге находится процесс, нужна память, а самая маленькая ячейка памяти — это защёлка. Здесь вы соберёте защёлку из двух логических элементов, превратите её в триггер, срабатывающий по фронту, и освоите таблицы, которые понадобятся при проектировании счётчиков и конечных автоматов.
SR-защёлка
Два элемента NOR, выходы которых перекрёстно заведены на входы друг друга, образуют SR-защёлку. Память создаёт именно обратная связь: как только выход принял некоторое значение, он удерживает его сам.
| S | R | Следующее Q | Действие |
|---|---|---|---|
| 0 | 0 | Q | Хранение |
| 0 | 1 | 0 | Сброс |
| 1 | 0 | 1 | Установка |
| 1 | 1 | — | Запрещено |
При 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: защёлка прозрачна, Q всё время повторяет D.
- EN = 0: Q «замерзает» с последним значением, которое было на D.
Прозрачность — слабое место защёлки. Если соединить выход защёлки через логику с её же входом, то, пока EN = 1, сигнал может пройти по кругу несколько раз, и результат непредсказуем. Синхронным последовательностным схемам нужно нечто, что захватывает данные в один-единственный момент.
Триггеры, срабатывающие по фронту
D-триггер, срабатывающий по нарастающему фронту, копирует D в Q только в тот момент, когда тактовый сигнал переходит из 0 в 1. Всё остальное время он игнорирует D. Его строят из двух D-защёлок, включённых каскадно (ведущей и ведомой), с противоположными сигналами разрешения: пока тактовый сигнал равен 0, ведущая защёлка повторяет D, а ведомая закрыта; когда тактовый сигнал нарастает, ведущая закрывается, а ведомая передаёт на выход захваченное значение. Его уравнение — самое простое: Q+ = D.
На основе базового триггера определяют ещё два типа, очень употребительных в проектировании:
- JK: как SR, но без запрещённой комбинации. При J = K = 1 значение Q меняется на противоположное (триггер переключается) на каждом фронте. Уравнение:
Q+ = J·Q + K·Q. - T (toggle, счётный): при T = 0 хранит, при T = 1 переключается. Уравнение:
Q+ = T ⊕ Q. Получается из JK-триггера при J = K = T или из D-триггера при D = T ⊕ Q.
| J | K | Q+ | Действие |
|---|---|---|---|
| 0 | 0 | Q | Хранение |
| 0 | 1 | 0 | Сброс |
| 1 | 0 | 1 | Установка |
| 1 | 1 | Q | Переключение |
Пример: JK-триггер начинает с Q = 0 и получает пять фронтов при (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Примените Q+ = J·Q + K·Q на каждом из них:
- (1,0), Q = 0: 1·1 + 1·0 = 1.
- (0,0), Q = 1: 0·0 + 1·1 = 1 (хранит).
- (1,1), Q = 1: 1·0 + 0·1 = 0 (переключается).
- (0,1), Q = 0: 0·1 + 0·0 = 0.
- (1,1), Q = 0: 1·1 + 0·0 = 1 (переключается).
Последовательность значений Q после каждого фронта: 1, 1, 0, 0, 1.
Таблицы возбуждения
Характеристическая таблица отвечает на вопрос «при данных входах куда перейдёт Q?». Для проектирования нужен обратный вопрос: «я хочу, чтобы Q перешло из этого значения в то, — что подать на входы?». Это и есть таблица возбуждения, и вы будете пользоваться ею в каждом счётчике и конечном автомате.
| Q → Q+ | D | T | J K | S R |
|---|---|---|---|---|
| 0 → 0 | 0 | 0 | 0 X | 0 X |
| 0 → 1 | 1 | 1 | 1 X | 1 0 |
| 1 → 0 | 0 | 1 | X 1 | 0 1 |
| 1 → 1 | 1 | 0 | X 0 | X 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.
Типичные ошибки
- Называть защёлку триггером, срабатывающим по фронту: защёлка реагирует на уровень сигнала разрешения, а такой триггер — на фронт тактового сигнала.
- Пользоваться характеристической таблицей там, где проектирование требует таблицу возбуждения.
- Забывать, что у защёлки на NAND входы имеют активный низкий уровень и запрещённая комбинация — 00, а не 11.
- Менять D точно в момент фронта тактового сигнала и ожидать определённого результата.
- Оставлять неподключёнными асинхронные входы установки (preset) и сброса (clear) реального триггера: на них нужно подать неактивный уровень.
Попробуйте в симуляторе
Разница между защёлкой и триггером сразу видна на временной диаграмме. Соберите и то и другое и подайте на них один и тот же сигнал.
- Поместите два элемента NOR и соедините выход каждого с одним из входов другого; добавьте входы S и R и два светодиода.
- Меняйте S и R, чтобы проверить все четыре строки таблицы, включая запрещённую, и обратите внимание, что Q и Q одновременно равны 0.
- Поместите D-защёлку и D-триггер, подайте на оба один и тот же вход данных и один и тот же тактовый сигнал (сигнал разрешения).
- Откройте временную диаграмму и несколько раз измените D, пока тактовый сигнал равен 1: защёлка повторяет изменения, а триггер берёт только значение в момент нарастающего фронта.
- Повторите с JK-триггером при J = K = 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.
- Какие значения J и K нужны, чтобы триггер перешёл из Q = 1 в Q = 0?
Ответ
J = X, K = 1. При K = 1 и J = 0 происходит сброс; при J = K = 1 — переключение. Оба варианта приводят Q к 0.
- При tCQ = 12 ns, tsu = 4 ns и желаемой частоте 40 MHz какую наибольшую задержку может иметь логика между триггерами?
Ответ
T = 1 / 40 MHz = 25 ns. tлогики ≤ 25 − 12 − 4 = 9 ns.
- Запишите уравнение для D, при котором D-триггер ведёт себя как JK-триггер.
Ответ
D = J·Q + K·Q, то есть характеристическое уравнение JK-триггера.
С этими деталями уже можно переходить к теме «счётчики и регистры», а затем к теме «конечные автоматы».