[an error occurred while processing this directive]
|
честно говоря я думал что _ДОЛЖНО_ работать так как работает Verilog
то есть переписав один в один PROCESS modeler
initial
begin
ndr<= #100 1;
#30;
ndr<= #30 1'bz;
end
должо получится в обеих случаях (и в Vlog и в VHDL)
через 60нс переходит в Z
еще через 40нс (через 100нс после запуска) перейдет в 1
по смыслу - происходят независимые процессы - в результате одного из них сигнал переключается в Z, а в результате другого в 1
---------------------
то что в VHDL присваивания с after отменяют друг друга - для меня неожиданность :) - сейчас промоделирую пример
BTW как в VHDL можно наблюдать за сигналами (аналог функции $monitor)???
---------------------
в первом примере на Верилоге
(BTW `timescale - должна быть без ;)
результат будет таким
0 a=x b=x
10 a=1 b=x
15 a=0 b=x
20 a=1 b=x
25 a=0 b=x
30 a=z b=x
40 a=z b=z
поведение регистра a - как описано
а b - не меняется потому что воздействие короче 10 нс не проходит через инерциальную задержку в wire #10 b=a;
^^^^
-----------------------------
по поводу третьего примера с мультиплексором - попробую придумать как можно подругому....
E-mail: info@telesys.ru