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

ТЕМА: Verilog. Повторитель импульсов

Verilog. Повторитель импульсов 2 года 10 мес. назад #7814

Добрый день. С Verilog имел общение 1 раз, да и было это давненько. Тут друг пристал с задачей, которая на первый взгляд показалась легкой, но при попытке реализации стало понятно, что моих скудных знаний не хватает, а куда копать в силу неопытности я не знаю.
Итак. Есть ПЛИС, на нее подаются постоянно импульсы Clock, и в один из моментов может прийти еще 1 однократный импульс Tp длительностью около 3 периодов импульсов Clock. У ПЛИС всего один выход Out. Он в отсутствии Tact выдаёт лог. 1. Но после прихода импульса Tp, на выходе Out должны "передаться" 50 импульсов Clock. После этого Out опять устанавливается в логическую 1.

Пытался в двух always по переднему и заднему фронту Clock при появлении Tact менять значение выхода в соответствии со значением Clk, но мне выдает ошибку о недопустимости изменять один Out в разных блоках.

Помогите советом, пожалуйста.

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

Verilog. Повторитель импульсов 2 года 10 мес. назад #7815

"Tp" и "Tact" это одно и тоже? " Clock" и " Clk" это одно и тоже?
Если да, то будет примерно так :

reg [5:0] cnt; // счетчик 50 клоков
always @(posedge Сlk) cnt <= Tp? 50: (cnt != 0)? cnt-1:cnt; // Если пришел "Tp", грузим 50, если не досчитал до нуля , отнимаем единицу
assign Out = (cnt == 0)|Clk; // Если "cnt" равен нулю, не пропускаем на выход клоки

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

Verilog. Повторитель импульсов 2 года 10 мес. назад #7816

Огромное спасибо за быстрый ответ!

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

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