neosee.ru

27.02.20
[1]
переходы:155

скачать файл
Введем следующие обозначения

Лекция №3



Основными, базовыми операциями, которые обязательно должен «уметь» выпол­нять процессор компьютера над двоичными кодами данных, являются логиче­ские операции отрицания, дизъюнкции, конъюнкции, арифметического сложения, а также сдвига кода. Используемые для реализации этих и других операций уст­ройства принято называть вентилями.

3.2.3. Вентиль «НЕ»

Рассмотрим поведение схемы, изображенной на рис. 3.4, а, при различных значе­ниях входного бита р. Пусть на вход схемы подано значение р = 0. Тогда транзи­стор заперт, он ведет себя в цепи как дополнительный резистор с сопротивлени­ем, гораздо большим, чем сопротивление резистора, через который транзистор подключен к источнику питания схемы. В силу того что падение напряжения на участке цепи пропорционально сопротивлению этого участка, напряжение в точ­ке выхода будет мало отличаться от высокого напряжения источника питания. Другими словами, на выходе схемы в этом случае формируется значение 1.






3.2.4. Вентили «НЕ И» и «НЕ ИЛИ»

Рассмотрим логику работы схемы, изображенной на рис. 3.4, б. Она состоит из двух соединенных последовательно транзисторов. У этой схемы два входа, обо­значенных на рисунке буквами р и q, и один выход. Если на входы поступают единичные значения (р=1и<7=1), то оба транзистора открыты, участок цепи с ними имеет очень маленькое сопротивление и, следовательно, как и в вентиле «НЕ», на выходе формируется значение 0. Во всех остальных случаях хотя бы один из транзисторов оказывается запертым и участок цепи с транзисторами обла­дает высоким сопротивлением, что приводит к формированию на выходе значе­ния 1. Анализируя таблицу истинности работы этой схемы (табл. 3.1, четвертый столбец), приходим к выводу, что она описывается выражением По­

этому такая схема называется вентилем «НЕ И». Эта операция известна также под названием «штрих Шеффера». Ее обозначают значком «|»



В схеме, изображенной на рис. 3.4, в, транзисторы соединены параллельно. Сле­довательно, участок цепи с транзисторами обладает высоким сопротивлением только в том случае, когда оба транзистора закрыты одновременно. Поэтому ес­ ли на оба входа поступают нулевые значения = 0 и q = 0), на выходе формиру­ется значение 1. Во всех остальных случаях хотя бы один из транзисторов от­крыт и, следовательно, весь содержащий их параллельное соединение участок цепи обладает маленьким сопротивлением. Это значит, что на выходе схемы формируется значение 0. Анализируя таблицу истинности работы этой схемы (табл. 3.1, седьмой столбец), приходим к выводу, что она описывается выраже­нием -i(p v q}. Поэтому такая схема называется вентилем «НЕ ИЛИ». Эта опе­рация известна также под названием «стрелка Пирса». Ее обозначают значком

«>U: -.(р vg) = piq.

Вентили «НЕ», «НЕ И» и «НЕ ИЛИ», используемые для построения других вен­тилей и произвольных схем, считаются базовыми, а схемы, которые получают­ся с помощью всевозможных комбинаций базовых вентилей, принято называть цифровыми логическими схемами. Важным частным случаем цифровых схем являются комбинационные схемы, в которых значения, получаемые на выходах схемы, зависят только от значений, поступающих на ее входы. Такие схемы клас­сифицируются также как схемы без памяти.

Использование в комбинационных схемах стандартных обозначений транзисто­ра и других показанных на рис. 3.4, б обязательных элементов (значков земли, питания и т. д.) приводит к излишней громоздкости и затрудненному воспри­ятию схем. Поэтому в комбинационных схемах используются условные обозна­чения для каждого из базовых вентилей в целом. Условные обозначения трех рассмотренных ранее вентилей приведены в нижней части рис. 3.4 под соответ­ствующими им схемами.



Вентили «И» и «ИЛИ»

