大家好我在for循环中写了一个while循环,但它不起作用我的编码有问题吗?
always@ (posedge clk) begin
if (delay)
D = 1;
else
D = 0;
if (a) begin
for (g=0;g<10;g=g+1) begin
high <= high_in;
low <= low_in;
delay = 0;
while (count == 0) begin // when i simulate the waveform cant come
out and it stuck at here
ws = 1;
count <= D;
delay = 1;
end
delay = 0;
end
end
else begin
//other coding
end
end
答案 0 :(得分:0)
如果在count
为零时进入while循环,则会出现无限循环。您在count
上进行了非阻止分配,因此不会更新。查找阻止与非阻止分配。
答案 1 :(得分:0)
我发现此代码存在一些基本问题: - 1.在同一块块中混合并匹配阻塞和非阻塞。 2.在always块中使用blocking语句是一个问题创建者 3.没有复位/默认值计数,循环外延迟。虽然决策是基于此。
很少有建议: -
根据EML的建议,请尝试重新编写。尽量不要将不同的任务组合起来。