回路設計する際に必要になりそうな基本回路をNORで構成してみました。
フリップフロップ
in1 | in2 | out | /out |
---|---|---|---|
0 | 0 | out | /out |
0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
データを保持するための回路です。 レジスタに使用します。
Dフリップフロップ
D | /CLK | Q | /Q |
---|---|---|---|
0 | ↓↑ | 0 | 1 |
1 | ↓↑ | 1 | 0 |
フリップフロップだと発振してしまうため、CLOCK信号が落ちたときのDの値を取り入れるようにします。
Z80のクロック信号は負論理なので負論理で設計しています。
保持選択Dフリップフロップ
W | D | /CLK | Q | /Q |
---|---|---|---|---|
0 | * | ↓↑ | Q | /Q |
1 | 0 | ↓↑ | 0 | 1 |
1 | 1 | ↓↑ | 1 | 0 |
書き込みフラグがオフの時は値を保持し、オンの時のみD信号を取り入れます。
ハーフアダー
in1 | in2 | C | S |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
加算回路に使用します。
フルアダー
in1 | in2 | Cin | Cout | S |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
たくさん繋げると8bit加算回路が作れます。
デコーダ (2bit)
S1 | S0 | P3 | P2 | P1 | P0 |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 |
命令の翻訳や基板間の接続で使用すると思います。
データセレクタ / マルチプレクサ (2bit)
S1 | S0 | D3 | D2 | D1 | D0 | D |
---|---|---|---|---|---|---|
0 | 0 | * | * | * | D0 | D0 |
0 | 1 | * | * | D1 | * | D1 |
1 | 0 | * | D2 | * | * | D2 |
1 | 1 | D3 | * | * | * | D3 |
ALUとレジスタからの出力の選択に使用します。
アプリを作ったりしています! よかったらみていってくださいね→
つくったもの
今のイチオシ↓