標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第142回]
●事態はさらに混沌として…
前々回、前回と横道に外れながら、メモリWRITEパルスのあやしげなふるまいについて、お話をしてきました。
メモリWRITE用のPUSHスイッチ回路のチャタリング除去のためのRC回路が、電源ON時にはパワーONリセット回路と同じふるまいをするのですが、それが74HC123のA入力につながっているため、74HC123から電源ON時にWRITEパルスとして出力されてしまうらしいことがわかりました。
しかし、このときA入力はLからHになるので、本来ならば74HC123からパルスは出力されないはずなのです。
電源がOFFになっている間にPUSHスイッチに並列につけられた電解コンデンサは完全に放電してしまいます。
この状態で電源がONになると、電解コンデンサにはVccから抵抗を通して充電電流が流れます。
しかしRもCもある程度大きな値なので、電解コンデンサが74HCのスレッショルド電圧(1/2Vcc)まで充電されるまでには、一定の時間がかかります。
電源がONになって他の回路が立ち上がっても、このコンデンサにつながっている74HC回路は、一定時間、入力がLレベルのままになります。
これを利用して電源投入時にCPUに安定したRESET信号を供給するのがパワーONリセット回路です。
メモリWRITE用PUSHスイッチ回路は、RESETとは何の関係もないのですが、よく見ると、回路の構造がパワーONリセット回路と同じであることがわかったのです。
しかし、パワーONリセット回路と同じ動作をしたとしても、さきほど説明しましたように、この回路の出力は、74HC123のA入力ですから、電源ON時にパルス出力のトリガになるわけはないはずなのです。
A入力がHからLになる立ち下りのときに、パルスが出力されるはすで、パワーONのときは、逆にA入力がLからHになるのですから、そのときにパルスが出力されるのはどうにも納得がいかない動作です。
回路をいろいろ切ったりつないだりしてみたのですが、原因はまったくわかりません。
そのうちに、さらにおかしなことをみつけてしまいました。
メモリWRITE用PUSHスイッチを押すと、74HC123からメモリWRITEパルスが出力されます(これは当たり前のことで、別におかしくありません)。
上(CH1)が74HC123のA入力で下(CH2)が74HC123のQ出力です。
PUSHスイッチが押されたタイミングでWRITEパルスが出力されています。
ところが、PUSHスイッチを離したときにも、WRITEパルスが出てしまうことがわかりました。
なんだ、これは?(しばし、絶句です)
何回テストしても同じ結果です。
そんな、ばかな…。
74HC123の、どこのメーカーのデータシートにも、こんなおかしな動作については、ひとことも書かれていません。
ノイズのせいか、とも思ったのですが、電源ラインにパスコンを入れてみても、いろいろ工夫してみても、まったく効果なし、です。
ひょっとすると、74HC123には、データシートには書かれていない、なにかとんでもない困ったクセがあるのかも…(そんなわけは、ないでしょう)。
うーむ。腕を組んで、考えてみても、何の進展もありません。
下手な考え、休むに似たり、です。
考えているより、まずは行動です。
やれることを、やってみるのが一番です。
PUSHスイッチの回路は単発現象なので、ストレージオシロでなくては、とらえることができません。
筆者の使っているオシロスコープはソニーテクトロニクスの100MHzなのですが(もう使い込んでずいぶん古くなってしまいましたが、昔新品で購入したときは、めちゃめちゃ高かった)、ストレージとして使うときは、写真のように20μSが限界です。
繰り返し信号ならば、100MHzまで観測できるので、もう少し詳しく何かがつかめるかもしれません。
そこで、74HC123のテスト回路を作って、A入力に方形波を入力して試してみました。
ジャノ目基板に74HC123の回路を作って、そこに当社のBASIC制御ボード、ZB25Kの82C55からの出力をつないでテストしているところです。
はい。ここで一旦、コマーシャル、いきます。
当社のZBKボードは簡単BASICで制御できます。
一般制御用ですから、BASICプログラムはROMに書いて、スタンドアローンで実行できますが、デバッグモードとして、DOS/Vパソコンと接続して、RAM上でBASICを実行させることもできます。
非常に便利です。
82C55から方形波を出力するプログラムです。
これで、キーボードから、RUN[Enter]と入力すれば、DOS/Vパソコンに接続されているZB25Kの基板上の82C55から方形波が出力されます。
どうです。簡単でしょう。
で、74HC123のA入力に方形波を入れてみましたら。
あれま。ちゃんとデータシートの通りです。
A入力(上。CH1)がH→Lのときには、Q出力(下。CH2)が出ていますが、A入力がL→Hのときは、Q出力はHのままです。
すると…。
●やっぱりWRITE用PUSHスイッチ回路が、おかしい…
なんだかよくわからないけれど、どうも74HC123のせいではなさそうらしい…。
やっぱりA入力に入る信号がおかしい、としか思えない…。
というわけで、またまた、もとの基板に戻って、もう少し詳細にA入力信号を調べてみることにしました。
PUSHスイッチを離した瞬間をストレージオシロでとらえて、そしてそれを、拡大機能で拡大してみました。
すると、や、や、やっ!
なんと、A入力にチャタリングの痕跡のような波形(矢印)が…!
やっぱり、チャタリングだったんだ…。
●でも、やっぱりおかしい…
いやいや。それは、おかしい。
なんたって、シュミットトリガ回路を通しているのですから。
それにPUSHスイッチに抱かせた2.2μFのコンデンサは十分過ぎるほど大きなもので、これで除去できないチャタリングなんて、あったら、それはもうチャタリングなどというナマやさしい、しろものではありません。
そもそも、PUSHスイッチからの入力以前に、パワーONの時点で、A入力がL→Hなのにパルスが出てしまうという、奇々怪々な現象の説明にはなりません。
なんたって、(パワーONは)スイッチを押したわけではありませんから、チャタリングが発生するわけがない。
うーん。
わっかりまっせん!!!
わからないけれど、なんとかしなければなりません。
だいたいね。これは、「つくるCPU」とは、ムカンケイな回路なのですよ。
ここまで、作るつもりじゃなかったの。ほんとうは。
どーも、いやーな、予感がしてたんだ…。
たかが、ワンショット回路なんかで、ここまでてこずるなんて、これはもう、悪魔のシワザといおうか、なんと言おうか…。
もう、ビールでも飲んで、寝てしまいたい!
●一晩寝てから、思いつきました
そうそう。そうなんだ。
A入力に、こんな、ご大層なパルスを入れる必要など、なかったんだ。
ならば、こうしてみたら、どうだろう?
図のように、A入力にコンデンサを入れてみました。
結果はといいますと。
まずは、PUSHスイッチを押したところです。
OKですね。
次は、PUSHスイッチを離したところです。
おお。パルスは出力されていません。やった!
念のため。
74HC04からの出力信号と、コンデンサを通したあとのA入力端子のところでの入力信号の波形です。
まずは、PUSHスイッチを押したところです。
次は同じく、PUSHスイッチを離したところです。
追加したコンデンサのおかげで「チャタリング」は完全にクリアされてしまったようです。
最後に、74HC123からパルスが出力されるときの、A入力信号とQ出力の波形です。
上(CH1)がA入力で、下(CH2)がQ出力です。
なんだかわからないけれど、コンデンサを追加してみたら、電源ONのときでも、WRITEパルスは出なくなってしまいました。
いやあ。よかった。
やっぱり、人間、とことん、考えてみれば、解決法はきっとみつかるものです。
よかった。よかった。
めでたし、めでたしです。
●でも…。やっぱり、納得できません…
でも…。
これって、やっぱり、あれです。
はやいはなしが、ごまかしじゃ、ありませんか?
原因はわからないのだけれど、いろいろいじくっていたら、解決してしまった、みたいな…。
病気治療なら、こういうのを、対症療法っていうんだそうですね。
いや。やっぱり、だめ。
納得できません。
あの、奇妙キテレツな74HC123のふるまいを、解明せずにおくことは、なんとも、くやしいじゃありませんか。
そこで。彼は、最後まで、原因を追求すると、心に、誓った、のだった…。
ここはもう、こうなると、あれです。プロジェクトXのテーマが流れる場面ですよぉ。
そして。ついに。たどりついた、衝撃の結末とは?
次回、衝撃の結末編。乞う、ご期待。
なんて。B級映画の宣伝文句そのままですね。
いや。解決しましたよ。
まあ。衝撃の結末と言えば、言えないこともありませんけれど。
唖然とするというか、そんなのあり?の結末でしたけれど…(いや、正確には、解決したと言っていいのかどうか)。
ほんと。くりごとですけれど、正月からこっち、トホホの連続で全くまいってしまいます。
(などと、しっかりと気を持たせたままで)ともあれ。詳細は、また次回、です。
2009.1.16upload
前へ
次へ
ホームページトップへ戻る