組み合わせ回路

file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
組合せ回路
[組合せ回路] [簡単な組合せ回路] [基本組合せ回路] [課題]
組合せ回路
前回はディジタル回路の基本要素について説明しました。これらの要素を組み合わせることによって、いろい
ろな回路を構成することができます。
組合せ論理回路というのは現在の入力の状態だけで、出力の状態が一義的に決まるものです。図1のように、A0
∼An-1のn個の入力がある場合、m個の出力Z0∼Zm-1は、論理関数F0∼Fm-1によって、以下のように、論理式で
決まります。
Z0=F0( A0, A1, …, An-1 )
Z1=F1( A0, A1, …, An-1 )
:
:
:
Zm-1=Fm-1( A0, A1, …, An-1 )
よく使われる重要な組合せ回路は、ICとして市販されています。それらを使えば、基本ロジック・ゲートを使って
論理回路を設計する必要はありません。しかし、ブール代数を応用したり、よりよいディジタル回路を設計するた
めには、基本原理を理解した上で、基本に戻って考えることが重要です。この目的のために、いくつかの重要な
組合せ回路について説明していきます。
1/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
簡単な組合せ回路
まず、最も簡単な組合せ回路として、禁止回路・データ選択回路・比較回路を見てみましょう。

禁止回路( inhibit circuit )
図2のように、AND 入力の1つに NOT を通して信号を入力します。すると、 I が"1"のとき、Z は必
ず"0"になります。このように、一つの入力 I が他の入力より優先的に働き、出力を禁止してしまうことから、
禁止回路( inhibit circuit )と呼ばれます。図2の真理値表を作り、最小項和表示で論理式を考えると、以下
のようになることがわかります。
_
Z=A0・A1 … An-1・I
図2. 禁止回路

データ選択回路
禁止回路の考え方を利用すると、図3のようなデータ選択回路が構成できます。 禁止入力として二つの
AND 入力のそれぞれに選択信号 S を、一方には直接、 他方には反転して与えます。このようにすると、S
が"0"のとき A 入力が、 "1"のとき B 入力が、Z に現れることがわかります。
この動作の真理値表は、表1の用になります。
2/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図3. データ選択回路
表1. データ選択回路の真理値表

比較回路
2進数が一致したことを検出したり、大小を比較したりする回路を、比較回路といいます。表2に、基本とな
る2入力の一致回路と大小比較についての真理値表を示します。
表2. 比較回路の真理値表
3/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
これら三種類の出力から次の論理式を導くことができます。
これから、図4のような回路が構成できます。
4/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図4. 1ビットの比較回路
もし、nビットの一致比較を行ないたければ、各ビットの比較の積をとって
となるので、図5のような回路が得られます。
5/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図5. nビットの一致回路

エンコーダとデコーダ
数字や文字などの入力を、2進符号に変換する入力変換回路をエンコーダ( encoder : 符号器 )といいま
す。10進入力 Z0∼Z9を2進数に変換するためのエンコーダを考えてみます。この場合の真理値表は表3の
ようになります。
6/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
表3. 10進入力の2進数変換ための真理値表
これから、各出力に対する論理式として、
が作れます。論理回路は、図6のようになります。
7/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図6. 10進-2進エンコーダ回路
エンコーダとは逆に、2進符号から一つまたは複数個の出力を選択する出力選択回路を、デコーダ
( decoder : 解読器または復号器 )といいます。表3を使って2進-10進デコーダを考えてみます。論理式
は、
となるので、ANDゲートを使って図7のよう構成することができます。
8/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図7. 2進-10進デコーダ回路
さらに、Z10∼Z15が入力されないことを利用すると、カルノー図を使って上の論理式を簡略化することがで
きます。結果だけを示すと、
9/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
となります。
実際に簡略化して論理回路を構成すると、論理回路の入力数が10本減ることがわかります。
図8のような7セグメント表示器の各セグメントを、2進入力によって点灯させる回路も、一種のデコーダと
いえます。この場合の真理値表は、表4のようになります。
図8. 7セグメント表示器
表4. 7セグメント表示器用デコーダの真理値表
10/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
a セグメント用の出力Zaに対して、"0"に着目すると図9のようなカルノー図を作ることができます。
11/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図9. aセグメントに対するカルノー図表示器
ここで、( 1010 )2から( 1111 )2の入力がないので、"-"で示してあります。"-"は"0"でも"1"でもよいので(冗
長という)、簡略化に便利なように決めることができます。
この場合は、"0"として簡略化しています。こうして、次のような論理式を得ます。
論理式の誘導や、論理回路の構成については、各自でやってみて下さい。

