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

 
 
> Помощь в первом проекте (Verilog).
Stolbov
сообщение Aug 5 2017, 18:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 5-08-17
Из: Санкт-Петербург
Пользователь №: 98 653



Друзья, добрый вечер!

Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog.
Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам,
и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая:
я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии
кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 27)
Flip-fl0p
сообщение Aug 5 2017, 18:18
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Stolbov @ Aug 5 2017, 21:02) *
Друзья, добрый вечер!

Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog.
Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам,
и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая:
я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии
кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы.

Есть такое явление - дребезг контактов. Кнопку Вы нажали один раз, а из-за механических колебаний, возникающих при нажатии, кнопка сработала несколько раз.
Напишите модуль анти дребезга.

Сообщение отредактировал Flip-fl0p - Aug 5 2017, 18:18
Go to the top of the page
 
+Quote Post
sonycman
сообщение Aug 5 2017, 18:28
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Stolbov @ Aug 5 2017, 22:02) *
Друзья, добрый вечер!

Доброго!

Да, как уже подсказали, нужен антидребезг.
Это либо простой фильтр с достаточным временным периодом (десяток-другой миллисекунд), либо просто считывание состояния кнопки с ещё большим периодом, к примеру - один раз в 100 миллисекунд.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 5 2017, 19:09
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Stolbov @ Aug 5 2017, 21:02) *
Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы.

Могу рассказать как надо делать проекты... По скайпу...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Stolbov
сообщение Aug 5 2017, 19:11
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 5-08-17
Из: Санкт-Петербург
Пользователь №: 98 653



Цитата(iosifk @ Aug 5 2017, 22:09) *
Могу рассказать как надо делать проекты... По скайпу...

Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 5 2017, 19:27
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Stolbov @ Aug 5 2017, 22:11) *
Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь.

Желаю удачи. И учтите, что главная ошибка в этом - "я сразу приступил к экспериментам"... ПЛИС - это не микроконтроллер...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 5 2017, 19:35
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Stolbov @ Aug 5 2017, 19:02) *
Скажите, пожалуйста, как можно исправить эту проблему?

припаяйте конденсатор параллельно кнопке и никого не слушайте
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 5 2017, 20:53
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Огурцов @ Aug 5 2017, 22:35) *
припаяйте конденсатор параллельно кнопке и никого не слушайте

Уточняю... Одним то концом конечно к кнопке. А вот второй конец сложнее. Надо просверлить левый верхний угол микросхемы, примерно на 2 мм от края и туда запаять. Потом как положено протереть зеркальце заднего вида и пнуть колесо. И никого не слушать.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Corvus
сообщение Aug 6 2017, 07:05
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(Огурцов @ Aug 5 2017, 22:35) *
и никого не слушайте


Вот-вот. Лучше сразу гуглите "fpga debounce push button".
Go to the top of the page
 
+Quote Post
Stolbov
сообщение Aug 6 2017, 08:31
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 5-08-17
Из: Санкт-Петербург
Пользователь №: 98 653



Всем спасибо за ответы! В действительности я нашёл ответ на одном из зарубежных сайтов с примером простого кода на Verilog. Разобравшись в нём,
я его испытал и убедился, что дребезг успешно "гасится"! yeah.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 6 2017, 08:49
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Конденсатор тоже поставьте. Всех слушайте. rolleyes.gif
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 6 2017, 08:50
Сообщение #12


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Огурцов @ Aug 5 2017, 22:35) *
припаяйте конденсатор параллельно кнопке и никого не слушайте

И из-за больших начальных значений токов при разряде этого конденсатора, контакты кнопки в скором времени могут придти в негодность. Тогда надо ещё и сопротивление поставить. В CPLD где мало ячеек это имело бы смысл. В FPGA где ячеек очень и очень много, и редко когда FPGA забита на 100%, то почему бы не потратить несколько LEs на антидребезг ? Тем более если брать серьезные проекты, которые выпускаются многотысячными партиями, то там ещё и экономия будет, за счет того, что нет необходимости ставить лишние радиоэлементы, которые денег стоят.

Сообщение отредактировал Flip-fl0p - Aug 6 2017, 08:57
Go to the top of the page
 
+Quote Post
sonycman
сообщение Aug 6 2017, 09:19
Сообщение #13


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах?
Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 6 2017, 09:30
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(sonycman @ Aug 6 2017, 12:19) *
Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах?
Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень.

Конденсатор - это для игрунов...Или для подельщиков одной уникальной игрушки...
Ну неужели я буду изучать дребезг "с конденсатором", если простейший фильтр закрывает проблему навсегда и во всех проектах? А ресурсы под это как "капля в ведро"...
причем дальше становится абсолютно наплевать, пологие там фронты или нет. Задан параметр "время дребезга" и этого достаточно для проекта. Все остальное должно пересчитаться автоматически из тактовой...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 6 2017, 11:15
Сообщение #15


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В дребезжащей кнопке будут микро-искры-дуги при каждом соединении-разъединении контакта. С конденсатором переключений будет меньше.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 6 2017, 11:31
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(ViKo @ Aug 6 2017, 14:15) *
В дребезжащей кнопке будут микро-искры-дуги при каждом соединении-разъединении контакта. С конденсатором переключений будет меньше.

Если говорить об энергии, то при размыкании ток определится резистором. А при замыкании без конденсатора - тоже резистором. А вот с конденсатором ток чем определится? Внутренним сопротивлением конденсатора и подводящими проводами. И мне кажется, что ток в этом случае будет больше. А при экстраполяции к большому конденсатору - вообще сварочная дуга. Так где же выигрыш?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 6 2017, 12:36
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Flip-fl0p @ Aug 6 2017, 08:50) *
выпускаются многотысячными партиями

