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-lowactive-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 は、常に同じとは限りません。入力を読む際は、論理値・有効条件・否定記号を別々に確認してください。

自分で考えてみましょう

二つの active-low 許可信号 permit0_n、permit1_n がともに有効なときだけ go=1 にします。NAND と NOR のどちらを接続しますか。

解説を見る

両方が 0 のときだけ 1 にするので NOR です。go=NOT(permit0_n OR permit1_n) となります。「両方」という言葉だけで AND を選ぶと、信号の有効極性を見落とします。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。