Как понять SR Latch

14

Я не могу обернуться вокруг того, как работает SR Latch. По-видимому, вы подключаете входную строку от R, а другую от S, и вы должны получить результаты в Q и Q ′.

Однако и R, и S требуют ввода от выхода другого, а выход другого требует ввода от выхода другого. Что первично - курица или яйцо?

Когда вы впервые подключаете эту схему, как она начинается?

SR Latch

CodyBugstein
источник
1
Я наконец нашел действительно фантастический ответ в книге « Но как это узнать» . Вы можете увидеть это по ссылке на странице 24.
CodyBugstein
Для лучшего понимания SR Latch и его поведения для разных входов, таких как 00, 01, 10 и 11, посмотрите это видео. www.youtube.com/watch?v=VtVIDgilwlA

Ответы:

5

Проницательный вопрос. Фактически, если вы построите этот фиксатор в программе моделирования, он действительно покажет вам, что не может предсказать, в каком состоянии он запустится:

RS защелка с воротами NOR, большинство сигналов окрашены в красный цвет для «неизвестно»

Но если вы установите один из входов на высокий уровень (это кнопки слева), сигнал будет проходить через (помните, 1 ИЛИ [что угодно] равно 1), и схема зафиксирует это состояние:

Та же защелка;  один вход высокий;  все линии становятся светлыми или темно-зелеными

Это вентили NOR, поэтому инвертированный выход становится низким, когда любой из входов высокий. Я использовал программу Logisim. Это маленький, и я рекомендую его для начала. Компиляторы логики (FPGA и все остальное) любят жаловаться на неинициализированные состояния. Это был отличный первый пример.

Теперь я знаю, что в реальной жизни схема случайно зафиксируется в том или ином состоянии самостоятельно. Многие другие указали на это. Но иногда важно, чтобы он надежно начинался в том или ином состоянии, и это то, о чем все предупреждения.

gbarry
источник
Спасибо за отличное объяснение .. Если я вас правильно понял, при подключении схема запускается в каком-то случайном состоянии?
CodyBugstein
@ Я бы не стал использовать фразу «случайное состояние», но «неопределенное состояние». Это может быть случайный выбор, это может быть одна и та же вещь каждый раз, важно то, что вы не знаете и не заботитесь. Все, что вам нужно сделать, это осознать, что вы должны инициализировать фиксатор (кратковременно пульсируя R или S), прежде чем начать полагаться на выход.
Скотт Чемберлен
Я просто перечитал ваш ответ и понял вещи, которые раньше пропустил. Отличное объяснение!
CodyBugstein
5

Триггер реализован как бистабильный мультивибратор; следовательно, Q и Q 'гарантированно обратны друг другу для всех входов, кроме S = 1, R = 1, что недопустимо. Таблица возбуждения для триггера SR помогает понять, что происходит, когда сигналы поступают на входы.

S R  Q(t) Q(t+1)   
----------------
0 x   0     0       
1 0   0     1   
0 1   1     0   
x 0   1     1   

Выходы Q и Q 'быстро изменят состояния и остановятся в устойчивом состоянии после подачи сигналов на S и R.

Example 1: Q(t) = 0, Q'(t) = 1, S = 0, R = 0. 

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

State 2: Q(t+1 state 1)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     

Since the outputs did not change, we have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 2: Q(t) = 0, Q'(t) = 1, S = 0, R = 1

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(1 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t))  = NOT(0 OR 0) = 1


