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

●INR/DCRレジスタを実装しました

INR/DCRレジスタ(およびINR/DCR命令の回路)を実装したところです。
写真をクリックすると、拡大画像を見られます。
拡大画像はサイズが大きい(約1.1MB)ので、インターネットの低速接続環境ではダウンロードに時間がかかります。ご注意ください。



INR/DCRレジスタ(8ビット)は写真の左上です。INR/DCR命令の回路は、その右側部分と写真中央の4個のICです。

8080のINR/DCR命令はA、B、C、D、H、Lの各レジスタだけではなくて、HLレジスタで示すメモリアドレスに対しても実行されます。
そのため各レジスタに、up/downカウンタを使ったとしても、それとは別に、メモリ用にup/downカウンタを用意しなくてはなりません。
各レジスタとは別にup/downカウンタが必要だというのなら、INR/DCR機能は全部そのup/downカウンタに集約してしまって、各レジスタはただのストレージの機能のみとしてしまったほうがスッキリします。

そこで「つくるCPU」では、A〜Lの各レジスタ(およびワークレジスタ)は74HC373による単なるストレージ機能のみとし、INR/DCR命令のための機能は、別に8ビットのINR/DCRレジスタを設け、各レジスタ(およびメモリ)から、INR/DCRレジスタにデータを転送し、そこでup/downしてから、またもとのレジスタ(およびメモリ)に戻す、という回路にしました([第58回])。

INR/DCRレジスタと各レジスタ(およびメモリ)との間でデータの受け渡しをするための回路が必要になりますが、それを含めても、この写真のようにわずかなスペースでおさまってしまったのですから、この考えは正解だった、と思います。

INR/DCRレジスタの右にある2個のLED回路は、フラグレジスタ回路です。
とりあえずS(サイン)フラグとZ(ゼロ)フラグのみ実装しています。

なお前回のMOV命令の回路を実装した写真で、説明が不足していました。
写真の右上部分にある8個のLEDは、MOV命令やその他の命令で、データのソース(source)になるレジスタとターゲット(destination)になるレジスタを示すためのビット列、s0〜s3、d0〜d3を表示するためのものです。
こうやって見ていると、sとdにそれぞれ別色のLEDを使った方がよかったかもしれませんね。

さっそく、INR/DCR命令を、まずはステップ動作で確認してみると。
おおお。動きました。動作OKです。
次はいよいよ、2MHzで連続実行です。
そのためには、条件JMP命令が必要です。

●JMP命令の回路を実装しました

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



JMP命令では、ジャンプ先のメモリアドレスを格納するために、16ビットのワークレジスタが必要です。
ワークレジスタは、下位8ビット分だけしか実装していませんでしたが、今回は上位8ビットも実装しました。
今まで空いていたPC(プログラムカウンタ)の左側のスペースが埋まりました。

JMP命令の回路はあちこちに分散しています。さきほどの写真と比べると、あちこちに少しずつICが追加されているのがわかると思います。
フラグレジスタも、S(サイン)フラグとZ(ゼロ)フラグに加えて、残りのH(ハーフキャリー)フラグ、P(パリティ)フラグ、C(キャリー)フラグを追加実装しました。

●ワークレジスタがおかしい…

さて、さっそくJMP命令のテストにとりかかったのですが、JMPアドレスを格納するワークレジスタがおかしい。
ジャンプ先アドレスはワークレジスタに書き込まれているのですが、それが読み出せない…。
さては、また…。
配線を調べてみたら。

今回はミスが重なっていました(トホホ…)。



左側の丸印で示した部分の中央付近で、2本のラインが交差してしまっています。
それから同じラインが、写真中央の丸印の部分でぷっつり切れてしまっています。スルーホールのランド忘れです。
それから、それから、写真右端の丸印2箇所で断線です。

ううむ。こんなところで断線なんて…。
ひょっとすると、これは基板屋の製版ミスか…。
なんて、人を疑うのはよくないです(これも、やっぱり私が悪かった)。

CADの配線図を確認してみました。



うーん。innerHの文字が邪魔。
で、移動してみましたら…。



文字のせいで、線がつながっていないのを、見落としてしまったんですねぇ。

あ。ひょっとすると…。
こちらも…。



LRDが邪魔…。
で、こいつも、どけてみましたら…。



ああ。やっぱり。
これも、文字が邪魔してたんだ。

うーん。ミスはミスなんだけど、こいつは、まあ、半分、不可抗力だわ。

しかし、覚悟はしていましたけれど、これだけ大きな基板ともなると、やっぱり、ミスもけっこう出てきますねえ。
先が思いやられます、です。
2009.1.25upload

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