кр гаряев. Чарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе. Книга принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании
Скачать 6.11 Mb.
|
Входы Выходы S R Q Q 1 0 1 0 0 1 0 1 0 0 Q Q 1 1 Запрещено 182 Код Эта схема называется функциональной таблицей, или таблицей логики, или таблицей истинности. В ней показаны значения выходов, которые явля- ются результатом определенных комбинаций входов. Поскольку у RS-тригге- ра есть только два входа, существует всего четыре комбинации входов. Они соответствуют четырем строкам таблицы. Обратите внимание на вторую строку снизу, когда значения входов S и R равны 0: выходы обозначены символами Q и Q, следовательно, значения вы- ходов Q и Q остаются такими, какими они были до того, как значения обоих входов S и R стали равны 0. Последняя строка таблицы говорит о том, что си- туация, при которой значения входов S и R равны 1, запрещена. Это не озна- чает, что вас могут за это арестовать, однако если в этой схеме оба входа бу- дут 1, то оба выхода — 0, что нарушает условие, согласно которому выход Q противоположен выходу Q. Так что при создании схемы, в которой использу- ется RS-триггер, избегайте ситуаций, когда входы S и R равны 1. От себя добавлю: обычно таблицы истинности триггеров изображают с учетом предыдущего состояния Q(t − 1), соответственно, актуальное состоя- ние на выходе триггера — Q(t). Таким образом, для RS-триггера можно соста- вить следующую таблицу. Входы Выходы Q(t − 1) S R Q(t) Q(t) 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 Запрещено 1 1 1 Запрещено RS-триггер часто изображается в виде небольшого прямоугольника с дву- мя входами и двумя выходами, обозначенными, как показано ниже. Q R S Q RS-триггер, безусловно, интересный пример схемы, которая, по всей ви- димости, «помнит», какой из двух входов последним был под напряжением. Глава 14. Обратная связь и триггеры 183 Тем не менее намного более полезным является то, что эта схема запоминает, был ли определенный сигнал равен 0 или 1 в конкретный момент времени. Давайте подумаем, как должна работать такая схема, прежде чем присту- пить к ее конструированию. Она будет иметь два входа. Назовем один из них «Данные». Как и все цифровые сигналы, вход «Данные» может иметь значение 0 или 1. Второй вход назовем «Запомнить этот бит», что является цифровым эквивалентом призыва «Запомните эту мысль». Обычно значение сигнала «За- помнить этот бит» равно 0, в случае чего сигнал «Данные» не влияет на схему. Когда значение сигнала «Запомнить этот бит» равно 1, выход схемы совпада- ет со значением сигнала «Данные». Затем сигнал «Запомнить этот бит» может вернуться к значению 0, и в это время схема запоминает последнее значение сигнала «Данные». Любые дальнейшие изменения в сигнале «Данные» не влия- ют на схему. Другими словами, нам нужна схема со следующей функциональной таб- лицей. Входы Выход Данные Запомнить этот бит Q 0 1 0 1 1 1 0 0 Q 1 0 Q В первых двух случаях, когда сигнал «Запомнить этот бит» равен 1, вы- ход Q имеет то же значение, что и вход «Данные». В остальных двух случаях, когда сигнал «Запомнить этот бит» равен 0, значение выхода Q остается преж- ним. Обратите внимание: в этих двух случаях, когда сигнал «Запомнить этот бит» равен 0, выход Q является тем же самым, независимо от значения входа «Данные». Эту функциональную таблицу можно упростить. Входы Выход Данные Запомнить этот бит Q 0 1 0 1 1 1 Х 0 Q X означает «неважно». Значение входа «Данные» неважно, поскольку в случае, когда значение входа «Запомнить этот бит» равно 0, выход Q остается прежним. Реализация сигнала «Запомнить этот бит» на основе существующего RS-триг- гера требует добавления на вход двух вентилей И. 184 Код Q R S Запомнить этот бит Q Напомним, что выход вентиля И равен 1, только если оба входа равны 1. На этой диаграмме выход Q — 0, а выход Q — 1. Пока сигнал «Запомнить этот бит» равен 0, сигнал S не влияет на значе- ния выходов. Q R S Q Запомнить этот бит Не влияет и сигнал R. Q R S Q Запомнить этот бит Только в случае, когда сигнал «Запомнить этот бит» равен 1, эта схема бу- дет работать так же, как показанный ранее обычный RS-триггер. Q R S Q Запомнить этот бит Глава 14. Обратная связь и триггеры 185 Схема ведет себя как обычный RS-триггер, поскольку теперь выход верхнего вентиля И совпадает с сигналом R, а выход нижнего вентиля И — с сигналом S. Однако мы еще не достигли своей цели. Нам нужны только два входа, а не три. Как их уменьшить? Согласно исходной функциональной таблице RS-триггера, случай, когда сигналы S и R равны 1, запрещен, поэтому нужно его избежать. Кроме того, не имеет смысла и равенство этих сигналов 0, по- скольку это просто говорит о неизменности выходного сигнала. В случае с этой схемой мы можем добиться того же результата, установив значение сигнала «Запомнить этот бит» равным 0. Имеет смысл, чтобы при значении сигнала S, равном 1, сигнал R становил- ся равным 0, а при значении сигнала S, равном 0, сигнал R был равен 1. Сиг- нал под названием «Данные» может быть эквивалентен сигналу S, а инверти- рованный сигнал «Данные» — соответствовать сигналу R. Q Данные Запомнить этот бит Q В данном случае оба входа равны 0, и выход Q равен 0 (выход Q — 1). Пока сигнал «Запомнить этот бит» равен 0, вход «Данные» не влияет на схему. Q Q Данные Запомнить этот бит Когда сигнал «Запомнить этот бит» — 1, выход схемы равен значению входа «Данные». 186 Код Q Q Данные Запомнить этот бит Сейчас значение выхода Q равно значению входа «Данные», а значение выхода Q противоположно ему. Теперь сигнал «Запомнить этот бит» может вернуться к значению 0. Q Q Данные Запомнить этот бит Схема запомнила значение сигнала «Данные» в момент, когда значение сигнала «Запомнить этот бит» последний раз было равно 1, независимо от из- менения сигнала «Данные». Например, сигнал «Данные» мог бы вернуться к значению 0, не повлияв на выход. Q Q Данные Запомнить этот бит Такая схема называется D-триггером со срабатыванием по уровню. Бук- ва D означает «данные» (Data). Срабатывание по уровню указывает на то, что триггер сохраняет значение входа «Данные» в тот момент, когда сигнал на вхо- де «Запомнить этот бит» достигает определенного уровня, в данном случае 1. (Далее мы рассмотрим альтернативу триггерам со срабатыванием по уровню.) Обычно, когда такая схема фигурирует в специальной литературе, для входа используется обозначение не «Запомнить этот бит», а «Синхронизация» Глава 14. Обратная связь и триггеры 187 (Clock). Иногда этот сигнал может обладать свойствами метронома, который с определенной регулярностью колеблется между значениями 0 и 1. Однако в нашем случае вход «Синхронизация» просто определяет момент, когда не- обходимо сохранить входной сигнал «Данные». Q Данные Синхронизация Q Как правило, в функциональной таблице вход «Данные» (Data) обознача- ется буквой D, а вход «Синхронизация» (Clock) — буквами Clk. Входы Выходы D Clk Q Q 0 1 0 1 1 1 1 0 X 0 Q Q Эта схема также называется защелкой D-типа со срабатыванием по уров- ню; термин означает, что схема «запирает» один бит данных и удерживает его для дальнейшего использования. Эту схему также можно рассматривать в ка- честве ячейки памяти емкостью один бит. В главе 16 я продемонстрирую спо- соб соединения большого количества таких триггеров для обеспечения памя- ти большего объема. Часто в защелках полезно сохранять многобитное значение. Предполо- жим, вы хотите использовать сумматор из главы 12 для сложения трех 8-бит- ных чисел. Как обычно, вы вводите первое число с помощью первого набора переключателей, а второе — с помощью второго набора, затем потребуется записать результат на бумаге. После этого нужно будет ввести этот результат с помощью одного набора переключателей, а с помощью второго — ввести третье число. На самом деле вводить промежуточный результат нет необходи- мости. Вы можете использовать его, взяв непосредственно из первого расчета. Давайте решим эту задачу, применяя защелки. Объединим восемь заще- лок, каждая из которых использует два вентиля ИЛИ-НЕ, два вентиля И и один инвертор, как было показано ранее. Все входы «Синхронизация» соединены между собой. Вот что у нас получилось. 188 Код Clk 8-битная защелка D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 Q 7 Q 6 Q 5 Q 4 Q 3 Q 2 Q 1 Q 0 Эта защелка способна одновременно хранить восемь бит информации. Восемь входов сверху обозначены от D 0 до D 7 , а восемь выходов внизу — от Q 0 до Q 7 . Слева расположен вход «Синхронизация» (Clk). Сигнал Clk обычно равен 0. Когда сигнал Clk — 1, то 8-битное значение на входах D передается на выходы Q. Когда сигнал Clk возвращается к 0, тогда 8-битное значение со- храняется там, пока сигнал Clk снова не станет равен 1. Восьмибитную защелку также можно изобразить с восемью входами «Дан- ные» и восемью выходами Q, сгруппированными вместе. D 7 ... D 0 8 Clk 8-битная защелка Q 7 ... Q 0 8 Вот схема 8-битного сумматора. S 7 ... S 0 8 A 7 ... A 0 8 B 7 ... B 0 8 CO CI 8-битная защелка Обычно (если проигнорировать то, что мы делали с вычитанием в пре- дыдущей главе), восемь входов A и восемь входов B подключены к пере- ключателям, вход для переноса CI — к земле, а восемь выходов S и CO — к лампочкам. В этой пересмотренной версии восемь выходов S 8-разрядного сумматора могут быть подключены как к лампочкам, так и ко входам D 8-битной защелки. Глава 14. Обратная связь и триггеры 189 Для сохранения результата работы сумматора можно подключить переключа- тель «Сохранить» ко входу Clk защелки. 8 8 8 V V 8 CO CI 8-битный сумматор S 8 Селектор «2 на 1» 8-битная защелка Переключатели A 8 Q Переключатели Лампочка Лампочки От защелки Сохранить Clk D B B Выход Sel A Селектор двух линий на одну позволяет выбрать с помощью переклю- чателя, откуда должны поступать данные на входы B: из второго ряда пере- ключателей или из выходов Q защелки. Замыкание переключателя означает выбор выходов 8-битной защелки. В селекторе «2 на 1» используется восемь следующих схем. Выход A Выборка B Если вход «Выборка» (или Sel — сокращение от английского Select) ра- вен 1, то значение сигнала на выходе вентиля ИЛИ равно значению сигнала на входе B. Это связано с тем, что выход верхнего вентиля И равен входу B, а выход нижнего вентиля И — 0. Если вход «Выборка» равен 0, выход будет совпадать со входом A. Эти правила представлены в следующей функцио- нальной таблице. 190 Код Входы Выходы Выборка A B Q 0 0 Х 0 0 1 Х 1 1 Х 0 0 1 Х 1 1 Селектор, являющийся частью модифицированного сумматора, включает восемь таких однобитных селекторов. Все входы «Выборка» соединены меж- ду собой. Этот модифицированный сумматор не вполне корректно обрабатыва- ет сигнал CO (выход для переноса). Если при сложении двух чисел этот сиг- нал CO становится равным 1, то этот сигнал игнорируется при добавлении к сумме следующего числа. Одно из возможных решений заключается в том, чтобы создать сумматор, защелку и селектор, разрядность которых составля- ет 16 бит или, по крайней мере, превышает разрядность наибольшей суммы, которая может получиться. Мы не будем приступать к решению этой задачи вплоть до главы 17. Более интересный подход к созданию сумматора позволяет обойтись без ряда из восьми переключателей. Однако сначала нужно немно- го изменить триггер типа D, добавив вентиль ИЛИ и входной сигнал «Очист- ка» (Clear, или Clr). Вход Clr обычно равен 0. Когда он равен 1, выход Q — 0. Q Данные Clk Q Clr Сигнал Q становится равным 0 вне зависимости от других входных сиг- налов, что приводит к стиранию информации, сохраненной в триггере. Вы можете спросить: зачем это нужно? Почему мы не можем очистить триггер, подав на вход «Данные» 0, а на вход Clk — 1? Может быть, мы не мо- жем точно контролировать то, что подается на вход «Данные»? Возможно, у нас есть набор из восьми таких защелок, подключенных к выходам 8-битного сум- матора, как показано ниже. Глава 14. Обратная связь и триггеры 191 8 V 8 V Clr Clk 8-битная защелка 8 Лампочки Сложить CI 8-битный сумматор Переключатели 8 Очистка D Q S A B Обратите внимание: переключатель с меткой «Сложить» теперь управля- ет входом защелки Clk. Может показаться, что этот сумматор использовать проще, чем предыду- щий, особенно если требуется сложить множество чисел. Сначала вы нажи- маете кнопку «Очистка». В результате выходы защелок становятся равными 0, все лампочки отключаются, а на второй набор входов 8-битного сумматора по- даются значения 0. Вы вводите первое число и нажимаете кнопку «Сложить». Это число отображается в виде комбинации горящих лампочек. Затем вводи- те второе число и снова нажимаете кнопку «Сложить». Число, введенное с по- мощью переключателей, добавляется к предыдущей сумме, и результат снова отображается с помощью лампочек. Вы можете продолжать вводить новые числа и нажимать кнопку «Сложить». Я уже говорил, что сконструированный нами D-триггер срабатывает по уровню, то есть уровень сигнала на входе Clk должен измениться с 0 на 1, чтобы в защелке сохранилось значение на входе «Данные». Пока сигнал на входе Clk равен 1, значение входа «Данные» может меняться; любые изменения входа «Данные», пока сигнал Clk равен 1, будут отражаться в значениях выходов Q и Q. Для решения некоторых задач бывает достаточно входа Clk со срабаты- ванием по уровню. Для решения других более предпочтительным является вход Clk со срабатыванием по фронту. В этом случае выходы изменяются только во время перехода значения сигнала Clk от 0 к 1. Как и при исполь- зовании триггера со срабатыванием по уровню, когда вход Clk равен 0, лю- бые изменения входного сигнала «Данные» не влияют на выходы. Отличие 192 Код триггера со срабатыванием по фронту заключаются в том, что изменения входного сигнала «Данные» не воздействуют на выходы даже тогда, когда вход Clk равен 1. Входной сигнал «Данные» влияет на выходы только в тот момент, когда значение входного сигнала Clk меняется с 0 на 1. D-триггер со срабатыванием по фронту состоит из двух блоков RS-триггера, соединен- ных следующим образом. Q Q Данные Clk В данном случае идея в том, что вход Clk управляет как первым, так и вторым блоком. Однако в первом блоке сигнал Clk инвертируется, или первый блок работает так же, как D-триггер, за исключением того, что вход- ной сигнал «Данные» сохраняется, когда сигнал Clk равен 0. Выходы второго блока — входы первого, и их сигналы сохраняются, когда вход Clk равен 1. В итоге входной сигнал «Данные» сохраняется в момент изменения сигнала Clk с 0 на 1. Давайте рассмотрим эту схему подробно. На следующем изображении показан триггер в состоянии покоя, когда входы «Данные» и Clk, а также вы- ход Q равны 0. Q Q Данные Clk Глава 14. Обратная связь и триггеры 193 Теперь измените значение входного сигнала «Данные» на 1. Q Q Данные Clk Это изменит состояние первого триггера, поскольку инвертированный входной сигнал Clk равен 1. Однако второй блок остается неизменным, так как неинвертированный входной сигнал Clk равен 0. Теперь измените вход- ной сигнал Clk на 1. Q Q Данные Clk Это приведет к изменению второго блока, при этом значение выхода Q поменяется на 1. Разница заключается в том, что входной сигнал «Данные» те- перь может меняться (например, обратно на 0), не влияя на значение выхода Q. Q Q Данные Clk 194 Код Выходы Q и Q могут меняться только в тот момент, когда входной сигнал Clk изменяется с 0 на 1. В функциональную таблицу D-триггера со срабатыванием по фронту тре- буется добавить новый символ — стрелку вверх (↑), которая обозначает изме- нение значения сигнала с 0 на 1. Входы Выходы D Clk Q Q 0 ↑ 0 1 1 ↑ 1 0 X 0 Q Q Стрелка указывает на то, что значение выходного сигнала Q становится равным входному сигналу «Данные» в момент изменения значения сигнала Clk с 0 на 1. Этот процесс называется положительным переходом сигнала Clk (от- рицательный переход с 1 к 0). Схема триггера выглядит следующим образом. Q D Clk Q Маленькая угловая скобка указывает на то, что триггер срабатывает по фронту. Теперь хочу показать вам схему, использующую D-триггер, срабатывающий по фронту, которую нельзя продублировать с помощью триггера, срабатываю- щего по уровню. Вспомните осциллятор, который мы создали в начале этой главы. Значение выходного сигнала этого осциллятора чередуется между 0 и 1. Выход Давайте подключим выход осциллятора ко входу Clk D-триггера, сраба- тывающего по фронту, а выход Q — ко входу D. Q D Clk Q Выход триггера одновременно является его же входом. Это обратная связь с обратной связью! На практике это может привести к проблеме. Осциллятор Глава 14. Обратная связь и триггеры 195 сконструирован из реле, которое вибрирует с максимально возможной скорос- тью. Выход осциллятора подключен к реле, из которых сконструирован триг- гер. Эти другие реле могут не поспевать за скоростью осциллятора. Чтобы из- бежать этого, предположим, что реле, используемое в осцилляторе, работает медленнее, чем реле, применяемые в других местах этой схемы. Чтобы понять, что происходит в этой схеме, давайте посмотрим на функ- циональную таблицу, иллюстрирующую различные изменения. Допустим, что вход Clk и выход Q равны 0. Значит, выход Q, подключенный к входу D, равен 1. |