logo
Ответы на вопросы экз

58. Дребезг механических переключателей и метод его устранения

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

Рисунок 5.29 – Дребезг механических переключателей

Для выхода из положения необходимо использовать стробирующий сигнал, разрешающий синхронизацию. Его нужно подавать с переключателя или кнопки, а синхросигнал подключать с генератора. Поскольку период синхросигнала значительно меньше времени нажатия кнопки или переключателя, то за одно нажатие (подачу сигнала разрешения синхронизации) или переключение автомат может перейти в t+1 состояние много раз, и мы не сможем наблюдать его пошаговую работу. Поэтому нужна схема, формирующая на выходе единичный импульс в течение одного синхротакта для разрешения синхронизации (внутренний строб). Эта схема должна также учитывать, что внешний строб сигнал, подаваемый с переключателя или кнопки, тоже имеет дребезг. Таким образом, необходима антидребезговая схема для формирования единичного импульса (внутреннего строба), подаваемого на автомат по нажатию кнопки или переключателя (внешнего строба). Ниже на рис. 5.30 представлена временная диаграмма, иллюстрирующая данную идею. Здесь AD –антидребезговая схема, En – внешний строб, EnFSM – внутренний строб.

Рисунок 5.30– Формирование внутреннего строба

Структура антидребезговой схемы и поясняющие ее работу временные диаграммы представлены на рис. 5.31. Временные диаграммы приведены с учетом задержек срабатывания элементов.

Период синхроимпульса должен быть больше времени дребезга. Если передний фронт синхроимпульса Clk поступит в момент дребезга, значение 0 или 1 будет сохранено в триггере в момент t1. При наличии 0 единица будет получена при следующем активном фронте синхроимпульса (t2). Поэтому сигнал S1 является беспомеховой и синхронизированной версией сигнала AD_in.

Рисунок 5.31 – Антидребезговая схема и ее временные диаграммы с учетом задержек

Тем не менее, возможность ошибки существует, если изменение сигнала AD_in будет близко к активному фронту синхроимпульса, что приведет к нарушению времени установки и хранения. В таком случае выход триггера может начать генерировать или выдать неправильный результат. Хотя такая ситуация встречается редко, лучше исключить ее, добавив еще один триггер S2, который хранит задержанное на один такт значение входного сигнала и позволяет обнаружить его изменение. Сигнал AD_out в течение одного синхротакта равен 1, если на входе AD_in произошло изменение значения с 0 на 1. На диаграмме сигналы S1 и S2 приведены для случая, когда на S0 захватывается 0 во время дребезга.