Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Стабильный сигнал на выходе счётчика

Стабильный сигнал на выходе счётчика 6 года 11 мес. назад #7462

  • YarPv14
  • YarPv14 аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0
Здравствуйте!
Только начал изучать Верилог, помогите разобраться:
есть двоичный четырёх-разрядный счётчик counter, который постоянно инкрементируется от сигнала clk, т.е. принимает значения 0, 1, 2, ..., 15, 0, 1, 2, и т.д.
Необходимо создать провод de, на выходе которого будет 1, если значение счётчика будет 2, 3, 4, 5.
Если я напишу так
module my_module (
    
 // inputs:
 input wire clk,
 
 // outputs:
 output reg [3:0] counter,
 output wire de
 );

 always @*
 begin
  de = ((counter >= 2) && (counter <= 5));
 end

 always @(posedge clock)
 begin
  counter <= counter + 1'b1;
 end

endmodule
насколько это будет корректно? Не будут ли в сигнале de в моменты изменения кода в счётчике 2, 3, 4, 5 формироваться "иголки"?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Стабильный сигнал на выходе счётчика 6 года 11 мес. назад #7463

У вас сигнал "de" - выход комбинаторной логики, и на нем могут быть "иголки".
Где вы собираетесь этот сигнал использовать? Если внутри самого проекта, и сам проект синхронный, Т.е все события происходят по клоку,
то ничего страшного в этом нет, все сигналы к приходу следующего клока обязаны "устаканится".
Если вы , например, выводите этот сигнал наружу, и там наличие "иголок" недопустимо, то сделайте "de" регистром и замените неблокирующее присвоение на блокирующее.
Но нужно учесть, что "de" будет появляться позже на один такт.
Спасибо сказали: YarPv14

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Стабильный сигнал на выходе счётчика 6 года 11 мес. назад #7465

  • YarPv14
  • YarPv14 аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0
На выходе "иголки" не допустимы.
Я посмотрел Ваши примеры, но смущает, что по переднему фронту клока происходит и инкремент счётчика и защёлкивание результата. Насколько это надёжно? Не лучше ли инкремент счётчика делать по переднему фронту клока, а защелкивание значения по заднему фронту клока?
module my_module (
    
 // inputs:
 input wire clk,
 
 // outputs:
 output reg [3:0] counter,
 output reg de
 );

 always (negedge clock)
 begin
  de <= ((counter >= 2) && (counter <= 5));
 end

 always @(posedge clock)
 begin
  counter <= counter + 1'b1;
 end

endmodule

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от YarPv14.

Стабильный сигнал на выходе счётчика 6 года 11 мес. назад #7466

Следите за параметром "Fmax" в отчете ТаймингАналайзера.
Этот параметр показывает худшее время исполнения логической функции проекта между фронтами клока.
Можно , конечно, защелкивать и спадом, но это только ухудшит ситуацию в два раза.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Стабильный сигнал на выходе счётчика 6 года 10 мес. назад #7467

  • YarPv14
  • YarPv14 аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 7
  • Спасибо получено: 0

umarsohod пишет: Можно , конечно, защелкивать и спадом, но это только ухудшит ситуацию в два раза.

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от YarPv14.

Стабильный сигнал на выходе счётчика 6 года 10 мес. назад #7468

YarPv14 пишет: Ухудшит потому, что к приходу спада логическая функция может не успеть выполниться?

Нужно оценивать количественно, какие у вас частоты и насколько сложная логическая функция.
Опять-же, смотрите отчет компилятора.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.124 секунд
Работает на Kunena форум