-
asadmasad@yandex.ru
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 2
-
Спасибо получено: 0
-
-
|
Добрый день. С Verilog имел общение 1 раз, да и было это давненько. Тут друг пристал с задачей, которая на первый взгляд показалась легкой, но при попытке реализации стало понятно, что моих скудных знаний не хватает, а куда копать в силу неопытности я не знаю.
Итак. Есть ПЛИС, на нее подаются постоянно импульсы Clock, и в один из моментов может прийти еще 1 однократный импульс Tp длительностью около 3 периодов импульсов Clock. У ПЛИС всего один выход Out. Он в отсутствии Tact выдаёт лог. 1. Но после прихода импульса Tp, на выходе Out должны "передаться" 50 импульсов Clock. После этого Out опять устанавливается в логическую 1.
Пытался в двух always по переднему и заднему фронту Clock при появлении Tact менять значение выхода в соответствии со значением Clk, но мне выдает ошибку о недопустимости изменять один Out в разных блоках.
Помогите советом, пожалуйста.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
"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" равен нулю, не пропускаем на выход клоки
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.115 секунд