標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第143回]

●まだチェックしていないところがありました…

74HC123の動作が余りに異常なために、つい振り回されてしまい、まだチェックしていない肝心なところを見落としていました。

メモリWRITE用のPUSHスイッチ回路は確かに異常で、74HC123のA入力がH→Lのときだけ、Q出力が出されるはずなのに、A入力がL→Hのときにも、Q出力パルスが出てしまいます。
ただこれだけのことならば、何らかの理由で、PUSHスイッチのチャタリングが除去されていないのではないか、とも考えられるのですが、異常はそればかりではなくて、電源ONのときにも発生しているのです。
電源ONのときには、PUSHスイッチは押していないので、チャタリングなど発生するわけはありません。
しかし、チャタリング防止用の電解コンデンサがパワーONリセットと同様の働きをするため、A入力が遅れてL→Hになります。
すると、そのタイミングでQ出力パルスが出てしまうのです。

あれこれ試したのですけれど、どうにもその原因はわかりません。
うんうんうなりながら、天をあおいで考えていましたら。
あ、あ、あ!
そうだった!
やっとのことで気がつきました。

74HC123にはワンショット回路が2回路入っています。
そのうちの1回路は、今問題になっているメモリWRITEパルスの出力回路なのですが、もう1回路は、ONEステップ動作のための、パルス出力に利用していて、その回路がメモリWRITE回路と全く同じであることに、ようやく気がついたのでした。
その部分の回路図は[第140回]でお見せしていますが、もう一度再掲します。



まるで双子のように、全く同じ回路です。
それならば、メモリWRITE回路の異常な動作は、ワンステップ回路でも同じように観測されるはずです。
うかつなことに、そこのところは、全くノーチェックでした。
当然のことながら、ここは真っ先に確認すべきポイントでした。
で、確認してみると。

あれ?
なんと、こちらは(ワンステップの方は)、全く正常です。PUSHスイッチを押したときはQ出力パルスが出ますが、スイッチを離したときには、パルスは出力されません。
すると、異常な動作の原因は、メモリWRITE回路のどこかにある、ということになります。

ちょうど、前回の「対症療法」でコンデンサを入れたために、メモリWRITE回路の74HC04のシュミットトリガ回路と、74HC123のA入力回路をつなぐラインはカットしてあります(そこにコンデンサを挿入しました)。
そのコンデンサを外して、A入力に、ワンステップ回路のシュミットトリガからの出力を接続してみました(下図)。



結果はといいますと…。
これでも、やっぱり74HC123のpin12からは、異常なパルスが出てしまうのです。
しかも、なんとしたことか!
今まで正常だったonestepパルス(74HC123のpin4からの出力)まで異常になってしまったのです!
pin1とpin9を接続する前は、ワンステップ用のPUSHスイッチを押して、離すときにはpin4からはパルスは出力されなかったのに、pin1とpin9を接続しただけで、ワンステップ用のPUSHスイッチを押したときだけではなくて、離したときにもpin4からパルスが出力されてしまいます(いったい、なんてぇことだ!)。

●ついに。原因がわかりました!

基板の配線を確認してみましたが、pin9のラインはpin9の直近でカットしましたから、このようなことがおきるような回路などは全く何もつながっていません。

とすると!

お、お、お。
そうか、そうだったのか…!
(もういちど。てきは、ほんのうじに、ありぃ)
信じたくはなかったけれど…。

74HC123を基板から外して、交換しました。
穴径が小さいものだから([第139回]参照)、ポンプでハンダを吸い取ろうとしても、うまく吸い取れません。
仕方がないので、ICのピンを1本ずつニッパーでカットして、基板の裏からハンダゴテを当てながら、ピンセットで抜きました(やれやれ)。

やっとのことで、74HC123を交換して、電源を入れてみましたら。
いままでのトラブルは、まるでウソだったよう。
全く、正常に動作するようになってしまいました。

多分、74HC123のpin9の内部で、入力トランジスタが部分的に破損して、それが異常動作の原因になったのだ、と思います。
では、その破損は何が原因だったか、といいますと。
うーん、わかりません。
もともと、回路を組み付けて、動作テストを始めた初期の段階で、メモリの内容が書き換わってしまうことに気がついたのですから、あれこれいじってICにダメージを与えてしまった、ということは考えられません(あれこれいじくる前だったのですから)。
あるいは、もとから不良品だったのかもしれません(そんなこと、ありかなあ?)。

いったい、何だったのでしょう…。
きっと、あれです。魔物のしわざだったのですよ(悪霊退散、ン!!)。
正月早々、こういうのは、ホント、やめてほしいなぁ。
体力を消耗すること、はなはだしいったらありゃあしない。

●シュミットトリガを外してスッキリしてしまいました

やっとトラブルも解決しました。
74HC123の入力回路はシュミットトリガになっていることがわかりましたので([第140回]および[第141回]参照)、74HC04でせっかくつくったシュミットトリガですが、外すことにしました。


こんなにすっきりしてしまいました。

●開発速報。製作快調!

最近は映画館で映画を見ることなど滅多になくなりましたので、今はどうだか知りませんけれど、昔はよく予告編の前の段階で、「撮影所ニュース」なんてので、「撮影快調!」などというのをやっていました。
そのノリではありませんが、説明の方がもたもたとしていて、なかなか進まないウラで、「つくるCPU」の試作基板の組み付け作業は順調に進み出しました。

プログラムカウンタ、レジスタ回路の組み付けも完了し、最初の命令回路、MOV、MVI回路も完了しました。
ステップ動作もOKです。
CPUクロック(2MHz)での動作も、無事成功でした。

いずれ少しずつ説明の方も追いついていくと思いますので、詳細はそのときになったら、順次説明をしていくことに致します。
今回はほんの「さわり」ていどの近況報告、「開発速報」です。



2MHzで実行中の写真です。
トグルスイッチをパチパチやりながら(おお、30ン年ぶりか、なつかしいこの操作)、RAMに次のプログラムを入力しました。

0000 0600  MVI B,00
0002 0E01  MVI C,01
0004 1602  MVI D,02
0006 1E03  MVI E,03
0008 2604  MVI H,04
000A 2E05  MVI L,05
000C 3E07  MVI A,07
000E 76    HLT

JMP命令の回路はまだ組んでいないので、最後はHLT命令です。
そして、いよいよスタートです。

0000〜000Eまで一瞬にして実行され、最後の000E番地のHLTを無限に実行しています。
写真では止まっているように見えますが、000E番地のHLT命令をT0〜T3まで繰り返し実行しています。
プログラムカウンタ(PC)は、000Eで停止していて、OPコードレジスタにはHLT(コード76H)がフェッチされています。
外部アドレスバスA15−A0、データバスD7−D0はOPコードフェッチ期間(T0、T1)のみプログラムカウンタからの出力を反映しますが、そのあとのT2、T3は開放されてハイインピーダンスとなるため、全部がぼんやりと点灯しているように見えます。
しかしよく見ると、アドレスバスは00000000 00001110、データバスは01110110のように、1のビットが他のビットよりも明るいことがわかります。
右下方のMCLKは00000から00011の間を高速で点灯しているため、BとAのみ点灯しているように見えます。

RAMからアドレス000EのHLT命令のみを繰り返し読み込んで実行していますから、完全なエージングテストではありませんけれど、それでも、かれこれ12時間、暴走することなく、ずっと正常に連続動作しています。
いやあ、自分で言うのもなんですけれど、なかなかどうして、立派なものじゃありませんか?
ここまでは、ひとまず、「大成功」です。
2009.1.18upload

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