Altifigence Academy

4 / 63 · 概念

NAND、NOR 與反相符號的判讀

區分反相的作用範圍,透過德摩根定律連結功能相同的符號與算式。

小圓圈反相的是整個輸出值

NAND 反相 AND 的結果,NOR 反相 OR 的結果。NAND 並非「分別反相輸入後做 AND」。請先確認反相反相是將 0 變為 1、1 變為 0 的 NOT 運算。公式上方的橫線表示對線下的整個運算式套用 NOT。涵蓋的範圍。

YNAND=ab‾,YNOR=a+b‾Y_{NAND}=\overline{ab},\qquad Y_{NOR}=\overline{a+b}
abNANDNOR
0011
0110
1010
1100
輸出端的反相圓圈與真值表
NAND · 真值表
aby
001
011
101
110

選擇 NAND,確認只有 11 時輸出為 0;再切換成 NOR,只有 00 時輸出為 1。反相後的輸出仍是有效的 0/1 訊號,並非「尚未算出的值」。

德摩根定律也是閱讀邏輯閘的方法

ab‾=a‾+b‾,a+b‾=a‾ b‾\overline{ab}=\overline a+\overline b,\qquad \overline{a+b}=\overline a\,\overline b

把 AND 輸出的反相移到輸入時,運算也要改為 OR。只移動反相圓圈卻保留 AND,就變成不同函數。當 a=0,b=1a=0,b=1,NAND 為 1,但 a‾ b‾\overline a\,\overline b 為 0,立刻就能找到反例。

將輸出反相移至輸入端
  1. NAND: Y = NOT (a AND b)
  2. 各輸入分別反相: 產生 NOT a 與 NOT b
  3. 以 OR 結合: Y = (NOT a) OR (NOT b)

Active-low 表示訊號生效的極性

像 reset_n 這種在 0 時動作的訊號稱為 active-low低有效(active-low)表示訊號為 0 時,請求或功能才啟用。名稱結尾的 _n 是常見命名慣例,實際行為仍由規格定義。。名稱中的 _n 是慣例,實際行為由規格與電路決定。若兩個請求 req0_n、req1_n 任一為 0 時,要讓警報 alarm 為 1,可按下式計算。

alarm=req0_n‾+req1_n‾=req0_n req1_n‾\mathrm{alarm}=\overline{\mathrm{req0\_n}}+\overline{\mathrm{req1\_n}}=\overline{\mathrm{req0\_n}\,\mathrm{req1\_n}}

各訊號上方的橫線對該訊號做 NOT。最後的長橫線則對兩訊號 AND 的整體結果做 NOT,因此一個 NAND 就能實作。例如兩輸入為 11 時沒有請求,alarm=0;為 01 時第一個請求有效,alarm=1。

訊號「有效」不一定等於數值 1。閱讀輸入時,請分別確認邏輯值、有效條件與反相符號。

自己試試看

兩個低有效許可訊號 permit0_n、permit1_n 都有效時,go 才能為 1。應使用 NAND 還是 NOR?

查看解說

只有兩者都為 0 時才要輸出 1,所以用 NOR:go=NOT(permit0_n OR permit1_n)。只看到「兩者都」就選 AND,會忽略訊號的有效極性。

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