← 블로그로 돌아가기부울 대수 기초 · 3/4

곱의 합을 넘어: 효율적인 논리를 위한 합의 곱(POS)

합의 곱(POS)은 SOP의 쌍대 형식으로, 진리표의 0에서 구성됩니다. 최대항을 유도하고 OR-AND 회로를 만들며 POS와 SOP를 비교해 보세요.

DennyDenny
약 7분 소요
Chalkboard feature illustration for “곱의 합을 넘어: 효율적인 논리를 위한 합의 곱(POS)”

요약: 정준 합의 곱은 출력이 0인 각 행마다 최대항 하나를 AND합니다. 정준 곱의 합은 출력이 1인 각 행마다 최소항 하나를 OR합니다. 0 행의 개수는 정준 항의 개수는 예측하지만, 가장 잘 최소화된 회로를 예측하지는 못합니다. 두 형식을 모두 목표 기술에 매핑한 뒤 비교하세요.

곱의 합(SOP) 형식은 대부분의 설계자가 자연스럽게 출발하는 지점입니다. 진리표의 1을 보고 최소항을 쓴 뒤 이들을 OR로 연결합니다. 하지만 SOP는 이야기의 절반일 뿐입니다. 그 대수적 쌍대인 **합의 곱(Product of Sums, POS)**은 1이 아닌 0을 보며 같은 문제에 반대 방향에서 접근합니다.

진리표의 0이 1보다 적다면 정준 POS의 절 수는 정준 SOP의 최소항 수보다 적습니다. 최소화하면 이 비교는 달라질 수 있으며, 적은 수의 항을 썼다고 해서 합성 후 면적, 지연 또는 전력이 자동으로 더 작아지는 것은 아닙니다. POS는 OR-AND 또는 NOR-NOR 구조로, SOP는 AND-OR 또는 NAND-NAND 구조로 자연스럽게 매핑됩니다.

합의 곱 분해하기

합의 곱(POS) 식은 이름 그대로 하나 이상의 합(OR) 항을 논리적으로 곱한(AND한) 식입니다.

일반형을 살펴봅시다.

Y=(A+B)⋅(A‾+C)⋅(B+C‾)Y = (A + B) \cdot (\overline{A} + C) \cdot (B + \overline{C})

이 식에서 (A+B)(A + B)처럼 괄호 안에 있는 각 항은 ‘합 항’입니다. 이 각각의 합 항을 논리적으로 ‘곱’하여(AND하여) 최종 출력 YY를 만듭니다.

OR 게이트 구성 요소

이 구조는 2단 OR-AND 회로에 자연스럽게 대응합니다. 첫 단계의 OR 게이트가 합 항을 만들고, 그 출력들이 최종 곱을 위한 하나의 AND 게이트로 들어갑니다.

정준 POS 식의 기본 구성 요소는 **최대항(maxterm)**입니다. 최대항은 함수에 있는 모든 변수를 원형 또는 보수형으로 포함하는 합 항입니다. 최소항(SOP)이 진리표의 한 ‘1’을 나타내는 반면, 최대항은 한 ‘0’을 나타냅니다.

OR 게이트 구성 요소 살펴보기

최대항 규약: 치명적인 함정

바로 이 지점에서 대부분의 학습자가 헷갈립니다. SOP에서 POS로 옮겨 가면 진리표에서 각 비트가 뜻하는 규약이 완전히 뒤집힙니다.

SOP(최소항) 규약에서는 다음과 같습니다.

  • ‘1’은 변수가 원형(AA)임을 뜻합니다.
  • ‘0’은 변수가 보수형(A‾\overline{A})임을 뜻합니다.

POS(최대항) 규약에서는 정반대입니다.

  • **‘0’**은 변수가 원형(AA)임을 뜻합니다.
  • **‘1’**은 변수가 보수형(A‾\overline{A})임을 뜻합니다.

왜 이렇게 뒤집힐까요? 목표를 이해하면 직관에 반하는 듯한 느낌이 사라집니다. 정준 POS 식은 함수 출력이 0인 행으로부터 만들어집니다. 각 최대항의 목적은 특정 입력 조합에서, 그리고 오직 그 조합에서만 ‘0’을 만드는 것입니다.

3변수 최대항 M5M_5를 보겠습니다. 이는 이진 입력 101101 (A=1,B=0,C=1A=1, B=0, C=1)에 해당합니다. 이 최대항이 00이 되려면, 바로 그 입력에서 모든 리터럴이 00이 되는 합을 만들어야 합니다.

  • A=1A=1이면, 00이 되는 보수형 A‾\overline{A}를 써야 합니다.
  • B=0B=0이면, 00이 되는 원형 BB를 써야 합니다.
  • C=1C=1이면, 00이 되는 보수형 C‾\overline{C}를 써야 합니다.

