論理の合成


  1. 真理値表


    1. 真理値表 

      入力に対する出力の値を示した表を真理値表といいます。下は、AとBの和が奇数のとき1となる(排他的論理和)の真理値表です。
      A B X
      0 0
      0 1 1
      1 0 1
      1 1 0

    2. スイッチ回路を設計する

      真理値表は回路の仕様書になります。ここでは、真理値表から回路を設計する方法を紹介します。

  2. 2変数の場合


    1. 設計

       IAの真理値表で、Xが1になるには、AがオフでBがオンである場合、あるいは、AがオンでBがオフの場合です。
       これは、次のような論理式で表すことができます。
        X = ^A・B + A・^B
      この式を回路で表すと次のようになります。この回路は、Bのオン側とオフ側を逆にすると、先の階段スイッチと同じ回路になります。これは、「階段の点灯回路」と同じです。



  3. 3変数の場合


    1. 真理値表の例

       次のような3変数の真理値表を例に考えます。この回路は2進加算で、Cを桁上げ入力とするとき A と B の桁上げ回路になります。

      A B C| X
      -----------
      0 0 0 | 0
      0 0 1 | 0
      0 1 0 | 0
      0 1 1 | 1
      1 0 0 | 0
      1 0 1 | 1
      1 1 0 | 1
      1 1 1 | 1

    2. 回路の合成

       真理値表から、論理式を作成することができます。
      まず、出力が1になる場合を列挙して論理和します。上の例の場合4種類の入力に対してXが1になります。最初の条件は、C、Bが1で、Aが0の場合ですから、C・B・^Aとなります。他の場合も同様に合成すれば、
       X=C・B・^A + C・^B・A + ^C・B・A + A・B・C
      となります。このように、論理積された項を論理和した形式を加法標準形とよびます。
      この式は
       A+A=A の性質を利用して、A・B・C を付け加え
       X=C・B・^A +A・B・C+ C・^B・A +A・B・C+ ^C・B・A + A・B・C
      隣り合う項を、括弧でくくり
       X=C・B・(A+^A)+A・C・(^B+B)+A・B・(^C+C)
      A+^A=1 を利用すると
       X=C・B +A・B+ C・A
      と簡単化されます。

    3. 一般の場合
      一般に、4,5変数の場合も、真理値から、同様に回路を導き出すことができます。基本的には、出力1を出す行をスイッチの直列回路で作成し、この行を並列に接続すれば、良いのです。この形式を「はしご型回路:ラダーサーキット」とも呼びます。

  4. 応用:加算回路


    1. 2進数とは

      1桁の10進数では0〜9までの数字しか表現できません。10以上の数字は二桁の数字を利用して 10*M+N をMNと表記します。3桁の数は LMN と表記し、
        10*10*L + 10*M + N
      を表します。
       同様に、2進数1文字では0,1しか表現できません。数、2,3は二桁の数字MNで
      2*M + N のように表すことができます。4以上の数は 3桁の LMN で 2*2*L + 2*M + 2*N を表します。これで、0〜7までを表現できます。

      問題
      6,9,12に対応する2進数を求めなさい。
      01101 に対応する10進数を求めなさい。

    2. 2進数の足し算

      2進数の足し算も10進数の足し算と変わりません。下の桁から桁上がりを考慮して順に計算します。10進数で2以上の場合は、結果1を次の桁への桁上がりとします。
      1. 問題
        次の2進数の加算をし、さらに、10進数で計算して検算しなさい。
        01101+00101=
        01001+01111=

    3. n桁の2進数の加算

       n桁の2進数の加算回路を真理値表で定義することも可能ですが桁数が多くなると現実的でなくなります.例えば 5 桁の加算の場合入力数は10となりますから,真理値表の行数は 1024 となってしまいます.
       しかし,人もn桁の加算を一度に計算しているわけではありません。1 桁の計算を桁上げを通して繰り返すことにより計算しています.多桁の 2 進数の加算も 10 進と同様に 1 桁の加算の繰り返しで可能です.次に例を示します.桁上がりを考慮しながら、下位の桁から順に一桁づつ計算していく手順を確認して下さい。

         0 0 1 0
       + 0 1 1 0
      ------------
        1 0 0 0

    4. やればできる?

      5桁の加算回路を一般的な方法で設計します。入力を A4,A3,A2,A1,A0 と B4,B3,B2,B1,B0 とします。入力の数が10ですから真理値表(忘れた人は前回の真理値表を参照)の行の数は、210=1024 となります。作る元気ありますか?

    5. 問題を小さく分解しよう


       n桁の加算器は、一桁の加算器を次のように、縦続に接続して合成することができます。このとき、前桁の桁上げ出力Dを次の桁のC入力に接続します。最初の桁の桁上げ入力は0とします。
       出力Dは次の桁の入力Cとなりますから、Dをリレー回路に接続し、C(^C)は前の段のリレーDのオン側(オフ側)接点を利用します。このようにすると、1桁の回路ができればそれをn個並べるだけで、n桁の加算回路ができます。

      n桁加算回路


      問題
      n=3として次のように入力を定めたとき、各出力の値を図に記入しなさい。

      (A3,A2,A1,A0)=(0,1,1,0)、 (B3,B2,B1,B0)=(1,0,1,0)


    6. 1桁加算回路を設計する

      1桁の加算回路を作成します。まず、X,Y,C を入力とし、その和をSとする真理値表を作成します。次に、X,Y,C を入力とし、その桁上げをDとする真理値表を作成します。SとDを計算するスイッチ回路を作成します。Sはランプで表示し、Dは次の桁の桁上げ入力C:になります。

      (例)加算器の和(S)と桁上げ(D)の真理値表
      X Y C S D
      0 0 0 0 0
      0 0 1 1 0
      0 1 0 1 0
      0 1 1 0 1
      1 0 0 1 0
      1 0 1 0 1
      1 1 0 0 1
      1 1 1 1 1

    7. 半加算と全加算

      Dは、X,Y,Cの二つ以上が1のとき1になります。したがって、
       D=X・Y + X・C + Y・C
      となります。
       XとYとの排他的論理和を◎とします。すると
       S=X ◎ Y ◎ C
      となります。排他的論理和は半加算器とも呼ばれます。半加算演算は二つの信号の和を計算しますが、これは、排他的論理和と同じです。XとYの半加算に、さらにCを半加算すると、「全加算」になります。

    8. 減算回路

       減算回路は2の補数回路を利用して実現できます。X - Y を行うには、X と Y の 反転(NOT)を加え、さらに最小桁に桁上がりを加えます。これで、 X + ^Y +1 の計算ができます。これは、X に Yの2の補数を加えることになります。

  5. 応用2:比較回路


    1. 大きさの比較回路(1ビット)

      2進数の大きさを比較する回路を作成します。まず、一桁の比較回路を考えます。A と Bを比較し、AがBより小さいときL、等しいときE、大きいとき G、を1とします。
       E=A・B
      は間違いです。これでは、A=B=0 のときE=1になりません。正解は
       E=^A・^B + A・B
      です。G、L は簡単です。
       G=A・^B
       L=^A・B

    2. nビットの比較

       複数のビットを一度に扱うのは大変です。これも1ビットごとに分解して処理します。
      下位の桁の 比較結果を Li、Ei、Gi とし、Ai、Bi の大小関係を考慮して、Lo、Eo、Go を出力する回路を考えます。これを、順に縦続接続すれば、n桁の比較ができそうです

    3. 演習

       Eo = Ei・(Ai=Bi)
      となります。ここで、(Ai=Bi) はAiとBiが等しいとき1となる論理式とします。
       Lo =( Ai < Bi ) となりそうですが、これだけでは不十分です。(Ai=Bi)でLi=1 の場合を考える必要があります。
      Lo,Go を考えてください。

    4. 3ビット比較回路

       複数ビットの比較を行うには、1ビットの比較回路を接続します。一番下位の桁の比較入力は、L=G=0、E=1 とします。左の出力が3ビットの比較の結果です。


  6. 課題


    以下の問題をレポート用紙にまとめ報告しなさい。
    1. 問題

      次の真理値表を実現する論理式およびスイッチ回路を導きなさい。
      A B C | X
      -----------
      0 0 0 | 0
      0 0 1 | 0
      0 1 0 | 0
      0 1 1 | 1
      1 0 0 | 0
      1 0 1 | 1
      1 1 0 | 1
      1 1 1 | 1

    2. 課題

      1ビット比較回路の Lo、Eo、Go、の論理式を作成しなさい。

    3. アンケート

      真理値表から論理式及び回路を合成する方法は理解できましたか?
       1 できた  2 ほぼ理解できた 3よくわからん  4全くわからん

      0011 と 0001 の足し算はどれになりますか
       1. 1001  2. 100  3.111

      0011の2の補数はどれになりますか
       1.1100  2.1101  3.1001