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

●RST命令の回路の説明です

RST命令の回路図です。


前回、RST命令のタイミングチャートの説明をしました。
RST命令の回路は、そのタイミングチャートをそのまま回路にしただけ、という感じです。
わかりやすい回路です(と思います)。

RST命令の全期間中、s3=0、s2=0、d3=0、d2=0を出力して、PC(プログラムカウンタ)が選択されるようにします。
PCH(プログラムカウンタの上位バイト)とPCL(同下位バイト)を区別できるように、M2のときにs0=0にして、そのときだけPCHが読み出し用に選択されるようにします。またM5でd0=0にして、PCHが書き込み用に選択されるようにします。その他のときはPCLが選択されます。s1、d1に対しては出力がありません。何も出力しないときは、そのラインは抵抗でプルアップされているため、1(Hレベル)になります。
s3〜s0、d3〜d0の値と、それによって選択されるレジスタについては、[第27回]の「レジスタコード表」を参照してください。
また、そのあたりの回路については、同じ[第27回]の「レジスタ選択回路」を参照してください。

T3とT5のときにSPclkにクロックを与えて、SP(スタックポインタ)の値を−1します。
SP(スタックポインタ)の回路は[第68回]にあります。
SPを構成しているのは、アップダウンカウンタの74HC191です。
74HC191は、up/down指定端子(pin5、D/U)をLにしてクロックを与えることで、+1、Hにしてクロックを与えることで−1カウントします。
RST回路では、クロックのみ与えて、D/Uに対しては何も出力しません。
何も出力しないときは、そのラインは抵抗でプルアップされているため、1(Hレベル)になります。ですから、ダウンカウントになります。

W1(M2+M3)の期間、regRDとdataOUTをアクティブにすることで、PCH、PCLの値が内部データバスに出力され、さらに外部データバスD0〜D7に出力されます。
同時に、SPselをアクティブにすることで、SPの値を外部アドレスバスA15〜A0に出力します。

そうしておいて、T4、T6でMEMWRをアクティブにします。
そうすることでSPで指定するメモリアドレスにPCの値が書き込まれます。

次のM4ではPCL(プログラムカウンタの下位バイト)をセレクトします(d3〜d0=”0011”)。
RST命令の命令コードのOP5〜OP3を内部データバスのiB5〜iB3にそのまま出力し、iB7、iB6、iB2〜iB0には0を出力したうえで、PCLに書き込みます(T8でregWRをアクティブにします)。

M5では内部データバスのiB7〜iB0に0を出力して、PCHに書き込みます(d3〜d0=”0010”。T10でregWRをアクティブにします)。
2009.5.3upload

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