Теоретически для задания любой логической функции можно обойтись только одной операцией — стрелкой Пирса или штрихом Шеффера. Таким образом, вентили «НЕИ»и«НЕ ИЛИ» могут рассматриваться как универсальные, из которых можно составить схему, соответствующую любому логическому выра­жению. Но получаемые при этом логические выражения и соответствующие им цифровые схемы оказываются чрезвычайно громоздкими и малопонятными. В то же время известно, что логические функции удобно задавать, используя три основные логические операции: отрицание, дизъюнкцию и конъюнкцию. В связи с этим целесообразно использовать в комбинационных схемах вентили, соответ­ствующие этим операциям.



Способ построения вентилей для операций конъюнкции и дизъюнкции вытекает из очевидных соотношений -.(-.(р д <7)) = pA<7H-.(-i(pv q)) = pvq. Следо­вательно, соединив выходы вентилей «НЕ И» и «НЕ ИЛИ» со входом вентиля «НЕ», получим удобные для построения любых цифровых схем вентили «И» и «ИЛИ» операций конъюнкции и дизъюнкции соответственно. Схемы этих вен­тилей и их обозначения приведены на рис. 3.5. Вентили «И» и «ИЛИ» также относятся к базовым. Отметим, что для реализации вентиля «НЕ» достаточно одного транзистора, для вентилей «НЕ И» и «НЕ ИЛИ» требуется по два тран­зистора, а для вентилей «И» и «ИЛИ» необходимо уже по три транзистора на каждую схему.

Построение дизъюнктивной нормальной формы



Вентиль «Исключающее ИЛИ»

Рассмотренная в предыдущем разделе операция «Исключающее ИЛИ» оказыва­ется полезной во многих случаях построения комбинационных схем. Опираясь на полученную ДНФ этой операции (pyq) = (->pAq)v(pA-lq) и используя базовые вентили «НЕ», «И» и «ИЛИ», довольно легко построить соответствую­щую схему. Для реализации выражения в первой паре скобок выход вентиля «НЕ» следует соединить с одним из входов вентиля «И». Значения pnq подают­ся на оставшийся свободным вход вентиля «И» и на вход вентиля «НЕ» соответ­ственно. Таким образом, на выходе вентиля «И» получится значение выражения р л ->q. Подключив вентиль «НЕ» к другому в^оду еще одного вентиля «И» при том же порядке подсоединения р и q, на его выходе получим выражение, нахо­дящееся во второй паре скобок, -i р л q. Теперь осталось выходы вентилей «И» соединить со входами вентиля «ИЛИ». Полученная схема вентиля «Исключаю­щее ИЛИ» и его условное обозначение приведены на рис. 3.6, а. Для реализации этого вентиля требуется 11 транзисторов.

Комбинационная схема сумматора

Теперь рассмотрим комбинационные схемы, с помощью которых может быть реа­лизовано арифметическое сложение. Анализ алгоритма сложения двоичных ко­дов показывает, что сложение младших битов и сложение всех остальных битов слагаемых производится по-разному. Различие обусловлено необходимостью учи­тывать биты переносов для всех битов слагаемых, кроме первого. Комбинаци­онная схема, которая реализует сложение только для двух младших битов сла­гаемых, называется полусумматором, а схема, реализующая сложение для всех остальных битов слагаемых, называется сумматором, иногда используется также название полный сумматор.

Введем следующие обозначения. Пусть а и b — участвующие в операции биты слагаемых, X — бит результата, а р — бит переноса в следующий разряд. Осно­вываясь на правилах сложения двоичных кодов, получим, что работа полусум­матора может быть описана табл. 3.2. Видно, что для бита переноса справедливо соотношение р = алЬ, а бит суммы X получаете я как результат операции «Ис­ключающее ИЛИ», X = я У Ь. Схема полусумматора должна иметь два входа, на которые подаются складываемые биты а и и два выхода, на которых форми­руются бит суммы и бит переноса. Эти соображения приводят к изображенной на рис. 3.7 схеме полусумматора. Для ее реализации требуется 14 транзисторов.

При сложении каждой следующей пары битов слагаемых необходимо учитывать бит переноса из предыдущего разряда. Следовательно, эта операция зависит от трех аргументов, а соответствующая комбинационная схема должна иметь три входа. В результате сложения текущей пары битов получаете n бит текущего раз­ряда суммы и бит переноса в следующий разряд. Поэтому схема должна иметь два выхода. Пусть, как и ранее, а и Ь обозначают биты слагаемых, а I - бит результата. Пусть далее рт — бит переноса из предыдущего разряда, a pout — бит переноса в следующий разряд. Тогда суммирование с учетом переносов можно описать в табл. 3.3.

Применим технику построения ДНФ для каждого из результирующих битов операции. В табл. 3.3 приведены конъюнкты только для тех строк, которые уча­ствуют в построении соответствующей нормальной формы. Вначале построим выражение для бита X (скобки проставлены для упрощения восприятия конъ­юнктов, из которых образована ДНФ):

Эта схема может быть построена на базе двух последовательно соединенных вен­тилей «Исключающее ИЛИ». На входы первого вентиля следует подать сум­мируемые биты, а на входы второго вентиля — выход с первого вентиля и бит переноса.

Построим теперь ДНФ для бита переноса в следующий разряд:

Группируя первую и последнюю, а также вторую и третью скобки и вынося об­щие множители, получим удобное для реализации в виде комбинационной схе­мы выражение

Комбинационная схема полного сумматора приведена на рис. 3.8. Отметим, что для ее реализации требуется 31 транзистор.

Комбинационная схема сдвига

Во время обсуждения умножения в двоичной системе счисления выяснилось, что эта операция, в принципе, сводится к сложению и сдвигу кода. Различают несколько разновидностей сдвига. Сдвиг кода влево означает, что каждый его бит перемещается на соседнюю слева позицию, при этом освободившийся млад­ший (самый правый) разряд поля заполняется нулем, а самый левый бит кода теряется. Про такой бит говорят, что он выталкивается за разрядную сетку. На­пример, сдвиг кода 001011012 влево дает в результате код 010110102 (рис. 3.9, a). Сдвиг вправо осуществляется в противоположном направлении: каждый бит кода занимает соседний справа разряд, при этом освободившийся старший (са­мый левый) разряд поля заполняется нулем, а младший бит кода выталкивается за разрядную сетку, теряется. Сдвиг того же самого кода 001011012 вправо дает в результате код 000101102 (рис. 3.9, б). Существуют еще и так называемые цик­лические сдвиги кода, в которых выталкиваемый бит кода не теряется, а записы­вается в освободившийся слева или справа разряд поля.

Внимательный анализ результатов обычного сдвига двоичного кода показыва­ет, что сдвиг влево эквивалентен умножению на два, а сдвиг вправо эквивален­тен целочисленному делению на два. Так, в приведенных ранее примерах коду 001011012, рассматриваемому как код в формате с фиксированной точкой, со­ответствует число 4510. Сдвиг этого кода влево дает в результате код 010110102 числа 9010, а сдвиг вправо — код 000101102 числа 2210. Для получения корректно­го результата в случае умножения необходимо, чтобы поле было достаточной для получаемого кода длины, — точнее, чтобы выталкиваемые влево биты не были равны единице.

В рассмотренных ситуациях сдвиг осуществлялся на одну позицию вправо или влево. Имеет смысл рассматривать также сдвиги вправо и влево на несколько позиций, что отвечает умножению или делению на соответствующую степень двойки. Таким образом, сдвиг кода может использоваться не только как вспо­могательное действие при реализации общей операции умножения двоичных ко­дов, но и как самостоятельная операция умножения или целочисленного деле­ния на числа вида 2п для целых п > 0. Отметим, что операция сдвига выполняет­ся процессорами компьютеров гораздо быстрее, чем общая операция умножения или деления.

На рис. 3.9, в представлена упрощенная комбинационная схема, реализующая сдвиг восьмибитного кода вправо на одну позицию. Каждому биту сдвигаемого кода, кроме выталкиваемого младшего бита, соответствует отдельный вентиль «И». На рис. 3.9, в эти вентили имеют те же номера, что и соответствующие им биты кода. Каждый бит кода соединен со входом соответствующего ему вентиля, а на второй вход каждого вентиля через единую линию поступает управляющий бит р. Если р = 1, то на выходе каждого вентиля дублируется связанный с ним бит кода. Эти выходы соединены с разрядами поля, предназначенного для хране­ния результата. Обратите внимание: выход каждого вентиля соединен с разря­дом поля, номер которого на единицу меньше, чем номер вентиля, что, собственно говоря, и приводит к нужному сдвигу кода. В крайнем слева разряде, для которо­го нет соответствующего вентиля, автоматически формируется нуль.

