곱의 합을 넘어: 효율적인 논리를 위한 합의 곱(POS)
합의 곱(POS)은 SOP의 쌍대 형식으로, 진리표의 0에서 구성됩니다. 최대항을 유도하고 OR-AND 회로를 만들며 POS와 SOP를 비교해 보세요.
요약: 정준 합의 곱은 출력이 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한) 식입니다.
일반형을 살펴봅시다.
이 식에서 처럼 괄호 안에 있는 각 항은 ‘합 항’입니다. 이 각각의 합 항을 논리적으로 ‘곱’하여(AND하여) 최종 출력 를 만듭니다.

이 구조는 2단 OR-AND 회로에 자연스럽게 대응합니다. 첫 단계의 OR 게이트가 합 항을 만들고, 그 출력들이 최종 곱을 위한 하나의 AND 게이트로 들어갑니다.
정준 POS 식의 기본 구성 요소는 **최대항(maxterm)**입니다. 최대항은 함수에 있는 모든 변수를 원형 또는 보수형으로 포함하는 합 항입니다. 최소항(SOP)이 진리표의 한 ‘1’을 나타내는 반면, 최대항은 한 ‘0’을 나타냅니다.
최대항 규약: 치명적인 함정
바로 이 지점에서 대부분의 학습자가 헷갈립니다. SOP에서 POS로 옮겨 가면 진리표에서 각 비트가 뜻하는 규약이 완전히 뒤집힙니다.
SOP(최소항) 규약에서는 다음과 같습니다.
- ‘1’은 변수가 원형()임을 뜻합니다.
- ‘0’은 변수가 보수형()임을 뜻합니다.
POS(최대항) 규약에서는 정반대입니다.
- **‘0’**은 변수가 원형()임을 뜻합니다.
- **‘1’**은 변수가 보수형()임을 뜻합니다.
왜 이렇게 뒤집힐까요? 목표를 이해하면 직관에 반하는 듯한 느낌이 사라집니다. 정준 POS 식은 함수 출력이 0인 행으로부터 만들어집니다. 각 최대항의 목적은 특정 입력 조합에서, 그리고 오직 그 조합에서만 ‘0’을 만드는 것입니다.
3변수 최대항 를 보겠습니다. 이는 이진 입력 ()에 해당합니다. 이 최대항이 이 되려면, 바로 그 입력에서 모든 리터럴이 이 되는 합을 만들어야 합니다.
- 이면, 이 되는 보수형 를 써야 합니다.
- 이면, 이 되는 원형 를 써야 합니다.
- 이면, 이 되는 보수형 를 써야 합니다.
따라서 최대항은 입니다. 입력이 일 때 이는 이 됩니다. 다른 모든 입력 조합에서는 리터럴 중 하나 이상이 이므로 최대항 전체는 이 됩니다. 여기서 핵심을 깨닫게 됩니다. POS 회로 끝의 AND 게이트는 OR 게이트 입력 중 적어도 하나가 으로 내려갈 때만 을 출력합니다.
진리표에서 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단계: 각 0에 대한 최대항 쓰기
최대항 규약(0 = 원형, 1 = 보수형)을 적용합니다.
- 인덱스 1(001):
- 인덱스 4(100):
- 인덱스 6(110):
3단계: 최대항 AND하기
최종 POS 식은 다음과 같은 논리 곱입니다.
이는 흔히 간결한 파이() 표기로 씁니다.
정준 비교에서는 최대항 세 개와 최소항 다섯 개를 비교합니다. 하지만 이것이 아직 최선의 구현은 아닙니다. 4행(100)과 6행(110)은 B만 다르므로 두 0 셀을 묶을 수 있습니다.
최소화한 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에서 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. 권한 논리
논리적 권한에는 다음처럼 여러 절이 필요할 수 있습니다.
이는 단일 리터럴 조건들의 곱입니다. 동등하게 shutdown = high_pressure OR high_temperature OR e_stop, RUN = NOT shutdown이라고 쓸 수 있습니다. 이 부울 방정식은 명세에는 유용하지만, 안전 등급 인터록에는 고장 검출, 정의된 무여자 동작, 진단, 검증된 하드웨어, 해당 안전 표준 준수도 필요합니다. POS 표기만으로는 어느 것도 보장되지 않습니다.
POS에서 NOR-NOR로의 연결
SOP가 NAND-NAND 논리에 자연스럽게 매핑되듯 POS는 NOR-NOR 논리에 자연스럽게 매핑됩니다. 이 변환에는 드 모르간 법칙을 사용하며, 같은 패턴을 따릅니다.
예제에서 시작해 보겠습니다.
이중 부정을 적용합니다.
바깥 막대에 드 모르간 법칙을 적용합니다(곱은 합이 되고, 각 인수는 보수화됩니다).
각 는 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 회로를 직접 연결해 보세요.



