реклама на сайте
подробности

 
 
> Новичковое: дребезг кнопок
ReedCat
сообщение Jan 25 2008, 09:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 109
Регистрация: 14-01-08
Из: Москва
Пользователь №: 34 069



Приветствую!

Начал пробовать свои силы в работе с FPGA.
Схемотехникой немного занимался, но очень давно (ещё когда PLM были "будущим электроники", а не её настоящим), поэтому сразу стали возникать "вопросы новичка". Буду признателен за разъяснения.

Итак, дано: макетная плата с Spartan-3E, ISE Webpack.
Прогоняю технологическую цепочку, чтобы понять, как "оно" работает, на примитивном тесте: светодиодиками на макетной плате помигать. Мигает. Дальше хочу задействовать имеющуюся кнопку для управления процессом (выключения светодиодика).

Придумывается что-то типа:


reg ONOFF;

...
always @(posegde clk) if ( ~ butt) ONOFF = ~ ONOFF;
...

assign LED = ONOFF & .... ;

И "меня терзают смутные сомнения", придуманная конструкция явно неустойчива к "дребезгу" контактов кнопки.
Какой стандартный ход применяют те, кто уже имеет опыт? Делят такт и опрашивают реже? А что если единственный опрос придётся как раз на время дребезга?


Посоветуйте, пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Liseev
сообщение Jan 25 2008, 10:00
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 99
Регистрация: 27-10-07
Из: СПб
Пользователь №: 31 797



Во-первых частоту clk нужно подобрать такую, чтобы переходные процессы (дребезг) по длительности не превышали ее период, порядка 50 - 100 Гц, во-вторых дабы избежать случайного защелкивания неверного уровня, нужно использовать как минимум 2 регистра, защелкивающие сигнал с разницей по времени в один период clk. Если оба регистра защелкнули одинаковое значение - принимайте новое состояние кнопки
Go to the top of the page
 
+Quote Post
ReedCat
сообщение Jan 25 2008, 10:18
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 109
Регистрация: 14-01-08
Из: Москва
Пользователь №: 34 069



Цитата(Liseev @ Jan 25 2008, 13:00) *
Во-первых частоту clk нужно подобрать такую, чтобы переходные процессы (дребезг) по длительности не превышали ее период, порядка 50 - 100 Гц,

понятно, делим клок.
Цитата
во-вторых дабы избежать случайного защелкивания неверного уровня, нужно использовать как минимум 2 регистра, защелкивающие сигнал с разницей по времени в один период clk. Если оба регистра защелкнули одинаковое значение - принимайте новое состояние кнопки

и берем два отсчёта.

Спасибо, буду пробовать



Цитата(iosifk @ Jan 25 2008, 13:02) *
1. сдвиговый регистр. сдвигаете сигнал, когда все выходы 1, значит 1.

Не осознал. sad.gif Можно поподробнее.
Цитата
Или реверсивный счетчик. два уровня ниже или равно нижней планке - 0, выше или равно верхней - 1.

Это понял. smile.gif
Цитата
2. Таймер. запускается сигналом и блокирует поступление сигнала на время.

Это тоже понял. Чуть в другом виде правда, стробирование "медленным" клоком. То, что уже порекомендовали.
Цитата
3. Микропроцессор...

Не очень понял. sad.gif Что "микропроцессор"? На прерывание кнопку повесить? Там с дребезгом ещё хуже будет. sad.gif Циклом программным опрашивать?

Цитата
Про RC-цепочки - забудьте!


Хех... Уже забыл smile.gif


Спасибо!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 06:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016