따라서 최대항은 M5=A‾+B+C‾M_5 = \overline{A} + B + \overline{C}입니다. 입력이 101101일 때 이는 0+0+0=00 + 0 + 0 = 0이 됩니다. 다른 모든 입력 조합에서는 리터럴 중 하나 이상이 11이므로 최대항 전체는 11이 됩니다. 여기서 핵심을 깨닫게 됩니다. POS 회로 끝의 AND 게이트는 OR 게이트 입력 중 적어도 하나가 00으로 내려갈 때만 00을 출력합니다.

진리표에서 POS 식으로

POS 식을 유도하는 과정은 체계적입니다. 다음 진리표로 정의된 논리 함수 YY를 예로 들어 보겠습니다.

ABCY최대항
0001-
0010M1=A+B+C‾M_1 = A + B + \overline{C}
0101-
0111-
1000M4=A‾+B+CM_4 = \overline{A} + B + C
1011-
1100M6=A‾+B‾+CM_6 = \overline{A} + \overline{B} + C
1111-

1단계: 0 찾기

진리표에서 출력 YY가 00인 모든 입력 조합을 찾습니다. 000을 인덱스 0으로 번호를 매기면 입력 인덱스이자 최대항 번호는 1, 4, 6이며, 표시된 표에서는 각각 두 번째, 다섯 번째, 일곱 번째 행입니다.

2단계: 각 0에 대한 최대항 쓰기

최대항 규약(0 = 원형, 1 = 보수형)을 적용합니다.

  • 인덱스 1(001): A=0,B=0,C=1→(A+B+C‾)A=0, B=0, C=1 \rightarrow (A + B + \overline{C})
  • 인덱스 4(100): A=1,B=0,C=0→(A‾+B+C)A=1, B=0, C=0 \rightarrow (\overline{A} + B + C)
  • 인덱스 6(110): A=1,B=1,C=0→(A‾+B‾+C)A=1, B=1, C=0 \rightarrow (\overline{A} + \overline{B} + C)

3단계: 최대항 AND하기

최종 POS 식은 다음과 같은 논리 곱입니다.

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)Y = (A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)

이는 흔히 간결한 파이(Π\Pi) 표기로 씁니다.

Y=∏M(1,4,6)Y = \prod M(1, 4, 6)

정준 비교에서는 최대항 세 개와 최소항 다섯 개를 비교합니다. 하지만 이것이 아직 최선의 구현은 아닙니다. 4행(100)과 6행(110)은 B만 다르므로 두 0 셀을 묶을 수 있습니다.

Y=(A+B+C‾)(A‾+C)Y=(A+B+\overline C)(\overline A+C)

최소화한 POS에는 절이 두 개입니다. 같은 함수의 최소화된 SOP에는 다른 커버가 필요합니다. 최소화된 두 형식을 비교한 다음, 실제 셀 또는 LUT로 매핑한 뒤에야 면적, 지연 또는 전력상 이점이 있다고 주장할 수 있습니다.

digisim.io에서 POS 구현하기

POS의 OR-AND 구조는 digisim.io 캔버스에서 쉽게 만들 수 있습니다. 같은 정준형 개념은 곱의 합 안내서와 카르노 맵 최소화에서도 다룹니다.

AND 게이트 구성 요소

제작 안내

  1. 입력: AA, BB, CC용 INPUT_SWITCH 구성 요소 세 개를 배치합니다.
  2. 반전: NOT 게이트를 사용해 보수 A‾\overline{A}, B‾\overline{B}, C‾\overline{C}를 만듭니다.
  3. OR 단계: 식 Y=∏M(1,4,6)Y = \prod M(1, 4, 6)에 맞추어 캔버스에 OR 게이트 세 개를 끌어놓습니다.
  • 첫 번째 OR은 AA, BB, C‾\overline{C}에 연결합니다.
  • 두 번째 OR은 A‾\overline{A}, BB, CC에 연결합니다.
  • 세 번째 OR은 A‾\overline{A}, B‾\overline{B}, CC에 연결합니다.
  1. AND 단계: 3입력 AND 게이트 하나를 캔버스에 끌어놓습니다.
  2. 최종 연결: 세 OR 게이트의 출력을 AND 게이트의 입력에 연결합니다. 최종 AND 출력에 OUTPUT_LIGHT를 붙입니다.
  3. 최소화: 정준 회로 옆에 (A+B+C‾)(A‾+C)(A+B+\overline C)(\overline A+C)를 만들고 여덟 행 모두가 일치하는지 확인합니다.

범용 논리 템플릿 열기

