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

●CMA命令の回路の説明の続きです

前回はCMAの回路について説明をしました。
CMAはAレジスタの値を反転させる命令です。

ALU回路のレジスタ”B”の入力にある、インバート回路を利用して、値を反転させます。
しかし、ALUのレジスタ”B”の出力は、内部データバスにはつながっていないので、直接Aレジスタに送ることはできません。

そこで、まずALUのレジスタ”A”に11111111(FF)を入れておいて、その”FF”と、ALUのレジスタ”B”にいれた、Aレジスタの値を反転した値との、ANDを計算して、Aレジスタに出力します。

前回は、そのような説明をしました。

説明をしてしまってから、「あれえ?」ということに、気がついてしまいました。

いえ、間違いではありません。
それは、それでもよいのですけれど、いささか冗長である、と気がついたのです。

図で説明をいたします。

値を反転するということは、8ビットのうちの、1ビットに注目すると、(A)のようにインバータを通すことで、その結果を得ることができます。
しかし、ALU回路のインバータ出力は、直接内部データバスにはつながっていないため、(B)のようにしたのです。

でも、どうせALU回路を利用するのならば、わざわざインバートしてから、AND回路を通さなくても、(C)のように、直接XOR回路に入れても、同じ結果が得られます。
(B)よりも(C)の方がスッキリしています。

CMA命令を使わないでAレジスタの値をソフト的に反転させるには、XRI FFという命令を実行すればよいので、それと同じことをハードウェアでやればよいのです。

XORを利用することで、CMA回路は、さらに簡単になってしまいます。

74HC08ゲート×1と74HC05ゲート×2が、74HC03ゲート×1に置き換わってしまいました。

しかし、このことに気がついたのが、遅すぎました。
すでに全部の配線が、ほぼ終わってしまっていますので、いまさらそのように変更したとしても、半端なゲートが増えるだけです。
ですから、CMAの回路は、前回お見せした回路のままでいきますけれど、本当は今回お見せした回路の方がよいのです。
2009.4.22upload

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