неблокирующее присваивание в verilog

Jan 03, 2019 20:52


По факту, похоже я недогоняю почему в следующем коде d поменяет значение на 30-й единице времени а не двадцатой:

initial begin

c = 1'b1;

d = 1'b0;

#10 c <= 1'b0;

d <= #20 c;

end

Т.е. получается два последних переноса выполняются последовательно, а не «конкурентно», как было сказано про неблокирующие присваивания.

#10, verilog, #20

Leave a comment

Comments 1

dade January 12 2019, 10:24:19 UTC
Все просто - у вас #10 c <= 1'b0; равносильно #10; c <= 1'b0; то есть все последующие два присваивания идут с задержкой на 10 тиков и с присвоится с задержкой на 30 тиков.

15 лет опыта работы, так что если будут еще вопросы по верилогу обращайтесь, буду рад помочь.

Reply


Leave a comment

Up