パリティ回路
パリティとは、情報を表す符号ビットの他に、一定の規則にしたがって1ビットの余分な情報を加えて、誤
りを検出する方法です。追加する1ビットのことをパリティ・ビット( parity bit )といいます。パリティ・ビットに
は、1の個数が奇数になるように加える奇数パリティ( odd parity )と、偶数になるように加える偶数パリティ
( even parity )があります。
ディジタル処理形で 2 値信号が 2 ビット以上誤る確立は、非常に小さいことが知られています。したがっ
て、パリティ・ビットという 1 ビットを単に加えるだけで、ほとんどの誤りを検出することができます。パリティ・
ビットを使った誤り検出方法は、もっとも広く使われている検出方法といえます。(メインメモリーやハードデ
ィスクなどで使われている。)ただし、パリティ・ビットでは誤りは検出できても、その訂正はできません。
パリティ・チェックを行なうための、パリティ発生回路を考えてみます。この真理値表は表5のようになりま
す。
12/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
表5. パリティ発生ための理値表
この表と表2を比較してみると、奇数パリティは一致回路と同じであり、偶数パリティは排他的論理和回路で
あることがわかります。また、奇数パリティと偶数パリティは互いに否定の関係にあるので、図10のように書く
ことができます。
13/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図10. パリティ発生回路
4ビット・データに対するパリティ発生回路は、図10を拡張すれば簡単に作れます。とくに偶数パリティ
は、XORゲートを使うと図11のように簡単に構成できます。
図11. 4ビット・データの遇数パリティ発生回路
一方、パリティ・チェック回路は、パリティ発生回路と原理的に同じです。例えば、4ビットのデータとパリテ
ィ・ビット P との、5ビットの符号に対するパリティ・チェック回路を図12に示します。
14/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図12. パリティチェック回路
図11のパリティ発生回路と同じ回路の出力と、パリティ・ビット P との排他的論理和をとっています。こうす
ると、チェック出力 Z が"0"であれば、偶数パリティなら正しく、奇数パリティなら誤りであるとチェックできま
す。"1"の場合にはこの逆になります。
基本演算回路
2進演算の基本は、すでに述べたように加算です。1桁の2進数AとBを加算するもっとも基本の加算器は、表6の
ように表されます。
表6. 半加算器の真理値表
15/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
この加算器は、半加算器( half adder )と呼ばれています。なぜなら、下位からの桁上げを扱っていないので半加
算器だけでは一桁の計算しかできないからです。
半加算器の論理回路は、図13のようになります。
16/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
図13. 半加算回路
ここで、(a)は表6の論理関係を、基本論理だけを使って構成したものです。点線内は、排他的論理和と同じです
17/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
から、XORゲートを使うと同図(b)のように簡単に書けます。また、半加算器は同図(c)のような記号で表します。
次に、下位からの桁上げ Ci を含めて加算を行なうための全加算器( full adder )を考えてみます。この真理値表
は表7のようになります。
表7. 全加算器の理値表
これから、和 S( Sum )と、上位への桁上げCo は次のように計算できます。
18/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
これから、図14のような全加算回路が構成されます。同図(b)には、半加算回路の組合せとして書いた場合を示し
てあります。
図14. 全加算回路
上と同じようにすれば、減算のための半減算器と全減算器を作ることができます。しかし、普通は、加算器と減算
器を別々に作ることはほとんどありません。減算は補数の加算として処理されますこのため、加算回路と補数器を
組み合わせて減算が行なわれます。補数器についてはここでは述べません。
一方、乗算器と除算器も、加算器を基本にして構成されますが、加算器の他にシフト回路が必要です。この様な
回路では、一段一段時間を追って処理をすすめていかなくてはなりません。したがって、組合せ回路だけではな
く、今後述べる順序回路を使わなければ実現できません。
19/20 ページ
file://H:\サーバー\lachesis20111116\Manual\Logic\digital2.html
[課題] 7セグメント表示器の各セグメントを点灯させる論理関数を完成させ、0∼9までの入力に対して7セグメント
を点灯するプログラムを作れ。
ヒント
入力値を2進数に変換するには前前回の「情報の表現」の課題プログラムを用いるとよい。
各セグメントを表示させる関数Za∼Zgをもとめ、以下のプログラムの"1"の代わりに入れよ。わかっていると思う
が、それだけでは完成しない。
LINE文の色指定で2倍しているのは赤(2番)を使いたいためである。
10 CLS
20 Za=1
30 Zb=1
40 Zc=1
50 Zd=1
60 Ze=1
70 Zf=1
80 Zg=1
300 LINE(220,50)-(380,70),2*Za,BF
310 LINE(380,70)-(400,200),2*Zb,BF
320 LINE(380,220)-(400,350),2*Zc,BF
330 LINE(220,350)-(380,370),2*Zd,BF
340 LINE(200,220)-(220,350),2*Ze,BF
350 LINE(200,70)-(220,200),2*Zf,BF
360 LINE(220,200)-(380,220),2*Zg,BF
20/20 ページ