トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第138回]
●[HC139]組立キットの製作(7)C=1のときのB入力回路
B入力回路は[第136回]でも実装しましたが、その回路はC=0のときにアクティブになる回路でした。
今回はC=1のときにアクティブになるB入力回路を実装します。
下のオレンジ色で囲った回路です。
今回のB入力回路とその下のA入力回路は少し回路を簡略化できることに気が付きました。
緑色の×印をつけた回路を外して、その代わりに水色の線で示したようにジャンパ配線できます。
[第135回]の回路もそうでしたが、今回の回路ももしホームページの記事を書いていなければ気が付かないまま過ぎてしまったと思います。
毎日のように記事を書くのはなかなかに骨の折れる作業ですけれど、こうやって説明文を書くことで、それまで気が付かなかったことや、考えが間違っていたことなどに気付くことがときどきあります。
ホームページの思わぬ効能であります。
ということで今回はオレンジ色で囲んだC=1のときにアクティブになるB入力回路を実装します。
[抵抗]
R5 51KΩ
R6 200Ω
R9 51KΩ
R10 200Ω
[コンデンサ]
C4 22pFセラミック
C7 22pFセラミック
[ダイオード]
D11 1N4148
D13 1N4148
D14 1N4148
D16 1N4148
D18 1N4148
D19 1N4148
D21 1N4148
D22 1N4148
[LED]
L1 赤LED
L2 赤LED
L3 赤LED
L4 赤LED
トランジスタを実装すると抵抗などが隠れて見難くなるので、とりあえずここまで実装した写真をお見せします。
トランジスタを実装する前に回路図の水色で示したジャンパー配線をしておきます。
基板裏側矢印で示した追加配線です。
L10(赤LED)のカソードとそのすぐ横の抵抗R10(200Ω)とをリード線くずを利用してジャンパ配線します。
その部分を拡大しました。
このあと以下のトランジスタを実装します。
[トランジスタ]
T5 2SA1015
T6 2N7000
T7 2N7000
T10 2SA1015
T11 2N7000
T12 2N7000
トランジスタ実装後の写真です。
動作テストです。
今回は最終段の出力表示用LED(写真右上のL1〜L4)を実装しましたから、そのLEDで動作の確認ができるようになりました。
このLEDはG1_、G2_がアクティブ(L)で、C=1のときに、BとAの入力によって点灯、消灯します。
ただしまだA入力回路は実装していませんから、その状態でテストをするためには少し工夫が必要です。
C=1、B=1のときをテストします。
以下のテストでは、G1_、G2_はアクティブ(L)でC入力が1の状態でテストを行ないます。
左端のG1_の状態を示すLED(L9)とその斜め右下のG2_の状態を示すLED(L12)はともに入力がアクティブ(L)なので点灯しています。
そのさらに右側のC入力の状態を示すLED(L13)はC=1なので点灯しています。
その右斜め上、ほぼ中央にあるB入力の状態を示すLED(L10)はB=1なので点灯しています。
C、B、Aの各入力には何も接続していません。
入力はプルアップされているのでH(1)が入力されていることになります。
右端にあるA入力の状態を示すLED(L11)もA=1なので点灯していますが、今回の回路ではまだC=1のときのA入力回路は実装していませんから最終出力には反映されません。
そこで強制的にA=1を作り出しています。
A入力が1のときにはT14(2N7000)がONになります。
その状態を強制的に作り出すためにT14のドレインとソースをジャンパーケーブルでショートしています。
下はその部分を拡大した写真です。
スルー穴の径よりもジャンパーケーブルのピンのほうが細いためゆるゆるですが軽く接触しているだけでも十分機能します。
入力がC=1、B=1、A=1の状態になりますから、基板上部にある出力の状態を示すLEDの左端のLED(”Y7”、L1)が点灯しました(ひとつ上の写真です)。
今度は同じ設定でB入力を0(GNDに接続)にしました。
ほぼ中央にあるB入力の状態を示すLED(L10)は消灯しました。
このとき入力の状態はC=1、B=0、A=1になります。
右上の出力表示LEDは左から3番目(”Y5”、L3)が点灯しました。
上では強制的にA入力=1にしてテストをしました。
今度はA=0にしてテストをしてみます。
G1_、G2、Cは今までの状態と同じです。
その状態でB入力を1にしました(入力を開放)。
左端のG1_の状態を示すLED(L9)とその斜め右下のG2_の状態を示すLED(L12)はともに入力がアクティブ(L)なので点灯しています。
そのさらに右側のC入力の状態を示すLED(L13)はC=1なので点灯しています。
その右斜め上、ほぼ中央にあるB入力の状態を示すLED(L10)はB=1なので点灯しています。
上のところでも書きましたように、右端にあるA入力の状態を示すLED(L11)もA=1なので点灯していますが、今回の回路ではまだC=1のときのA入力回路は実装していませんから最終出力には反映されません。
そこで強制的にA=0を作り出しています。
A入力が0のときにはT18(2N7000)がONになります。
その状態を強制的に作り出すためにT18のドレインとソースをジャンパーケーブルでショートしました。
下はその部分を拡大した写真です。
入力はC=1、B=1、A=0の状態ですから、左から2番目(”Y6”のLED、L2)が点灯しています(ひとつ上の写真です)。
今度は同じ設定でB入力を0(GNDに接続)にしました。
ほぼ中央にあるB入力の状態を示すLED(L10)は消灯しました。
このとき入力の状態はC=1、B=0、A=0になります。
右上の出力表示LEDは左から4番目のLED(”Y4”、L4)が点灯しました。
[第136回]では、8pin丸ピンソケットの出力電圧を測りました。
LEDの右側にある8pin丸ピンソケットにはY0〜Y7までの出力がきています。
ピン1がY0でピン8がY7です。
そのときにはまだY0〜Y3までしか回路を実装していませんでしたから、ピン1からピン4の出力電圧を確認しました。
出力電圧はテスターで確かめることができます。
各出力をテスターで確認してみたところ、ピン1(Y0)は0V(実測値1.6mV)で、ピン3(Y2)とピン4(Y3)は約+5V(実測値4.73〜4.76V)でしたが、ピン2(Y1)は+3.5V位でした。
ここはT31(2SA1015)がONになって+5Vが出力されるべきところなのですが、その時点ではまだT31は実装されていませんからハイインピーダンスの状態のはずです。
ところがそのことを余り深く考えないで、そのあとT31を実装してしまったため、再確認することはできませんでした。
ところで今回もそのとき回路によく似ていることに気が付きました。
ひょっとしたらそのときと同じ状態が再現できるかもしれません。
そこで今回は上の写真の状態(Y4が0出力)のまま、Y7〜Y4の出力電圧をテスターで測定してみました。
実はもうA入力回路の途中まで実装してしまっていました(抵抗、コンデンサ、ダイオード)が、幸いトランジスタだけは未実装でしたので、多分状況は同じだろうと考えました。
ちなみに[第136回]のあと、トランジスタを実装後に出力電圧を確認したところ、Y1の出力も+5Vになりました。
Y7の出力です。
+4.74Vです。
Y6の出力です。
+4.74Vです。
問題のY5の出力です。
おお。
やっぱり約+3.5Vが出ています。
Y4の出力です。
ほとんど0V(+1.3mV)です。
[第136回]と同じ状況になりました。
今度こそということで、Y5につながるラインの電圧を測りましたところ、どうやら犯人はL3の発光ダイオードらしいことがわかりました。
しかし?
ちょっと、はてな?なのですけれど。
L3のカソード側にはなにもありませんから、ここに電圧が出るのはおかしいのです。
ですけれど、念のためにアノード側の電圧を測りますと約4Vです。
ということは10KΩの集合抵抗を通じてここに電流が流れているとしか思えません。
10KΩで1Vの電圧降下ですから0.1mAです。
カソード側の電圧は3.5Vなのですが、LEDは点灯していません。
うーん。
いったいどこに流れているのでしょう?
こういう現象があるとは、思ってもみませんでした。
やっぱり一種の漏れ電流のようなものかと思います。
ま。
残りのトランジスタを実装してしまえば問題はなくなるはずですから、ここは過渡的な現象として余り気にしないでおくことにいたしましょう。
トランジスタでCPUをつくろう![第138回]
2015.12.24upload
前へ
次へ
ホームページトップへ戻る