Сдвиг кода влево можно организовать с помощью симметричной схемы; в ней выходы вентилей «И» соединены с разрядами поля, номера которых на единицу больше, чем номера соответствующих им вентилей. В более общих схемах оба варианта, которые обеспечивают сдвиги вправо и влево, объединяются в одну схему с единым управляющим битом, поступающим в две управляющие линии, причем в одну из них через вентиль «НЕ». Таким образом, значение р = 1 запус­кает сдвиг в одну сторону, а значение р = 0 обеспечивает сдвиг в другую сторону. В такой схеме сдвига используется 2n вентилей «И», где n — количество сдвигае­мых разрядов, и один вентиль «НЕ». Следовательно, для ее реализации требует­ся бn + 1 транзисторов.

Компаратор

Еще одной важной операцией, которую, безусловно, должен «уметь» выполнять процессор, является сравнение двух кодов на совпадение. Для ее реализации можно использовать комбинационную схему компаратора, восьмибитный вари­ант которой изображен на рис. 3.10.

Биты сравниваемых кодов А и В, имеющие один и тот же номер, присоединяются ко входам одного и того же вентиля «Исключающее ИЛИ». На рис. 3.10 вентили обозначены номерами, которые совпадают с номерами подключенных к ним би­тов. Выходы всех вентилей «Исключающее ИЛИ» присоединены к многовходовому вентилю «НЕ ИЛИ». Таким образом, если все биты кодов А и В совпадают, то все вентили «Исключающее ИЛИ» сформируют на своих выходах значение 0, попадающее затем на многовходовый вентиль «НЕ ИЛИ». А если на его входах все нули, то на выходе всей схемы формируется 1. В то же время, если в кодах А и В не совпадает хотя бы одна пара битов, то соответствующий вентиль «Исклю­чающее ИЛИ» выдаст на выходе значение 1. Появление на входах вентиля «НЕ ИЛИ» хотя бы одной единицы приведет к формированию на его выходе зна­чения 0. Таким образом, на выходе компаратора всегда формируется значение логического выражения А = В. Отметим, что для реализации компаратора, осуще­ствляющего сравнение двух «-битовых кодов, необходимо п вентилей «Исклю­чающее ИЛИ» и один n-входовый вентиль «НЕ И», следовательно, требуется 11/2 + 2 (n — 1) = 13n - 2 транзисторов.

Декодер и мультиплексор

Выполнение над двоичными кодами таких операций, как дизъюнкция, конъ­юнкция, сложение и т. д., целесообразно осуществлять с помощью только одной комбинационной схемы, обеспечивающей возможность не только выполнения, но и выбора нужной операции. Выбор одного из нескольких вариантов осуществ­ляется с помощью схемы, которая называется декодером.

В общем случае в декодере за каждым из рассматриваемых вариантов закрепля­ется поступающий на входные линии схемы n-разрядный двоичный код. Оче­видно, что с его помощью можно закодировать 2^n различных вариантов. Каждому из них в схеме соответствует отдельный n-входовый вентиль «И», входы кото­рого соединяются с входами схемы либо напрямую, либо через вентиль «НЕ» (рис. 3.11, а). Таким образом, все входы отдельно взятого вентиля «И» в сово­купности соответствуют конъюнкту, зависящему от n аргументов. Для любого значения поступившего на вход схемы двоичного кода только для одного из вен­тилей «И» значение конъюнкта оказывается равным 1, и, следовательно, только на его выходе формируется значение 1. На выходах всех остальных вентилей формируется значение 0. Появление на одном из выходов схемы значения 1 трак­туется как выбор варианта, который соответствует поступившему на вход управ­ляющему коду.

В качестве примера рассмотрим двухвходовый декодер, изображенный на рис. 3.11, а. Этот декодер управляется двухбитовым кодом, обеспечивающим выбор одного из четырех вариантов. В схеме использованы следующие обозначения: р и q входы, принимающие управляющий код, a D0-D3 — выбираемые выходы. За­крепим за выходами схемы управляющие коды: 002 —> D0, 012> Du 102> D3, 112 -> D3, — и составим конъюнкты, которые определяют подсоединяемые к вен­тилям входы схемы или их отрицания. В результате за каждым вентилем закреп­ляется один из четырех возможных конъюнктов. На рис. 3.11 эти конъюнкты приведены над соответствующими им выходами схемы. При подаче на входы схемы любого из двухбитовых кодов только один из вентилей сформирует на своем выходе 1. Именно этот выход считается выбранным. Пусть, например, р = 0 и q = 1. Тогда значение 1 имеет только конъюнкт, которому соответствует выход Dx, а на всех остальных выходах формируется 0. Таким образом, декодер по поступившей на входные линии комбинации битов 012 выбирает выход Д.

