Магия обратной связи
До этого момента все наши схемы были похожи на обычный калькулятор: пока ты держишь кнопки нажатыми, на экране есть ответ. Но стоит отпустить кнопку (убрать напряжение), и схема тут же всё забывает. Вентили И, ИЛИ и сумматоры не имеют памяти. Как же заставить провода запомнить хотя бы один бит информации?
Ответ кроется в гениальном инженерном трюке — обратной связи. Что, если взять выход логического вентиля и соединить его проводом с его же собственным входом? Сигнал начнёт бегать по кругу, поддерживая сам себя! Идея звучит странно, но именно на ней построена вся память компьютеров.
Так работает SR-защёлка (Set-Reset). У неё два входа: один для включения (Set), другой для сброса (Reset). Если подать короткий импульс на Set, схема «защёлкнется» и будет бесконечно выдавать на выходе 1, даже когда сигнал на входе исчезнет. Она запомнила единицу! Подадим импульс на Reset — она сбросится и запомнит ноль. Это самый первый, крошечный кирпичик оперативной памяти любого компьютера.
Почему обычные схемы не помнят
Все схемы, которые ты собирал раньше — НЕ, И, ИЛИ, сумматоры, мультиплексоры — называются комбинационными: их выход зависит только от текущих входов. Подал 1 на оба входа вентиля И — получил 1, убрал сигнал — получил 0. У такой схемы нет состояния и нет «истории»: пока сигнал идёт, она работает, а как только он пропадает — возвращается в исходное положение.
Чтобы выполнять программу из десятков шагов, компьютеру нужно то, что сохранит результат одного шага и подаст его на следующий. Нужна память — элемент, выход которого зависит не только от входов, но и от того, что происходило раньше.
Обратная связь: провод, который говорит сам с собой
Ключевой приём — подать выход вентиля обратно на его вход. В игре нет отдельного вентиля NOR, но он легко собирается: выход OR → вход NOT. Это и есть NOR. Возьми два таких NOR и соедини их крест-накрест: выход первого (Q) подай на второй вход второго, выход второго (NQ) — на второй вход первого. На первые входы подаются S и R. Схема описывается двумя формулами: Q = NOR(R, NQ), NQ = NOR(S, Q).
Посмотри внимательно: у каждого NOR один из входов приходит с выхода соседа. Если на выходе первого NOR появилась 1, она приходит на вход второго и удерживает его выход в 0, а этот 0, вернувшись на вход первого, продолжает поддерживать его единицу. Получается замкнутый круг — состояние, которое поддерживает само себя.
Таблица состояний SR-защёлки
| S | R | Q | Что происходит |
|---|---|---|---|
| 1 | 0 | 1 | Set — установка: защёлка запоминает 1 |
| 0 | 0 | 1 | Holds — держит 1: входов нет, состояние сохраняется |
| 0 | 1 | 0 | Reset — сброс: защёлка запоминает 0 |
| 0 | 0 | 0 | Holds — держит 0: состояние снова сохраняется |
Обрати внимание на строки «Holds»: именно они превращают схему в память. Когда оба входа равны 0, выход не меняется — он остаётся таким, каким его оставила последняя команда Set или Reset.
Разбираем по шагам: как единица «застревает» в схеме
Проследим работу защёлки на конкретной временно́й шкале.
1. Подаём S=1, R=0. Второй NOR получает S=1 и сбрасывает NQ в 0. Первый NOR видит R=0 и NQ=0 — оба входа в 0, значит выход Q=1. Защёлка установлена.
2. Убираем оба сигнала: S=0, R=0. Второй NOR видит S=0 и Q=1 — его выход NQ остаётся 0. Первый NOR видит R=0 и NQ=0 — его выход Q остаётся 1. Круг замкнулся: Q поддерживает сам себя.
3. Подаём R=1, S=0. Первый NOR получает R=1, и Q сбрасывается в 0. Второй NOR видит S=0 и Q=0 — его выход NQ становится 1.
4. Снова убираем сигналы: S=0, R=0. Первый NOR видит R=0 и NQ=1 — Q остаётся 0. Защёлка сброшена и снова «замёрзла», но уже в нуле.
Вот и весь фокус: единица или ноль «застревают» в петле обратной связи и не исчезают, пока не придёт команда сброса. Кстати, до этого уровня мы разбирали, как АЛУ выбирает нужный результат мультиплексором — теперь добавим этой схеме память.
Один бит памяти
SR-защёлка хранит ровно один бит — значение Q. Второй выход NQ всегда противоположен: Q=1 → NQ=0, Q=0 → NQ=1.
Практический пример. Кнопка питания монитора — это SR-защёлка в действии. Нажимаешь кнопку — кратковременный импульс поступает на вход Set, и монитор включается. Отпускаешь кнопку — контакт размыкается, но монитор продолжает работать, потому что защёлка «запомнила» единицу. Нажал ещё раз — импульс пришёл на Reset, защёлка сбросилась, монитор выключился. Без обратной связи технике пришлось бы удерживать кнопку всё время.
Частые ошибки
- Забыть перекрёстные связи: если просто поставить два NOR рядом и не завести выходы обратно на входы, обратной связи нет и память не работает.
- Не собрать NOR: в игре нет готового NOR — не забудь, что он получается из OR и NOT.
- Ждать изменения при S=0,R=0: в этом состоянии защёлка не меняется, а хранит предыдущее значение.
Резюме
1. Комбинационные схемы не имеют памяти: их выход зависит только от текущих входов.
2. Обратная связь — подача выхода на собственный вход — создаёт устойчивое, самоподдерживающееся состояние.
3. Два NOR, соединённые крест-накрест, образуют SR-защёлку (в игре NOR собирается как OR + NOT).
4. S=1 устанавливает Q=1, R=1 сбрасывает Q=0, а S=0,R=0 удерживает предыдущее состояние.
5. SR-защёлка хранит один бит и является основой всей памяти компьютера. Следующий шаг — D-триггер, который запоминает по фронту тактового сигнала.
На уровне 1.10 тебе предстоит собрать SR-защёлку из двух NOR-вентилей. Помни: в игре отдельного NOR нет — собери его из OR и NOT, а затем соедини два NOR крест-накрест, чтобы получить ячейку памяти на один бит.