一直用的是always块的沿触发,今天看了一下电平触发。
先看一个例子:
always@(a or b or c)
begin
……
end
对于always块敏感电平列表,只要有a、b、c任何一个发生变化,从低到高或者从高到低都会执行一次过程块。
对于
always@(*)
这种的写法,表示对always模块中的所有赋值信号发生变化,都会触发模块重新计算。这里看一个例子:
always @(*)
begin
if(txd_state==1'b1)
txd=1'b0;
else
txd=1'b1;
end
这里,always块内的赋值信号为txd_state,当txd_state的值发生变化时,都会触发always块执行。来看一下综合后的RTL视图:
可以看到,实际综合后就是一个非门的功能。