Мне кажется, что запуск по фронту оставляет каждую цепь в несогласованном состоянии?

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

Но мне кажется, что запуск по фронту оставляет схему в совершенно несогласованном состоянии. Посмотрите на это (одноэлементный счетчик пульсаций триггера JK).

Пусть тактовый вход является сигналом, запускающим фронт, и посмотрите на первое поле НЕ-И в J, когда все входы в J имеют высокий уровень, кроме часов. В тот момент, когда часы становятся высокими, начинается распространение. Край длится наносекунду, поэтому он, вероятно, закончится до того, как значение распространится через NAND. В любом случае, низкий сигнал длительностью наносекунды будет проходить через выход первой И-НЕ, за которым будут следовать длинные интервалы высокого сигнала. Эта композиция доберется до второго верхнего И-НЕ, и И-НЕ изменит значения соответственно, далее разветвится на другое И-НЕ плюс вход, и все это выглядит для меня отличным примером несогласованного состояния схемы - кто знает что. там произойдет?

Я что-то не совсем понимаю о срабатывании по краю. Что это такое? Спасибо за время!

Кажется, я ввожу вас в заблуждение в объяснении, прикрепляя изображение схемы, управляемой уровнем. Меня смущает запуск только по фронту, и я выбрал схему обратной связи только для того, чтобы проиллюстрировать, что произойдет, если вместо тактового сигнала это будет выход импульсного детектора, запускаемого по фронту. Мне кажется, что выход первого затвора схемы получает изменяется только на наносекунду, когда это нарастающий фронт, затем немедленно возвращается к выходу, поскольку сигнал, указывающий на фронт, равен 0.
выход затвора распространяется на вход и третий затвор одновременно и тут начинается мамбо-джамбо - наносекундная модификация сигнала снова входит в цепь, в это же время выход третьего затвора перемещается за вторым входом... Кто мог знать, какой сигнал попадает к какой цели в первую очередь и может предсказать столкновения? Выглядит очень непоследовательно. Мне придется изучить триггеры master-slave, которые @VasiliyZukanov и другие прикрепили в своих замечательных ответах, поскольку я не знаком с ними, но схемы, использующие импульс- сигналы детектора, запускаемые фронтом, все еще кажутся мне неработоспособными.

Ответы (4)

Трудно понять, о чем вы спрашиваете, без какой-то временной диаграммы.

Тем не менее, я попытаюсь угадать, в чем ваша проблема:

Существует широкое взаимозаменяемое неправильное использование терминов «затворная защелка», «триггер» и «триггер, запускаемый фронтом». Предоставленная вами схема представляет собой не триггер JK, запускаемый фронтом, а защелку JK с вентилем, обычно называемую триггером JK.

В отличие от триггеров, запускаемых по фронту, которые изменяют состояние только по переднему фронту тактового сигнала, стробируемые защелки могут изменять состояние в течение всей положительной фазы тактового сигнала. Это означает, что если входы J или K изменяются, когда тактовый сигнал находится на высоком уровне, выход стробируемой защелки также может измениться (что неверно для триггеров, запускаемых фронтом).

Однако, если входы J и K поддерживаются постоянными в течение положительной фазы тактового сигнала, выходной сигнал стробируемой защелки JK установится на известное значение (с одним исключением, описанным ниже), которое может быть получено из значений J, K и Q на переднем фронте часов. ПРИМЕЧАНИЕ: тот факт, что мы смотрим на значения сигналов на нарастающем фронте, не означает, что эта защелка JK срабатывает по фронту, потому что мы предполагали, что входы не изменятся во время положительной фазы тактового импульса!!!

Теперь к вашему вопросу: кажется, вы не можете понять, как именно выход может установиться на известное (и детерминированное) значение, принимая во внимание две присутствующие петли обратной связи. Что ж, единственный способ убедить себя — это предположить некоторые начальные условия на выходе и проследить, что происходит для каждой возможной комбинации входных данных (кроме J=1,K=1).

