|
Новичковое: дребезг кнопок |
|
|
|
Jan 25 2008, 09:48
|

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

|
Приветствую!
Начал пробовать свои силы в работе с FPGA. Схемотехникой немного занимался, но очень давно (ещё когда PLM были "будущим электроники", а не её настоящим), поэтому сразу стали возникать "вопросы новичка". Буду признателен за разъяснения.
Итак, дано: макетная плата с Spartan-3E, ISE Webpack. Прогоняю технологическую цепочку, чтобы понять, как "оно" работает, на примитивном тесте: светодиодиками на макетной плате помигать. Мигает. Дальше хочу задействовать имеющуюся кнопку для управления процессом (выключения светодиодика).
Придумывается что-то типа:
reg ONOFF;
... always @(posegde clk) if ( ~ butt) ONOFF = ~ ONOFF; ...
assign LED = ONOFF & .... ;
И "меня терзают смутные сомнения", придуманная конструкция явно неустойчива к "дребезгу" контактов кнопки. Какой стандартный ход применяют те, кто уже имеет опыт? Делят такт и опрашивают реже? А что если единственный опрос придётся как раз на время дребезга?
Посоветуйте, пожалуйста.
|
|
|
|
|
 |
Ответов
|
Jan 25 2008, 10:02
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(ReedCat @ Jan 25 2008, 12:48)  Приветствую!
Итак, дано: макетная плата с Spartan-3E, ISE Webpack. Прогоняю технологическую цепочку, чтобы понять, как "оно" работает, на примитивном тесте: светодиодиками на макетной плате помигать. Мигает. Дальше хочу задействовать имеющуюся кнопку для управления процессом (выключения светодиодика).
И "меня терзают смутные сомнения", придуманная конструкция явно неустойчива к "дребезгу" контактов кнопки. Какой стандартный ход применяют те, кто уже имеет опыт? Делят такт и опрашивают реже? А что если единственный опрос придётся как раз на время дребезга? Посоветуйте, пожалуйста. 1. сдвиговый регистр. сдвигаете сигнал, когда все выходы 1, значит 1. Или реверсивный счетчик. два уровня ниже или равно нижней планке - 0, выше или равно верхней - 1. 2. Таймер. запускается сигналом и блокирует поступление сигнала на время. 3. Микропроцессор... Про RC-цепочки - забудьте!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 25 2008, 10:39
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(sazh @ Jan 25 2008, 13:24)  А если таких кнопок - за 100 будет? А если кнопок будет много, то их собирают в матрицу и матрицу сканируют. Память, счетчик и сумматор-вычитатель (аккумулятор)... Делают 100 ячеек памяти для промежуточного результата. На нужном такте читают память и делают инкремент или декремент и результат пишут обратно в память. Ресурсы: 100 ячеек памяти, счетчик адресов, сумматор-вычитатель, регистр, автомат на несколько состояний... Как видите, абсолютно ничего сложного.... А простейший фильтр - это сдвиговый регистр, с него все выходы и вход подаются на И, оттуда на S-вход триггера. Также все сигеалы подаются на ИЛИ-НЕ, оттуда на вход К триггера. При всех "1" в сдвиговом регистре, триггер переключится в 1, при всех нулях - в "0"... Реверсивный счетчик с двумя уровнями - это понятно. Ну а микроконтроллер - это если он уже есть в проекте. Обработка кнопки программная, как обычно. Просто я всегда представлял, что проект делается не только для обработки одной кнопки...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 25 2008, 11:11
|

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

|
Цитата(iosifk @ Jan 25 2008, 13:39)  Ну а микроконтроллер - это если он уже есть в проекте. Обработка кнопки программная, как обычно. Просто я всегда представлял, что проект делается не только для обработки одной кнопки... В проекте, конечно, кнопка исчезающе малая деталь. Но нужная иногда.  Что же касается микроконтроллера, то пока просветления не могу достичь. Программно на нем сделать стробирование и/или мажоритарную обработку? Но это нужно вешать в обработчик таймерного прерывания, которому, обычно, и так есть чем заняться. Чем это может оказаться лучше решения, если "дребезг" сначала убрать схемно (накладные расходы вроде небольшие?) и уж потом заводить сигнал на порт микроконтроллера для считывания (а попутно еще на линию прерывания, чтобы поллингом его не долбить)?
|
|
|
|
Сообщений в этой теме
ReedCat Новичковое: дребезг кнопок Jan 25 2008, 09:48 Liseev Во-первых частоту clk нужно подобрать такую, чтобы... Jan 25 2008, 10:00 ReedCat Цитата(Liseev @ Jan 25 2008, 13:00) Во-пе... Jan 25 2008, 10:18   sazh Цитата(iosifk @ Jan 25 2008, 13:39) Прост... Jan 25 2008, 11:29 rv3dll(lex) --filtrovanije dannih luart
process (Bus2IP_Clk) ... Jan 25 2008, 11:34 maxfox2k обычно достаточно сканировать 20 - 50 ms интервала... Jan 25 2008, 11:48 alexander55 Я на железном уровне делал так.
1. Оценивал возмож... Jan 25 2008, 12:44 ReedCat Нашел ликвидатор дребезга в шаблонах стандартных к... Jan 26 2008, 11:39 essev Цитата(ReedCat @ Jan 25 2008, 12:48) Прив... Jan 28 2008, 10:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|