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

●[5]MOV、MVI、HLT命令回路の実装です

[第310回]で説明した作業です。
今回はいよいよ命令回路の実装作業にかかります。
最初のプログラム動作のテストもします。

今回はMOV、MVI、HLT命令の回路を実装します。
実装する部分は、こちらのシルク図で、ピンク色で着色したところです。

●さっそくプログラムを実行させてみたのですが…

部品の実装が終わってから、さっそく簡単なプログラムをメモリに書いて、実行させてみました。
プログラムといっても、いまのところ、MOV、MVIとHLTしか実行できません。
まずはMVI命令でテストしてみました。
下のプログラムをメモリに書き込みました。
[第143回]で使ったプログラムです。

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

ところが、動きません。
本来ならば、Bレジスタに00、Cレジスタに01…、と表示して停止するはずなのですが、全く変化無し、です。
やっぱり、スタートからつまづいてしまいました。

●またまた回路にミスがありました

なんだかあせってしまいます。
オシロをつないであちこち調べてみましたら…。
わかりました。
試作の段階でジャンパ配線で直したところを、回路図を訂正するのを忘れてしまったために、基板配線も直さずに、そのまま基板を作ってしまいました。
回路図bPの下の赤線が今回訂正した部分です。
IC251(74HC123)のCLR端子(pin3、pin11)はVccにプルアップしなければいけなかったのに、間違った回路のままになっていました。



●やっと動き出したのですが…

うーん。まだ、どこかがおかしい…。
ステップ動作なら正しく動作するのですが、2MHzで実行すると、暴走してしまいます。
よわった…。

原因がわかるまで、たっぷり半日かかってしまいました。
なんと、たった1本の抵抗のつけ忘れが原因でした…!
回路図bWのR51は、このあと「作業7」で実装することになっていたのですが、これが間違いでした。
この抵抗がまだついていなかったために、すでに実装済みのIC180(74HC244)の出力が禁止されずに、とんでもないタイミングでアクティブになってしまったことが、暴走の原因でした。


R51を実装したところ、やっとまともに実行されるようになりました。
やれやれ…。

●あれぇ?まだ、おかしい?

念の為に、メモリに対するMVI命令もテストしてみましょう、なんてお気軽ムードで、MVI M命令をテストしてみましたら…。
あれ。メモリが全然書き換わりません。
なんでしょうかねぇ。
もう、いやになってしまいます。

またしても、ぶつぶつ文句を言いながら、回路の確認です。

やっと、わかりました。
これは、完全な思い違いでした。
MVI M命令は、レジスタに対するのと違って、メモリから読み込んだ値を、同時にそのまま別のアドレスのメモリに書き込むことはできないため、WKレジスタに一旦書き込んでおいてから、次にそのWKレジスタから読み出した値をメモリに書き込む、という動作をします。
そのため、上の回路図の色分けで示すように、「作業4」で下位8ビットデータのWKLを実装しておいたのでしたが…。
これが勘違いでした。
OPコードの関係で、MVI M命令ではWKLではなくてWKHを使っていたのでした。

なんということだ。
ともかく、理由がわかれば、簡単です。
WKHの回路(上の回路図の黄緑色の部分)も実装いたしました。

やっとこれでOKになる…、はずだったのですが…。

まだ…、だめぇ?

ステップ動作で確認してみました。
そうしたら。
こんどは基板の配線ミスがありました。

基板裏の写真です。


右上部分で白い線でつないでいる部分にミスがありました。
左下の短い線は、さきほど説明した74HC123のCLR信号回路の訂正です。

これで、やっと無事動くようになりました。

●修正作業もやっとすべて完了した基板の写真です

写真をクリックすると拡大画像を見られます。サイズが大きい(約3.4MB)ので、インターネットの低速接続環境では、ダウンロードに時間がかかります。ご注意ください。



今回の作業範囲はかなり広かったので基板全体の写真にしました。A3スキャナで2回に分けて取り込んだ画像を真中付近でつなぎ合わせました。
ちょいとやっつけでしたので、つなぎ目がよくわかります。
ボタン電池も実装しました。
ちょっとみにくいですけれど、RAMの斜め左上に、垂直に立っています。

本日はタイムアウトです。
今回の動作テストについては、次回にUPすることにいたします。

2009.9.4upload

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