Следующие два пункта сделают вашу жизнь проще:

  1. Хотя реализация с вентилями И-НЕ является наиболее эффективной, для понимания концепций лучше всего исследовать эту (функционально эквивалентную) схему:Реализация закрытой защелки JK с вентилями AND и NOR
  2. Обратите внимание, что когда тактовый сигнал высокий, выходы вентилей И будут определяться значениями входов J и K и значением Q. Это означает, что вы можете стереть тактовый сигнал с диаграммы, чтобы понять, что происходит. во время положительной фазы часов.

РЕДАКТИРОВАТЬ: А как насчет случая J = 1, K = 1? Ну, в этом случае JK gated-latch становится мультивариатором (надеюсь, термин правильный) — его выходы будут периодически меняться в течение положительной фазы часов. В логических схемах такая комбинация входов недопустима, поэтому обычная практика состоит в том, чтобы связать их вместе следующим образом (который называется D-защелкой):

введите описание изображения здесь

Обратите внимание, что в этой схеме нет необходимости в обратной связи, потому что выходы полностью определяются значением входа D.

Чтобы построить JK-триггер, запускаемый фронтом, можно последовательно соединить две JK-защелки следующим образом (существуют и другие конфигурации). Обратите внимание, что пути обратной связи идут от выхода второй защелки к входу первой:

Триггер JK с срабатыванием по фронту

В этой конфигурации больше нет ограничений на комбинацию входов J=1, K=1 - эта комбинация входов означает "переключение выхода". Так называемый T-триггер, запускаемый фронтом, обычно получается из вышеупомянутого триггера JK, запускаемого фронтом, путем связывания входов J и K вместе.

Василий, это схема срабатывания по фронту или уровню? Я вижу схему детектора импульсов, которая улавливает фронт, но я вижу, что высокий уровень длится половину цикла на вашей диаграмме?
Извините за недопонимание. Я хотел поставить туда базовую защелку JK. Исправлено сейчас и добавлена ​​диаграмма триггера JK, запускаемого фронтом.
И я забыл очень важную деталь: J=1, K=1 (которое является комбинацией «переключателя» для триггера JK, запускаемого фронтом), является недопустимой комбинацией для JK Gated-Latch, потому что он становится мультивибратором - его выходы будут меняться. все время!
Выход JK-триггера может измениться только один раз для каждого заднего фронта триггерного входа. Существует минимальная требуемая ширина импульса для надежной работы, но импульсы могут быть сколь угодно широкими при условии, что они превышают этот минимум. Единственными проблемными типами тактовых входов являются рант-импульсы, импульсы щелчков, которые возникают слишком близко к переходам на входах JK, или медленно меняющиеся тактовые сигналы, которые слишком долго зависают вблизи порога.
@supercat, я полагаю, что вы говорите о триггерах JK, запускаемых фронтом, а не о закрытых защелках JK. Я попытался объяснить разницу в своем ответе - если вы все еще не видите разницы после прочтения, что ж, у меня не получилось.
@VasiliyZukanov: Я никогда не слышал о закрытой защелке JK. Я слышал о защелках RS, но они не делают повода для переключения, если на обоих входах высокий уровень. Знакомые мне защелки с вентилем RS будут установлены, когда S высокий, R низкий и активен, и будут сброшены, когда R высокий, S низкий и активен. В остальное время они сохраняют свое состояние.
@supercat, первая картинка в моем ответе - защелка JK. Попробуйте посмотреть, что происходит, когда J,K=1 и тактовый сигнал высокий - он становится мультивибратором.
@VasiliyZukanov: В каких обстоятельствах схема с условиями обратной связи с первыми вентилями И будет более полезной, чем схема с опущенными этими условиями? Такая схема практически стремится оказаться в метастабильном состоянии, даже если J и K не находятся на высоком уровне одновременно. Например, предположим, что Q начинается с высокого уровня, а K и Clk переводятся на высокий уровень. Когда выход верхнего И становится высоким, выход НЕ может начать становиться низким. Это, в свою очередь, может привести к тому, что выход AND станет низким до того, как нижний NOR станет высоким.
@VasiliyZukanov: Хотя я вижу, что добавление условий обратной связи превращает некоторые определенные поведения в неоднозначное или метастабильное поведение, я не вижу ни одного случая, когда схема, которую вы называете защелкой JK, имеет какое-либо определенное поведение, отличное от поведения стробируемого RS . защелка — по крайней мере, при отсутствии указанных ограничений задержки распространения.
@supercat, я только что объяснил терминологию. Вопрос о том, используется ли защелка JK вообще, совершенно другой (можно добавить на форум). Пока вы понимаете разницу между защелкой JK с затвором и триггером JK, запускаемым по фронту, этот ответ достиг своей цели.
@VasiliyZukanov: Хорошо, я пересмотрел исходный вопрос; кажется, что это предполагает использование схемы, похожей на то, что вы описываете (хотя и с вентилями И-НЕ), и поэтому ваш ответ предполагает, что схема может быть пригодна для какой-то цели. Преобразование может повлиять на поведение распространения и поэтому не кажется безопасным. Я бы предположил, что если кому-то нужна защелка, которую можно переключать с помощью импульса, она должна быть нарисована с отдельными вентилями ранней стадии для случая «переключения» и других случаев, поскольку в противном случае нет входного стимула, который гарантированно очистится. метастабильность своевременно.

