トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第59回]
●XOR回路(2)
前回はCPUを構成する回路はNAND回路で表すことができるはず、ということを書きました。
そうであるならば、XOR回路も当然NAND回路で表すことができるはずです。
前回お見せしたXORの論理演算を再掲します。
XORのシンボル図です。
下がXORの論理演算です。
A | B | C |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
A、Bが入力でCが出力です。
A、Bがともに0または1ならばCは0で、A、Bが異なる値のときCは1になります。
これをNANDゲートで作ると下のようになります。
インバータもNANDゲートで表すことができますが、わざわざインバータをNANDで作るのは無駄ですので、ここは素直にインバータを使います。
NANDが3つとインバータが2つです。
ただの基本的な論理ゲートにしては結構複雑です。
回路の動作を検証してみます。
ABがともに0のときは前段の2つのNANDゲートの入力は0、1および1、0ですから出力はどちらも1になります。
すると後段のNANDの入力が1、1ですから出力は0になります。
ABの入力が1、0か0、1のときは前段のNANDのどちらかは入力が1、1になりますからその出力は0になります。
すると後段のNANDの入力のどちらかは0ということですから出力は1になります。
ABの入力が1、1のときは前段のNANDの入力は1、0および0、1ですから出力はどちらも1になります。
すると後段のNANDの入力が1、1ですから出力は0になります。
この回路をMOSFET回路に置き換えてみると下の回路になります。
PchMOSFETを8個とNchMOSFETを8個使います。
たかがゲート1つにしては大変な回路です。
[第54回]で紹介しましたトランジスタロジック回路組立キットの基板を使って上の回路を組んでみました。
NANDだけで組もうとすると5ゲート必要ですから「HC00」基板1枚では作れません。
こういうときに「HCU04」基板が役に立ちます。
上がHCU04基板で下がHC00基板です。
HCU04基板からNOTゲートを2回路、HC00基板からNANDゲートを3回路使いました。
下は上の写真の回路に入力した信号です。
2つの信号を左から見ると、[0,0]、[0,1]、[1,0]、[1,1]という入力信号になっています。
下の写真は下側(CH2)に上の回路の出力信号が出ています。
出力信号(下側、CH2)は左から0、1、1、0になっています。
間違いなくXORの出力です。
出力信号は入力信号(上側、CH1)に対して少し遅れが見えます。
H出力の途中に切れ目が見えるのはその遅れが原因で、このような回路に今回のようなクロック型の信号を入力すると、回路の遅れによってこのようなヒゲが発生する場合があります。
さて。
これでXOR回路もトランジスタで作ることができたわけですが。
面白くないのでありますね。
たかが論理ゲート1つにトランジスタ16個!
しかもいずれ説明をしていきますが、XORは加算回路を構成するパーツでもあります。
そういうことになりますと、XOR単体でトランジスタ16個というのは、いかにも多い!
なんとかならないものかといろいろ思案したのですけれど、NAND、NOTのレベルでは、これ以上はどうしようもありません。
しかし。
トランジスタのレベルなら。
おお。
なんとかなるじゃありませんか。
下のXORの論理演算をじっとながめていましたら。
A | B | C |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
妙案を思いつきましたよ。
トランジスタ回路だからこその、禁断のウラ技であります。
半減とまではいきませんがトランジスタ10個でできましたから6個の削減に成功しました。
皆様も頭の体操です。
どういう回路なのか考えてみてください。
次回までのお楽しみです。
ヒントはNOR(トランジスタ4個)+NAND(トランジスタ4個)+トランジスタ2個です。
トランジスタでCPUをつくろう![第59回]
2015.5.14upload
前へ
次へ
ホームページトップへ戻る