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

●STC、CMCの回路も実装していました

前回、新たに、IN、OUT、RLC、RRC、RAL、RARの各命令回路を実装しました、と書きました。
じつは、以上の回路のほかに、STC命令とCMC命令の回路も実装したことを、うっかりして忘れていました。

STCもCMCも、動作も回路もシンプルで簡単なものです。

STCはset carry flag、つまりキャリーフラグをセットさせる命令です。
STCの命令コードは、37です。

CMCはcompliment carry flag、つまりキャリーフラグを反転させる命令です。
CMCの命令コードは、3Fです。

●STC、CMCのタイミングチャートです


なんともあっけないほど簡単です。
特に、STCは、Cフラグをセットするだけですから、単純そのものです。

●STC、CMCの回路図です

フラグレジスタは[第59回]で説明しました。
フラグレジスタはフラグの状態(セットかリセットか)を、Dフリップフロップ74HC74で保持しています。

STC命令の回路は、C(キャリー)フラグを保持している、Dフリップフロップのプリセット端子(CFset、Lowアクティプ)をLにすることで、Cフラグをセット状態にします。

CMCの回路はSTCに比べると少しだけ複雑です。
CフラグのDフリップフロップとは別に、CMC命令回路専用にDフリップフロップ(74HC74)を使います。
T4のタイミングで現在のCフラグの状態を、専用のDフリップフロップにラッチします。
次のT5のタイミングで、そのDフリップフロップのQ出力をインバートしてCフラグ用のDフリップフロップのリセット端子(CFres、Lowアクティプ)に出力します。

もしもCフラグがセットされていたら、Q出力はHになりますから、CFresへの出力(74HC03、pin6)がLになって、Cフラグはリセットされます。
もしもCフラグがセットされていなければ、Q出力はLですから、CFresへの出力はハイインピーダンスになり、Cフラグに影響は与えません(このときは、下で説明する、CFset信号がアクティブになります)。

その一方、もしもCフラグがセットされていなければ、反転出力Q_はHになりますから、CFsetへの出力(74HC03、pin8)がLになって、Cフラグはセットされます。
もしもCフラグがセットされていたら、反転出力Q_はLですから、CFsetへの出力はハイインピーダンスになり、Cフラグに影響は与えません(このときは、上で説明した、CFres信号がアクティブになります)。

STC命令とCMC命令をステップ動作で確認しているところの写真は、このあとの回で説明する予定の、ローテイト命令(RLC、RRC、RAL、RAR)の動作テストのところで、一緒に紹介することにいたします。
2009.2.20upload

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