Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Делитель частоты
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Veg@
Есть учебная задача: реализовать сумматор, суммирующий 2 числа из двух очередей, находящихся на их вершине (последние добавленные в очереди числа).

Данная программа тестировалась на DE2 Board. Успешное ее выполнение было достигнуто путем создания делителя частоты, иначе возникали случаи, когда, например, по нажатии кнопки добавления в очередь, число добавлялось, но счетчик очереди не увеличивался. Вопрос в следующем: почему нельзя обойтись без делителя? Это как-то связано с кодом, ПЛИС, платой или еще чем-то?
Victor®
давайте "программу"
XVR
По первому взгляду - отсуствует подавление дребезга кнопок.
Veg@
Цитата
По первому взгляду - отсуствует подавление дребезга кнопок.

Как тогда частота влияет дребезг? По-мойму, что частота опроса 27 МГц, что 100 кГц - для дребезга одинаковы.
des333
Проверьте функциональную часть. Напишите простенький тестбенч, если все будет работать хорошо, перейдите к временному анализу. Если по временным показателем все тоже в норме, то тогда эта внешнее окружение (типа дребезга).
Sefo
Все сигналы, асинхронные с клоком (а с кнопок в особенности), должны подаваться сначала на синхронизирующие триггеры, а уже потом подаваться на какую-либо логику и триггеры. В противном случае будут "гонки" и метастабильные состояния. Симптомы как раз, как Вы описываете.

Делитель частоты (в отсутствие синхронизир. триггеров) сильно меняет вероятность сбоя. Кроме этого Place & Route может измениться, по счастливому стечению обстоятельств, в лучшую сторону с точки зрения "гонок".

Когда описываете железо, то лучше забыть, что есть "initial" - железу нужен Reset в явном виде. "initial" - это для того кода, который в железо не синтезируется.
Veg@
Спасибо за развернутый ответ. Возник вопрос:
Цитата
Все сигналы, асинхронные с клоком (а с кнопок в особенности), должны подаваться сначала на синхронизирующие триггеры

Как эти триггеры реализовать с точки зрения кода синтезируемого Verilog? Если возможно - приведите пример.
Sefo
Цитата(Veg@ @ Oct 28 2009, 18:23) *
Как эти триггеры реализовать с точки зрения кода синтезируемого Verilog? Если возможно - приведите пример.


Да собственно говоря, это самый простейший триггер:

Код
  reg  [3:0] KEY_r;

  ...

  always @(posedge CLOCK_27)
    KEY_r <= KEY;


Ну и в коде не забудьте поменять KEY на KEY_r.

Выполните поиск по сайту по ключевому слову "метастабильность" и почитайте обсуждения.
Veg@
Спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.