Однако мы еще не достигли своей цели. Нам нужны только два входа, а не три. Как их уменьшить? Согласно исходной функциональной таблице RS-триггера, случай, когда сигналы S и R равны 1, запрещен, поэтому нужно его избежать. Кроме того, не имеет смысла и равенство этих сигналов 0, поскольку это просто говорит о неизменности выходного сигнала. В случае с этой схемой мы можем добиться того же результата, установив значение сигнала «Запомнить этот бит» равным 0.
Имеет смысл, чтобы при значении сигнала S, равном 1, сигнал R становился равным 0, а при значении сигнала S, равном 0, сигнал R был равен 1. Сигнал под названием «Данные» может быть эквивалентен сигналу S, а инвертированный сигнал «Данные» — соответствовать сигналу R.
В данном случае оба входа равны 0, и выход Q равен 0 (выход — 1). Пока сигнал «Запомнить этот бит» равен 0, вход «Данные» не влияет на схему.
Когда сигнал «Запомнить этот бит» — 1, выход схемы равен значению входа «Данные».
Сейчас значение выхода Q равно значению входа «Данные», а значение выходапротивоположно ему. Теперь сигнал «Запомнить этот бит» может вернуться к значению 0.
Схема запомнила значение сигнала «Данные» в момент, когда значение сигнала «Запомнить этот бит» последний раз было равно 1, независимо от изменения сигнала «Данные». Например, сигнал «Данные» мог бы вернуться к значению 0, не повлияв на выход.
Такая схема называется D-триггером со срабатыванием по уровню. Буква D означает «данные» (Data). Срабатывание по уровню указывает на то, что триггер сохраняет значение входа «Данные» в тот момент, когда сигнал на входе «Запомнить этот бит» достигает определенного уровня, в данном случае 1. (Далее мы рассмотрим альтернативу триггерам со срабатыванием по уровню.)
Обычно, когда такая схема фигурирует в специальной литературе, для входа используется обозначение не «Запомнить этот бит», а «Синхронизация» (Clock). Иногда этот сигнал может обладать свойствами метронома, который с определенной регулярностью колеблется между значениями 0 и 1. Однако в нашем случае вход «Синхронизация» просто определяет момент, когда необходимо сохранить входной сигнал «Данные».
Как правило, в функциональной таблице вход «Данные» (Data) обозначается буквой D, а вход «Синхронизация» (Clock) — буквами Clk.
Эта схема также называется защелкой D-типа со срабатыванием по уровню; термин означает, что схема «запирает» один бит данных и удерживает его для дальнейшего использования. Эту схему также можно рассматривать в качестве ячейки памяти емкостью один бит. В главе 16 я продемонстрирую способ соединения большого количества таких триггеров для обеспечения памяти большего объема.
Часто в защелках полезно сохранять многобитное значение. Предположим, вы хотите использовать сумматор из главы 12 для сложения трех 8-битных чисел. Как обычно, вы вводите первое число с помощью первого набора переключателей, а второе — с помощью второго набора, затем потребуется записать результат на бумаге. После этого нужно будет ввести этот результат с помощью одного набора переключателей, а с помощью второго — ввести третье число. На самом деле вводить промежуточный результат нет необходимости. Вы можете использовать его, взяв непосредственно из первого расчета.
Давайте решим эту задачу, применяя защелки. Объединим восемь защелок, каждая из которых использует два вентиля ИЛИ-НЕ, два вентиля И и один инвертор, как было показано ранее. Все входы «Синхронизация» соединены между собой. Вот что у нас получилось.
Эта защелка способна одновременно хранить восемь бит информации. Восемь входов сверху обозначены от D0 до D7, а восемь выходов внизу — от Q0 до Q7. Слева расположен вход «Синхронизация» (Clk). Сигнал Clk обычно равен 0. Когда сигнал Clk — 1, то 8-битное значение на входах D передается на выходы Q. Когда сигнал Clk возвращается к 0, тогда 8-битное значение сохраняется там, пока сигнал Clk снова не станет равен 1.
Восьмибитную защелку также можно изобразить с восемью входами «Данные» и восемью выходами Q, сгруппированными вместе.
Вот схема 8-битного сумматора.
Обычно (если проигнорировать то, что мы делали с вычитанием в предыдущей главе), восемь входов A и восемь входов B подключены к переключателям, вход для переноса CI — к земле, а восемь выходов S и CO — к лампочкам.
В этой пересмотренной версии восемь выходов S 8-разрядного сумматора могут быть подключены как к лампочкам, так и ко входам D 8-битной защелки. Для сохранения результата работы сумматора можно подключить переключатель «Сохранить» ко входу Clk защелки.
Селектор двух линий на одну позволяет выбрать с помощью переключателя, откуда должны поступать данные на входы B: из второго ряда переключателей или из выходов Q защелки. Замыкание переключателя означает выбор выходов 8-битной защелки. В селекторе «2 на 1» используется восемь следующих схем.
Если вход «Выборка» (или Sel — сокращение от английского Select) равен 1, то значение сигнала на выходе вентиля ИЛИ равно значению сигнала на входе B. Это связано с тем, что выход верхнего вентиля И равен входу B, а выход нижнего вентиля И — 0. Если вход «Выборка» равен 0, выход будет совпадать со входом A. Эти правила представлены в следующей функциональной таблице.