это первые проекты, типа кнопка со светодиодом, многотысячными партиями ? купите, продам недорого


Цитата(iosifk @ Aug 6 2017, 09:30) *
Ну неужели я буду изучать дребезг "с конденсатором"

звучит минимум на докторскую

Цитата(iosifk @ Aug 6 2017, 09:30) *
Задан параметр "время дребезга" и этого достаточно для проекта. Все остальное должно пересчитаться автоматически из тактовой...

а rc можно посчитать один раз и никогда не пересчитывать независимо ни от тактовой, ни от чипа
короче, сабж!

Сообщение отредактировал Огурцов - Aug 6 2017, 12:37
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 6 2017, 12:43
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Огурцов @ Aug 6 2017, 15:36) *
а rc можно посчитать один раз и никогда не пересчитывать независимо ни от тактовой, ни от чипа
короче, сабж!

Можно конечно и без параметров, но сидеть и ждать от симулятора подавления дребезга лень.
мне вполне хватает двух наборов параметров, один для дебага, второй для релиза. Достаточно сказать параметру в тестбенче, что это дебаг...
Просто мне так удобнее...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 6 2017, 13:00
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(iosifk @ Aug 6 2017, 14:31) *
Если говорить об энергии, то при размыкании ток определится резистором. А при замыкании без конденсатора - тоже резистором. А вот с конденсатором ток чем определится? Внутренним сопротивлением конденсатора и подводящими проводами. И мне кажется, что ток в этом случае будет больше. А при экстраполяции к большому конденсатору - вообще сварочная дуга. Так где же выигрыш?

Можно и с конденсатора ток ограничить резистором.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 6 2017, 13:30
Сообщение #20


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Огурцов @ Aug 6 2017, 15:36) *
это первые проекты, типа кнопка со светодиодом, многотысячными партиями ? купите, продам недорого

Безусловно конденсатор и резистор решат проблему дребезга. Но:
1. Резистор с конденсатором надо ещё найти.
2. Надо найти место чтобы их припаять.
3. Их надо ещё припаять.
Спорить не буду, резистор с конденсатором решение проверенное и вполне рабочее. Но правильное ли ? Тем более человек только учится. Так пусть человек научится решать проблему дребезга путем схемы на HDL. А когда пойдут серьезные проекты человек будет уже выбирать наиболее рациональный способ подавления дребезга.

Сообщение отредактировал Flip-fl0p - Aug 6 2017, 13:31
Go to the top of the page
 
+Quote Post
варп
сообщение Aug 6 2017, 15:04
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 926
Регистрация: 9-08-15
Пользователь №: 87 913



Stolbov, "подавление дребезга" - реально важная задача... А использование конденсатора - это НАИХУДШИЙ вариант подавления дребезга... Скорее - это не решение проблемы вообще... Не верите - соберите простейшую схему со счётчиком, который будет считать импульсы с механической кнопки... Через пол-часа Вы убедитесь, что гарантированно дребезг подавить просто конденсатором невозможно....
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Aug 6 2017, 17:13
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Flip-fl0p @ Aug 6 2017, 13:30) *
Спорить не буду, резистор с конденсатором решение проверенное и вполне рабочее. Но правильное ли ? Тем более человек только учится

решение с конденсатором неправильное, но вполне рабочее, тем более человек только учится
гораздо интереснее посмотреть на мигающий светодиод в реале, чем абстрактно пытаться представить какие-то процессы, происходящие в кнопке
в любом случае - это способ разбить задачу на части и решить маленькие части по очереди, а не свалив всё в кучу, решать систему уравнений с эн неизвестными


Сообщение отредактировал Огурцов - Aug 6 2017, 17:16
Go to the top of the page
 
+Quote Post
AVR
сообщение Aug 6 2017, 17:24
Сообщение #23


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Огурцов @ Aug 6 2017, 20:13) *
гораздо интереснее посмотреть на мигающий светодиод в реале, чем абстрактно пытаться представить какие-то процессы, происходящие в кнопке

Новичок вполне может быть укомплектован осциллом sm.gif
Хотя осцилл после универа, а что - есть дешевые.


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 7 2017, 07:14
Сообщение #24


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



STM 32F411EDISCOVERY
Конденсатор на USER кнопке не запаян, но был предусмотрен.
Конденсатор на кнопке RESET стоит. Хотя, конденсатор здесь, скорее, для сброса по включению питания. Ну, это особая кнопка.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vladec
сообщение Aug 7 2017, 08:19
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Это не конденсатор подавления дребезга, а цепь начального ресета. Реальное использование RC для подавления дребезга дело мало перспективное.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 7 2017, 09:17
Сообщение #26


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(vladec @ Aug 7 2017, 11:19) *
Это не конденсатор подавления дребезга, а цепь начального ресета.

Я так и написал.
Цитата
Реальное использование RC для подавления дребезга дело мало перспективное.

Вместе с программной обработкой, конечно.
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Aug 7 2017, 10:13
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



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

Никто не обращал внимание как глючит клава если рядом работает разрядник?
Go to the top of the page
 
+Quote Post
Corner
сообщение Aug 7 2017, 12:40
Сообщение #28


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(rudy_b @ Aug 7 2017, 13:13) *
Никто не обращал внимание как глючит клава если рядом работает разрядник?

Клавиатура (Клава это женское имя) не глючит. Появляются ошибки в работе контролера/моста, куда она подключена. Вплоть, до выгорания последнего. Лично спалил один ОС/2 и пару USB.
По сабжу. Если кнопки снаружи используются, то конденсаторов мало. Нужны варисторы/сапрессоры - гасить разряд и R2D цепочка - ограничивать ток.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:47
Рейтинг@Mail.ru


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