Триггер: различия между версиями

4770 байт добавлено ,  10 лет назад
отмена правки 28875768 участника Qkowlew (обс)
(Отмена самописного орисса.)
(отмена правки 28875768 участника Qkowlew (обс))
{{другие значения|Триггер (значения)}}
 
'''Триггер''' (амер. '''flip-flop''') (триггерная система) — класс электронных устройств, обладающих способностью длительно находиться в одном из двух или более устойчивых состояний и чередовать их под воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по значению выходного напряжения. По характеру действия триггеры относятся к импульсным устройствам — их активные элементы (транзисторы, лампы) работают в ключевом режиме, а смена состояний длится очень короткое время.
 
Отличительной особенностью триггера как функционального устройства является свойство запоминания двоичной информации. Под памятью триггера подразумевают способность оставаться в одном из двух состояний и после прекращения действия переключающего сигнала. Приняв одно из состояний за «1», а другое за «0», можно считать, что триггер хранит (помнит) один разряд числа, записанного в двоичном коде.
 
'''Триггер''' — простейшее устройство, выполняющее [[булевы функции|логическую функцию]] с [[обратная связь (кибернетика)|обратной связью]], то есть простейшее устройство [[кибернетика|кибернетики]].
 
'''Триггер''' — это запоминающий элемент с двумя (или более) устойчивыми состояниями, изменение которых происходит под действием входных сигналов и предназначен для хранения одной единицы информации (бита, трита, ...).
 
N-ичный '''триггер''' — устройство (элементарная переключаемая ячейка памяти, переключатель с N устойчивыми положениями), которое имеет N ''устойчивых состояний'' и возможность переключения из любого состояния в любое другое состояние.
 
== Базовые понятия ==
 
Триггер — это запоминающий элемент с двумя (или более) устойчивыми состояниями, изменение которых происходит под действием входных сигналов и предназначен для хранения одного бита информации, то есть лог. 0 или лог. 1.
 
Все разновидности триггеров представляют собой элементарный автомат, включающий собственно элемент памяти (ЭП) и комбинационную схему (КС), которая может называться схемой управления или входной логикой (рис. 7).
[[ФайлFile:СтруктураCтруктура триггеров.PNGJPG|thumb|center|500px|Рис. 7 структура триггеров в виде КС и ЭП]]
 
В [[Граф (математика)|графе]] триггера каждая вершина графа соединена со всеми другими вершинами, при этом переходы от вершины к вершине возможны в обе стороны (двухсторонние). Граф двоичного триггера — две точки соединённые отрезком прямой линии, троичного триггера — треугольник, четверичного триггера — квадрат с диагоналями, пятеричного триггера — пятиугольник с пентаграммой и т. д. При N=1 граф триггера вырождается в одну точку, в математике ему соответствует [[Унарная система счисления|унарная]] единица или унарный ноль, а в электронике — монтажная «1» или монтажный «0», то есть простейшее [[ПЗУ]]. ''Устойчивые состояния'' имеют на графе триггера дополнительную петлю, которая обозначает, что при снятии управляющих сигналов триггер остаётся в установленном состоянии.
 
== Типы триггеров ==
Логические схемы триггеров не зависят от физического исполнения логических элементов (РТЛ, ДТЛ, ТТЛ, КМОП, ЭСЛ и др.) и являются общими для всех видов физического исполнения логических элементов.
 
