В процессе работы программам постоянно приходится обращаться к прог-раммам, находящимся на более высоком уровне привилегий (к драйверам внешних устройств, системам программирования).
Прямой бесконтрольный вызов таких программ запрещается средствами защиты. Однако если к какой-либо системной программе предусматривается обращение со стороны менее привилегированных программ, то для нее создается специальный объект - шлюз вызова.
Здесь наиболее интересный момент связан с реализацией этого шлюза. ● С одной стороны, пользователю необходимо предоставить возможность выполнить необходимую ему более привилегированную программу. ● Но, с другой стороны, бесконтрольный вызов таких программ, например, запуск драйвера с его середины вследствие ошибок программирования или злого умысла, может привести к непредсказуемым последствиям.
Таким образом, необходимо дать возможность обращаться к системным программам, но обращаться только начиная с определенной фиксированной точки кода. Шлюзы вызова - это некоторые системные объекты, которые обеспечивают вход в строго определенную точку программы, находящейся на более высоком уровне привилегий.
Шлюз должен быть предварительно помещен в таблицу дескрипторов. Дескрипторы шлюзов не определяют никакого адресного пространства, поэтому в них нет полей базы и предела, то есть они фактически не являются дескрипторами. Обращение к более привилегированным программам производится командами, аналогичными командам обращения к подпрограммам в другом кодовом сегменте (команды типа FAR CALL).
То есть нельзя перейти в более привилегированный сегмент командой с полной передачей управления: "пришел на уровень с более высокими привилегиями и там остался", а переход возможен только с помощью команд с возвратом. Эти команды должны адресовать шлюз вызова, а не сегмент кода назначения. Шлюз вызова определяет сегмент кода, которому передается управление, и точное смещение в этом сегменте, где начинается выполнение процедуры. Формат шлюза вызова представлен на рис. 3.
Рис. 3. Формат шлюза вызова
►Шлюз вызова содержит селектор того сегмента, куда передается управление, и смещение в этом сегменте. Это, с одной стороны, позволяет найти данную программу, но, с другой стороны, строго определяет точку входа в прог-рамму, чтобы можно было запустить ее только со строго определенного места.
► Другими важными параметрами, определяемыми шлюзом вызова, являются:
P- бит присутствия; WC - количество параметров, передаваемых из стека текущей программы в стек вызываемой программы; DPL -уровень привилегий.
При использовании шлюза вызова проводится анализ уровней привилегий:
· значение DPL шлюза вызова должно быть больше или равно значению текущего уровня привилегий CPL и значению RPL селектора, вызывающего шлюз;
значение DPL шлюза вызова должно быть больше или равно значению DPL целевого сегмента кода;
· значение DPL целевого сегмента кода должно быть меньше или равно значению текущего уровня привилегий CPL.
Рис. 4. Использование шлюза вызова для обращения к программам на более высоком уровне привилегий
Порядок использования шлюза вызова - на рис. 4.
1. Как любая команда межсегментного пере-хода, команда FAR CALL содержит селектор сегмента и смещение в этом сегменте. Смещение, которое указано в команде, МП игнорирует: положение вызываемого кода в более привилегированном сегменте опреде-ляется не им, а шлюзом вызова. По селектору, определенному в команде, идет обращение к таблице дескрипторов. По типу дескриптора определяется, что это системный объект типа "шлюз вызова".
2. Селектор из шлюза вызова заносится в регистр CS микропроцессора, а смещение - в регистр - указателя команд EIP.
3. По полученному селектору обращаемся к дескриптору сегмента более привилегированной программы.
4. Из дескриптора извлекается базовый адрес нового сегмента. Его суммиро-вание со значением смещения из шлюза вызова, занесенного в EIP, определяет физический адрес начала новой программы.
Т.о., с помощью такой многоступенчатой обработки команды перехода полу-чаем доступ к более привилегированной программе. Но для этого поле DPL шлюза должно быть установлено таким, чтобы к нему могла обратиться менее привилегированная программа. Т.е., если мы хотим, чтобы пользова-тельские программы могли вызывать некоторую программу, находящуюся, на уровне привилегий 1, то DPL шлюза программы должен быть равен 3.
Предположим теперь, что пользователь хочет воспользоваться некоторыми системными утилитами. Пусть пользовательская программа имеет уровень привилегий 3, ядро ОС - уровень 0, утилиты ОС - уровень 1 (рис. 5).
Рис. 5. Последовательное обращение к более привилегированным программам
В этом случае шлюз утилиты должен иметь DPL = 3. Это позволит пользовательской программе вызвать утилиты ОС, но не ее ядро. При необходимости к ядру ОС могут обратиться утилиты.
Механизм вызова:
шлюзу утилит присваивается уровень привилегий 3, обеспечивая его доступность пользовательским программам;
шлюзу ядра присваивается уровень привилегий1, что делает его доступным для программ-утилит, но обращение пользовательских программ к шлюзу ядра невозможно.
Таким образом, программа может последовательно обратиться к ряду более привилегированных программ.
Конкретная ОС необязательно должна поддерживать 4 уровня привилегий. ● ОС UNIX работает с двумя кольцами защиты: супервизор (уровень 0) и пользователь (уровни 1, 2, 3).
● OS/2 поддерживает 3 уровня: код ОС - в кольце 0, специальные процедуры для обращения к устройствам ввода/вывода - в кольце 1, а прикладные программы выполняются в кольце 3.
● В Windows NT используются два уровня привилегий: нулевое и третье кольцо. В нулевом кольце работает ядро системы и системные драйверы, а в третьем - все запущенные приложения.
►Защита по привилегиямначинает работать уже на этапе загрузки селектора в сегментные регистры.
При загрузке селектора в сегментные регистры данных должно выполняться соотношение: DPL < max(CPL, RPL),
а при загрузке селектора в сегментный регистр стека SS должно быть выполнено соотношение: DPL = CPL.
●При страничном преобразовании адреса применяется 2-х уровневый механизм защиты по привилегиям: пользователь (уровень 3 привилегий сегмента) и супервизор (уровни 0, 1, 2), указываемый в бите U/SЭТС.
●При сегментно-страничной организации памяти производится объединение защиты сегментов и страниц:
□ сначала реализуется защита сегментов, а
□ затем защита страниц.
Например, допускается определить большой сегмент данных, в котором некоторые части будут только считываемые, а другие допускают считывание и запись.
В такой ситуации элементы каталога таблиц страниц и/или элементы таблиц страниц должны иметь соответствующие значения атрибута R/W.
Краткие итоги.
ü Рассмотрены основные требования, предъявляемые к средствам защиты памяти,
ü механизмы защиты, используемые при управлении памятью и при защите по привилегиям,
ü доступ к программам на более высоком уровне привилегий посредством использования шлюзов вызова.
АСИНХРОННЫЕ ТРИГГЕРЫ
RS-триггер с прямыми входами. Логическая структура триггера представлена на рис. 3.1,а. Триггер построен на двух логических элементах ИЛИ-НЕ, связанных таким образом, что выход каждого элемента подключен к одному из входов другого. Такое соединение элементов ^в устройстве обеспечивает два устойчивых состояния, в чем легко убедиться.
Пусть на входах R и S действуют пассивные для элементов ИЛИ-НЕ уровни лог. 0, которые не влияют на состояние Триггера. В состоянии 0 триггера на выходе элемента A Q=0; этот уровень подается на вход элемента В; при этом на обоих входах элемента В действует уровень лог. 0 и на выходе элемента 5=1; с выхода элемента В уровень лог. 1 поступает на вход элемента А, что и обеспечивает на его выходе уровень 0. Это одно из устойчивых состояний триггера. В состоянии 1 триггера на выходе элемента A Q = 1,4to обусловливает на выходе элемента В ф = 0, при-этом на обоих входах элемента А действуют уровни 0, что и обеспечивает на выходе этого элемента уровень лог, 1, Таким обра-
зом, в каждом из состояний триггера элементы А и В оказываются в противоположных состояниях.
Переключение триггера из одного устойчивого состояния в другое происходит при подаче активных сигналов на входы.
Под действием уровня R=l элемент А установится в состояние, йри котором на его выходе Q = 0, следовательно, на инверс-Hpirf выходе Q=l, и, таким образом, триггер устанавливается в состояние 0. Если триггер и прежде, до подачи сигнала R=l, находился в состоянии 0, то его состояние не изменяется. Если же триггер находился в состоянии 1, то при подаче сигнала /?=1 произойдет переключение элемента А и на его выходе установится уровень Q=0; далее этот уровень, действуя на входе элемента В, переключит его и на выходе элемента В установится уровень Q=l, после чего триггер оказывается установленным в состояние 0. Таким образом, при переключении триггера из одного состояния в другое его элементы последовательно переключаются и время переключения равно удвоенному среднему времени задержки распрбстранения сигнала в логическом элементе ИЛИ-НЕ:
■в Очевидно, чем меньше tneP, тем большее число переключений триггера удастся произвести в единицу времени, т. е. будет выше допустимая частота переключений или, иначе говоря, быстродействие триггера.
Процесс установки триггера в состояние 1 при подаче на вход S уровня лог. 1 аналогичен описанному.
Одновременная подача активных уровней 1 на оба входа R и S не допускается, так как при этом на обоих выходах установится уровень 0, а после снятия со входов активных уровней состояние триггера .окажется неопределенным: в силу случайных причин триггер может установиться в состояние 0 либо к-На рис. 3.1,6 приведена таблица состояний RS-триггера в форме таблицы Вей-ча.. Из этой таблицы может быть построено логическое выражение, определяющее функционирование RS-триггера:
т. е. триггер устанавливается в состояние 1 под действием входного уровня 5=1 либо остается в этом состоянии 1, если R—Ou прежнее состояние триггера Q0=l-
На рис. 3.1,в показано условное обозначение асинхронного RS-триггера.
RS-триггерс инверсными входами.Логическая структура триггера приведена на рис. 3.2,а. Отличие от логической структуры рассмотренного выше RS-триггера с прямыми входами состоит лишь в том, что здесь использованы логические элементы И-НЕ.
Лри этом активным логическим уровнем на входах является уровень лог. 0; пассивным — лог. 1. Для того чтобы активными были, как и в предыдущем триггере, входные сигналы 5=1 и R=l, будем считать, что на входы подаются инверсии .5 и Я. Тог-
да при 5 = 1 (или R=l) 5=0 (или R = 0) и на входе триггера будет действовать активный уровень лог. 0. Другое удобство такого обозначения входных величин состоит в том, что триггер с инверсными входами описывается той же таблицей состояний (рис. 3.1,6), что и триггер с прямыми входами.
Рассмотрим устойчивые состояния триггера. Пусть на входах действуют пассивные уровни 5 = 0 и R = 0 (5=1 и R = l). В состоянии 0 триггера Q = 0, этот уровень передается на вход элемента В и ^вызывает на его выходе уровень Q=l, уровень 1 с выхода элемента В подается на вход элемента А, и так как на обоих входах элемента А уровень 1, то на выходе этого элемента Q = 0. Аналогично определяется второе устойчивое состояние триггера.
При подаче активного уровня 5 = 0 (5=1) на выходе элемента А устанавливается уровень Q=l, на выходе элемента В — уровень Q = 0 и триггер оказывается установленным в состояние 1. При подаче активного уровня Я = 0 (R=l) триггер устанавливается в состояние 0. Как и для триггера с прямыми входами, одновременная подача активных уровней на оба входа не допускается.
На рис. 3.2,6 показано условное обозначение RS-триггера с инверсными входами.
СИНХРОННЫЕ ТРИГГЕРЫ
СО СТАТИЧЕСКИМ УПРАВЛЕНИЕМ ;
Рассмотрим триггеры, в которых действие управляющих сигналов на входе С проявляется в течение всего времени существования этих сигналов.
RS-триггер.На рис. 3.3,а,б показаны логические структуры синхронного RS-триггера. Как видно из представленных структур, синхронный RS-триггер состоит из асинхронного триггера с прямыми (либо инверсными) входами, на входах R и S которого включены логические элементы И (И-НЕ). С помощью логических элементов И (И-НЕ) обеспечивается передача активных уровней информационных входов S и R синхронного триггера на входы S и R входящего в его состав асинхронного триггера только при наличии уровня лог. 1 на синхронизирующем входе С.
Таким образом, при С = 0 на входы асинхронного триггера не передаются активные уровни и триггер сохраняет ранее установ-
ленное в нем состояние Qo. При С=1 состояние триггера определяется действующими на входах уровнями так же, как и., в рассмотренном выше асинхронном RS-триггере. Следовательно, функционирование синхронного RS-триггера может быть описано логическим выражением
Нормальная работа синхронного RS-триггера t требует, чтобы За вре,мя действия лог. 1 на синхронизирующем входе. С уровни на информацирнных входах S и R оставались неизменными. Смена уровней на входах допускается лишь в то время, когда С=0 и триггер не реагирует на уровни, действующие на входах S и R.
На р^с. 3,3,в показано условное изображение синхронных RSHTpnrrepoB в схемрх.
J D-триггер.Имеет лишь один информационный вход, называемый вводом D. Вход С управляющий и служит для подачи синхронизирующего сигнала.
На рис. ЗА,б,в представлены логические структуры D-триггера, состоящего из асинхронного RS-триггера с логическими эле-
Функционирование D-триггера определяется таблицей состоя-ций (рис. 3.4,а). Как видно из таблицы, при С=1, триггер устанавливается в состояние, определяемое логическим уровнем на входе D (лри С=0 он сохраняет ранее установленное состояние Qo). Такое функционирование может быть описано логическим выражением
ментами на входах. При С = 0 на выходах элементов И (И-НЕ) образуются пассивные для входов асинхронного RS-трйггёра уровни. При С=\ уровень, поданный на информационный вход D, создает активный уровень либо на входе R (при D==0) либо на входе S (лри £)=1) асинхронного RS-триггера, и триггер устанавливается в состояние, соответствующее логическому уровню на входе D. Таким образом, D-триггер воспринимает информацию со входа D при С=\ и затем ее может хранить неопределенно длительное время, пока С = 0.
На рис. 3.4,г показано символическое изображение D-триггера.
СИНХРОННЫЕ ТРИГГЕРЫ, ПОСТРОЕННЫЕ
ПО ПРИНЦИПУ ДВУХСТУПЕНЧАТОГО ЗАПОМИНАНИЯ
ИНФОРМАЦИИ
Особенность триггеров с двухступенчатым запоминанием информации состоит в том, что они содержат две триггерные структуры: одна из них образует так называемый ведущий триггер, другая — ведомый (рис. 3.5). Оба триггера функционируют как синхронные триггеры со статическим управлением. При значении на синхронизирующем входе С=1 ведущий триггер устанавливается в состояние, соответствующее сигналам, поступающим на информационные входы. Ведомый триггер, имеющий инверсный синхронизирующий вход, при этом невосприимчив к информации, поступающей на его вход с выхода ведущего триггера. Он продолжает находиться в состоянии, в которое был ранее установлен (в предыдущем тактовом периоде).
При изменении значения С (с значения С=\ на значение С = 0) ведущий триггер отключается от информационных входов и перестает реагировать на изменения значений сигналов на этих входах; ведомый триггер устанавливается в состояние, в котором находится ведущий триггер. С этого момента на выходах устанавливаются значения, соответствующие входным сигналам, поступавшим к моменту рассматриваемого фронта сигнала на синхронизирующем входе.
Таким образом, управление процессами в триггере с двухступенчатым запоминанием информации за время тактового периода осуществляется двумя фронтами сигнала на синхронизирующем входе: на положительном фронте происходит установка ведущего
триггера, на отрицательном фронте — ведомого Триггера. В качестве примера рассмотрим JK-триггер с двухступенчатым запоминание1^ информации.
JK-триггер.На рис. 3.6 таблица состояний JK-триггера пред-ставленр в форме диаграммы Вейча, из которой можно получить следующее логиче9кое выражение, определяющее функционирование ЛК-триггер'а:
Из (3.5) следует, что состояние Q, в которое устанавливается 'триггер, определяется не только уровнями на информационных входам J и К, но и состоянием Qo, в котором ранее находился триггер. Это определяет возможность построения логической структуры JK-триггера с использованием двух RS-триггеров. Один из ( RS-триггеров (ведомый) предназначен для хранения текущего со-стоя'ния Qo; снимаемые с его выходов уровни Qo и Qo совместно с информационными сигналами входов J и К используются для формирования нового состояния Q в другом RS-триггере (ведущем), JK-триггер с подобной логической структурой представлен на рис. 3.7,а. Так как каждый из триггеров совместно с элементами И на входах образует схему синхронного RS-триггера, то логическая структура может быть такой, как показано на рис. 3.7,6. Здесь ведущий триггер Тп имеет по две пары связанных операцией И входов J и К.
При уровне Лог. О на входе С триггер Тп не .реагирует на сигнашы входов J и К. На синхронизирующий, вход триггера Тг2 при 'этом, подается уровень лог. 1, и состояние ведущего триггера Тп передается ведомому триггеру Тг2. Оба триггера оказываются в одном и том же состоянии. При переходе на входе С к уровню лог. 1 на синхронизирующий вход триггера Тг2 через инвертор подается уровень лог. О и логическая связь между триггерами обрывается. Триггер Тп устанавливается в состояние Q, определяе-
мое выражением (3.5). Подача вновь на вход С уровня лог. О приводит к передаче состояния Q из триггера Тп в триггер Тг2. Символическое изображение описанного JK-триггера приведено на рис. 3.7,s.
На рис. 3.8 показано включение JK-триггера, при котором он выполняет функции D-триг-гера.
Т-триггер.На рис. 3.9а показана логическая структура Т-триг-гера. При поступлении на вход Т импульса на положительном его фронте ведущий триггер 1гхустанавливается в состояние, противоположное состоянию ведомого триггера Тг2; на отрицательном
фронте входного импульса происходит передача состояния триггера Tri в триггер Тг2.
На рис. 3.9,6 приведено символическое изображение Т-триг-гера.
Режим Т-триггера может быть получен с помощью^ JK-триггера либо D-триггера, как показано на рис. 3.10,а,б.
ТРИГГЕРЫ С ДИНАМИЧЕСКИМ УПРАВЛЕНИЕМ
В триггерах с динамическим управлением (управлением фронтом синхронизирующего сигнала) процессы, связанные с переключением, происходят в течение короткого времени вблизи фронта сигнала на синхронизирующем входе. Синхронизирующий вход, вызывающий переключение триггера при действии положительного сигнала, называется прямым динамическим входом (условное обозначение прямого динамического входа триггера показано на рис. 3.11,а); вход, вызывающий переключение на отрицательном фронте синхронизирующего сигнала, называется инверсным динамическим входом (условное обозначение инверсного динамического входа триггера приведено на рис. 3.11,6).
i
, ^триггер. Рассмотрим функционирование D-триггера с логической структурой, приведенной на рис. 3.12,а.
Элементы И-НЕ / и 2 составляют простейшую выходную триггерную струк туру, состояние которой определяет состояние всего D-триггера. Элементы И-НЕ 3... 6 образуют схему, формирующую сигналы Yxи К2, которые переключают выходную триггерную структуру. ,,м
Преобразуем эти выражения, пользуясь правилом де Моргана:
Так как Y4= D-Yt, jK3 = Ух-К4 == Yv(D-K,) , то, подставив в выражения У,, Yi, получим !
Выражения построены таким образом, что переменные левых частей входят в правые части выражений. Такие выражения имеют следующий смысл: если в правые части подставить значения Y\ и Y2для данного момента времени, то логические выражения определяют для этих переменных новые значения,- которые установятся в последующие моменты времени.
При С=0(С=1) ^1 = 1 Уз= 1 и, таким образом, на входах выходной триг-герной структуры действуют пассивные уровни и в триггерной структуре сохраняется ранее установленное в ней состояние.
Если на синхронизирующем входе С происходит переход с уровня лог. О к уровню лог. 1 (т. е. воздейстнует фронт положительной полярности), то для определения новых значений Yxи К2 в правые части выражений (3.6) и (3.7) следует подставить значения этих переменных, соответствующие моменту времени до поступления фронта сигнала на вход С (т. е. значения К| = 1 и Kj=I). При этом К, = 0 и К2=£>.
Эти значения, будучи подставлены в правые части выражений (3.6) и (3.7), приводят к тем же значениям для Ytи Y2. Это подтверждает ИХ устой чивость. ',,'; ,
Активная комбинация сигналов £> = 0, Yi = 0, действуя на входе; элемента И-НЕ 2, устанавливает на его выходе Q=l, на выходе элемента И-НЕ / устанавливается Q = 0. Триггер оказывается установленным в состояние 6. При D = «=»1 и К|=0 активный уровень лог. О, действуя на входе элемента И-НЕ Л устанавливает на его выходе Q=l. Триггер оказывается в состоянии 1.
Таким образом, при действии на входе С положительного фронта сигнала триггер устанавливается в состояние, соответствующее поданной на вход D информации.
Заметим, что установленные в момент фронта сигнал С уровни Yxи Y2в дальнейшем в течение всего времени действия сигнала С=1 остаются неизменными, если даже и изменяется значение на входе D. Действительно, если подставить в правые части выражений (3.6) и (3.7), например, комбинацию значений К, = 1 и Г2=0, то получим K,=OV1(1V0) = 1; Y2=0V0V0-D=0, что и подтверждает нечувствительность значений У, и Кг к значениям сигнала на входе D после переключения триггера.
Для того чтобы могло произойти новое переключение триггера, необходимо воздействие на входе С нового фронта положительной полярности.
Для представления триггера данного типа в схемах используется условное изображение, показанное на рис. 3.12,6.
Триггеры обычно снабжают дополнительными асинхронными входами R<f (установки в состоянии 0) и S* (установки в состояние 1), сигналы на которых производят установку триггеров в соответствующее состояние, независимо от значения сигналов на входах D и С.
Цепи асинхронных входов Rd и S<< показаны на рис. 3.12,а штриховыми линиями. Условное обозначение D-триггера с асинхронными входами, Rd и Sd приведено на рис. 3.12,в.
На рис. 3.13 показана схема D-триггера, построенного на элементах ИЛИ-НЕ.
Выражения для логических уровней в точках Y\ и К2 данной схемы имеют следующий вид (без учета входов R* и Si):
Анализ выражений, подобный приведенному пышс применительно к триггеру, построенному на элементах И-НЕ, показываетт, что переключение триггера происходит при отрицательном фронте сигнала на входе С. При этом переключающие уровни определяются выражениями Yt = D и Y2—D.
На рис. 3.13,6 показано условное обозначение данного триггера.
Рассмотрим функционирование триггера со стороны установочных входов Rd и Sj. С учетом этих входов логические выражения для Y, и У2 имеют следующий вид:
Для установки триггера в состояние Q = 0 подается сигнал Rd = \. При этом из (3.13) У2=0; из (3.12) при Г=0
Под действием таких управляющих сигналов Ytи У2 триггер устанавливается в состояние Q=0. Заметим, что после того, как будет снят сигнал со входа Rd, остаются неизменными уровни У| и У2 и они поддерживают установленное в триггере состояние. Процессы при установке триггера в состояние 1 сигналом на входе Sd анализируются аналогично.
JK-триггер.Проанализируем работу триггера, схема которого приведена на рис. 3.15. Логические выражения для уровней на управляющих входах Yi и У2:
Т-триггер.Рассмотрим работу триггера, схема которого приведена на рис.
Логические выражения для уровней на управляющих входах У1 и У2 (построенные без учета показанных штриховой линией цепей установочных входов Rdи Б„):
При Г=1, Yi = Yi=Q входная триггерная структура сохраняет ранее установленное в ней состояние.
Найдем для Ytи У2 выражения, соответствующие действию на входе Т отрицательного фронта сигнала. Подставив в правые части выражений (3.10) и (3.11) значения У, = У2=О, получим
^1так, при Qo=O У2= 1 и этим уровнем выходная триггерная структура переключается в состояние 'Q=*M; при Qo=l У^!, этим "уровнем выходная триггерная структура переводится в состояние 0. Таким образом, при действии отрицательного фронта сигнала на входе Т-триггер переключается в состояние Q, противоположное состоянию QO| в котором он ранее находился. Так«е функционирование соответствует таблице состояний Т-триггера (табл. 3.2,г).
Уровни Yxи Y, здесь определяются следующими выражениями:
i i При С=0 на упраэляющих входах устанавливаются пассивные уровни У| = = 1 и У2=1. не влияющие на состояние выходной триггерной структуры. При положительном фронте сигнала на входе С уровни У\ и Уг определяются выражениями, поручаемыми из (3:14) и (3.15) при подстановке С=\, Vi=l, У2=1: ! ■ \ '' i
1 В ,1 табл. 3.3 приведены комбинации входных сигналов /, л и текущего состояния тр!игге(ра (?о, действующих! в момент, непосредственно предшествующей моменту поступления- положительного фронта на вход С, а также значения У,, У2 и состояния триггера Q для ближайшего момента после фронта сигнала на входе С. Как видно из таблицы, действие сигналов У и К на состояние триггера соответствует таблице состояний JK-триггера (табл. 3.26). I Отметим следующую особенность в работе рассматриваемого триггера. Изменение сигналов на входах J и К, происходящее после положительного фронта, сигнала на входе С, может привести к изменению состояния триггера. Как видно из выражений (3.14) и (3.15), после действия положительного фронта сигнала на входе С изменение сигналов / или К с уровня лог. О к уровню лог. 1 окажет такое же действие, как в случае, если бы этот уровень лог. 1 был установлен на соответствующем входе J или К перед появлением фронта на в)рде С. Действительно, пусть перед поступлением фронта сигнала на входе С .на информационных входах /j=0, К—0 и состояние триггера Qo=O. Очевидно, I после действия фронта состояние триггера не изменится, но если затем
"значение на входе J изменится и станет /=1, то в соответствии с выражением (3.14) на управляющем входе Y\ установится уровень У( = 0 и триггер переключится в состояние Q=,l. Эту особенность работы рассматриваемого триггера следует учитывать при построении цифровых устройств.
ria рис. 3.16 приведена другая схема JK-триггера, лишенная этого недостатка, i Проанализируем работу триггера, построенного по этой схеме.
При С=1 У,=0, У2=0.
Подставляя значения У,=-У2 = 0 » пыраженни (3.18) и (3.19), получаем для момента отрицательного фронта сигнала на входе С:
Пользуясь этими выражениями, можно построить таолицу состоянии трш-гера после действия фронта сигнала на входе С (табл. 3.4).
Из табл. 3.4 видно, что значения У,, У2, Q встречаются в двух комбинациях: У| = 1; У2 = 0; Q = 0 и Ki = 0; У2=1; Q=1. Если первую из этих комбинаций значений подставить в (3.18) и (3.19), то получим
т. е. комбинация К» = 1; У2=0 является устойчивой, и после действия; на входе С отрицательного фронта сигнала никакие изменения значений на входах J,. и К не могут изменить значений управляющих сигналов Y, и У?. Следовательно, триггер оказывается нечувствительным к изменению сигналов на входах J и К после действия отрицательного фронта сигнала на входе С.
Подстановка второй комбинации значений У,, У2, Q п (3.18) и (3.19) приводит к
Таким образом, и в этом состоянии триггер нечувствителен к изменению сигналов J и К после действия на входе С отрицательного фронта сигнала.
Шифратор (называемый также кодером) — устройство, осуществляющее преобразование десятичных чисел в двоичную систему счисления. Пусть в шифраторе имеется m входов, последо-