論理回路 

目次


第1節 同期式と非同期式の順序論理回路

第2節 非同期式順序論理回路の設計−状態遷移表

第3節 非同期式順序論理回路の設計−論理式と回路

第4節 非同期式順序論理回路の設計−リレー回路


テスト

Logをみる

Back
 

第4章 順序論理回路

    第4章 順序論理回路

 第3節 非同期式順序論理回路の設計−論理式と回路

 上の状態遷移表を真理値表のように読むと各状態変数について論理式が得られます。例えばS0+ が1になるのは S0 かつ not A のとき(A=0 のとき)か、S5 かつ not A and B (A=0 and B=1 のとき)ですから、

  S0+ = S0 and not A or S5 and not A and B

という論理式が得られます。同様にして

  S1+ = S1 and not B or S0 and A and not B
  S2+ = S2 and not A or S1 and not A and B
  S3+ = S3 and not B or S2 and A and not B
  S4+ = S4 and not A or S3 and not A and B
  S5+ = S5 and not B or S4 and A and not B

という全部で6つの論理式が得られます。

 これを回路にしますと次の図になります。

 

 込み入っているようですが、上の6つの式そのままで、基本的にはandとorを組み合わせた回路です。

 注意すべきは初期状態にどうやってもってゆくか、です。Resetという端子をそのために付け加えました。電源を入れた最初に、何らかの方法で、僅かな期間この端子を1にすれば、

S0=1,S1=0,S2=0,S3=0,S4=0,S5=0

という初期状態が実現されます。

 なおここでは一つの状態に、一つの状態変数Si を割り当て、それが1であることはその状態が取られたことと等価になるようにしました(このような方法を「非コード化法 non coded method」と呼びます)。

 状態数が非常に多い場合には、状態をコード化することがあります(コード化法 coded method)。「状態割り当て state assignment」といって何桁かの0と1の組み合わせで各状態を表すのです。特に「カウンター counter」という回路の場合はそうすることが多いのです。その時は

  Si: (s1,s2,...,sn)

というように一つの状態Siがいくつかの状態変数s1,s2,...,snの値の組み合わせに対応します。そして sj = fj(A,B,s1,s2,...,sn)

というようにn個の組み合わせ論理回路でこの順序論理回路が実現されます。

 このような場合、同期式の場合は問題が無いのですが、非同期式の場合は誤動作し易いのです。状態がSj から状態Sk に遷移するとき、(s1,s2,...,sn)の中の一つの値だけが変わるようにしておかなければいけません。そうでないと中間で瞬間的ですが予期しなかった状態が取られうるのです。例えば

 (0,0,1) から (1,1,1)

に遷移する場合、途中で (0,1,1) とか (1,0,1) などという状態が出現しうるのです。それはs1とs2が本当に同時には値が変化できない、という事情から来るものです。このような現象を「レーシング racing」といいます。s1とs2がどちらが0から1になるのが速いかレースをしてしまう、という訳です。

 レーシングを避けるために、状態割り当てをするとき、値が一つだけしか変わらないようにします。例えば

 S0: (0,0,0)
 S1: (0,0,1)
 S2: (0,1,1)
 S3: (1,1,1)
 S4: (1,1,0)
 S5: (1,0,0)

のようにすればどの可能な遷移時にも値は一箇所でしか変化しません。

 コード化法で非同期順序論理回路を組むときは、このような配慮が必要なのです。

 しかし、非コード化法でかなりの状態数まで対応可能なのです。非コード化法は回路の動きが直感的に分かりやすい、設計も簡単などの長所が多く、昔より素子の値段が安くなった昨今、推奨できる設計法です。