Базовый триггер JK страдает от проблемы синхронизации, называемой гонкой, когда триггерный импульс слишком длинный, а схема отправляет обратно запутанные сигналы, которые, я думаю, вы описываете.

Чтобы обойти это, триггерный или тактовый импульс должен быть очень коротким, чтобы он возвращался к «0», прежде чем изменение на выходе может быть передано обратно на входные вентили.

введите описание изображения здесь

Работа JK-триггера может быть улучшена путем добавления второго RS-триггера, известного как главный-ведомый JK.

введите описание изображения здесь

По переднему фронту тактового сигнала входные значения J и K передаются и сохраняются в главном триггере, в то время как подчиненный триггер (который управляется инвертированными часами) остается неизменным. По заднему фронту тактового сигнала выходные значения ведущих триггеров передаются и сохраняются в подчиненных триггерах, которые, в свою очередь, управляют выходами триггеров Q и Not Q.

единственная комбинация входов, для которой JK-триггер страдает от состояния «гонки вокруг», - это J = 1, K = 1. Это следует упомянуть.
@VasiliyZukanov Совершенно верно - любая другая комбинация значений JK создаст схему типа защелки S-R, где 0 0 будет значением «без изменений». Только с JK как 1 1 схема будет действовать как делитель типа Toggle с условием «туз-вокруг». (+1) от меня

В большинстве реальных схем используются D-триггеры, которые имеют два важных ограничения: время «установки», в течение которого сигнал должен быть постоянным до прихода фронта, и время «удержания» после фронта, в течение которого он не поступает.

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

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

(«Край длится наносекунду»: мне кажется, это довольно высоко!)

Триггеры Master-Slave, синхронное переключение с тактовой частотой и тому подобное существуют не просто так. Запуск по фронту может быть спроектирован так, чтобы быть статистически высоконадежным на практике, но опасности и недостатки хорошо известны. Запуск по фронту и асинхронная работа обычно дешевле и проще в целом. Как и в большинстве случаев жизни, это компромисс между многими факторами, и во многих случаях его можно заставить работать «достаточно хорошо». Вряд ли вы найдете его в системах жизнеобеспечения и управления огнем и, надеюсь, в пусковых установках спутников.

Тогда большинство схем, используемых там, где важна точность, являются схемами, запускаемыми по уровню, и в случае схемы обратной связи разработчики должны убедиться, что распространение будет длиться дольше интервала высокого тактового уровня, но короче всего тактового цикла. чтобы предотвратить многократное распространение в интервале высокого тактового сигнала цикла? Добавляя некоторые компоненты, которые должны только замедлить распространение?
Я понял, что этот ответ менее хорош, чем мог бы быть. Сейчас нет времени приводить в порядок - я вернусь. Главный злодей — асинхронное и синхронное тактирование/распространение. Состояния фиксируются во всей системе по всему фронту тактового сигнала, поэтому не может возникнуть пульсирующий перенос и «опасность гонки».