トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第164回]
●CPUクロック
およそ1週間ぶりの更新になってしまいました。
急ぎの納品と、納品間際の思わぬバグ対策が重なって、この1週間はとても更新しているだけのゆとりがありませんでした。
本日やっと納品を済ませてほっと一息ついたところです。
さて。
前回までのところではCPUレジスタのもとになるデータラッチ回路について説明をしてきました。
データラッチ回路はCPUには欠く事ができない重要な回路です。
同じようにCPUには欠く事ができない重要な回路がもうひとつあります。
CPUクロック回路です。
データラッチ(レジスタ)を脳の記憶領域にたとえるとすると、CPUクロックは心臓にたとえられるでしょう。
CPUはメモリから読み込んだ命令をクロックに従って実行していきます。
クロックが止まるとCPUも止まってしまいます。
そのようにCPUクロック回路はCPUを構成する回路のうちでも最重要な回路です。
下はMYCPU80のCPUクロック(クロック発生回路)の回路図です。
ちょっと余計な回路もありますが、回路図の大体上半分がCPUクロック発生回路です。
74HCU04で4MHzクリスタルを発振させて、それを74HC74で1/2分周して得た2MHzをCPUクロックとして使っています。
下は命令の実行に必要なクロック信号の発生回路です。
2MHzクロックをさらにバイナリカウンタ74HC161と74HC74で5段階に分周し、それをもとにして、クロック間隔の異なるT、M、Wの各クロック信号を作り出しています。
この回路図を見ていて気が付きました。
今までMYCPU80(MYCPU80B)のCPUクロックは2MHzです、と書いてきました。
そのCPUクロックというのはちょっとあいまいな表現です。
確かに「CPUクロック」としては2MHzが使われているのですが、上の回路ではそれをさらに分周してA(1MHz)、B(500KHz)、C(250KHz)、D(125KHz)、E(62.5KHz)のクロックを得ています。
そのうちのA、B、CからT0〜T20のクロック信号を作り出しています。
このTクロックがマシンサイクルを構成する最小単位ですから、正確に表現すれば、MYCPU80(MYCPU80B)のCPUクロックは1MHzということになります。
それはともかくとして、そのようにCPU回路ではCPUクロックをもとにしてそれを何段階かに分周する必要があります。
クロックを分周するにはバイナリカウンタを使います。
クロックの分周にはバイナリカウンタのほかに74HC74などのD−FFも利用することができます。
74HC74のQ_出力をD入力につなぐとCK入力を1/2分周した信号が得られます。
トランジスタCPU回路も基本的にはMYCPU80の回路をもとにして、CMOSICで構成しているロジックをトランジスタ回路に置き換えていきます。
多段のバイナリカウンタをいきなりトランジスタ回路で組むのはちょっと無理があります。
1段だけのカウンタを作ってそれをつないでいきます。
1段のカウンタということになりますと、上の回路図にありますように、74HC74の回路が参考になります。
74HC74はDフリップフロップです。
フリップフロップは前回までのところで説明しました。
しかしそこで説明したのは74HC74ではなくて74HC75タイプのデータラッチです。
残念なことに、74HC75を74HC74のように使うことはできません。
74HC74のクロック分周回路では自分自身のQ_出力をD入力につなぎます。
Q_出力はCK入力の立下りでラッチされたD入力の反転出力です。
Q_出力は(Q出力も)次のCK入力の立下りまでラッチされたまま変化しません。
次のCK入力の立下りではそれまでラッチされていたQ_出力が新しい入力信号としてラッチされるとともにQから出力されます。
そのようにしてQ出力はCK入力の立下りごとに反転するので、結果としてCK入力を1/2分周したパルスがQから出力されることになります。
ところが74HC75型のラッチはCK入力がHの期間中は入力がラッチされずに出力に筒抜けになってしまうので、つまりQ_を固定できないので、74HC74のようにQ_をDに接続することはできません。
ということで、せっかく作った74HC75型のラッチ回路ですが(それはそのままCPUレジスタなどの回路には使えますが)、CPUクロック回路には残念ながら使えません。
CPUクロック回路を実現するためには、さらに工夫してなんとか74HC74型のラッチ回路も作る必要があります。
なかなかに前途多難です。
トランジスタでCPUをつくろう![第164回]
2019.10.2upload
前へ
次へ
ホームページトップへ戻る