1. 程式人生 > >Verilog 多路選擇器(MUX),鎖存器(Latch)推薦寫法

Verilog 多路選擇器(MUX),鎖存器(Latch)推薦寫法

Veriog中二選一MUX推薦寫法:

always @(a, b, sel)
   if (sel == 1'b1)
         z = a;
   else  z = b;

        MUX為組合邏輯,用always來描述的時候,敏感變數列表中要包含在塊中出現的所有變數,如上面程式碼中的 “ a,b,sel ”,如果不包含 sel ,則代表了一個抽象意義上的鎖存器,它鎖存的是選擇訊號,而不是輸入值。

Verilog中D鎖存器的推薦寫法:

always @ (D, sel)
   if  (sel == 1'b1)
       Q  =  D;

     上面的程式碼中,if 和 else 沒有配對,系統綜合的時候會預設在 sel == 1'b0 的情況下,輸出是不變的 ,即 Q = Qn ,故上面的程式碼會被綜合成D鎖存器,sel 作為 D 鎖存器的使能端。