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

ТЕМА: Таймер на ПЛИС на verilog

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6076

  • Seimur
  • Seimur аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
Здравствуйте, мне необходимо реализовать счетчик (таймер), который делит сигнал допустим на 20 и тактовая частота 1МГц.
Если использовать LPM_COUNTER и контролировать 4й разряд, то получим импульс длительностью 4мкс и периодом 20мкс.
Как можно сделать, чтоб после 20 мкс выход счетчика поднялся в "1"?
Я полагаю, что можно использовать тот же LPM_COUNTER с коэфф 20 и после падения шины в "0" поднять в "1" выход модуля (с помощью negedge)

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6077

На выходе что нужно?
Если меандр, то делите сначала на 10, потом на 2.

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6078

  • Seimur
  • Seimur аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
На выходе мне нужно вот такую картину получить


Но пока хотя бы любую другую задержку. При делении на 10. получается импульс с длительностью 2мкс и периодом 10 мкс.
Как я понял из работы этого делителя: мы считываем старший бит, когда там появляется "1" - вывод дергаем в "1", но в первые она появляется именно при 8мкс.
Может быть я что-то не так делаю. Этот модуль надо подключать к генератору pll и он нормально будет делить?
Вложения:

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6080

  • Falcon
  • Falcon аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 8
Проще всего сделать 5 таймеров которые будут запускаться друг за другом.
Где то так:
begin
if (count_1 != 2'd3) begin count_1 <= count_1 + 1'd1; impuls <= 0; end
else
if (count_2 != 4'd5) begin count_2 <= count_2 + 1'd1; impuls <= 1; end
else
................
else begin count_1 <= 0; count_2 <= 0; ............. end
end
Спасибо сказали: Seimur

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6084

  • Seimur
  • Seimur аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
Спасибо, я так понимаю счет идет с тактовой частотой?

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6085

  • Falcon
  • Falcon аватар
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 31
  • Спасибо получено: 8
Да.
Но если сделать так:
begin
if (count_enable = 7'd99) count_enable <= 0;
else count_enable <= count_enable + 1'd1;
end

assign enable = (count_enable = 7'd99);

begin
if (enable) begin
...........
end
end

То будет со скорость clk/100

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

Таймер на ПЛИС на verilog 8 года 4 мес. назад #6086

  • Seimur
  • Seimur аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
Понял спасибо. Дальше буду разбираться

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

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