|
Помощь в первом проекте (Verilog). |
|
|
|
Aug 5 2017, 18:02
|
Участник

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

|
Друзья, добрый вечер!
Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog. Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам, и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая: я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 27)
|
Aug 5 2017, 18:18
|

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

|
Цитата(Stolbov @ Aug 5 2017, 21:02)  Друзья, добрый вечер!
Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog. Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам, и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая: я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии кнопки, увеличивается на единицу. Схема состоит из счётчика, выход которого подключён к дешифратору. Выходы дешифратора подключены к сегментам индиктора (нужный индикатор я "зажигаю" подачей на него сигнала clock). При нажатии кнопки на индикаторе появляется случайное число, и никакого увеличения на единицу не происходит. Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы. Есть такое явление - дребезг контактов. Кнопку Вы нажали один раз, а из-за механических колебаний, возникающих при нажатии, кнопка сработала несколько раз. Напишите модуль анти дребезга.
Сообщение отредактировал Flip-fl0p - Aug 5 2017, 18:18
|
|
|
|
|
Aug 5 2017, 19:11
|
Участник

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

|
Цитата(iosifk @ Aug 5 2017, 22:09)  Могу рассказать как надо делать проекты... По скайпу... Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь.
|
|
|
|
|
Aug 6 2017, 08:31
|
Участник

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

|
Всем спасибо за ответы! В действительности я нашёл ответ на одном из зарубежных сайтов с примером простого кода на Verilog. Разобравшись в нём, я его испытал и убедился, что дребезг успешно "гасится"!
|
|
|
|
|
Aug 6 2017, 08:50
|

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

|
Цитата(Огурцов @ Aug 5 2017, 22:35)  припаяйте конденсатор параллельно кнопке и никого не слушайте И из-за больших начальных значений токов при разряде этого конденсатора, контакты кнопки в скором времени могут придти в негодность. Тогда надо ещё и сопротивление поставить. В CPLD где мало ячеек это имело бы смысл. В FPGA где ячеек очень и очень много, и редко когда FPGA забита на 100%, то почему бы не потратить несколько LEs на антидребезг ? Тем более если брать серьезные проекты, которые выпускаются многотысячными партиями, то там ещё и экономия будет, за счет того, что нет необходимости ставить лишние радиоэлементы, которые денег стоят.
Сообщение отредактировал Flip-fl0p - Aug 6 2017, 08:57
|
|
|
|
|
Aug 6 2017, 09:30
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(sonycman @ Aug 6 2017, 12:19)  Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах? Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень. Конденсатор - это для игрунов...Или для подельщиков одной уникальной игрушки... Ну неужели я буду изучать дребезг "с конденсатором", если простейший фильтр закрывает проблему навсегда и во всех проектах? А ресурсы под это как "капля в ведро"... причем дальше становится абсолютно наплевать, пологие там фронты или нет. Задан параметр "время дребезга" и этого достаточно для проекта. Все остальное должно пересчитаться автоматически из тактовой...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Aug 6 2017, 12:36
|
Гуру
     
Группа: Участник
Сообщений: 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
|
|
|
|
|
Aug 6 2017, 12:43
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Огурцов @ Aug 6 2017, 15:36)  а rc можно посчитать один раз и никогда не пересчитывать независимо ни от тактовой, ни от чипа короче, сабж! Можно конечно и без параметров, но сидеть и ждать от симулятора подавления дребезга лень. мне вполне хватает двух наборов параметров, один для дебага, второй для релиза. Достаточно сказать параметру в тестбенче, что это дебаг... Просто мне так удобнее...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Aug 6 2017, 13:30
|

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

|
Цитата(Огурцов @ Aug 6 2017, 15:36)  это первые проекты, типа кнопка со светодиодом, многотысячными партиями ? купите, продам недорого Безусловно конденсатор и резистор решат проблему дребезга. Но: 1. Резистор с конденсатором надо ещё найти. 2. Надо найти место чтобы их припаять. 3. Их надо ещё припаять. Спорить не буду, резистор с конденсатором решение проверенное и вполне рабочее. Но правильное ли ? Тем более человек только учится. Так пусть человек научится решать проблему дребезга путем схемы на HDL. А когда пойдут серьезные проекты человек будет уже выбирать наиболее рациональный способ подавления дребезга.
Сообщение отредактировал Flip-fl0p - Aug 6 2017, 13:31
|
|
|
|
|
Aug 6 2017, 17:13
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Flip-fl0p @ Aug 6 2017, 13:30)  Спорить не буду, резистор с конденсатором решение проверенное и вполне рабочее. Но правильное ли ? Тем более человек только учится решение с конденсатором неправильное, но вполне рабочее, тем более человек только учится гораздо интереснее посмотреть на мигающий светодиод в реале, чем абстрактно пытаться представить какие-то процессы, происходящие в кнопке в любом случае - это способ разбить задачу на части и решить маленькие части по очереди, а не свалив всё в кучу, решать систему уравнений с эн неизвестными
Сообщение отредактировал Огурцов - Aug 6 2017, 17:16
|
|
|
|
|
Aug 7 2017, 09:17
|

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

|
Цитата(vladec @ Aug 7 2017, 11:19)  Это не конденсатор подавления дребезга, а цепь начального ресета. Я так и написал. Цитата Реальное использование RC для подавления дребезга дело мало перспективное. Вместе с программной обработкой, конечно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|