always是个并行块,但内部语句是顺序执行的;
always @(a or b)由于是组合逻辑,括号里面不需要时钟信号,a or b 表示只要a \b任一个状态改变,都执行块中语句,符合组合逻辑描述;
赋值''=''为阻塞幅值,块中必须先执行c=0,再执行c=1,如果是''<='',则c的最终值是个不确定的数,在''<=''中,右边当前的值是上是时刻保存下来的值(将之赋给左边);语句中在同一块一同一变量两次''<=''赋值,c的值是是个不稳定的值。
不要在同一过程块中对同一变量进行两次赋值;
always(a or b)
begin
c = 0;
c = 1;
/* 两句等效为c=1,应为c=0这条语句几乎在瞬间完成了,
* 在过程块中,语句是顺序执行的 */
end