カルノー図・論理式の簡単化ツール

2〜4変数の論理関数を、真理値表かカルノー図のマスをクリックして入力すると、最小の積和形(SOP)と和積形(POS)をその場で求めます。積和形のグループはカルノー図の上に色分けして描き、主項と必須主項、ゲートの入力の数も表示します。3入力の多数決、7セグメント表示のデコーダ、奇数パリティなどの例も読み込めます。

マスをクリックするたびに 0 → 1 → X(ドントケア) → 0 の順に切り替わります。真理値表とカルノー図のどちらで変えても、もう一方に反映されます。

カルノー図

真理値表

結果

最小の積和形(SOP)

最小の和積形(POS)

主項

    ゲートの入力の数
    –

    A̅ は A の否定(NOT)を表し、ANDは文字を並べて、ORは「+」で書き、番号はAを最上位ビットとしてABCDを2進数として読んだ値です。

    カルノー図とは:グレイコード順に並べる理由

    カルノー図は、真理値表の1行を1マスに対応させて、2変数なら4マス、3変数なら8マス、4変数なら16マスに並べた図です。このツールでは、4変数なら行をAB、列をCD、3変数なら行をA、列をBC、2変数なら行をA、列をBとし、ラベルを00、01、11、10のグレイコード順に並べています。2進数の順(00、01、10、11)では01と10の間で2ビットが変わりますが、グレイコード順なら隣り合うマスはちょうど1つの変数だけが異なります。1つの変数だけが異なる2つの最小項は、A̅BC + ABC = BC のように、その変数を消して1つの積項にまとめられます。カルノー図は、このまとめられる組を、隣り合うマスとして目で見つけられるようにしたものです。

    グループのまとめ方:2のべき乗の長方形と、端のつながり

    1のマスは、1、2、4、8、16マスという2のべき乗の大きさの長方形でまとめます。2ᵏマスのグループではk個の変数が消えるので、グループはできるだけ大きくとり、すべての1を覆うグループの数はできるだけ少なくします。グループどうしは重なってもかまいません。グレイコードでは10と00も1ビット違いなので、左右の端どうし、上下の端どうしもつながっていて、図は上下左右に巻きついた面のように扱えます。「4隅のまとめ」の例 Σm(0, 2, 8, 10) では、4つの隅のマスが1つのグループになり、その中でAとCは変わり、BとDは0のままなので、結果は B̅D̅ の1項になります。反対に「3入力の奇数パリティ」(A⊕B⊕C)では1と0が市松模様に並び、隣り合う1が1組もないため、4つの最小項がそのまま残り、積和形ではこれ以上簡単にできません。

    ドントケア(X)の使い方:7セグメント表示の例

    ドントケアは、その入力の組み合わせが起こらない、または起きても出力がどちらでもかまわないマスで、このツールではXで表します。Xはグループを大きくできるときだけ1とみなし、それ以外では0とみなせるので、まとめ方の自由度が増えます。「7セグメントのa(BCD)」の例は、数字0〜9を4ビットのBCD(ABCD、Aが最上位)で受けて、いちばん上の横棒aを点けるかどうかを決める関数で、6にも上の横棒を付ける字形では、aは0、2、3、5、6、7、8、9で点き、1と4で消えます。入力が10〜15になることはないので、これらをXにすると、最小の積和形は A + C + BD + B̅D̅ の4項・6リテラル(変数の文字の数)になり、4項とも必須主項です。10〜15を0のままにすると、A̅BD + A̅C + AB̅C̅ + A̅B̅D̅ のように4項・11リテラルが必要になり、同じ大きさの解がもう1つあります。なお、同じXが積和形では1、和積形では0として使われることもあり、この例の12(ABCD = 1100)は、積和形ではAのグループに、和積形では (B̅ + C + D) のグループに入っています。

    主項と必須主項、クワイン・マクラスキー法

    これ以上大きくできないグループ、つまりほかのどのグループにも含まれない積項を主項と呼びます。主項のうち、ある1のマスをそれだけが覆っているものを必須主項と呼び、最小の式には必ず含まれます。必須主項だけですべての1を覆えないときは残りの主項から組み合わせを選ぶ必要があり、Σm(0, 1, 2, 5, 6, 7) のように、必須主項が1つもなく、最小の解が2通りある関数もあります。このツールは、図を目で見る代わりにクワイン・マクラスキー法を使い、1つの変数だけが異なる項を表の上で機械的にまとめて主項をすべて求め、その中から項の数が最も少なく、同じなら文字(リテラル)の数が最も少ない組み合わせを探すので、必ず最小の式が得られます。人がカルノー図で隣接を見分けられるのは4〜5変数くらいまでで、それより大きな関数は、こうした表を使う方法や、論理合成ツールのヒューリスティックなアルゴリズムで簡単化します。

    積和形と和積形、NAND・NORでの実装とハザード

    積和形(SOP)はANDの項をORでつないだ式で、1のマスをまとめて求めます。和積形(POS)はORの項をANDでつないだ式で、0のマスをまとめ、各グループで0のままの変数は肯定、1のままの変数は否定にしてORでつなぎます。ド・モルガンの定理から、積和形のAND-ORの2段はNAND-NANDの2段に、和積形のOR-ANDの2段はNOR-NORの2段にそのまま置き換えられるので、CMOSで作りやすいNANDやNORだけで実装できます。どちらが小さいかは関数によって違い、7セグメントのaでは積和形が4項、和積形は (A + B + C + D̅)(B̅ + C + D) の2項です。また、最小の式はハザードのない式とは限らず、Σm(1, 3, 6, 7) の最小の積和形 A̅C + AB では、B = C = 1 のままAが変わると、2つの項が入れ替わる一瞬に出力が0に落ちる静的1ハザードが起こり得ます。両方にまたがるコンセンサス項 BC(このツールでは必須でない主項として表示されます)を加えて A̅C + AB + BC とすればこのグリッチを防げるので、ハザードを避けたい回路では、表示された最小の式にこうした項を足してください。

    論理回路の問題を解く

    カルノー図の主な用途はどれか。

    1. A回路の遅延時間を測る
    2. Bアナログフィルタを設計する
    3. C論理式を簡単化する
    答えと解説を見る

    正解:C. 論理式を簡単化する

    カルノー図は、真理値表を隣り合うマスの入力が1ビットだけ異なる(グレイコード順)ように並べた図です。1が隣り合うマスを1、2、4、8個の長方形でまとめると、その範囲で変化する変数が消えて論理式が簡単になります。端どうしも隣接とみなすのがポイントです。手作業では4〜5変数程度までが限界で、それ以上はクワイン・マクラスキー法や論理合成ツールのアルゴリズムで簡単化します。

    3入力の多数決回路の出力が1になる条件として正しいものはどれか。

    1. A3つの入力がすべて1のときだけ
    2. B3つの入力のうち2つ以上が1のとき
    3. C1つでも入力が1のとき
    答えと解説を見る

    正解:B. 3つの入力のうち2つ以上が1のとき

    多数決回路は入力の過半数が1のときに1を出力し、3入力では2つ以上が1のときです。論理式は AB + BC + CA で、全加算器の桁上げ出力と同じ論理になります。同じ回路を3重にして多数決をとる三重冗長(TMR)は、1つが故障や放射線によるビット反転を起こしても正しい出力を保てるため、航空・宇宙機器や高信頼のサーバで使われます。

    論理式 A + A・B を簡単化した結果はどれか。

    1. AA
    2. BB
    3. CA・B
    答えと解説を見る

    正解:A. A

    A + A・B = A・(1 + B) = A・1 = A となります(吸収則)。Aが1なら全体は1、Aが0ならA・Bも0なので全体は0で、Bに関係なくAに等しくなります。双対の形 A・(A + B) = A も成り立ちます。こうした簡単化で冗長なゲートを省くと、面積・遅延・消費電力を減らせます。ただしハザード対策のため、あえて冗長な項を残す設計もあります。

    よくある質問

    何変数まで扱えますか?

    このツールは2〜4変数です。4変数(16マス)までなら4 × 4の格子1枚で、端のつながりも含めて隣接を目で確かめられますが、5変数では4 × 4の図を2枚並べ、2枚の同じ位置のマスも隣り合うとみなす必要があり、見分けるのが難しくなります。真理値表も変数が1つ増えるごとに行数が2倍になるので、図と表を見比べやすい4変数までにしています。それより大きな関数は、論理合成ツールなどのソフトウェアで簡単化します。

    「ほかにも同じ大きさの解があります」と表示されるのはなぜですか?

    項の数とリテラルの数がどちらも最小になる組み合わせが、複数ある関数があるためです。たとえば Σm(0, 1, 2, 5, 6, 7) では、A̅B̅ + BC̅ + AC と A̅C̅ + B̅C + AB がどちらも3項・6リテラルで、必須主項は1つもありません。このツールはそのうちの1つを表示します。どれも同じ論理関数を表すので、どの解も正解です。

    X(ドントケア)は何を意味しますか?

    その入力の組み合わせが起こらない、または起きても出力がどちらでもかまわないことを表します。BCDの10〜15や、ステートマシンで使っていない状態などが代表的な例です。簡単化では、式が小さくなるほうの値として扱います。実際の回路ではXのマスにも求めた式で決まる0か1が出るので、その入力が本当に起こらないことを確かめてから使ってください。

    和積形を手で求めるにはどうすればよいですか?

    0のマスを、1のときと同じ規則でまとめます。各グループで0のままの変数は肯定(A)、1のままの変数は否定(A̅)にしてORでつなぎ、それらの項をANDでつなぐと和積形になります。これは、0のマスをまとめて否定の関数 F̅ の積和形を求め、ド・モルガンの定理で全体の否定をとるのと同じです。たとえば3入力の多数決では (A + B)(A + C)(B + C) となり、展開すると積和形の AB + AC + BC と同じ関数になります。

    求めた式を回路で確かめられますか?

    同じサイトの「論理回路シミュレーター」で、表示された式のとおりにAND・OR・NOTゲートを配線すると真理値表が自動で作られるので、このツールの真理値表と一致するかを確かめられます。Xのマスは、式で決まる0か1のどちらかになります。NANDだけの2段の回路に置き換えて、同じ表になることを確かめるのにも使えます。ただし、シミュレーターはゲートの遅延を扱わないので、ハザードによるグリッチは現れません。

    関連する用語

    カルノー図 真理値表 グレイコード ド・モルガンの定理 組み合わせ回路 グリッチ デコーダ 論理合成

    関連する計算ツール

    半導体・電子回路・情報の計算ツール →