ORを作るには、OR1とNAN2とINV1を組み合わせます。そこで、sという信号を使います。s=0にすると、NAN1の出力が1に固定になります。これは、NAN2の入力ですので、NAN2の入力が1に固定になり、NAN2はインバータと同じ働きになります。OR1とNAN2の複合ゲートはNAN2がインバータになるので、NORになります。
そして、このNORとINV1でORができます。そこで、SW1をoに切り替えるとSはI1とI0のORになります。
図10を見てください。この図でも、図8でOR回路を構成する要素だけ黒色にしてハイライトしましたので、分りやすいと思います。
s=0, S0=0にすると、 NAN2の入力が1になり、NAN2はインバータと同じになります。OR1とNAN2のインバータとINV1でORができます。S0=0 , S1=0, S2=1にすると SW0でp、SW1でoのINV1を選択するので、SはI0とI1のORになります
最後に反転(インバート)回路を作ります。皆さんはもうお分かりだと思いますが、減算器のところでi1にインバータを追加しましたので、これをそのまま使います。I1を反転させて、I0に0を入力して加算すれば、I1の反転した値が得られます。
演算機能を切り替えるためにS0、S1、S2、sの4つの信号が使われることが分ります。これらの信号は、フラッシュメモリから読み出した命令を翻訳(デコード)したデコーダから、演算の種類(加算、減算、AND、OR、反転)に合った信号の値になってALUに送られます。これらの信号によってALUはさまざまな演算器に切り替えられます。
図8に示した回路をn個つなぎ合わせることによって、nビットのALUを作ることができます。
実際のALUには、この他にもさまざまな回路が付いています。例えば、桁上がりの多い場合に、桁上がりの演算だけを高速に処理するキャリー・ルックアヘッド回路や、何も演算しないで通過させる回路、I0の値を1に固定したり0に固定したりする回路。少し高級なマイコンだとALUの中に乗算回路を組み込ませる場合もあります。これらの回路は章を改めて説明したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.