目次

論理演算での活用

 論理演算は、Bool代数を基にした計算方法で
 身の回りで考えると、湯を混ぜるときに出て
 きます。

 40℃の湯を2つの桶に別々に汲み置き、より大きな
 桶に2つの桶の湯を入れても、40℃の湯のまま。

 これが論理和という用語で扱うのが、論理演算。

 2つの桶の体積が同じときには、湯を混ぜると
 体積は2倍になります。
 代数和という用語を使います。

 論理演算の基本は、3通りあります。

 マイクロコンピュータの内部では、論理否定を使わず
 排他的論理和を利用して計算していることが多いです。

 各論理演算の機能は、真理値表を使って表現されます。

 論理否定(NOT)

  1入力1出力で表現されます。
  真理値表は、以下。



 論理積(AND)

  2入力1出力で表現します。
  真理値表は、以下。



 論理和(OR)

  2入力1出力で表現します。
  真理値表は、以下。




 実際には、否定論理積(NAND)だけを用意しておき
 組み合せて、論理否定、論理積、論理和、排他的
 論理和を実現します。

 否定論理積(NAND)の真理値表は、以下。



 ここまでに出てきた内容を、spreadsheetで確認
 してみます。



 各論理演算は、IF関数を利用して記述できます。

 否定論理積(NAND)を利用し、論理否定、論理積、論理和
 排他的論理和を表現してみます。

 NANDをIF関数で表現すると、以下。

=IF((B8*C8)=1;0;1) or IF((B8*C8)=1,0,1)

 セルB8、C8の論理値での処理でワークシートを表現。



 NANDからAND(論理積)を導出することは
 単純に否定すればよいですがOR(論理和)
 の導出には、次の二重否定を使います。



 これを確認してみると、以下。(nA、nBはA、Bの否定)



 入力A、Bに対して、最も右にある列の値が
 ORになっていることがわかります。

 ORには、排他的論理和もあるので、通常の
 ORは、inclusive ORと呼ばれます。
 排他的論理和は、exclusive ORと英単語で
 表現すると、わかりやすいでしょう。

 排他的論理和のIF関数による記述は、以下。

=IF((B8+C8)=1;1;0) or IF((B8+C8)=1,1,0)

 排他的論理和の真理値表は、ワークシートでは
 次のようになります。



 論理演算を扱うとき、論理圧縮と呼ばれる作業が
 必要になることがあります。

 論理圧縮は、ICで実現する論理演算で使うゲート
 数を減らす目的で使われます。ゲート数を減らす
 ことで、消費電力が減る、高速動作につながると
 いう長所をもちます。

 論理圧縮で使う式は、以下。



 3式の証明を、ワークシート上で実行してみます。



 H列、J列は、入力Pの論理値と一致しています。
 また、I列では、入力P、Qの論理和になってます。

 D列からG列までは、H列からJ列に格納する
 論理値を求めて、中間値を格納。

 中間の論理値があるので、H列からJ列の計算式は
 以下としておけます。

 中間の論理値を求めてあるので、論理和を
 計算する式をIF関数を使って記述。

 算術計算で、論理演算を実現するときには
 IF関数を適用すると考えることが重要。

 Bool代数だけの証明は、以下。




 上の論理値を表現するP、Qは、複数の論理式の
 出力になっているときには、通過するゲート数
 を減らすことになります。

 通過するゲート数が少ないと、その分、高速動作
 になる可能性が出てくるので、論理圧縮は重要。

 次の回路で、論理圧縮したとき、結果が妥当かを
 判断してみます。



 組み合わせ回路の内容を、AND、OR、INVERTERに
 限定して、これまで使ったIF関数で処理します。

 ANDは、3入力1出力で表現するので
    IF((A3*B3*C3)=1;1;0)
 として扱えばよいはず。

 ワークシートで、どうなるのかを調べると、以下。



 Bool代数での論理圧縮は、以下。




目次

inserted by FC2 system