見出し画像

1章 ブール理論

1章~5章にかけてハードウェアプラットフォームを作成していきます!!

本章では、最も単純な論理ゲートの1つであるNand回路を使って、Not回路・And回路 等を作成していきます。


★単語

・ブールゲート:ブール関数を物理的に実現したもの
・ブール代数:ブール値(1/0、true/false)を扱う
・ブール関数:入力としてブール値を受け取り、出力としてブール値を返す
・ゲート:ブール関数を実装するための物理デバイス
・ハードウェア記述言語(HDL):回路の構造を表現する
・Nand回路:AndをNotで否定

★回路図

・Not回路

【真理値表】
入力  | 出力
 0   |  1
 1   |  0
  
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP Not {
   IN in;
   OUT out;

   PARTS:
Nand(a=in, b=in, out=out);
}

画像1

・And回路

【真理値表】
入力1 | 入力2 | 出力
 0   |  0  |  0
 1   |  0  |  0
 0   |  1  |  0
 1   |  1  |  1

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP And {
   IN a, b;
   OUT out;

   PARTS:
Nand(a=a, b=b, out=s);
Nand(a=s, b=s, out=out);
}

画像2

・Or回路

【真理値表】
入力1 | 入力2 | 出力
 0   |  0  |  0
 1   |  0  |  1
 0   |  1  |  1
 1   |  1  |  1

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP Or {
   IN a, b;
   OUT out;

   PARTS:
Nand(a=a, b=a, out=c);
Nand(a=b, b=b, out=f);
Nand(a=c, b=f, out=out);
}

画像3

・Xor回路

【真理値表】
入力1 | 入力2 | 出力
 0   |  0  |  0
 1   |  0  |  1
 0   |  1  |  1
 1   |  1  |  0

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP Xor {
   IN a, b;
   OUT out;

   PARTS:
Nand(a=a, b=b, out=w1);
Nand(a=a, b=w1, out=w2);
Nand(a=w1, b=b, out=w3);
Nand(a=w2, b=w3, out=out);
}

画像4

・Mux回路

【真理値表】
入力1 | 入力2 | sel | 出力
 0   |  0  |  0  |  0
 1   |  0  |  0  |  1
 0   |  1  |  0  |  0
 1   |  1  |  0  |  1
 0   |  0  |  1  |  0
 1   |  0  |  1  |  0
 0   |  1  |  1  |  1
 1   |  1  |  1  |  1

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP Mux {
   IN a, b, sel;
   OUT out;

   PARTS:
Nand(a=sel, b=sel, out=w1);
Nand(a=a, b=w1, out=w2);
Nand(a=sel, b=b, out=w3);
Nand(a=w2, b=w3, out=w4);
}

画像5

・DMux回路

【真理値表】
sel | 出力1 | 出力2
 0  |  in  |   0
 1  |   0  |   in

ーーーーーーーーーーーーーーーーーーーーーーーーーーー
CHIP DMux {
   IN in, sel;
   OUT a, b;

   PARTS:
Nand(a=in, b=sel, out=w1);
Nand(a=in, b=w1, out=w2);
Nand(a=w2, b=w2, out=a);
Nand(a=w1, b=w1, out=b);
}

画像6


Next
2章 ブール算術

1章 ブール理論(番外編)
もあるんで、よかったら見てください!(笑)

・Twitter
https://twitter.com/tango3564

・Instagram
https://www.instagram.com/tango3690/