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

●[5]MOV、MVI、HLT命令回路の動作テストの続きです(操作説明書から)

☆☆☆今回も操作説明書から、動作テストの説明の続きです。☆☆☆

●5.ステップ動作

MYCPU80組立説明書 V組立 [5]MOV、MVI、HLT命令回路 の組立作業後に行う動作テストの説明の続きですが、同時にステップ動作についての説明も兼ねています。
 ここでは、3.MVI命令のテストプログラムをメモリに書く でメモリに書き込んだ、リスト1のプログラムがそのままメモリに残っているものとします。

●5−1. ディップスイッチ(DS3)のセット

ステップ動作をさせるときは、ディップスイッチDS3の右から3番目の3のみを、小型のマイナスドライバを使って図のようにON(下側)にセットします。
[注意]必ずRESETSWを押しながらディップスイッチをセットしてください。



DS3−3をONにすると、LED(Exclk/STEP)が点灯します。
CPUのクロックが水晶発振回路から切り離されて、クロックのソースが外部からの入力パルスになったことを示しています(ステップモード)。

この状態で、RESETSWを離してもCPUはアドレス0000で停止しています。
PC(プログラムカウンタ)も外部アドレスバスも、アドレス0000を表示していることを確認してください。
MclockのA〜EのLEDも全て消灯していて、マシンクロックがT0の状態になっています。



T0では、PC(プログラムカウンタ)の値が外部アドレスバスに出力され、メモリからそのアドレスの値が読み出されます(PCADoutが点灯して、プログラムカウンの値が外部アドレスバスに出力されていることを示します)。
DATA BUS(外部データバス)には、メモリアドレス0000から読み出された値が表示されます。
3.で入力したプログラムのままならば、アドレス0000にはMVI B命令のコード06が書かれていますから、DATA BUSには06(00000110)が表示されています。

その値はinner BUS(内部データバス)に読み込まれます。外部データバスと内部データバスの間にあるゲート(IC231、74HC245)の状態を示すLED、DataGとDataDIRが点灯して、データバスケートがアクティブ(DataGがオン)で、その向きが外部→内部(DataDIRがオン)であることを示します。

T0では、データバスの値はまだOPcode register(命令コードレジスタ)にはラッチされません。
T0は命令の最初のステップですが、準備のためのステップで命令回路には影響を与えません。

☆☆☆操作説明書には図はありますが画像(基板の写真)はありません。でもせっかくのホームページですから、ここでは写真もUPしたいと思います。☆☆☆

MVI B,06命令のT0の写真です。
写真をクリックすると拡大画像を見られます。サイズが大きい(約1.4MB)ので、インターネットの低速接続環境では、ダウンロードに時間がかかります。ご注意ください(以下T1〜T6の写真も同じです)。



●5−2. STEPSW

ステップモードのときにSTEPSWを押すと、押すたびにCPUクロック回路に1クロックパルスが与えられ、マシンクロックのタイミングが1ステップ進みます。
STEPSWを押す前がT0の状態だったとすると、STEWPSWを押すとT1に進みます。



T1のときに、DATA BUS(データバス)の値(命令コード)がOPcode register(命令コードレジスタ)に読み込まれます。
OPftch(OPcode fetch)が点灯して、命令コードレジスタに値をラッチするための信号がアクティブであることを示します(まだラッチはされません。値は筒抜けになっています)。
このとき、命令コードレジスタに読み込まれた値が命令回路に伝わります。
この説明の例では、メモリアドレス0000に書かれた命令MVI Bの命令コード06(00000110)が、命令回路に伝わります。
命令コードはビットに分解され、ソースレジスタ(データを読み出すレジスタ)を示すs3〜s0の信号と、デスティネーションレジスタ(データを書き込むレジスタ)を示すd3〜d0信号が作り出されます。
s3〜s0、d3〜d0とレジスタの関係を以下に示します。

(表1) s3〜s0、d3〜d0とレジスタの関係

*1110はF(フラグレジスタ)またはM(メモリ)をともに示します
*ビット3は汎用8ビットレジスタと特殊レジスタを区別するために付加されます

8ビットの命令コードのビットのうち、下位3ビット(bit2〜bit0)はs2〜s0を示し、その上位の3ビット(bit5〜bit3)はd2〜d0を示します。
命令コード06(00000110)のとき、d2〜d0は000、s2〜s0は110になります。
d3、s3はT4以降のステップで回路によって確定されます。T1〜T3の期間中は、ともに1になります。
T1のとき、d3〜d0、s3〜s0の状態を示すLEDが下図のように表示されることを確かめてください。



MVI B,06命令のT1の写真です。



ここでもう一度STEPSWを押すと、マシンクロックが1クロック進んでT2になります。



T2は命令コードレジスタに命令コードをラッチ確定するためのステップです。
OPftchが消灯して、命令コードのフェッチサイクルが完了したことを示します(OPftchがONの期間中はOPコードレジスタはまだ値をラッチしてはいなくて、値は筒抜け状態になっています)。

MVI B,06命令のT2の写真です。



もう一度STEPSWを押すと、マシンクロックが1クロック進んでT3になります。



T3のときPC(プログラムカウンタ)をインクリメント(+1)するためのパルスがONになります。
PCclkが点灯してプログラムカウンタのクロック入力が↓になったことを示します。
この段階ではまだプログラムカウンタはインクリメントしません。
T3が終了したとき(次のT4になった瞬間)に、インクリメントされます。
以上のT0〜T3は特殊な命令を除いたほとんど全ての命令で動作は同じです。
つまりこの期間はまだ具体的な命令の解読動作は行われません。

MVI B,06命令のT3の写真です。



さらにSTEPSWを押してT4に進むと、命令によって個別の状態になります。



PCclkが消灯して、PC(プログラムカウンタ)が0001になることを確認してください。
同時に外部アドレスバスも0001になり、外部データバスにはメモリアドレス0001のメモリの値が出力されます。





MVI B,06命令のT4の写真です。



以後の動作については説明を省略しますが、MVI B命令では、このあとT5まで進んだところで命令の動作が終了し、次のT6は次の命令のT0になります。

MVI B,06命令のT5の写真です。



MVI B,06命令のT6(次の命令のT0)の写真です。



以上がステップ動作の基本的な操作です。

2009.9.7upload

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