2014-11-03 6 views
1

Следующий набор кодов делает то же самое. Есть ли разница между ними? Если нет, то почему wait (clk) обычно не используется?Разница между выражением «wait» и «@»

always @(posedge clk) 
begin 

end 


always wait(clk) 
begin 

end 
+3

Обратите внимание, что второй блок 'always' будет висеть на симуляторе, если' clk' переходит на 1, если в блоке нет других задержек. Он перейдет в бесконечный цикл. –

ответ

3

@(posedge clk) является чувствительной кромки, следовательно, он используется для моделирования синхронных circuits.While, wait(clk) является уровень sensitive.Since большинство схем предназначены для синхронного @(posedge clk) преимущественно используется

wait (expression) 

«выражение "оценивается, если false, то выполнение приостанавливается до тех пор, пока выражение не станет истинным. Если выражение истинно, когда оператор достигнут, то ожидание не действует, и выполнение переходит к управляемому выражению.

@(posedge clk) - is an edge event. 
posedge:0,x,z->1 negedge:1,x,z->0 

Краевые события полезны для моделирования логических элементов с тактовой частотой, таких как триггеры. Они также полезны для синхронизации активности в модели на основе общих часов. Например, в следующем всегда блоке он входит в блок always на отрицательном фронте часов.

always @(negedge clock) 
    x = f(y);  
+1

От IEEE Std 1800-2012, sectiotn "9.4.2 Event control": 'Постановка должна быть обнаружена при переходе от 0 до x, z или 1 и от x или z до 1'. Аналогично для negedge. – toolic

+1

Спасибо. У меня было руководство Verilog 95 – chitranna

Смежные вопросы