Stolbov 0 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Друзья, добрый вечер! Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog. Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам, и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая: я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 5 августа, 2017 Опубликовано 5 августа, 2017 (изменено) · Жалоба Друзья, добрый вечер! Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog. Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам, и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая: я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы. Есть такое явление - дребезг контактов. Кнопку Вы нажали один раз, а из-за механических колебаний, возникающих при нажатии, кнопка сработала несколько раз. Напишите модуль анти дребезга. Изменено 5 августа, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Друзья, добрый вечер! Доброго! Да, как уже подсказали, нужен антидребезг. Это либо простой фильтр с достаточным временным периодом (десяток-другой миллисекунд), либо просто считывание состояния кнопки с ещё большим периодом, к примеру - один раз в 100 миллисекунд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы. Могу рассказать как надо делать проекты... По скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stolbov 0 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Могу рассказать как надо делать проекты... По скайпу... Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь. Желаю удачи. И учтите, что главная ошибка в этом - "я сразу приступил к экспериментам"... ПЛИС - это не микроконтроллер... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба Скажите, пожалуйста, как можно исправить эту проблему? припаяйте конденсатор параллельно кнопке и никого не слушайте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 августа, 2017 Опубликовано 5 августа, 2017 · Жалоба припаяйте конденсатор параллельно кнопке и никого не слушайте Уточняю... Одним то концом конечно к кнопке. А вот второй конец сложнее. Надо просверлить левый верхний угол микросхемы, примерно на 2 мм от края и туда запаять. Потом как положено протереть зеркальце заднего вида и пнуть колесо. И никого не слушать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба и никого не слушайте Вот-вот. Лучше сразу гуглите "fpga debounce push button". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stolbov 0 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба Всем спасибо за ответы! В действительности я нашёл ответ на одном из зарубежных сайтов с примером простого кода на Verilog. Разобравшись в нём, я его испытал и убедился, что дребезг успешно "гасится"! :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба Конденсатор тоже поставьте. Всех слушайте. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 6 августа, 2017 Опубликовано 6 августа, 2017 (изменено) · Жалоба припаяйте конденсатор параллельно кнопке и никого не слушайте И из-за больших начальных значений токов при разряде этого конденсатора, контакты кнопки в скором времени могут придти в негодность. Тогда надо ещё и сопротивление поставить. В CPLD где мало ячеек это имело бы смысл. В FPGA где ячеек очень и очень много, и редко когда FPGA забита на 100%, то почему бы не потратить несколько LEs на антидребезг ? Тем более если брать серьезные проекты, которые выпускаются многотысячными партиями, то там ещё и экономия будет, за счет того, что нет необходимости ставить лишние радиоэлементы, которые денег стоят. Изменено 6 августа, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах? Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах? Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень. Конденсатор - это для игрунов...Или для подельщиков одной уникальной игрушки... Ну неужели я буду изучать дребезг "с конденсатором", если простейший фильтр закрывает проблему навсегда и во всех проектах? А ресурсы под это как "капля в ведро"... причем дальше становится абсолютно наплевать, пологие там фронты или нет. Задан параметр "время дребезга" и этого достаточно для проекта. Все остальное должно пересчитаться автоматически из тактовой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 августа, 2017 Опубликовано 6 августа, 2017 · Жалоба В дребезжащей кнопке будут микро-искры-дуги при каждом соединении-разъединении контакта. С конденсатором переключений будет меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться