对于一个组合逻辑电路,应该在什么情况下用assign,在什么情况下用always呢?
比较简单的逻辑适合使用assign方式,较为复杂的逻辑应使用always块。下例给出了一个适合用always块的较复杂例子:
同样的功能若改用assign,则为下例所示。很明显,用always块表达意思更加清晰。
assign a = s1 ? 1:(s2 ? 2 : (s3 ? 3 : 0));//assign表达
在2.2节中已解释了敏感列表中的*在组合逻辑always块中的作用。如果读者使用过一些老IP,则可能还会看到下例所示的表达,这种表达已随着综合器的进步渐渐被淘汰了,不建议初学者使用。