第一个问题:
比如说我们有always @(a or b) begin
if(a) q<=b;
else q<=0;end
这个块是每当 a b发生变化时执行 还是a或者b中有一个是1或2个都是1时执行?
第二个问题是 always @(a) begin
如果这个a被定义为一个reg [4:0]时 程序怎么判断啥时候执行?
1。 每当A,B变化时,这个块就执行。 ALWAYS后面的叫敏感参数列表,不表示信号值,而是信号变化触发这个块的执行。
2。 如果综合逻辑没有问题,就是a的每一个元素变化时,这个块都要执行。
如果ALWAYS块的敏感参数列表没有带时钟,这个块将被综合成一个组合回路。参照组合回路的真值表。当输入端任何一个信号变化时,输出将立即做相应的变化,对吧。
如果ALWAYS后代的是时钟,那ALWAYS块将被综合成一个时序回路。一般情况下,当时钟变化时,ALWAYS块执行~