8 / 36 · 概念
使用條件運算式描述 MUX
在 RTL 連接選擇訊號與資料輸入。
單元可免費閱讀,註冊課程即可儲存學習進度。
學習目標
- 在 RTL 連接選擇訊號與資料輸入。
真分支放前面
條件運算式為 condition ? 真值 : 假值。sel ? b : a 在 sel=1 選 b、sel=0 選 a;按字母順序寫可能意外反轉。assign 持續維持組合關係,相關輸入改變就重新計算,不是只執行一次的軟體指令。
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。
✓ 已學習