D Flip Flop Toggle -- Q в Hex Inverter в D, Нестабильный выход, Помощь

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Я создал вышеуказанную схему. По сути, есть переключатель, который обычно находится на высоком уровне. Я нажимаю кнопку. Используя шестнадцатеричный инвертор NTE4049T, я создаю переход от низкого к высокому фронту. Это обеспечивает вход clk для D-триггера 74HCT175. Все работает на TTL, 5 вольт. Выход D-триггера подается на другой шестнадцатеричный инвертор NTE4049T, который затем подается на D-вход триггера.

В идеале при нажатии кнопки я бы создал переключение линии вывода Q.

Этого не происходит. На самом деле на выходе сигнала есть некоторое колебание, но нет конечного перехода состояния.

Я понимаю, что это результат постоянного переключения/плохого дизайна. Как решается эта проблема? Если бы я соединил выход D-триггера с другим триггером, также синхронизированным с тем же фронтом, чтобы затем сгенерировать инвертированный выход для первого триггера, разрешило бы это колебания состояния? Могу ли я передать вывод через серию буферов, чтобы создать временную задержку?

Первая картинка — это сигнал коммутатора с RC-сетью. При нажатии переключателя происходит мгновенное падение. Это падение через инвертор является причиной того, что мой сигнал clk становится высоким.

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

Светло-голубая линия представляет собой сигнал перехода тактового сигнала на триггере. Желтая линия представляет сигнал D, подаваемый на триггер. Темно-синяя линия представляет собой сигнал добротности триггера непосредственно перед входом в инвертор. Инвертированный выход снова подаст на триггер D.

Как такая проблема решается на практике, если я не могу решить ее в приведенном выше дизайне? Спасибо

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

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

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

Ищите "переключатель без дребезга" - механические переключатели переключаются нечетко, контакты дребезжат несколько мс. Вы можете видеть это в своем следе. Сначала разбери, а потом посмотри, что будет :)
Замените свои инверторы на инверторы с триггером Шмитта. Например, если 74LS04, используйте 74LS14. Триггеры Шмитта обеспечивают подавление дребезга переключателей.
@StainlessSteelRat Вам все еще нужна сеть RC - глядя на отличные трассировки Джеффри (+1 за это), отскоки достаточно глубоки, чтобы вызвать изменение выходных данных, несмотря на дополнительный гистерезис поля. Хорошая ссылка: pubweb.eng.utah.edu/~cs5780/debouncing.pdf
У меня действительно был конденсатор в цепи в качестве RC-цепи. На фото выше его не было. Я отредактирую и выложу фото сработавшей волны от нажатия переключателя. Причина, по которой я не включил крышку на схему, заключалась в том, что я думал, что это не имеет значения в этой версии моего теста схемы. С крышкой падение напряжения от нажатия переключателя происходит мгновенно, затем следует постепенное нарастание напряжения с течением времени (0,3 секунды или около того). Падение напряжения от нажатия переключателя через инвертор - это то, что создает мои часы.
Спасибо за редактирование - попробуйте уменьшить значения конденсатора или резистора в 10 раз, константа RC, вероятно, слишком высока, поэтому вход инвертора находится в неопределенной области слишком долго.

Ответы (1)

Чтобы немного заполнить комментарии, проблема (я подозреваю) заключается в том, что ваша схема устранения дребезга RC имеет неправильный размер. С С "=" 3.3   мю Ф и р "=" 100   к Ом дает постоянную времени 0,33   с . Ваши следы показывают, что когда вы замыкаете переключатель, вы получаете хороший чистый край (как и следовало ожидать). Когда вы отпускаете переключатель, конденсатор начинает заряжаться. Используя уравнение В С "=" В я н ( 1 е т р С ) , вы можете переставить, чтобы найти т "=" р С п ( 1 В С В я н ) . Используя значения В я л "=" 1   В (максимальный логический НИЗКИЙ вход) и В я ЧАС "=" 4   В (минимальный логический ВЫСОКИЙ вход) из таблицы инвертора показывает, что вход инвертора находится в неопределенном состоянии ( В я л < В я н < В я ЧАС ) около 460 мс. Это согласуется с тем, что вы видите дополнительный переход в середине задней кромки. Попробуйте уменьшить значение либо р или С в 10 раз, а в идеале также использовать входной инвертор с триггером Шмитта, как предлагается в комментариях.

Спасибо. Я попробую то, что вы говорите. Я рассчитал 0,33, а также около 5RC (1,65) для заряда, что, вероятно, слишком долго. Я уменьшу значения и куплю триггерный инвертор Шмита.