Для создания n-входового декодера, изображенного на рис. 3.11, а, необходимо 2^n вентилей «И» и в 2 раза меньше вентилей «НЕ», — следовательно, всего тре­буется 3 • 2n + 2n"1 = 7 • 2п~1 транзисторов. На рис. 3.11, б изображена эквивалент­ная схема, то есть схема, описываемая точно такой же таблицей истинности, что и схема на рис. 3.11, а. Видно, что для реализации правой схемы требуется мень­ше вентилей «НЕ», чем для реализации левой. Это связано с тем, что отрицания одного и того же входа схемы снимаются с одной и той же линии, а не форми­руются по отдельности для каждого вентиля «И». Для создания такой схемы необходимо всего п вентилей «НЕ», следовательно, на схему требуется только 3 • 2n + n транзисторов. Приведенный пример показывает, что одной и той же це­ли можно достичь с помощью различных цифровых схем, обладающих разными требованиями к ресурсам, в частности, к количеству требующихся для их реали­зации вентилей.

Задача выбора одного из нескольких входных значений и передачи его на выход схемы решается похожим образом с помощью устройства, которое называется мультиплексором. В общем случае мультиплексор содержит 2n основных вход­ных линий, n входных линий управления и один выход. Схема состоит из 2n многовходовых вентилей «И» и одного также многовходового вентиля «ИЛИ». В качестве примера на рис. 3.12, а приведена схема четырехвходового мульти­плексора, способного выбрать один из четырех входных битов и передать выбран­ный бит на единственную выходную линию устройства R. Для выбора нужного варианта в четырехвходовом мультиплексоре используются две линии управ­ления, р и q.

Схема работает следующим образом. Один из входов каждого вентиля «И» счита­ется основным. Он соединяется с одним из выбираемых входов схемы. Каждый из оставшихся n входов вентиля «И» так же, как в декодере, соединяется с одной из управляющих линий схемы либо напрямую, либо через вентиль «НЕ». Таким образом, эти входы вентиля «И» в совокупности соответствуют конъюнкту, зави­сящему от п аргументов. На рис. 3.12 конъюнкты изображены над соответствую­щей им линией основного входа вентиля. На управляющие линии схемы подается n-разрядный двоичный код, на котором только один из конъюнктов принимает единичное значение. На выходе соответствующего этому коду вентиля «И» дуб­лируется бит его основной входной линии, а на выходах всех остальных венти­лей формируется значение 0. Затем бит из выбранной входной линии через вен­тиль «ИЛИ» подается на выход мультиплексора.

Обсуждаемая схема может быть использована и в других целях. В частности, на базе мультиплексора можно создать схему, моделирующую любую логическую функцию от n аргументов. Для этого нужно построить таблицу истинности этой функции и подать 1 на все основные входы схемы, соответствующие конъюнк­там со значением 1, а на все остальные основные входы подать значение 0. Тогда при поступлении на управляющие входы схемы конкретных значений аргумен­тов на ее выходе получится значение моделируемой логической функции от этих аргументов.

Обсудим еще одно важное применение схемы мультиплексора. Она использует­ся для преобразования п битов, одновременно передаваемых по разным линиям, в последовательность из п битов, передаваемых друг за другом по одной линии (рис. 3.13). Такое преобразование приходится выполнять, например, при пере­даче данных от одного компьютера к другому по линиям связи в компьютерных сетях, поскольку внутри компьютера биты одного или нескольких байтов обыч­но передаются между устройствами компьютера одновременно — параллельно, в то время как по внешним линиям связи данные, как правило, передаются по­следовательно.

