У меня есть следующий код:
module cla_rnm_controller (
ANAVP,
VS,
VP
);
input real VS;
input real VP[7:0];
output real ANAVP[7:0];
reg int_ck;
initial begin
int_ck=0;
end
initial forever #10 int_ck = ~int_ck;
always@(posedge int_ck)
begin
for(integer p_cnt=0;p_cnt<8;p_cnt++)
ANAVP[p_cnt] = 0.1 + (VS-VP[p_cnt])/66.0;
end
endmodule
Когда я симулирую, хотя VP [0] = 50 изначально и VP [0] = 0 от 100 и далее и VS = 50 все время, ANAVP [0] остается 0,1 всего моделирования (300 мс). Шаг по времени составляет 1 нс.
Когда я использую
#(1step) ANAVP[p_cnt] = 0.1 + (VS-VP[p_cnt])/66.0;
ANAVP [0] переходит на 0,855, как и должно быть.
Когда я использую
#1 ANAVP[p_cnt] = 0.1 + (VS-VP[p_cnt])/66.0;
ANAVP [0] также является правильным.
Кто-нибудь может сказать мне, что происходит? Предполагается, что это блокирующее присваивание, и для корректной работы не требуется ни одного из операторов #.