Содержание
Триггер — это схема из вентилей, которая хранит один бит. Она удерживает на выходе 0 или 1 и после того, как входной сигнал исчез. Для этого выход схемы подают обратно на её же вход. Из триггеров собирают регистры процессора и ячейки памяти.
Схемы, которые ничего не помнят
Все схемы, которые мы собирали до сих пор, живут одним мгновением. Сумматор показывает сумму, пока на входах стоят слагаемые. Уберите их — ответ исчезнет. Выход такой схемы зависит только от того, что на входах прямо сейчас.
Сравните две кнопки. Кнопка микрофона в мессенджере записывает голосовое сообщение, пока Вы держите на ней палец, и останавливает запись, как только Вы его убрали. Кнопка вызова лифта ведёт себя иначе: Вы нажали и отпустили, а она продолжает светиться, пока лифт не приедет. Лифт запомнил вызов.
Одними вентилями в ряд такого не добиться. Нужен новый приём — обратная связь: выход схемы соединяют с её собственным входом. Схема начинает учитывать не только входы, но и то, что сама выдала раньше.
RS-триггер: два вентиля держат друг друга
Возьмём два вентиля ИЛИ-НЕ из урока Логические вентили. Напомним правило: ИЛИ-НЕ выдаёт 1, только когда на обоих его входах нули.
Выход каждого вентиля подключим ко входу другого. Свободных входов останется два: R (от английского reset — сбросить) и S (от set — установить). Выход верхнего вентиля назовём Q — это и есть хранимый бит. На выходе нижнего получается его противоположность, «не Q».
Пусть сначала Q = 0, «не Q» = 1, а на входах S и R нули. Проследим три действия.
Установка. Подаём S = 1. У нижнего вентиля на входе появилась единица, значит, на его выходе 0. Теперь у верхнего вентиля два нуля: R = 0 и «не Q» = 0. Он выдаёт Q = 1.
Хранение. Убираем сигнал: S = 0. Нижний вентиль получает S = 0 и Q = 1. Единица на входе есть, поэтому на выходе по-прежнему 0. Верхний всё так же видит два нуля и держит Q = 1. Вентили удерживают друг друга: единица на Q не даёт подняться «не Q», а ноль на «не Q» позволяет Q оставаться единицей. Бит запомнен.
Сброс. Подаём R = 1. Верхний вентиль тут же выдаёт Q = 0. Нижний видит два нуля и выдаёт «не Q» = 1. Уберём R — ничего не изменится: теперь единица на «не Q» удерживает Q в нуле.
| S | R | Действие | Q |
|---|---|---|---|
| 0 | 0 | хранение | не меняется |
| 1 | 0 | установка | 1 |
| 0 | 1 | сброс | 0 |
| 1 | 1 | запрещено | — |
Такую схему называют RS-триггером или защёлкой. Сравните с лифтом: S — Вы нажали кнопку, R — лифт приехал, Q — светится ли кнопка.
Запрещённая комбинация
Что будет, если подать S = 1 и R = 1 сразу? Оба вентиля получат по единице и оба выдадут 0. Выход «не Q» перестанет быть противоположностью Q — уже нехорошо.
Хуже другое. Если затем убрать оба сигнала одновременно, каждый вентиль увидит два нуля и попытается выдать 1. Кто успеет первым, тот и заставит соседа вернуться в 0. А это зависит от случайных мелочей: чуть разной скорости вентилей, длины проводов. Угадать итог нельзя.
Схема, которая запоминает неизвестно что, бесполезна. Поэтому комбинацию S = R = 1 называют запрещённой и следят, чтобы она никогда не возникала.
D-триггер: бит и команда «запомни»
Пользоваться RS-триггером неудобно: два входа, да ещё и опасное сочетание. Обычно хочется проще: вот бит — запомни его.
Так работает D-триггер. У него вход данных D и вход C — команда «запомни». Внутри тот же RS-триггер и несколько вентилей перед ним. Они подают единицу на S, если D = 1, и на R, если D = 0, — и только по команде C. Бит D не бывает нулём и единицей одновременно, так что запрещённая комбинация исключена.
Представьте скриншот. Экран телефона всё время меняется — это вход D. Нажатие кнопок для снимка экрана — команда C. Скриншот — это Q: на нём застыло то, что было на экране в момент нажатия, и дальнейшие события его не меняют.
В процессорах ставят триггеры, которые запоминают D в один короткий момент: когда сигнал C переходит из 0 в 1. Этот переход называют фронтом. Всё остальное время триггер на вход D не смотрит.
На диаграмме время идёт слева направо. На первом фронте D = 1, и Q становится единицей. Потом D падает в ноль, но Q узнаёт об этом только на третьем фронте. Между третьим и четвёртым фронтами на D проскочил короткий импульс. Триггер его пропустил: к моменту фронта на входе снова был ноль.
Тактовый сигнал и гигагерцы
В процессоре миллионы триггеров. Если бы каждый запоминал, когда ему вздумается, одни части схемы брали бы у других ещё не готовые результаты.
Поэтому на входы C всех триггеров подают один общий сигнал — тактовый. Это ровное чередование нулей и единиц, которое вырабатывает специальный генератор. Промежуток от одного фронта до следующего называют тактом.
Тактовый сигнал похож на школьный звонок. Все классы начинают и заканчивают урок одновременно, а не когда кому удобно. Между звонками каждый занят своим делом, по звонку все разом переходят к следующему.
В схеме так же. Между фронтами работают вентили: например, сумматор успевает довести перенос до старшего разряда. На фронте триггеры одновременно запоминают готовые результаты. Поэтому такт нельзя сделать короче, чем время работы самой длинной цепочки вентилей.
Число тактов в секунду — это тактовая частота. Её измеряют в герцах: 1 Гц — один такт в секунду.
| Единица | Тактов в секунду |
|---|---|
| 1 Гц | 1 |
| 1 кГц (килогерц) | 1 000 |
| 1 МГц (мегагерц) | 1 000 000 |
| 1 ГГц (гигагерц) | 1 000 000 000 |
Процессор с частотой 3 ГГц отсчитывает три миллиарда тактов в секунду. Один такт длится треть наносекунды, а наносекунда — это миллиардная доля секунды. Свет за один такт пролетает всего около 10 сантиметров.
Больше гигагерц — не всегда быстрее: разные процессоры успевают сделать за один такт разный объём работы.
Частые вопросы
Триггер помнит бит вечно?
Нет, только пока включено питание. Вентилям нужна энергия, чтобы удерживать друг друга. Выключили — состояние пропало.
Что хранит триггер сразу после включения?
Случайное значение: какой из двух вентилей «победит», заранее неизвестно. Поэтому после включения схемы сначала сбрасывают — приводят в известное состояние.
Зачем триггеру второй выход?
Он получается сам собой: это выход второго вентиля. Иногда он полезен — инверсия бита уже готова, отдельный вентиль НЕ не нужен.
Коротко
- Чтобы схема что-то помнила, её выход подают обратно на вход — это обратная связь.
- RS-триггер — два вентиля ИЛИ-НЕ, выход каждого подан на вход другого.
- S = 1 записывает единицу, R = 1 записывает ноль, при S = R = 0 триггер хранит бит. Комбинация S = R = 1 запрещена.
- D-триггер запоминает значение входа D на фронте сигнала C.
- Тактовый сигнал задаёт общий ритм всем триггерам схемы; 1 ГГц — миллиард тактов в секунду.
Один триггер хранит один бит. Как собрать из триггеров хранилище для целых чисел и находить в нём нужное — в уроке Регистры и оперативная память.
Использованная литература
- Триггер — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Триггер (дата обращения: 09.10.2026).
- Тактовый сигнал — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Тактовый_сигнал (дата обращения: 09.10.2026).
- Тактовая частота — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Тактовая_частота (дата обращения: 09.10.2026).
- Герц (единица измерения) — Википедия [Электронный ресурс]. — URL: https://ru.wikipedia.org/wiki/Герц_(единица_измерения) (дата обращения: 09.10.2026).