关于verilog 的always的用法..

第一个问题:
比如说我们有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]时 程序怎么判断啥时候执行?
非常感谢!!..我想再问一下 如果这个always块是初始状态下,也就是这个程序第一次运行 a b 都是0而且还没变化的话 这个块就得等到a b其中有一个变化了才运行对吗? 运行后a b保持不变的话 q将继续保持运行后的值直到下一次a b变化对不对..

1。 每当A,B变化时,这个块就执行。 ALWAYS后面的叫敏感参数列表,不表示信号值,而是信号变化触发这个块的执行。

2。 如果综合逻辑没有问题,就是a的每一个元素变化时,这个块都要执行。

如果ALWAYS块的敏感参数列表没有带时钟,这个块将被综合成一个组合回路。参照组合回路的真值表。当输入端任何一个信号变化时,输出将立即做相应的变化,对吧。
如果ALWAYS后代的是时钟,那ALWAYS块将被综合成一个时序回路。一般情况下,当时钟变化时,ALWAYS块执行~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-01
如果ALWAYS块的敏感参数列表没有带时钟,这个块将被综合成一个组合回路。参照组合回路的真值表。当输入端任何一个信号变化时,输出将立即做相应的变化,对吧。
如果ALWAYS后代的是时钟,那ALWAYS块将被综合成一个时序回路。一般情况下,当时钟变化时,ALWAYS块执行~

这个时钟是怎么确定的?全局时钟引脚的输入才算?
相似回答