verilog ,为什么我做这样的改动就可以
if(cnt < 5'd18)cnt <= cnt + 1;
else cnt<=0;
if(cnt == 1)
init<= 1;//改为 init=1 也不对,编译显示这个位置是错的
上面这个代码,怎么编译都不过,显示错误为
Error (10200): Verilog HDL Conditional Statement error at LEDa.v(65): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
但是我改成下面这样就编译通过了,
if(cnt < 5'd18)
begin
cnt <= cnt + 1;
if(cnt == 1)
init<= 1;
end
else cnt<=0;
就是将错误的那句插入到上面那个if语句里 (插入到其他位置都会报错,只有插入到上面的if语句里才不报错)
请问各位知道这是什么原因吗? 你给出所有的代码看看 支持楼上!加油 只能说明c的基础不好 简单的if...else 套用 一个begin end之间的所有的if语句都是同时执行的,你cnt值为1的时候同时满足2个条件,你说到底执行那一句话??? 很好,很不错 verilog ,为什么我做这样的改动就可以 很基础的帖子,顶贴 确实是,begin。。。end相当于c语言里面的{}
页:
[1]