Altifigence Academy

8 / 36 · 概念

使用條件運算式描述 MUX

在 RTL 連接選擇訊號與資料輸入。

學習目標

  • 在 RTL 連接選擇訊號與資料輸入。

真分支放前面

條件運算式為 condition ? 真值 : 假值。sel ? b : a 在 sel=1 選 b、sel=0 選 a;按字母順序寫可能意外反轉。assign 持續維持組合關係,相關輸入改變就重新計算,不是只執行一次的軟體指令。

RTL 程式碼節錄
assign y = sel ? b : a;

always_ff @(posedge clk)
    sampled_y <= y;

每個訊號一個驅動來源

本例 y 只由 assign 驅動,sampled_y 只由 always_ff 驅動。另寫區塊賦值給 y 可能造成衝突。一次只改一件事,先比對選擇式與真值表,再检查觀測暫存器;不要增加儲存來掩蓋組合錯誤。

自己試試看

assign y = sel ? a : b; 符合規格嗎?

查看解說

不符合。sel=1 時選 a;a=0,b=1 時會得 0,而預期是 1。

此選擇適用於本瀏覽器,隨時可從頁尾變更。