Программный антидребезг контактов в FPGA/ПЛИС в блок-схемах на EPM240

Программный антидребезг контактов в FPGA/ПЛИС в блок-схемах на EPM240

Дребезг контактов можно устранить специальными микросхемами, конденсатором с резистором или же программно, что я и сделал.

В прошлых статьях о D-триггерах и счетчике в плис можно было видеть негативное влияние дребезга контактов. На моей отладочной плате ПЛИС на микросхеме Altera MAX II EPM240T100I5 нет внешнего антидребезга на кнопках. Поэтому я реализовал его программно для кнопки переключения триггера. D триггер я заменил на T-триггер (примитив TFF, TFFE). В этой статье рассмотрим вариант антидребезга в Quartus II с блок-схемами.

При нажатии кнопки, в момент смыкания контактов, может происходить многократное смыкание/размыкание контактов - это называют дребезгом контактов. Чтобы побороть дребезг программно я использовал счетчик lpm_counter и оператор XOR.

Выставляем 10-15 бит разрядность счетчика и счет вверх (up).

программный антидребезг lpm_counter

Еще нам понадобятся дополнительные выводы счетчика Counter Enable (cnt_en) для включения/выключения и Carry-out (cout) флаг переноса для определения переполнения счетчика.

настройка lpm_counter для программного антидребезга

Полная схема

антидребезг контактов плис

При включении платы счетчик выключен. При нажатии кнопки мы получим лог. единицу на выходе NOT. Это включит счетчик через XOR.

Когда счетчик досчитает на выходе установится флаг переноса. Это подаст сигнал clk на T-триггер (TFF). На входе T примитива TFF будет лог. 1, это переключит выход триггера в противоположное состояние. Также это подаст лог. 1 на второй вход XOR, и выключит счетчик. Когда кнопка будет отпущена, на второй выход XOR все еще будет поступать лог. 1 с выхода счетчика, это запустит счетчик на 1 такт и флаг переноса пропадет. Таким образом счетчик опять остановиться до следующего нажатия на кнопку.

Демонстрация работы кнопки с антидребезгом

При копировании материалов ссылка на https://terraideas.ru/ обязательна

Комментарии к статье: Программный антидребезг контактов в FPGA/ПЛИС в блок-схемах на EPM240

Нет ни одного комментария. Будьте первым!