Altifigence Academy

4 / 36 · 概念

解碼器與致能訊號

將二進位位址轉換為一個有效輸出。

學習目標

  • 將二進位位址轉換為一個有效輸出。

一個位址選擇一個輸出

2-to-4 解碼器將 00、01、10、11 對應到 0001、0010、0100、1000。y[3:0] 最右邊是 y[0]。定義 en=0 時 y=0000,只有 en=1 時才恰有一個有效輸出,驗證時也要包括此條件。

RTL 程式碼節錄
always_comb begin
  y = 4'b0000;
  if (en) begin
    case (address)
      2'b00: y = 4'b0001;
      2'b01: y = 4'b0010;
      2'b10: y = 4'b0100;
      2'b11: y = 4'b1000;
      default: y = 4'b0000;
    endcase
  end
end

每條路徑都要賦值

組合輸出應只由目前輸入決定。先指定 0000,可定義未致能的路徑;漏寫賦值可能意外推導出保留舊值的鎖存器。程式碼是邏輯節錄,不是完整 top 模組;使用前需宣告 address、en、y 的埠及寬度。

自己試試看

en=1、address=10 時 y 是什麼?en=0 呢?

查看解說

致能時只有 y[2] 為 1,即 0100;未致能時為 0000。

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