論理式とスイッチ回路


  1. 目的

    計算機では2進表現で計算や処理を行います。「処理」は論理回路(Llogic Circuit)で行われます。論理回路の数学的な基礎になっているのが論理代数で、論理代数と論理回路をつないでいる原理がスイッチ回路です。
  2. 論理代数

    1. 論理演算

      論理代数は値として 0,1 の二つの値のみをとる「代数」で、・(論理積)、+(論理和)、^(論理否定)の三種の演算を持ちます。・ と + は二項演算、^ は単項演算であり、下表のように定義されます。論理和は A または B どちらか一方(A or B)が1のとき 1となりますから OR 演算、論理積はAとB(A and B)共に1なら結果は1となりますから AND 演算とよばれます。また、論理否定は逆(not)の値をとりますから NOT 演算ともよばれます。
      論理和 
       +  0  1
       0  0  1
       1  1  1
      論理積
       ・  0  1
       0  0  0
       1  0  1
      論理否定
       ^
       0  1
       1  0
    2. 論理式の例

      論理演算を利用すると、論理式を書くことができます。論理式の中に複数の演算がある場合、論理否定、論理積、論理和の順に行います。( .. )があれば、その計算を優先します。
      「例」
      0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 1
      0・0 = 0, 0 ・ 1 = 0, 1 ・ 1 = 1
      ^0 = 1, ^1 = 0
      1・0 + ^0・1 = 0 + 1・1 = 0 + 1 = 1
      ^(1・0 + 1) = ^1= 0
    3. 問題

      次の計算をしなさい。
       1 ・ ( ^0 + 0)=
      ^(0 + 1) ・ (0 + ^1) =

  3. 論理変数と論理式

    1. 論理変数と定数演算

      A,B,C..を0または1を表す論理変数とします。0 との論理積は相手が 0 でも 1 でも 0 となりますから
          A ・ 0 = 0   A + 0 = A 
      となります。また 0 と論理和しても値は変化しません。どうように、1との演算は次のようになります。
          A + 1 = 1   A ・ 1 = A 
    2. 演算の優先度

      論理変数を演算すると論理式ができます。括弧がない場合、演算の順序は、否定、論理積、論理和の順とします。論理積は論理和に優先して演算されますから、
         (A・B) + ((^C)・D) = A・B + ^C・D 
      と書くことができます。
    3. 問題2

      各変数がとりうるすべての値の組に対し、論理式(1)の値を求めなさい。
      また、(2) の式で A=1 の場合と、A=0 の各場合について、左右の式が等しいことを確認しなさい。
       (1)   ^A・B + A・^B
       (2)   A・( B + C ) = A・B  +  A・C

  4. 論理式とスイッチ回路

    1. 論理式を計算する回路

      10進数の算術式を計算する回路は非常に複雑です。しかし、論理式は単純なスイッチを接続するだけで簡単に「計算」できます。

    2. スイッチ素子

      機械式スイッチは機械的な動作で端子間をオン(導通)またはオフ(非導通)に切り替ることができます。オン、オフを0と1に対応させると、スイッチは論理変数の「入力装置」と考えることができます。下の図は機械的スイッチの記号と小型のスイッチの例です。左の記号で ○ は端子を意味します。スイッチを下側に倒すと左の端子と右下の端子間はオフとなり、左の端子と右上の端子がオンとなります。逆にスイッチを上側に倒すと左の端子と右下の端子間はオンとなり、左の端子と右上の端子がオフとなります。ここでは、スイッチの左端子が右上側と接続している時オン、右下側と接続している時オフであるとよびます。
         
    3. 論路式とスイッチ回路

      論理変数にスイッチを対応させます。論理変数の値が1ならスイッチをオン(上側に接続)に、0 ならオフ(下側に接続)に対応させます。スイッチを組み合わると、論理式の演算を回路で確かめることができます。

      下の2本棒の記号は電池、丸い記号はランプ(電球)です。スイッチは入力装置、ランプは出力装置になります。この図は、回路図をシミュレーションする CircuitMaker (フリーの回路シミュレータ)の結果を利用しています。上の回路でスイッチをオンにするとランプが点灯します。ランプの点滅で、回路の状態を表現できます。
    4. 直列接続でAND演算ができる

      二つのスイッチを直列に接続すると、論理積が実現できます。二つのスイッチS1,S2 が共にオンのとき、電球が点灯します。これは、変数と A と B が 1 のとき、結果が1になることを示します。一方のスイッチを 0 にすると、ランプは消えます。これは、論理積が0になることに対応します。したがって、この回路で論理積の計算ができます。

    5. 並列接続でOR演算ができる

      スイッチを並列に接続すると、論理和を計算できます。S4, S6 のどちらか一方のスイッチをオンにすると電球が点灯します。


  5. ANDとORを組み合わせる

    1. 直並列接続でANDとORを組み合わせた式ができる

       下図 は直列と並列を組み合わせたスイッチ回路です。スイッチ S9 がオンで、かつ、S8 または S7 がオンのとき 電球が点灯します。この回路を論理式で表現すれば
            L = S9 ・(S7 + S8)
      となります。Lが1のとき、電球は点灯します。


    2. 問題3

      以下の論理式を計算する回路を設計しなさい。
          A ・B + C・ D
         (A+B)・(C + D)

    3. 使用する端子を逆にすれば変数の論理否定ができる

       使用するスイッチの右側接点を反対(下)側にすればスイッチがオフのときスイッチが動通するので、変数の否定が実現できます。次の図はスイッチS11の端子の接続を変更しています。この場合、スイッチS11がオン(上がわ)状態の時電球は点灯しませんが、オフになると点灯します。すなわち、
           L = A ・ ^B
      に対応する回路となります。
    4. 変数が複数使用される場合

      同じ変数 A が複数使用される場合は、同時に開閉するスイッチが必要です。下図で上下二つのS14のスイッチは同時に開閉するスイッチです。S14をA, S12,S13 をB,C とすると、下図は A・(B + C) となります。(論理式訂正しました)
    5. 階段灯のスイッチ

       階段の照明スイッチは巧妙なスイッチ回路です。上側左は消えている状態です。ここで、1階のS16スイッチをひねって点灯します(上側右)。次に2階のスイッチをひねって消します(下側左)。二つのスイッチで一つのランプを点滅しています。

    6. 大広間のスイッチ(参考)

      では、3箇所の入り口がある大広間の明かりを異なるスイッチで点滅してみましょう。ここで、S19,S20は同時に点滅するものとします。上段左の消灯状態から、S19,S20をひねって点灯した場合です。下段S17をひねった場合です。下段右は、下段左から、S18をひねった場合です。



  6. まとめとデモ

    1. まとめ

      0,1 の二つの値を演算する、論理積、論理和、論理否定 演算子を定義する
      この演算を組み合わせた式を論理式という。
      スイッチを用いると、論理積は直列、論理和は並列、変数の否定は端子の逆接続で実現できる。
    2. デモ

      4箇所でオン・オフできるスイッチ回路を紹介します。この回路は、離散数学IIで実習しています。

  7. 演習、課題

    1. 演習

      1:A,Bの各値について、A・B + ^A・^B を計算しなさい。
      2:上の論理式を計算するスイッチ回路図を書きなさい。
      3:階段スイッチの論理式を求めなさい。
    2. アンケート

      ■A・(^A + B) と等しいのは
       1 A + A・B 2 A・B  3 B
      ■A+B=A+C なら B=Cである。
       1.これは正しい 2.正しくない
       ヒント A,B,C すべての場合で確認しなさい。
      ■次の真理値表の演算結果を表わす論理式はどれか(平成20秋 基本情報技術者試験)

       1.x・y + z  2.(x+y)・z  3 x・(y+z)  4 x + y・z

    3. 課題

      1:A,B の各値について、A・B +^ A・B を計算しなさい。
      2: (A + ^B )・(C + D)
       を計算するスイッチ回路を設計しなさい。
      3:Aが1の場合と0 の場合にわけて ^(A+B) = ^A ・ ^B を証明しなさい。