標準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
前へ
次へ
ホームページトップへ戻る