積和形を超えて:効率的な論理のための和積形(POS)
和積形(POS)は SOP の双対であり、真理値表の 0 から構成します。最大項の導出、OR-AND 回路の構築、SOP との比較を解説します。
要約: 正準的な和積形(Product of Sums、POS)は、出力が 0 となる各行につき一つの最大項を AND します。正準的な積和形(Sum of Products、SOP)は、出力が 1 となる各行につき一つの最小項を OR します。ゼロ行の数は正準 POS の項数を予測しますが、最小化後に最良の回路になるとは限りません。両方を対象技術へマッピングしてから比較してください。
積和形(SOP)は、多くの設計者にとって自然な出発点です。真理値表の 1 を見て最小項を書き、それらを OR します。しかし SOP は物語の半分にすぎません。その代数的双対である 和積形(POS) は、1 ではなく 0 に注目して同じ問題へ反対側から取り組みます。
真理値表の 0 が 1 より少なければ、その 正準 POS は正準 SOP の最小項より少ない節を持ちます。ただし最小化によって比較は変わりますし、書かれた項が少ないことが、合成後の面積、遅延、電力の小ささを自動的に意味するわけではありません。POS は OR-AND または NOR-NOR 構造に、SOP は AND-OR または NAND-NAND 構造に自然に対応します。
和積形を分解する
和積形(POS)は、その名のとおり、一つ以上の和(OR)項を論理積(AND)した式です。
一般形を考えてみます。
この式では、 のような括弧内の各項が「和項」です。個々の和項を論理的に AND して、最終出力 を作ります。

この構造は、二段の OR-AND 回路に自然に対応します。第一段の OR ゲートが和項を作り、その出力を一つの AND ゲートへ入力して最終積を得ます。
正準 POS 式の基本要素は 最大項(maxterm) です。最大項は、関数中のすべての変数を真または補数の形で含む和項です。最小項(SOP)が真理値表の一つの 1 を表すのに対し、最大項は一つの 0 を表します。
最大項の規約:重要な落とし穴
ここで多くの学習者がつまずきます。SOP から POS へ移ると、真理値表の各ビットの読み方は正反対になります。
SOP(最小項)の規約では、次のとおりです。
1は変数を真の形()で使うことを意味します。0は変数を補数の形()で使うことを意味します。
POS(最大項)の規約 では、これが正反対になります。
0は変数を 真の形()で使うことを意味します。1は変数を 補数の形()で使うことを意味します。
なぜ逆なのでしょうか。直感に反するかもしれませんが、目的を思い出せば理解できます。正準 POS は、関数出力が 0 となる行から作ります。各最大項の目的は、特定の入力組み合わせで、そしてその組み合わせでのみ 0 になることです。
3 変数の最大項 を例にします。これは二進入力 ()に対応します。この最大項を 0 と評価させるには、その入力組み合わせで全リテラルが 0 になる和を作ります。
- では、0 となる補数 を使います。
- では、0 となる真の形 を使います。
- では、0 となる補数 を使います。
よって最大項は です。入力が のとき、これは になります。ほかの入力組み合わせでは少なくとも一つのリテラルが 1 になり、最大項全体は 1 です。ここが重要な理解点です。POS 回路の最後の AND ゲートは、OR ゲート入力の少なくとも一つが 0 へ落ちたときだけ 0 を出力します。
真理値表から POS 式へ
POS 式を導く手順は体系的です。次の真理値表で定義される論理関数 を見てみましょう。
| A | B | C | Y | 最大項 |
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | - |
| 0 | 0 | 1 | 0 | |
| 0 | 1 | 0 | 1 | - |
| 0 | 1 | 1 | 1 | - |
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 1 | - |
| 1 | 1 | 0 | 0 | |
| 1 | 1 | 1 | 1 | - |
手順 1:ゼロを特定する
真理値表から、出力 が 0 になるすべての入力組み合わせを特定します。000 をインデックス 0 として番号付けすると、入力インデックスおよび最大項番号は 1、4、6 です。表示上は 2、5、7 行目に当たります。
手順 2:各ゼロに対する最大項を書く
最大項の規約(0 = 真、1 = 補数)を適用します。
- インデックス 1(001):
- インデックス 4(100):
- インデックス 6(110):
手順 3:最大項を AND する
最終 POS 式は論理積です。
これは簡潔な Pi()表記で、次のようにも書けます。
正準形で比較すると、最大項は三つ、最小項は五つです。しかしこれはまだ最良の実装ではありません。行 4(100)と行 6(110)は B だけが異なるため、ゼロセルをグループ化できます。
この最小化 POS は二つの節だけです。同じ関数の最小化 SOP には別の被覆が必要です。最小化形を比較してから、実際のセルまたは LUT へマッピングして、面積、遅延、電力の有利さを論じてください。
digisim.io で POS を実装する
POS の OR-AND 構造は、digisim.io のキャンバスで簡単に組み立てられます。正準形の考え方は、積和形ガイド と カルノー図による最小化 にも登場します。