State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(1 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     


We have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 3: Q(t) = 0, Q'(t) = 1, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 0) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 0) = 0     

State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
         Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 4: Q(t) = 1, Q'(t) = 0, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 5: Q(t) = 1, Q'(t) = 0, S = 0, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

We have reached a steady; state therefore, Q(t+1) = 1, Q'(t+1) = 0.


With Q=0, Q'=0, S=0, and R=0, an SR flip-flop will oscillate until one of the inputs is set to 1.

    Example 6: Q(t) = 0, Q'(t) = 0, S = 0, R = 0

    State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
             Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

    State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
             Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

    State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
             Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2)) =  NOT(0 OR 0) = 1

    State 4: Q(t+1 state 4)  = NOT(R OR Q'(t+1 state 3)) = NOT(0 OR 1) = 0
             Q'(t+1 state 4) = NOT(S OR Q(t+1 state 3))  = NOT(0 OR 1) = 0     
    ...


As one can see, a steady state is not possible until one of the inputs is set to 1 (which is usually handled by power-on reset circuitry).

Если мы рассмотрим простейшую реализацию SR-триггера (см. Http://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg ), мы обнаружим, что он состоит из двух биполярных транзисторов (BJT) и четырех резисторы (замените тумблеры SPST на землю переключателями SPDT, которые могут переключать линии настройки и сброса между потенциалом земли и V +). BJT сконфигурированы как обычные эмиттерные инверторы. Коллектор (выход) каждого транзистора подается обратно в базу (вход) противоположного транзистора. Вход S имеет проводное ИЛИ с выходом BJT, соединение коллектора которого служит выходом Q (соединение R1 / R3). Вход R соединен по проводам с выходом BJT, соединение коллектора которого служит выходом Q '(соединение R2 / R4).

При первом включении схемы ни один из транзисторов не смещается в прямом направлении в область насыщения в течение крошечной доли секунды, что означает, что оба Q и Q 'находятся на логическом уровне 1. Напряжение, имеющееся на каждом коллекторе, подается на базу противоположного транзистора, который заставляет его становиться прямым смещенным в область насыщения. Транзистор, который сначала смещается в прямом направлении, сначала начнет проводить ток, что, в свою очередь, вызовет падение напряжения на его резисторе коллектора, установив его выход на логический уровень 0. Это падение напряжения коллектора предотвратит противоположный транзистор от стать предвзятым; поэтому, устанавливая начальное состояние триггера. Это в основном состояние гонки оборудования, которое приводит к непредсказуемому исходу.

бит-бездельник
источник
Можете ли вы схему анимации по предоставленной ссылке, но в более простых сроках? Я беру курс для начинающих студентов
CodyBugstein
3

Как вы сказали, это не определено. На практике существуют переходные процессы или причуды, которые должны привести фиксатор в определенное состояние, но нет гарантии, в каком состоянии он будет находиться. Это вызвано несоответствием в двух элементах, которые будут определять данное начальное состояние (в основном схема не не ведет себя как настоящая цифровая защелка SR, но представляет собой сложную аналоговую схему, как в реальной жизни). Начальный выходной будет более или менее случайным образом , либо Q=1 and ~Q=0или Q=0 and ~Q=1.

За исключением явного упоминания в таблице данных, я бы не стал полагаться на то, что одно состояние выбирается из другого, так как фактическое начальное состояние может изменяться между различными частями в партии, размещением на доске, факторами окружающей среды (температура / влажность / и т. Д.) И старением. (отнюдь не полный список факторов).

Лучший способ определить состояние - после запуска подтвердить или установить или сбросить, чтобы перевести защелку SR в известное состояние.

Как примечание, в общем случае SR-защелки, утверждающие S и R одновременно, также приведут к неопределенному поведению, и вы полагаетесь на подобное вуду для установки выходов (реальная реализация может отключить оба выхода, случайным образом переключая два, включить оба выхода и т. д.). Как прокомментировал суперкат, если один вывод не установлен перед другим, защелка SR может войти в известное состояние, поскольку утверждается только один вывод. Другие типы защелок / триггеров могут определять другое поведение, например, триггеры JK определяют использование обоих выводов для переключения выходов (Q = ~ Qprev, ~ Q = Qprev).

helloworld922
источник
Но мой вопрос: как это можно установить на что-либо, если оба входа полагаются на входы, которые еще не существуют? Это похоже на случай «ты поднимешь меня в воздух, потом я
подыму
2
@Imray - одна сторона триггера всегда бьет другую, когда получает новый заряд. Обычно он всегда включается одинаково из-за небольших несоответствий синхронизации, но на этот тип устройства нет никаких гарантий.
Энди ака
1
Точно. Это зависит от феномена несоответствия. Вам не нужно думать о том, что обе стороны одинаковы. Они не. Один из них медленнее, другой быстрее, и это приведет к тому, что один из них включится изначально.
Густаво Литовский
Да, я бы полагался на это поведение несоответствия, чтобы гарантировать, что начальное состояние «допустимо» (мы не получаем Q = ~ Q), но я бы не стал полагаться на это поведение, чтобы гарантировать, что Q всегда является определенным состоянием при запуске, так как это может варьироваться между частями в партии или даже меняться на одну и ту же деталь в зависимости от температуры / времени. Конечно, в таблице данных может быть указано иное, но в целом я бы не стал полагаться на нее иначе.
helloworld922
Довольно часто поведение защелки будет определено, когда оба входа находятся в «активном» состоянии [высокий для защелки NOR; низкий для защелки NAND], при условии, что один из входов заметно неактивен перед другим.
Суперкат
2

Имейте в виду, что ворота инвертируются. Это обеспечивает положительную обратную связь. Предполагая, что и S, и R равны нулю, а один выход равен единице, этот будет подан обратно в другой вентиль, чтобы заставить другой выход обнулиться. Таким образом, ворота находятся в одном из двух устойчивых состояний.

Как только вы установите один из S или R в один, это заставит соответствующий вентиль вывести ноль, что, в свою очередь, заставит другие вентили вывести ноль. Опять стабильно.

Например, начальное состояние: S = 0, R = 0, Q = 0, Q # = 1. Теперь вы устанавливаете S = 1. Это изменит выход нижнего затвора (Q #) на 0. Этот 0 подается в верхний вентиль, заставляя этот выход (Q) к 1. Этот 1 возвращается к нижним вентилям. Когда вы устанавливаете S обратно в 0, нижний вентиль все еще получает 1 от другого вентиля. Это сохранит вывод Q # на 0.

Если Q уже равен 1 и вы установили S на 1, оба входа в нижний вентиль равны 1, и поэтому никаких изменений нет.

DoxyLover
источник
Я не понимаю, как Q 'может быть единым целым, если нет входных данных, которые когда-либо могут выполняться.
CodyBugstein
Опять же, стабильное состояние только тогда, когда ONE OF Q и Q # один. Если нет (например, при включении питания), ворота быстро перейдут в одно из двух устойчивых состояний, в зависимости от фактической скорости двух ворот и тому подобного. Как только ворота стабилизируются, вы можете использовать два входа для переключения между стабильными состояниями.
DoxyLover
1

Я думаю, что важная часть, о которой вы спрашиваете, связана с тем фактом, что защелка включается в неизвестном состоянии, так как же нам когда-нибудь перевести ее в известное состояние? Вы должны помнить, что если любой из входов в вентиль NOR равен 1, то выход должен быть 0, независимо от состояния другого входа. Таким образом, применение входных комбинаций SET или RESET всегда переводит фиксатор в состояние установки или сброса, независимо от предыдущего состояния фиксатора.

Джо Хасс
источник
Да, вы понимаете мой вопрос! Тем не менее, я до сих пор не чувствую ответа с тем, что вы написали. Предположим, что защелка никогда не была подключена, и внезапно, впервые, x и y были подключены. Как они могли повлиять на Q, если они не могли пройти сквозь начальные ворота ??
CodyBugstein
Я предполагаю, что вы имеете в виду, что входы R и S получают некоторые значения X и Y. Если X или Y равен единице, то выход этого логического элемента NOR должен быть 0 ... вот как работают вентили NOR. Таким образом, 0 возвращает обратно в другой вентиль NOR, который предположительно имеет 0 для своего входа (если X равен 1, то Y равен 0, или наоборот). Итак, теперь у второго логического элемента NOR есть два входа, равные 0, и его выход должен быть 1. Единственная ситуация, когда мы не можем сказать, что произойдет с Q и Q ', это если оба X и Y (то есть оба S и R) установите значение 0 сразу после включения питания. Как уже отмечали другие, это нестабильное состояние.
Джо Хасс