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

 
 
> Новичковое: дребезг кнопок
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
Ответов
maxfox2k
сообщение Jan 25 2008, 11:48
Сообщение #2


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

Группа: Участник
Сообщений: 90
Регистрация: 14-09-05
Пользователь №: 8 553



обычно достаточно сканировать 20 - 50 ms интервалами, без всяких дополнительных проверок. смотря что за кнопка.

rc цепочка нужна, если не желаете спалить себе чип электростатикой.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 25 2008, 12:44
Сообщение #3


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Я на железном уровне делал так.
1. Оценивал возможное время дребезга сигнала по максимуму.
2. Делал регистр сдвига (хватает 2-4 сдвигов): на вход данных подавал сигнал, в качестве тактового сигнала использовал некоторую частоту. Она считается Fc<= 1/Tдребезга * Количество_сдвигов
3. Выходы регистра сдвига соединял по И.
Выход И - это сигнал без дребезга.
Что-то типа.
//-----------------------------------------------
always @ (posedge PhaseCLK[0])
begin
tempReg[5:3]<={tempReg[4:3],tempReg[0]};
end

assign temp=tempReg[5]&tempReg[4]&tempReg[3]&tempReg[0];
//--------------------------------------------------
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 22:21
Рейтинг@Mail.ru


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