トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第160回]
●RSフリップフロップ(2)
前回はA1015とC1815のペア2組で構成するRSフリップフロップ回路について説明しました。
問題はその回路のままでは、D入力が変化すると、Q、Q_も変化してしまうという点でした。
それでは全く使い物になりません。
しかしそこのところをどうするかがなかなかに悩ましくて、何回か試作を重ねました。
その結果最終的に下の回路に落ち着きました。
この回路を思いついたのは、まだほんの2〜3日前のことで、それまで「最終的」と思っていた回路はもっとごちゃごちゃしていて複雑でした。
上の回路ならすっきりしていて、わかりやすいと思います。
この回路のキモはD入力部分に置いたインバータです。
ただのインバータではなくて、実は3ステート出力になっています。
74HC126に相当します。
「ここを3ステートにすればいいじゃないか」というのが、突然ひらめいたアイデアでした。
コロンブスの卵と同じで、気が付いてみれば「あったりまえじゃないの」というようなものですが、それまでは教科書的なトランジスタ2石のRSフリップフロップ回路で入力部にコンデンサをつける、というあたりに気持ちがひっぱられてしまっていて、こんな簡単なことなのに全く気が付きませんでした。
どこが3ステートかといいますと、インバータ出力のエミッタにつないだ電源が鍵です。
WRVとWRGの記号がついています。
WRVとWRGはその下の回路でCK入力回路から出ています。
CKがHの期間だけWRVがVccにつながり、WRGがGNDにつながります。
CKがLの期間はWRVはオープンになり、WRGはVccにつながります。
WRVはともかくWRGがVccになったらいかんだろうと思われるかもしれませんが、バイポーラトランジスタはコレクタエミッタ間、ベースエミッタ間に逆電圧がかかっても一定電圧以下なら問題はありません(MOSFETではこういう接続はできません)。
CKがHの期間は、インバータの出力はDが反転したものになり、CKがLの期間はT5もT6もOFFになるためインバータの出力はハイインピーダンスになります。
ということは、これで問題解決です。
CK=HのときはRSフリップフロップの入力部がD_になりますが、CK=LのときはD入力部のインバータとRSフリップフロップは切り離されます。
念のために上の図の右の方に、入力と出力の関係を表で示しました。
これはCK=Hのときだけの関係表です(CK=Lの期間はQ、Q_はラッチされていて変化しません)。
表の説明です。
A、B、Cは回路図のA点、B点、C点です。
AがHのとき(その前の状態は考えません)、BがLだったならば、Bは変化せずLのままです。
そしてCもHの状態から変化しません。
AがLのとき、BがLだったならば、BはHになります。
するとCはHの状態からLになります。
AがHのとき、BがHだったならば、BはLになります。
するとCはLの状態からHになります。
AがLのとき、BがHだったならば、Bは変化せずHのままです。
そしてCもLの状態から変化しません。
●実はれっきとしたデータラッチです
上の回路はRSフリップフロップがコアになっていますが、回路全体として見れば、れっきとしたデータラッチです。
74HC75相当の回路です。
CK=Hの期間中はQ=D、Q_=D_です(データは出力に筒抜けになります)。
CKがLになる瞬間にQ、Q_はラッチされ、CK=Lの期間中はQ、Q_は変化しません。
この回路はそのままトランジスタCPU回路のレジスタ回路の1ビットとして使うことができます。
トランジスタでCPUをつくろう![第160回]
2019.9.20upload
前へ
次へ
ホームページトップへ戻る