Для выполнения обсуждаемого преобразования нужно подсоединить к основ­ным входам мультиплексора все линии, по которым одновременно передаются биты. А на его управляющие входы подавать последовательность двоичных кодов, которые осуществляют выбор основных входных линий в желательном порядке. Например, подача на управляющие линии четырехвходового мультиплексора кода 002, то есть р = 0 и q = 0, приведет к выбору основного входа D0 и передаче находящегося на нем бита на выход схемы. Если немного позднее подать на вхо­ды управляющий код 012, то на выход попадет бит с основного входа Dx. После­дующая подача кодов 102 и 112 передаст на выход биты сначала со входа D2, а затем и со входа D3. Таким образом, параллельно передаваемый код окажется преобра­зованным в код, передаваемый последовательно. Нужно только своевременно фиксировать или же передавать дальше биты, последовательно попадающие на выход схемы.

Арифметико-логическое устройство

Все функции процессора, связанные с выполнением тех или иных действий над данными, сосредоточены в его внутреннем блоке, который принято называть арифметико-логическим устройством (АЛУ).

Обычно АЛУ, обеспечивающие выполнение действий над n-разрядными данны­ми, состоят из n одинаковых схем, которые выполняют эти действия над двумя битами. Такие схемы называются одноразрядными АЛУ. На рис. 3.14 приведена упрощенная схема одноразрядного АЛУ, которое может выполнять логические операции отрицания, конъюнкции, дизъюнкции и арифметического сложения над двумя битами данных.

















В схему по трем основным входным линиям поступают два бита данных, аиb, а также бит переноса из предыдущего разряда pin. Кроме того, в схему поступают два управляющих бита, р и q, значения которых определяют выбор желательной операции. На выходах схема формирует бит результата R и бит переноса в сле­дующий разряд pont. Одноразрядное АЛУ содержит блок выполнения логических операций, отвечающий за операции отрицания, дизъюнкции и конъюнкции, пол­ный сумматор, отвечающий за арифметическое сложение, и декодер, организую­щий выбор требуемой операции.

На входы логического блока и полного сумматора поступают биты данных а и b, а на вход полного сумматора еще и бит переноса pin. Результаты выполнения операции одновременно формируются на трех выходах вентилей «НЕ», «ИЛИ», «И» логического блока и двух выходах полного сумматора. Бит переноса в сле­дующий разряд pout сразу попадает на выход АЛУ, а результирующие биты опе­раций подаются сначала в подсистему выбора нужного результата. В этой под­системе для каждой из четырех операций предусмотрен отдельный вентиль «И», на один из входов которого поступает результат этой операции, второй его вход соединен с выходной линей декодера. Декодер, получив на входах некоторую комбинацию управляющих битов р и q, формирует значение 1 на выходе, кото­рый соответствует этой комбинации. Таким образом, только тот вентиль «И», который подсоединен к этому выходу декодера, дублирует на своем выходе ре­зультат выбранной операции, остальные вентили формируют на выходе нулевое значение. Чтобы не организовывать несколько отдельных выходных линий из АЛУ, выходы всех вентилей «И» соединены четырехвходовым вентилем «ИЛИ», выход которого является выходом R всей схемы АЛУ.

Простой подсчет показывает, что для реализации описанного одноразрядного АЛУ требуется 67 транзисторов, а для аналогичного арифметико-логического устройства, обеспечивающего действия над n-разрядными данными, 67n транзи­сторов. Например, для шестнадцатибитного АЛУ нужно 1072 транзистора. Сле­дует иметь в виду, что в учебных целях здесь рассмотрен значительно упрощен­ный вариант схемы, который отражает только некоторые принципы устройства АЛУ. Реальные АЛУ процессоров могут выполнять значительно большее коли­чество операций, устроены более сложно и, естественно, требуют гораздо боль­шего количества транзисторов.

Схема памяти на базовых вентилях

Схемы, состоящие из базовых вентилей, применяются не только для создания устройств, выполняющих действия над данными. Они используются также и для реализации одной из разновидностей памяти в компьютере. Но схемы памяти не могут быть отнесены к группе комбинационных схем, так как получаемый на их выходах результат зависит не только от поступивших на вход данных, но и от текущего состояния схемы. Собственно говоря, эта зависимость и обеспечивает принципиальную возможность запоминания данных. Схемы, обладающие такими свойствами, относятся к группе последовательных схем. Кроме того, для них ис­пользуется название «автоматы с памятью».