== RS-триггеры ==
=== RS-триггер асинхронный ===
|+
|}
[[File:RS-trig(2x2ORNOT).jpg|right|100px|thumb|Логическая схема асинхронного RS-триггера на двух логических элементах 2ИЛИ-НЕ]]
[[Файл:K555TR2 RS Trigger.gif|thumb|100px|Асинхронный RS-триггер с инверсными входами]]
<!--[[File:Снимок модели 1B RStrigRS-trig(2x2ORNOT2x2ANDNOT)2.JPGjpg|right|100px|thumb|СнимокЛогическая моделисхема для изучения свойствасинхронного RS-триггера 2х2ИЛИНЕна вдвух логическомлогических симулятореэлементах [http://sol.gfxile.net/atanua/ Atanua]2И-НЕ]]
[[File:Снимок модели 1B RStrig(2x2ORNOT)2.JPG|right|100px|thumb|Снимок модели для изучения свойств RS-триггера 2х2ИЛИНЕ в логическом симуляторе [http://sol.gfxile.net/atanua/ Atanua]]]
[[File:RS-trig(2x2ANDNOT)2.jpg|right|100px|thumb|Асинхронный RS-триггер на двух логических элементах 2И-НЕ]]-->
 
 
'''RS-триггер'''<ref>http://dssp.karelia.ru/~ivash/ims/t10/TEMA4.HTM#DTRIGGER RS-триггер.</ref><ref>http://it.fitib.altstu.ru/neud/shemotechnika/index.php?doc=teor&st=124 Схемотехника. ТЕМА 11. Триггерные схемы. Бистабильная ячейка. Схема устранения дребезга контактов. Асинхронные и синхронные триггеры. Однотактные и двухтактные триггеры. 11.1. Асинхронные RS-триггеры. 11.1.1. RS — триггер на двух элементах «2И-НЕ».</ref>, или '''SR-триггер''' — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы. Граф RS-триггера показан на рис. 9.
<!--[[Файл:Граф RS-триггера.JPG|thumb|center|500px|Рис.9. Граф RS-триггера]]-->
 
При подаче единицы на вход '''S''' (от {{lang-en|Set}} — установить) выходное состояние становится равным логической единице. А при подаче единицы на вход '''R''' (от {{lang-en|Reset}} — сбросить) выходное состояние становится равным логическому нулю. Состояние, при котором на оба входа '''R''' и '''S''' одновременно поданы логические единицы, в некоторых случаях является запрещённым, при такой комбинации RS-триггер переходит в третье состояние '''Q'''{{overline|'''Q'''}}=00. Одновременное снятие двух «1» практически невозможно. При снятии одной из «1» RS-триггер переходит в состояние, определяемое оставшейся «1». Таким образом RS-триггер имеет три состояния, из которых два устойчивых (при снятии сигналов управления RS-триггер остаётся в установленном состоянии) и одно неустойчивое (при снятии сигналов управления RS-триггер не остаётся в установленном состоянии, а переходит в одно из двух устойчивых состояний).
 
<gallery>
File:RS Trigger Asynch.gif|Условное графическое обозначение асинхронного RS-триггера
File:RS Trigger Asynch Logic.gif|Логическая схема асинхронного RS-триггера на элементах 2И–НЕ
File:RS Trigger Asynch Graph.gif|Граф переходов асинхронного RS-триггера
File:RS Trigger Asynch Carnaugh Map.gif|Карта Карно асинхронного RS-триггера
File:RS Trigger Asynch.gif|Условное графическое обозначение асинхронного RS-триггера
File:RS Trigger Logic NOR.gif|Асинхронный RS-триггер на логических элементах 2ИЛИ-НЕ
File:Схема устранения дребезга контактов.gif|Схема устранения дребезга контактов
Файл:K555TR2 RS Trigger.gif|Асинхронный RS-триггер с инверсными входами
</gallery>
 
=== RS-триггер синхронный ===
[[File:RSCtrig(RStrig(2x2ORNOT)+2x2AND)p.jpg|right|thumb|150px|Логическая схема синхронного RS-триггера на RS-триггере 2х2ИЛИНЕ]]
{| align="left" class="standard" style="margin-right: 20px"
|+
! | Q(t) 
! |Q(t+1)
! |{{overline|Q}}(t+1)
|----- align=center
|rowspan=2|0||rowspan=2|x||rowspan=2|x||0||0||1
|----- align=center
|1||1||0
|----- align=center
|1||0||0||0||0||1
|----- align=center
|1||0||0||1||1||0
|----- align=center
|1||0||1||0||0||1
|----- align=center
|1||0||1||1||0||1
|----- align=center
|1||1||0||0||1||0
|----- align=center
|1||1||0||1||1||0
|----- align=center
|1||1||1||0||не определено0||0
|----- align=center
|1||1||1||1||не определено0||0
|+
|}
[[File:Граф RSС-триггера.jpg|right|thumb|300px|Граф синхронного RS-триггера]]
 
Схема синхронного RS-триггера совпадает со схемой одноступенчатого парафазного (двухфазного) D-триггера, но не наоборот, так как в парафазном (двухфазном) D-триггере не используются комбинации S=0, R=0 и S=1, R=1.
 
<br clear="all" />
<gallery>
File:RS Trigger.gif|Условное графическое обозначение синхронного RS-триггера
Файл:RS Trigger Logic.gif|Схема синхронного RS-триггера на элементах 2И-НЕ
File:RS Trigger Graph.gif|Граф переходов синхронного RS-триггера
File:RS Trigger Carnaugh Map.gif|Карта Карно синхронного RS-триггера
File:RS Trigger.gif|Условное графическое обозначение синхронного RS-триггера
</gallery>
 
=== RS-триггер синхронный двухступенчатый со сложной логикой ===
[[Файл:RS-триггер двухступенчатый со сложной логикой.PNG|thumb|center|500px|Рис. СхемаЛогическая схема RS-триггера двухступенчатого со сложной логикой на элементах 2И-НЕ и 3И-НЕ]]
УГО этого триггера смотри на рис.1.
<br clear="all" />
 
== JK-триггеры ==
=== JK-триггер ===
[[Файл:K555TV9 JK Trigger.gif|мини|справа|100px|JK-триггер с дополнительными асинхронными инверсными входами '''S''' и '''R''']]
{| align="left" class="standard" style="margin-right: 20px"
|+
! | J 
! | K 
! |Q(t)
! |Q(t+1)
|----- align=center
| 0 || 0 || 0 || 0
|----- align=center
| 0 || 0 || 1 || 1
|----- align=center
| 0 || 1 || 0 || 0
|----- align=center
| 0 || 1 || 1 || 0
|----- align=center
| 1 || 0 || 0 || 1
|----- align=center
| 1 || 0 || 1 || 1
|----- align=center
| 1 || 1 || 0 || 1
|----- align=center
| 1 || 1 || 1 || 0
|+
|}
'''JK-триггер'''<ref>http://dssp.karelia.ru/~ivash/ims/t10/TEMA4.HTM#DTRIGGER JK-триггер</ref><ref>http://dfe3300.karelia.ru/koi/posob/log_basis/triger3.html Логические основы ЭВМ. JK-триггер</ref> работает так же как RS-триггер, с одним лишь исключением: при подаче логической единицы на оба входа J и K состояние выхода триггера изменяется на противоположное. Вход '''J''' (от {{lang-en|Jump}} — прыжок) аналогичен входу '''S''' у RS-триггера. Вход '''K''' (от {{lang-en|Kill}} — убить) аналогичен входу '''R''' у RS-триггера. При подаче единицы на вход '''J''' и нуля на вход '''K''' выходное состояние триггера становится равным логической единице. А при подаче единицы на вход '''K''' и нуля на вход '''J''' выходное состояние триггера становится равным логическому нулю. JK-триггер в отличие от RS-триггера не имеет запрещённых состояний на основных входах, однако это никак не помогает при нарушении правил разработки логических схем. На практике применяются только синхронные JK-триггеры, то есть состояния основных входов '''J''' и '''K''' учитываются только в момент тактирования, например по положительному [[Фронт сигнала|фронту]] импульса на входе синхронизации.
 
На базе JK-триггера возможно построить D-триггер или Т-триггер. Как можно видеть в таблице истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы '''J''' и '''K''' логической 1. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединив входы '''J''' и '''К'''<ref>[http://www.gelezo.com/ttl_kmop/610000/613000/613100/triggeri.html www.gelezo.com — Триггеры]</ref>.
 
Алгоритм функционирования JK-триггера можно представить формулой
: <math>Q(t+1) = \overline{Q}(t) \cdot J + Q(t) \cdot \overline{K}.</math>
 
<br clear="all" />
 
<gallery>
File:JK Trigger.gif|Условное графическое обозначение JK-триггера
File:JK Trigger Logic.gif|Логическая схема простейшего JK-триггера
File:JK Trigger Graph.gif|Граф переходов JK-триггера
File:JK Trigger Carnaugh Map.gif|Карта Карно JK-триггера
</gallery>
 
=== JK-триггер двухступенчатый со сложной логикой ===
 
== D-триггеры ==
'''D'''-триггеры также называют триггерами данных, так как на них строятся [[регистр (цифровая техника)|регистры]] данных. '''D'''-триггеры бывают одноступенчатые и двухступенчатые.
=== D-триггер синхронный ===
[[File:Dtrig(RStrig(2x2ORNOT)+2x2AND)p.jpg|right|thumb|150px|Логическая схема парафазного D-триггера на RS-триггере 2х2ИЛИНЕ]]
[[Файл:K555TM2 D Trigger.gif|мини|справа|100px|Пример D-триггера с дополнительными асинхронными инверсными входами '''S''' и '''R''']]
[[File:Dtrig(RStrig(2x2ORNOT)+2x2AND+NOT).jpg|right|thumb|150px|Логическая схема однофазного D-триггера на RS-триггере 2х2ИЛИНЕ и инверторе]]
{| align="left" class="standard" style="margin-right: 20px"
|+
|+
|}
Синхронный парафазный D-триггер представляет собой объединение асинхронного RS-триггера и парафазного ключа на двух логических элементах 2И. В однофазном D-триггере добавляется один инвертор (НЕ) и входные данные со входа D поступают на инверсный вход {{overline|D}} через инвертор.<br>
'''D-триггер''' ('''D''' от {{lang-en|delay}} — задержка)<ref>http://dssp.karelia.ru/~ivash/ims/t10/TEMA4.HTM#DTRIGGER D-триггер.</ref><ref>http://dfe3300.karelia.ru/koi/posob/log_basis/triger1.html Логические основы ЭВМ. D-Триггер</ref><ref>http://cxem.net/beginner/beginner15.php Триггеры. Тактируемый D-триггер</ref> — запоминает состояние входа и выдаёт его на выход. D-триггеры имеют, как минимум, два входа: информационный '''D''' и синхронизации '''С'''. После прихода активного [[Фронт сигнала|фронта]] импульса синхронизации на вход С D-триггер открывается. Сохранение информации в D-триггерах происходит после спада импульса синхронизации С. <!-- вообще-то защёлка обычно работает не по фронту, а пропускает когда 1, и запоминает когда 0 -->Так как информация на выходе остаётся неизменной до прихода очередного импульса синхронизации, D-триггер называют также триггером с запоминанием информации или триггером-защёлкой.
Рассуждая чисто теоретически, парафазный (двухфазный) D-триггер можно образовать из любых RS- или JK-триггеров, если на их входы одновременно подавать взаимно [[Инверсия|инверсные]] сигналы.
 
D-триггер в основном используется для реализации защёлки. Так, например, для снятия 32 бит информации с параллельной шины, берут 32 D-триггера и объединяют их входы синхронизации для управления записью информации в защёлку, а 32 '''D''' входа подсоединяют к шине.
 
В одноступенчатых D-триггерах во время прозрачности все изменения информации на входе D передаются на выход Q. Там, где это нежелательно, нужно применять двухступенчатые (двухтактные, Master-Slave, MS) D-триггеры.
 
<br clear="all" />
<gallery>
File:D Trigger.gif|Условное графическое обозначение D-триггера
Файл:K555TM2 D Trigger.gif|Пример D-триггера с дополнительными асинхронными инверсными входами '''S''' и '''R'''
</gallery>
В одноступенчатых D-триггерах во время прозрачности все изменения информации на входе D передаются на выход Q. Там, где это нежелательно, нужно применять двухступенчатые (двухтактные, Master-Slave, MS) D-триггеры.
 
=== D-триггер двухступенчатый ===
 
=== DV-триггер двухступенчатый со сложной логикой ===
V-вход полностью аналогичен С-входу, т.е. является вторым разрешающим запись входом.
=== Нехорошие D-триггеры ===
Со склада [http://commons.wikimedia.org/wiki/File:D-Type_Transparent_Latch.svg Wikimedia commons]:<br>
[[File:D-Type Transparent Latch.svg|100px]]<br>
Этот одноступенчатый триггер при "1" на входе D при каждом тактовом импульсе производит короткий положительный импульс (риску), которой в хороших D-триггерах не должно быть.<ref>http://andserkul.narod2.ru/dvoichnie_d-triggeri/ Двоичные D-триггеры. Нехорошие D-триггеры</ref>
 
== T-триггеры ==
'''Т'''-триггер часто называют счётным триггером, так как он является простейшим [[счётчик (электроника)|счётчиком]] до 2.
'''Т'''-триггеры бывают только двухступенчатые.
=== Т-триггер асинхронный ===
Асинхронный Т-триггер не имеет входа синхронизацииразрешения Спереключения Т.
[[File:Ttrigasinhr.jpg|right|thumb|300px|Логическая схема асинхронного двухступенчатого Т-триггера на двух парафазных D-триггерах и инверторе]]
[[Файл:T flip-flop.gif|справа|мини|170px|Работа схемы асинхронного двухступенчатого T-триггера с парафазным входом на двух парафазных D-триггерах на восьми [[Логический вентиль|логических вентилях]] '''2И-НЕ'''. Слева — входы, справа — выходы. Синий цвет соответствует 0, красный&nbsp;—&nbsp;1]]
 
=== T-триггер синхронный ===
[[File:Ttrig.jpg|right|thumb|300px|Логическая схема синхронного двухступенчатого Т-триггера на двух парафазных D-триггерах и инверторе]]
{| align="left" class="standard" style="margin-right: 20px"
|+
[[Файл:T-Type Flip-flop.svg|справа|мини|100px|Изображение синхронного T-триггера на схемах.]]
Синхронный '''Т-триггер'''<ref>http://digital.sibsutis.ru/digital/T_trigg.htm Т-триггеры.</ref><ref>http://dssp.karelia.ru/~ivash/ims/t10/TEMA4.HTM#TTRIGGER Т-триггер</ref>, при единице на входе '''Т''', по каждому такту на входе С изменяет своё логическое состояние на противоположное, и не изменяет выходное состояние при нуле на входе '''T'''.
Т-триггер может строиться на JK-триггере, на двухступенчатом (Master-Slave, MS) D-триггере и на двух одноступенчатых D-триггерах и инверторе. Как можно видеть в таблице истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы '''J''' и '''K''' логической 1. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединяя входы '''J''' и '''К''' во вход '''Т'''.
Наличие в двухступенчатом (Master-Slave, MS) D-триггере динамического входа С позволяет получить на его основе T-триггер.
При этом инверсный выход {{overline|Q}} соединяется со входом D, а на вход '''С''' подаются счётные импульсы. В результате триггер при каждом счётном импульсе запоминает значение <math>\bar Q</math>, то есть будет переключаться в противоположное состояние.
<br clear="all" />
 
=== TTV-триггер двухступенчатый со сложной логикой ===
[[File:TVtrig.jpg|right|thumb|300px|Логическая схема синхронного TV-триггера на двух парафазных D-триггерах и инверторе]]
=== TV-триггер двухступенчатый со сложной логикой ===
V-вход полностью аналогичен С-входу, т.е. является вторым разрешающим переключение входом.
 
=== Нехорошие Т-триггеры ===
Ряд нехороших Т-триггеров приведён на странице [http://andserkul.narod2.ru/dvoichnie_schyotnie_triggeri_t-triggeri/] в разделе "Нехорошие Т-триггеры".
 
== JK-триггеры (универсальные триггеры) ==
'''JK'''-триггеры являются самыми сложными из двоичных триггеров. Так как '''JK'''-триггер может заменить '''RS'''-триггер, '''D'''-триггер и '''T'''-триггер, то его называют универсальным триггером.<br>
'''JK'''-триггеры бывают только двухступенчатые со сложной логикой на входе триггера первой ступени.
[[File:JKtrig.jpg|thumb|400px|Логическая схема JK-триггера на двух парафазных D-триггерах и инверторе<ref>http://andserkul.narod2.ru/dvoichnie_jk-triggeri/ Двоичные JK-триггеры</ref>]]
{| align="left" class="standard" style="margin-right: 20px"
|+
! | J
! | K
! |Q(t)
! |Q(t+1)
|----- align=center
| 0 || 0 || 0 || 0
|----- align=center
| 0 || 0 || 1 || 1
|----- align=center
| 0 || 1 || 0 || 0
|----- align=center
| 0 || 1 || 1 || 0
|----- align=center
| 1 || 0 || 0 || 1
|----- align=center
| 1 || 0 || 1 || 1
|----- align=center
| 1 || 1 || 0 || 1
|----- align=center
| 1 || 1 || 1 || 0
|+
|}
'''JK-триггер'''<ref>http://dssp.karelia.ru/~ivash/ims/t10/TEMA4.HTM#DTRIGGER JK-триггер</ref><ref>http://dfe3300.karelia.ru/koi/posob/log_basis/triger3.html Логические основы ЭВМ. JK-триггер</ref> работает так же как RS-триггер, с одним лишь исключением: при подаче логической единицы на оба входа J и K состояние выхода триггера изменяется на противоположное. Вход '''J''' (от {{lang-en|Jump}} — прыжок) аналогичен входу '''S''' у RS-триггера. Вход '''K''' (от {{lang-en|Kill}} — убить) аналогичен входу '''R''' у RS-триггера. При подаче единицы на вход '''J''' и нуля на вход '''K''' выходное состояние триггера становится равным логической единице. А при подаче единицы на вход '''K''' и нуля на вход '''J''' выходное состояние триггера становится равным логическому нулю. JK-триггер в отличие от RS-триггера не имеет запрещённых состояний на основных входах, однако это никак не помогает при нарушении правил разработки логических схем. На практике применяются только синхронные JK-триггеры, то есть состояния основных входов '''J''' и '''K''' учитываются только в момент тактирования, например по положительному [[Фронт сигнала|фронту]] импульса на входе синхронизации.
 
На базе JK-триггера возможно построить D-триггер или Т-триггер. Как можно видеть в таблице истинности JK-триггера, он переходит в инверсное состояние каждый раз при одновременной подаче на входы '''J''' и '''K''' логической 1. Это свойство позволяет создать на базе JK-триггера Т-триггер, объединив входы '''J''' и '''К''' во вход '''Т'''<ref>[http://www.gelezo.com/ttl_kmop/610000/613000/613100/triggeri.html www.gelezo.com — Триггеры]</ref>.
 
Алгоритм функционирования JK-триггера можно представить формулой
: <math>Q(t+1) = \overline{Q}(t) \cdot J + Q(t) \cdot \overline{K}.</math>
 
<br clear="all" />
 
<gallery>
File:JK Trigger Graph.gif|Граф переходов JK-триггера
File:JK Trigger Carnaugh Map.gif|Карта Карно JK-триггера
File:JK Trigger.gif|Условное графическое обозначение JK-триггера
Файл:K555TV9 JK Trigger.gif|JK-триггер с дополнительными асинхронными инверсными входами '''S''' и '''R'''
</gallery>
=== Ложные "JK-триггеры" ===
Со склада [http://commons.wikimedia.org/w/index.php?title=Category:Flip-flops&until=File:Triggery+i-ne.jpg Wikimedia commons]:<br>
[[File:FlipflopJKlogic.png|100px]][[File:ISO-JK-FF-NAND-circuit.svg|100px]][[File:JK-FlipFlop (4-NAND).PNG|100px]][[File:Bascule JK.svg|100px]][[File:JK Trigger Logic.gif|100px]]<br>
В этих одноступенчатых триггерах при JK=11 реализуется устройство, которое при "0" на тактовом входе
устанавливается в "0", а при "1" на тактовом входе является генератором, т.е. не является Т-триггером, как это должно быть в обычных двухступенчатых (Master-Slave, MS) JK-триггерах.<ref>[http://andserkul.narod2.ru/dvoichnie_jk-triggeri/ Двоичные JK-триггеры. Нехорошие JK-триггеры]</ref>
 
== Триггеры с любым числом устойчивых состояний ==