構築ガイド
- 入力: 、、 用に三つの INPUT_SWITCH コンポーネントを置きます。
- 反転: NOT ゲートを使って補数 、、 を作ります。
- OR 段: の式に対して、キャンバスへ三つの OR ゲートを置きます。
- 最初の OR を 、、 に接続します。
- 二つ目の OR を 、、 に接続します。
- 三つ目の OR を 、、 に接続します。
- AND 段: 3 入力 AND ゲートを一つ置きます。
- 最終接続: 三つの OR ゲートの出力を AND ゲートの入力へ接続し、最終 AND 出力へ OUTPUT_LIGHT を付けます。
- 最小化: 正準回路の横に を作り、八つの行がすべて一致することを確認します。
オシロスコープで検証する
POS 回路のタイミングを調べるには OSCILLOSCOPE_8CH を使います。最初の三チャンネルを入力()へ、四つ目を最終出力 へ接続します。
スイッチを切り替えたとき、Y は 001、100、110 でローになります。POS が「禁止状態をフィルタする」という見た目の印象に頼らず、八つの入力/出力の組をすべて記録してください。これらは指定された関数のゼロ行にすぎません。
よくある落とし穴:浮いた入力と伝搬遅延
POS 回路を作るとき、AND ゲートのフローティング入力が予測不能に振る舞うことを初心者は忘れがちです。digisim.io では、すべての入力を CONSTANT または INPUT_SWITCH へ接続してください。
概念上の二段 POS 回路では、データ経路は OR 段と AND 段に加え、必要な入力反転を通ります。物理的なタイミングには、セル遅延、ファンイン、配線、負荷、入力スルー、出力要件も含まれます。ターゲットによっては、マッピング済みの SOP、POS、因数分解形、LUT 実装のいずれが優れることもあります。一般的な OR と AND の遅延を足すのではなく、タイミング解析を使ってください。
実世界の用途:POS が役立つ場面
SOP の方が「分かりやすい」のに、なぜ POS を使うのでしょうか。現実には、失敗条件や例外によってシステムを定義することが多いからです。
1. アドレスと適格性の論理
アドレス選択関数は、適合する領域または除外する領域から表現できます。少数のゼロ条件をきれいに組み合わせられる場合に POS は便利です。範囲については、プレフィックス比較や因数分解されたデコーダーの方が明確なこともあります。最良の実装は、Intel 8086 時代の規則ではなく、マップとターゲットで決まります。
2. 権限論理
論理的な許可には、たとえば次のように複数の節が必要になることがあります。
これは単一リテラル条件の積です。同じことを shutdown = high_pressure OR high_temperature OR e_stop、RUN = NOT shutdown とも表せます。これらのブール式は仕様に役立ちますが、安全等級のインターロックにはさらに、故障検出、定義済みの無励磁動作、診断、検証済みハードウェア、適用される安全規格への適合が必要です。POS 表記だけで、それらが保証されることはありません。
POS から NOR-NOR への対応
SOP が NAND-NAND 論理へ自然に対応するのと同じように、POS は NOR-NOR 論理へ自然に対応します。変換にはド・モルガンの法則を使い、同じパターンに従います。
例の式から始めます。
二重否定を適用します。
外側のバーにド・モルガンの法則を適用します。積は和へ変わり、各因子は否定されます。
各 は(補数入力を考慮した)NOR 演算であり、外側の式も NOR です。結果は二段の NOR-NOR 回路になります。
構造上の対応が重要な洞察です。ド・モルガンの法則により、SOP は NAND-NAND へ、POS は NOR-NOR へマッピングできます。ただし実装を強制するものではありません。ライブラリが特定のセルを有利に扱うこともあり、合成が式を因数分解または再マッピングすることもあります。
SOP と POS:どちらを使うか
| 基準 | SOP(積和形) | POS(和積形) |
|---|---|---|
| 導出元 | 出力 = 1 の行 | 出力 = 0 の行 |
| 構成要素 | 最小項(AND 項) | 最大項(OR 項) |
| 回路構造 | AND-OR(または NAND-NAND) | OR-AND(または NOR-NOR) |
| 項が少なくなる条件 | 真理値表の 1 が少ない | 真理値表の 0 が少ない |
| 設計上の見方 | 「いつ出力を ON にするか?」 | 「いつ出力を OFF にするか?」 |
この例では、正準 POS は最大項三つ、正準 SOP は最小項五つです。最小化後の POS は二つの節になります。ターゲットへのマッピングとタイミングを条件として、この関数では POS が魅力的になります。
結論
和積形は、問題のゼロ、すなわち例外、エラー、禁止状態に目を向けることを教えてくれます。POS と SOP の両方を身に付ければ、ゲート数の少なさ、伝搬遅延の小ささ、対象技術への適合といった目的に応じて、任意の関数に最も効率的な実装を選ぶ柔軟性が得られます。
このシリーズの次の記事では、カルノー図 で任意の関数を視覚的に簡略化します。または OR ゲートコンポーネントのリファレンス を開き、この記事の OR-AND 回路を配線してみてください。



