トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第58回]
●XOR回路
基本的なゲート回路のところでずいぶん手間取ってしまいましたが、やっとこれからはゲート応用回路に入っていきます。
MYCPU80は沢山のHCMOS ICを使っていますが、複雑な動きをするICでもそのロジックを分解していくと結局NAND回路だけで構成されているのだそうです。
「だそうです」と書きましたのは、まだ私自身はそこまで突き詰めて回路を考えたわけではないからです。
今は多分そうだろうなというくらいの認識しかありません。
それでこれからそれが本当であると信じて究極の組立キットをめざそうとしているのです。
千里の道も一歩から、です。
で。
いよいよ、応用編です。
CPUロジックをその機能によって分けてみると、まずはAND、OR、NOTなどの論理演算回路があります。
それがNAND回路の応用回路であろうことは容易に理解できます。
それから加算、減算などの算術演算回路があります。
これはもっともCPUらしい回路でありましょう。
それからRSフリップフロップから始まるラッチ回路があります。
RSフリップフロップは最もシンプルな記憶回路ですが、それが発展するとDフリップフロップになります。
Dフリップフロップはレジスタを構成するとともに、その一方でカウンタとして発展していきます。
CPU回路をおおむねそのように分けて考えてみたとき、それらを大きく2つに分けるとその一方は論理、算術演算に代表されるスタティック(静的)な回路で、もう一方はカウンタに代表されるダイナミック(動的)な回路になります。
レジスタはスタティックのように見えますがクロックによって状態が変化するダイナミックな回路です。
他方の論理、算術演算回路はクロックを必要としません。
そこが大きな相違点です。
レジスタ、カウンタ回路もCPUを構成する重要な回路で、実は試しにちょいと首をつっこんでみただけですが、そこはきわめて複雑な回路であることを知ってしまいました。
ここは相当に気合を入れてかからないといけないところです。
ま、しかしカウンタはCPU以外でも応用範囲の広いパーツでありますから、そこもじっくり攻めていきたいところです。
他方の論理、算術演算回路は、もともと今まで見てきましたNAND、NOT、NOR、ANDなどの回路そのものがもうすでに論理演算回路になっていますから、とりあえずはこちらのほうから攻めていったほうが入りやすいように思えます。
それにそこに算術演算を加えればCPUの究極のコア回路ともいえるALU(Arithmetic and Logic Unit)ができてしまいます。
おお。
そういうことになりますと、やっぱりこちらから攻めるべきでありましょう。
またまた前置きがめちゃめちゃ長くなってしまいました。
それではまずは論理演算回路から始めることにいたします。
論理演算回路については上でも書きましたように、それを構成するNAND、NOT、NOR、AND、ORについてはすでにトランジスタ回路として実現済みです。
今回は、回路としては半分は応用に属しますが、最後に残っておりました基本的な論理回路のひとつでもあります、XOR回路について考えることにします。
XOR(Exclusive OR)は排他的論理和と訳され、AND、OR、NOTとともに基本的な論理演算のひとつです。
回路図シンボルでは下のように表されます。
74HCシリーズでは74HC86があります。
その論理演算は下の通りです。
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回路に近いところが見えてきます。
一番上のA、Bがともに0のところを除けば、その下の3行はNAND回路そのものです。
どうやらそのあたりが突破口になりそうです。
次回はXOR回路をNAND回路で作ってみることにいたします。
トランジスタでCPUをつくろう![第58回]
2015.5.13upload
前へ
次へ
ホームページトップへ戻る