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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помощь в первом проекте (Verilog).
Stolbov
сообщение Aug 5 2017, 18:02
Сообщение #1





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



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

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


Местный
***

Группа: Участник
Сообщений: 409
Регистрация: 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 851
Регистрация: 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


Гуру
******

Группа: Модераторы
Сообщений: 3 641
Регистрация: 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





Группа: Новичок
Сообщений: 3
Регистрация: 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


Гуру
******

Группа: Модераторы
Сообщений: 3 641
Регистрация: 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 612
Регистрация: 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


Гуру
******

Группа: Модераторы
Сообщений: 3 641
Регистрация: 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


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 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





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



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


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

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



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


Местный
***

Группа: Участник
Сообщений: 409
Регистрация: 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 851
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



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


Гуру
******

Группа: Модераторы
Сообщений: 3 641
Регистрация: 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


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

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



В дребезжащей кнопке будут микро-искры-дуги при каждом соединении-разъединении контакта. С конденсатором переключений будет меньше.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th October 2017 - 12:31
Рейтинг@Mail.ru


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