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

●JMP命令の回路図です



回路図の右下あたりがごちゃごちゃしています。
じつはこれは条件JMP命令(JP Z、JP NZなど)の回路です。
JMP命令と条件JMP命令はほとんど同じ動作なので、回路はORで共通にしてあります。
条件JMP命令については、JMP命令の説明が済んだら、その次に説明しますから、いまのところはこの部分は無視していてください。

右上でPCtoReg16という信号をアクティブにしています。
PCtoReg16はプログラムカウンタで示されるメモリアドレスのデータを読んで、16ビットレジスタの下位レジスタにその値を書き込み、続いてその次のメモリアドレスのデータを読んで、上位レジスタに書き込む回路です。
図の左下にその部分があります。
[第61回]のJMP命令のタイミングチャートのM2、M3の部分の働きをする回路です。

PCsel信号はOPコードフェッチサイクルでは必ずアクティブにする信号で、PC(プログラムカウンタ)の値を外部アドレスバスに出力し、MEMRDをアクティブにするとともに、外部データバスに出力されたメモリの値を内部データバスに読み込むところまでが、この信号をアクティブにするだけで実行されます。
T4、T6でregWRをアクティブにして、内部データバスの値をレジスタに書き込みます。
regWRはd3〜d0で指定したレジスタに値を書き込みますが、レジスタの下位、上位を切り替えるd0以外みあたりません。

その部分は回路図の右上にあります。
d3を0にしています。
d3だけが0ですから、d3〜d0=”0111”、”0110”になって、ワークレジスタWKL、WKHが選択されます。

s3は、このあとのM4、M5のときに、WKL、WKHからデータを読み出して、プログラムカウンタPCL、PCHに書き込むときに、WKL、WKHを選択するために、W2(M4+M5)でs3=0にしています。
d3については、M2、M3がWKL、WKHへの書き込み、M4、M5がPCL、PCHへの書き込みで、全期間を通じてd3=0になります。
s3については、M4、M5でWKL、WKHからの読み出しを行うためにs3=0にすることが必要ですが、M2、M3の期間はs3〜s0に関係無く、PCsel信号だけでメモリから内部データバスにデータを読み込みますから、M2、M3の期間はs3〜s0を設定する必要はありません。

M4、M5の期間(W2)にSPL、SPHにデータを書き込みますから、d2=0にします(すでにd3=0ですから、d3〜d0=”0011”、”0010”でPCL、PCHが選択されます)。

●2番目の基板にICを取り付けました


まだICを取り付けただけです。
回路を見直したことで、かなりICが減りました(20個ぐらい減りました)。
その分追加配線が山ほど必要になってしまいました。
完成まで、しばらくかかりそうです。


こちらは半田面です。
いまはまだ追加配線もしていませんから、きれいなものですが、多分追加配線でぐちゃぐちゃになってしまうと思います。
2008.9.9upload

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