コンピュータシステムの理論と実装(nand2tetris) | 1章ブール論理

1章の中で重要なポイントを章内をまたいでまとめていきます。
※自分が詰まった大事なポイント2つにアンダーラインを入れてます。

ブール関数:
入力がブール値、出力がブール値を返す関数
→(ブール)ゲート:ブール関数を物理的に実現したもの

ブール関数の表現方法:
1.真理値表
2.ブール式

どんな関数でも正準表現と呼ばれるブール式で表現できる。
※正準表現では、出力が1になっている行がその組み合わせのみで1となる表現をANDで作っている。
→どんなブール関数もAnd, Or, Notで表現できる。
→NandでAnd, Or, Notが表現できる。つまりどんなブール関数もNandで表現できる。

ゲートの捉え方:
ゲートには ・何をするかという「インターフェース」の面 ・それをどのように作るかという「実装」の面 の2つがある。

HDLについて:
ゲートはハードウェア記述言語(HDL)で設計することができる。

HDLはheaderとpartsで構成される。
・headerでは回路名・入力ピン名・出力ピン名が記述される。
・partsでは内部ピンやその繋ぎ方を指定する。

partsは同じ名前(a,b,out)が多く出てくるため、混乱しやすいが、
パラメータ(=の前)では参照したゲートのheaderで定義された入出力ピンの名前
引数(=の後)では新たに作成したゲートの入出力ピンまたは内部ピンの名前を指定する。
※パラメータと引数の名前が同じになりやすいのは、このheaderの名前のつけ方が被りやすいためである。

複雑なゲートも紹介されるが、
ゲートの基礎であるブール値をもとにブール値を出力するものだと考え、
真理値表に全て帰結することがわかれば、どれもその変化系だと捉えることができる。