TD4製作(8)

kacky12252005-02-08


ここ数日、ROM部分の作業に取り組みました。全部で16個DIPスイッチを取り付けなくてはいけないのですが、大変なのでとりあえず4個だけ。
4個だけでも、配線の取り回しがかなり面倒でした。配線が階段状に積みあがっています。これを後12個分やるのかと思うと...、ちょっとぞっとします。

どうにか配線が終わったので、ICを差さない状態で、ショートしている箇所が無いか、各ICの電源ピンが確実に5VもしくはGNDに繋がっているかテスターでチェックしました。
その後、全部のICをソケットに差しました。

そしていよいよ電源ON。このとき、ROMはすべてスイッチOFFの状態でつなぎ、プログラムカウンターがきちんとカウントしながらLEDが点灯する状態を確認しました。ROMのアドレス指定のLEDもきちんと順番に点灯しました。

本当は、順番に確認していかないといけないのですが、早くLEDをチカチカ点けたい衝動にかられ、とりあえず各レジスタと出力ポートのLEDが点くようにROMのスイッチをセットしてみました。ところが上手くいかない。自分では、AレジスタのところのLEDが点くつもりでセットしているはずなのに、出力ポートのところが点いてしまったりする...。
配線は付けるたびに回路図とテスターで確認したはずですが、どこか間違ってしまったのだろうか...。基板の裏を見てみますが、当然ごっちゃりと配線があり、今更これを直すのかと思うと...。

少し休憩して、改めて「CPUの創りかた」のROMのところの説明を読み返してみると、どうも私は、ビットの配列と、ROMのDIPスイッチの数字の並びの対応を勘違いしていたようでした。MSBが、DIPスイッチの「1」に相当すると思っていたので、全然違う命令を与えていたことになっていたようです。
一時は、ROMの配線をすべて外してやりなおさなくてはいけないのかと焦りましたが、間違ったことをしなくてよかったと思いました。

気を取り直して、もう一度LEDを点けるようにDIPスイッチをセットしてみました。
以下がそのプログラム(って言うほどのものでは全然ないですが。)です。

0000 MOV A,1111
0001 MOV B,1111
0010 OUT 1111

単純に、Aレジスタ、Bレジスタ、出力ポートに「1111」を出力するだけです。
写真がこれを実行した結果です。見難いですが、黄色がAレジスタ、緑がBレジスタ、赤が出力ポートのLEDです。

このほかにも色々パターンを試して遊びました。
とりあえずまともに動いているようなので、なかなかうれしいものです。本末転倒な気もしますが(^^;)、追って、本に書いてある動作確認手順もやってみようと思います。

今後の予定としては、

1. 残りのDIPスイッチの取り付け・配線
2. ブザーの取り付け(74HC04、ブザーON・OFF用スイッチ)

のつもりです。
あまり時間が空いてしまうとほったらかしになりそうなので気をつけます。
ラーメンタイマーの完成も、先が見えてきたかな。