Устройство на базовых вентилях, которое можно использовать для хранения од­ного бита данных, называется триггером, или SR-защелкой.

ВНИМАНИЕ

Триггером (от trigger — защелка, спусковой крючок) называется устройство, кото­рое может сколь угодно долго находиться в одном из двух состояний устойчивого равновесия и переключается из одного состояния в другое скачком по сигналу или воздействию извне. Триггер может быть реализован, в частности, на электроваку­умных лампах накаливания и на полупроводниковых устройствах.

Триггер состоит из двух вентилей «НЕ ИЛИ», выход каждого из которых соеди­нен с одним из входов другого (рис. 3.15). Для управления работой триггера ис­пользуются свободные входы вентилей, которые обычно называют входом S (от setting — установка) и входом R (от resetting — сброс). От названий входов обра­зовано иногда используемое название этого устройства — SR-защелка. Выходы вентилей V и считаются соответственно основным и дополнительным выходами всего триггера в целом. Поскольку выходы вентилей V и одновременно являют­ся их же входами, в дальнейшем они называются «входами/выходами» вентилей.

Рассмотрим принцип действия этого устройства. Теоретически возможны 16 раз­личных состояний триггера, соответствующих всем возможным комбинациям значений на входах S и R, а также на входах/выходах V и . Однако, как мы уви­дим далее, некоторые комбинации значений приводят к возникновению неустой­чивых состояний триггера, которые тут же самопроизвольно переходят в устой­чивые состояния, способные сохраняться в неизменном виде сколь угодно долго.

Рассмотрим поведение триггера при поступлении на входы значений S = 0 и R = 0. Вначале допустим, что при этом на входах/выходах уже находятся значения V = 0 и V = 1 (рис. 3.15, а). Тогда за один такт работы схемы верхний вентиль сформи­рует на дополнительном выходе значение (S v V) = 1 а нижний вентиль сфор­мирует на основном выходе V значение (R v )= 0. Поскольку эти значения совпадают с исходными, такое состояние триггера является состоянием устойчи­вого равновесия, или просто устойчивым.

Аналогичная ситуация наблюдается, если в момент поступления на входы триг­гера S и R нулевых значений на входах/выходах находятся значения V = 1 и = 0 (рис. 3.15, 6). Тогда верхний вентиль за такт сформирует на выходе V значение (S v V) = 0, а нижний — на выходе V значение (R v ) = 1 Эти значения так­же совпадают с исходными, и, следовательно, такое состояние также устойчиво.

Пусть теперь оба входа/выхода находятся в начальном нулевом состоянии V = 0 и = 0 (рис. 3.15, б). Тогда и нижний, и верхний вентили сформируют на выхо­дах Vи значения (R v ) = 1 и (S v ) = 1 которые, вновь поступая на входы вентилей, сформируют на их выходах новые значения (R v ) = 0 и (S v ) = 0. Очевидно, что такое состояние триггера является неустойчивым, так как он цик­лически переходит из состояния, при котором V = 0 и = 0, в состояние, когда V = 1 и =1 Теоретически, этот циклический процесс может продолжаться сколь угодно долго. Но для этого необходимо, чтобы одинаковые значения появлялись на выходах строго одновременно. На практике в этой ситуации один из вентилей срабатывает немного быстрее, чем другой, и тогда триггер случайным образом переходит либо в состояние а, либо в состояние б.

Итак, устойчивыми при S = 0 и R = 0 являются два состояния, когда на вхо­дах/выходах V и находятся различные значения, и неустойчивым — одно со­стояние, когда на них находятся одинаковые значения. Значение, находящееся на основном выходе триггера V в любом из устойчивых состояний, считается зна­чением, хранящимся в триггере. Таким образом, на рис. 3.15, а изображен триггер, сохраняющий значение 0, а на рис. 3.15, б — триггер, сохраняющий значение 1.

