2015.6.17
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第82回]


●CPUのレジスタ(2)

前回はCPU回路のレジスタを構成するトランジスタ数を削減する試みについて途中まで書きました。
今回はその続きです。

下の図は前回お見せした8ビットレジスタの1ビット分の基本回路です。

この回路のうち、前回はスリーステートバッファの部分について検討しました。
今回はRSフリップフロップに入力するデータ入力部分について考えてみます。

ここはもうどうしようもないように見えますが、CPUのレジスタに限定して考えてみることで、トランジスタ数を半減できそうな工夫を思いつきました。
まだ思いついたばかりで試していませんので、実際に試して見なければ、実用になるかどうかはわかりません。
まだアイデアの段階です。
着眼のポイントはWR_パルスです。

CPU回路のレジスタに対してはある幅をもったWR_パルスによってデータの書き込みが行なわれます。


上の回路図では入力データが1の場合にはRSフリップフロップをセットし、入力データが0のときにはそれを反転してRSフリップフロップをリセットしています。
しかしせっかくのRSフリップフロップなのにデータが1のときも0のときも同じようにWR_パルスをゲートにしてセット、リセットするのは無駄ではないか、というわけです。

こういう回路では普通はWR_パルスの立ち上がり(上の図のS)のタイミングでデータをセットします。
それならばWR_パルスの立ち下がり(上の図のR)のタイミングで8ビット分全部のRSフリップフロップを一旦リセットしてしまったらどうでしょうか。
データが1のビットはSのタイミングであらためて1がセットされます。
データが0のビットは何もされませんからリセットされたまま(つまり0になったまま)になります。

そのように考えて描いてみたのが下の回路図です。


問題はトランジスタ出力の立ち上がり速度です。
74HC版MYCPU80はクロック2MHzです。
せめてそのくらいの速度には対応できないと使い物になりません。

下は74HC版MYCPU80のタイミングチャートです。


regWRのパルス幅は250nsです。
するとさきほどのトランジスタのコレクタ出力のパルス幅はその1/2程度、せいぜい150nsくらいに押さえなければなりません。
これはかなり厳しい数字です。
そういうことになりますとやっぱり実際に試してみて、カットアンドトライでC、Rの値を決めなければならないようです。

で試してみたのが下の写真です。

上側(CH1)はWRパルスに見立てた1MHzの入力パルスです。
下側(CH2)はトランジスタのコレクタ出力です。
おお。
これなら使えそうです。

入力パルスを2MHzにしてみました。

トランジスタのコレクタ出力の立ち上がりはなまっていますがなんとか100ns以下に収まっています。
これならCPUクロックを4MHzにしても使えそうです。

テスト中の写真です。

入力クロックは「クロック発生回路ボード」からの入力です。

おお、そうでした。
「クロック発生回路ボード」の出力は74HC4040からの出力でした。
ここはやっぱり念のためトランジスタロジック回路からの出力を入れて試してみなければいけませんでしょう。

「クロック発生回路ボード」からの出力を一旦「HCU04回路ボード」で受けて、そこからの出力をトランジスタのベースに入力しました。

下はそのときの波形です。

特に問題はないようです。

おお。
もうひとつ、試してみなければいけませんでした。
おそらく。
本番のトランジスタ版MYCPU80ではBS250の代わりに2SA1015を使うことになると思います。
上の「HCU04回路ボード」はBS250を使っています。

そこで「HC10−A1015回路ボード」でも試してみました。

「HC00−A1015回路ボード」を使えばよかったのですが、「HC10−A1015回路ボード」を使ってしまいました。
まあ、どちらでも同じことです。

下はそのときの波形です。

こちらも特に問題はないようです。

以上のテストによってC、Rを下の回路図のように決定しました。

Rがかなり小さい値ですがRに電流が流れるのは非常に短い時間ですから、それほど気にする必要はないと思います。

前回の検討によって使用することになったトランジスタは84個でした。
今回は2SC1815を1個使うだけですから、合計85個です。

トランジスタでCPUをつくろう![第82回]
2015.6.17upload

前へ
次へ
ホームページトップへ戻る