Commit d38eae5a authored by morifuji.koudai's avatar morifuji.koudai

[add] 1章終了

parent 41b30cba
低レイヤそろそろ勉強しようと思ったので、お勉強。
https://www.oreilly.co.jp/books/9784873117126/
だいぶ前に触ったアセンブリ言語よりもだいぶ低レイヤ
章ごとにダラダラ学んだことを書いていく予定
## 1章 ブール論理
### ブール関数
3つの表現方法
1. 真理値表
2. ブール式
3. 正準表現
Xor = (x and Not y) or (Not x and y)
Nandで全ての演算が可能
xORy = (x Nand x) Nand (y Nand y)
論理ゲート=入力と出力のデバイス=ブール関数で表現できる
#### マルチプレクサ
複数の入力のいずれかを単一の出力にする。どちらかを選ぶかは選択制御Sによる。Sもブール値
![「マルチプレクサ」の画像検索結果](https://upload.wikimedia.org/wikipedia/ja/thumb/6/66/Multiplexer.png/220px-Multiplexer.png)
> Wikipedia:https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AC%E3%82%AF%E3%82%B5
#### デマルチプレクサ
単一の入力を複数の出力のいずれかにする。どちらかを選ぶかは選択制御Sによる。Sもブール値
#### 多ビットのゲート
入力・出力共に配列であり、それぞれのindexに対して操作するだけ
#### 多入力のゲート
入力が2つ以上のゲート
多入力Or=入力1…nまでのいずれかが1であれば1それ以外は0
多入力マルチプレクサ=複数の入力のいずれかを単一の出力にする。どちらかを選ぶかは選択制御Sによる。Sもブール値。入力の数がnに対して、選択制御は、log2n個必要
### HDL
ハードウェアを構築するための言語。HDLで記載して各ゲートをシミュレートする宿題が出た。
HDLでloop使えない😇(単に1章だから使えないのかも?)
マルチプレクサゲート/デマルチプレクサゲートが一番しんどかった。
以下、僕の回答。
```vhdl
/**
* Multiplexor:
* out = a if sel == 0
* b otherwise
*/
CHIP Mux {
IN a, b, sel;
OUT out;
PARTS:
Not(in=sel, out=notsel);
And(a=a, b=notsel, out=outtemp1);
And(a=b, b=sel, out=outtemp2);
Or(a=outtemp1, b=outtemp2, out=out);
}
```
```vhdl
/**
* Demultiplexor:
* {a, b} = {in, 0} if sel == 0
* {0, in} if sel == 1
*/
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
Not(in=sel, out=notsel);
And(a=in, b=notsel, out=a);
And(a=in, b=sel, out=b);
}
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment