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

В лабораторных работах по цифровой схемотехнике при изучении триггеров, регистров и счетчиков для подачи тактовых импульсов с помощью кнопки Bottom рекомендуется использовать блок Antitinkling. Данный блок предназначен для подавления дребезга контактов. Из-за этого явления непосредственное подключение кнопки с механическим замыканием контактов к цифровой схеме не всегда допустимо. Суть дребезга заключается в многократном неконтролируемом замыкании и размыкании контактов в момент коммутации, в результате чего на цифровую схему подается множество импульсов вместо одного.

Для тех кто пишет на Verilog или хочет узнать о других способах реализации рекомендуем:
Подавляем дребезг контактов в ПЛИС. Debouncer на Verilog

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

Дребезг контактов при замыкании кнопки
Рисунок 1 – Дребезг контактов при замыкании кнопки
 
нажатие кнопки осцилограмма
Рисунок 2 – Диаграмма нажатия кнопки

Схема для подавления дребезга контактов показана на рисунке 3 и состоит из двухступенчатого D-триггера, работающего по переднему фронту (по умолчанию в Quartus II), и генератора управляющих импульсов. Для генерации управляющих импульсов используется внешний тактовый генератор и делитель частоты.

схема подавителя дребезга
Рисунок 3 – Функциональная схема подавителя дребезга

Схема фиксирует логическое состояние на сигнальной линии только в момент времени подачи импульса. Время фиксации определяется длительностью фронта управляющего импульса и для микросхемы EP1C3T144C8 (ПЛИС FPGA) составляет несколько нано секунд (нс). За это время уровень на линии кнопки измениться не может и в триггер будет записано текущее состояние кнопки.

Частота тактового генератора в учебных стендах LESO2 равна 6 МГц, в стендах LESO2.1 и LESO2.3 – 50 МГц. Делитель частоты должен обеспечить интервал между импульсами больше, чем длительность дребезга и менее чем длительность нажатия кнопки. Мы рекомендуем выбрать интервал 50 – 100 мс. На рисунке 4 показаны диаграммы работы схемы.

схема подавителя дребезга
Рисунок 4 – Диаграмма работы подавителя дребезга (debounce)

На рисунке 5 показана схема подавителя дребезга в графическом редакторе Quartus II. На рисунках 6 и 7 показано как добавить в проект счетчик-делитель частоты и настроить его с помощью MegaWizerd Plug in Manager.

Схема дребезг контактов (debounce) в среде Quartus II
Рисунок 5 – Схема подавителя дребезга (debounce) в среде Quartus II

На устаревших стендах LESO2 для того, чтобы внешний генератор заработал, необходимо на pin91 подать логическую "1", в новых стендах LESO2.1 и LESO2.3 этого делать не нужно.

Выбор счетчика (lpm_counter) в среде Quartus II
Рисунок 6 – Выбор счетчика (lpm_counter) в среде Quartus II
lpm_counter MegaWizard счетчик Quartus II
Рисунок 7 – Настройка счетчика (lpm_counter)

При необходимости разрядность счетчика, а, следовательно, период следования управляющих импульсов, может быть отредактирован. Для этого следует запустить MegaWizard двойным кликом мыши по объекту lpm_counter.

Комментарии:



Аватар пользователя BiobioLibe
Math. Одна из серьезных проблем, с которой приходится сталкиваться при конструировании цифровых устройств дребезг контактов механических кнопок и переключателей.
Орфографическая ошибка в тексте:
Чтобы сообщить об ошибке автору, нажмите кнопку "Отправить сообщение об ошибке". Вы также можете отправить свой комментарий.