Рассмотрим поведение триггера при поступлении на его вход S значения 1, кото­рое заменяет обычное его нулевое состояние. Пусть при этом на другом входе R находится нуль, R = 0. Допустим, что триггер в это время хранит значение 0. При этом V = 0 и = 1 (рис. 3.16, а). Тогда при срабатывании вентилей на выходах получаются нулевые значения (R v ) = 0 и (S v V) = 0. Следовательно, еди­ница на дополнительном выходе заменяется нулем (рис. 3.16, б), после чего срабатывает нижний вентиль (R v V)=1 и на основном выходе V формирует­ся 1 (рис. 3.16, в). Появление единицы на основном выходе не приведет к дальней­шему изменению состояния триггера, так как (S v V) = 0 и значение на до­полнительном выходе остается тем же самым. Следовательно, триггер переходит в устойчивое состояние, в котором на основном выходе V находится 1. Другими словами, установка входа S в состояние 1 переводит триггер из состояния 0 в со­стояние 1. Если же триггер при поступлении 1 на вход S уже хранит единицу, то есть V = 1 и = 0, то срабатывание его вентилей дает (S v V) = 0 и (R v ) = 1, поэтому его состояние не изменится.

Аналогичным образом можно убедиться в том, что при S=1иR = исходных состояниях входов/выходов V = 0 и =0, а также V = 1 и = 1 триггер переходит в то же самое устойчивое состояние, при котором V = 1 и = 0. Следовательно, при любом исходном состоянии триггера появление 1 на входе S (при сохранении R = 0) переводит его в состояние 1. Можно считать, что эта ситуация эквива­лентна записи значения 1 в триггер.











Пусть теперь значение 1 поступает на вход R, на входе S сохраняется значение 0, а триггер в это время находится в состоянии 0, то есть V = 0 и =1 Видно, что текущее состояние триггера эта управляющая комбинация не изменяет, так как срабатывание вентилей дает в результате (R v ) = 0 и (S v V) = 1 Если же в начальном состоянии триггер хранит единицу (v = 1 и = 0), то на дополни­тельном выходе формируется (S v V) = 1, последующее поступление которой на нижний вентиль дает (R v )= 0, то есть триггер переходит в состояние 0. Аналогичным образом можно показать, что при S=0 и R=1 и исходных V = 0 и = 0, а также V = 1 и = 1 триггер также переходит в состояние 0. Следова­тельно, при любом исходном состоянии триггера появление 1 на входе R (при сохранении S = 0) переводит триггер в состояние 0. Можно считать, что эта ситуация эквивалентна записи 0 в триггер. Итак, триггер запоминает, на каком его входе S или R в последний раз было единичное значение. На основе этого свойства конструируются некоторые реальные схемы памяти компьютера.

Легко убедиться в том, что при поступлении на входы значений S=1 и R = 1 триггер может находиться только в одном устойчивом состоянии. При этом оба его выхода равны нулю одновременно, V = 0 и = 0. Любые другие состояния при этом неустойчивы и случайным образом переходят в указанное устойчи­вое. В £амом деле, пусть, например, в исходном состоянии V = 0 и = 1 тогда (R v ) = 0 и (S v V) = 0, и триггер переходит в устойчивое состояние, V = 0 и =0. Такой же результат получается и для остальных вариантов исходных значений на входах/выходах V и. Поскольку для S = 1 и R=1 триггер обладает только одним устойчивым состоянием, эта комбинация для управления его ра­ботой не используется.













Чтобы избежать одновременного появления на входах единичных значений S = 1 и R = 1, которое приводит триггер в неиспользуемое состояние, схему триг­гера немного модифицируют, оставляя у него только один вход, который приня­то называть входом D (рис. 3.17). Значение с входа D триггера подается на входы S и R верхнего и нижнего вентилей «НЕ ИЛИ», но на один из входов значение попадает через вентиль «НЕ». Таким образом, значения на входах S и R этих вентилей всегда не совпадают. При этом значение на основном выходе триггера V, то есть хранимое в триггере значение всегда совпадает со значением на входе D. Такую схему принято называть D-триггером. На рис. 3.17, а показан D-триггер, хранящий значение 0, а на рис. 3.17, б — этот же триггер со значением 1.

Итак, описанное устройство позволяет записывать и сохранять сколь угодно долго одну из двоичных цифр, то есть представляет собой одну из возможных физических реализаций элемента памяти компьютера объемом в 1 бит. Чтобы обеспечить удобный способ записи и чтения, а также минимизировать количест­во необходимых для реализации схемы транзисторов, на практике в качестве бита памяти используются более совершенные схемы D-триггеров, для реализа­ции которых требуется только 6 транзисторов.



скачать файл | источник
просмотреть