오실로스코프로 검증하기

POS 회로의 타이밍을 살펴보려면 OSCILLOSCOPE_8CH를 사용합니다. 첫 세 채널은 입력(AA, BB, CC)에, 네 번째 채널은 최종 출력 YY에 연결합니다.

스위치를 전환할 때 Y는 001, 100, 110에서 LOW입니다. POS가 ‘금지 상태를 걸러낸다’는 시각적 인상에 의존하지 말고 여덟 가지 입출력 쌍을 모두 기록하세요. 이는 지정된 함수에서 단지 출력이 0인 행들입니다.

흔한 함정: 부동 입력과 전파 지연

POS 회로를 만들 때 초보자는 부동 입력이 있는 AND 게이트가 예측 불가능하게 동작할 수 있다는 사실을 자주 잊습니다. digisim.io에서는 모든 입력을 CONSTANT 또는 INPUT_SWITCH에 연결해야 합니다.

개념적인 2단 POS 회로에서 데이터 경로는 OR 단계와 AND 단계를 지나며, 필요한 입력 반전도 거칩니다. 물리적 타이밍에는 셀 지연, 팬인, 배선, 부하, 입력 슬루, 출력 요구 사항도 포함됩니다. 매핑된 SOP, POS, 인수분해형 또는 LUT 구현 중 무엇이 유리한지는 목표에 따라 달라집니다. 일반적인 OR과 AND 지연 하나씩을 더하는 대신 타이밍 분석을 사용하세요.

실제 응용: POS가 빛나는 곳

SOP가 ‘더 쉽다’는데 왜 POS를 쓸까요? 현실에서는 시스템을 고장이나 예외로 정의하는 경우가 많기 때문입니다.

1. 주소 및 적격성 논리

주소 선택 함수는 일치하는 영역이나 제외할 영역으로 표현할 수 있습니다. POS는 적은 수의 0 조건을 깔끔하게 결합할 수 있을 때 편리합니다. 범위에는 접두사 비교와 인수분해된 디코더가 더 명확한 경우가 많습니다. 최선의 구현은 Intel 8086 시대의 규칙이 아니라 메모리 맵과 목표에 따라 결정됩니다.

2. 권한 논리

논리적 권한에는 다음처럼 여러 절이 필요할 수 있습니다.

RUN=(pressure_ok)(temperature_ok)(guard_closed)RUN=(pressure\_ok)(temperature\_ok)(guard\_closed)

이는 단일 리터럴 조건들의 곱입니다. 동등하게 shutdown = high_pressure OR high_temperature OR e_stop, RUN = NOT shutdown이라고 쓸 수 있습니다. 이 부울 방정식은 명세에는 유용하지만, 안전 등급 인터록에는 고장 검출, 정의된 무여자 동작, 진단, 검증된 하드웨어, 해당 안전 표준 준수도 필요합니다. POS 표기만으로는 어느 것도 보장되지 않습니다.

POS에서 NOR-NOR로의 연결

SOP가 NAND-NAND 논리에 자연스럽게 매핑되듯 POS는 NOR-NOR 논리에 자연스럽게 매핑됩니다. 이 변환에는 드 모르간 법칙을 사용하며, 같은 패턴을 따릅니다.

예제에서 시작해 보겠습니다.

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)Y = (A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)

이중 부정을 적용합니다.

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)‾‾Y = \overline{\overline{(A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)}}

바깥 막대에 드 모르간 법칙을 적용합니다(곱은 합이 되고, 각 인수는 보수화됩니다).

Y=(A+B+C‾)‾+(A‾+B+C)‾+(A‾+B‾+C)‾‾Y = \overline{\overline{(A + B + \overline{C})} + \overline{(\overline{A} + B + C)} + \overline{(\overline{A} + \overline{B} + C)}}

각 (A+B+C‾)‾\overline{(A + B + \overline{C})}는 NOR 연산이며(보수 입력을 고려한 뒤), 바깥 식도 NOR입니다. 따라서 결과는 2단 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가 매력적일 수 있습니다.

결론

합의 곱은 문제의 0, 즉 예외, 오류, 금지 상태를 보도록 가르칩니다. POS와 SOP를 모두 익히면 게이트 수를 줄이든, 전파 지연을 낮추든, 목표 기술에 더 잘 맞추든, 어떤 함수에도 가장 효율적인 구현을 선택할 유연성을 얻게 됩니다.

이 시리즈의 다음 글에서는 카르노 맵으로 모든 함수를 시각적으로 간소화해 보거나, OR 게이트 구성 요소 참조를 열어 이 글의 OR-AND 회로를 직접 연결해 보세요.

아이디어를 실제로 작동하는 회로로 만들어 보세요.