Veriog中二選一MUX推薦寫法:
always @(a, b, sel)
if (sel == 1'b1)
z = a;
else z = b;
MUX為組合邏輯,用always來描述的時候,敏感變量清單中要包含在塊中出現的所有變量,如上面代碼中的 “ a,b,sel ”,如果不包含 sel ,則代表了一個抽象意義上的鎖存器,它鎖存的是選擇信号,而不是輸入值。
本文引用自:https://blog.csdn.net/llxxyy507/article/details/82811992
Verilog中D鎖存器的推薦寫法:
always @ (D, sel)
if (sel == 1'b1)
Q = D;
上面的代碼中,if 和 else 沒有配對,系統綜合的時候會預設在 sel == 1'b0 的情況下,輸出是不變的 ,即 Q = Qn ,故上面的代碼會被綜合成D鎖存器,sel 作為 D 鎖存器的使能端。