Перейти к содержанию
    

Помощь в первом проекте (Verilog).

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

 

Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog.

Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам,

и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая:

я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Закончив буквально пару месяцев назад универ, я решил более подробно углубиться в изучение ПЛИС и языка Verilog.

Купив, на мой взгляд, подходящую для этого дела книгу и заказав китайскую плату с "Алихи", я сразу приступил к экспериментам,

и, "помигав" светодиодом, решил приступить к более сложным для своего уровня схемам. Проблема следующая:

я решил реализовать схему, которая при нажатии кнопки на плате выводит на семисегментный индикатор число, которое, при повторном нажатии

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

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

Напишите модуль анти дребезга.

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Доброго!

 

Да, как уже подсказали, нужен антидребезг.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, пожалуйста, как можно исправить эту проблему? Заранее спасибо за ответы.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю. Если у меня не получится исправить это самостоятельно, то я обязательно к Вам обращусь.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, пожалуйста, как можно исправить эту проблему?

припаяйте конденсатор параллельно кнопке и никого не слушайте

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

припаяйте конденсатор параллельно кнопке и никого не слушайте

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и никого не слушайте

 

Вот-вот. Лучше сразу гуглите "fpga debounce push button".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за ответы! В действительности я нашёл ответ на одном из зарубежных сайтов с примером простого кода на Verilog. Разобравшись в нём,

я его испытал и убедился, что дребезг успешно "гасится"! :yeah:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конденсатор тоже поставьте. Всех слушайте. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

припаяйте конденсатор параллельно кнопке и никого не слушайте

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

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах?

Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так от конденсатора хуже не будет для FPGA, у которых нет триггеров шмидта на входах?

Кондёр сделает фронты более пологими, что может привести к многократному переключению на входе в момент перехода сигнала через пороговый уровень.

Конденсатор - это для игрунов...Или для подельщиков одной уникальной игрушки...

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

причем дальше становится абсолютно наплевать, пологие там фронты или нет. Задан параметр "время дребезга" и этого достаточно для проекта. Все остальное должно пересчитаться автоматически из тактовой...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дребезжащей кнопке будут микро-искры-дуги при каждом соединении-разъединении контакта. С конденсатором переключений будет меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...