본문 바로가기

프로그래밍/디지털회로

[디지털 회로] 조합 논리 회로 (Combinational Logic Circuits) 와 불 방정식

1. 조합 논리 회로 (Combinational Logic Circuits)

1.1 개요 (Introduction)

• 조합 논리 회로는 메모리가 없으며, 현재의 입력값만을 기반으로 출력을 결정함.

 

• 입력 단자 (Input Terminals)

• 출력 단자 (Output Terminals)

기능적 명세 (Functional Specification): 입력과 출력 간의 관계 정의

타이밍 명세 (Timing Specification): 입력 변화에 따른 출력 응답 지연

 

우리는 기능적 명세부터 살펴본다.

 

1.2 논리 회로의 구성 요소 (Circuits Components)

노드 (Nodes)

• 입력: A, B, C

• 출력: Y, Z

• 내부 노드: n1 (중간 연결점)

회로 요소 (Circuit Elements)

• E1, E2, E3 → 각각 하나의 회로를 구성

 

 

1.3 논리 회로의 종류 (Types of Logic Circuits)

 

1. 조합 논리 (Combinational Logic)

• 메모리 없음

현재 입력값만으로 출력이 결정됨

• 예시: 논리 게이트(AND, OR, XOR 등), 멀티플렉서, 디코더

2. 순차 논리 (Sequential Logic)

메모리를 포함

• 현재 입력뿐만 아니라 이전 상태도 영향을 줌

• 예시: 플립플롭(Flip-Flop), 레지스터(Register), 카운터(Counter)

 

1.4 조합 논리 회로의 규칙 (Rules of Combinational Composition)

• 모든 요소는 조합 논리로 구성되어야 함.

• 각 노드는 하나의 입력 또는 하나의 출력에만 연결되어야 함.

• 회로 내에 순환 경로(Cyclic Path)가 없어야 함.

 

 

• 기능적 사양을 표현하기 위해 진리표(Truth Table) 또는 부울식(Boolean Equation)을 사용.

 

예제

이중에서 올바르게 조합논리가 구성되어 있는 회로는?

차례로 y,n,y,n,y,n

특히,

(d) n(check 2nd ) → 각 노드는 하나의 입력이나 출력에만 연결되어야 하지만, 지금 노드6가 2개의 인풋에 영향을 받고 있다.

 

 

부울 회로 하다가 부울 방정식이 왜 나오나 하는 의문이 있었는데. 아마 부울 방정식을 통해서 회로를 최소화 시키기 위함인듯 하다.
부울 방정식의 기본과 활용을 통해 길이가 긴 방정식을 최소화 시켜 회로를 최적화 시키자! 
<- 라고 생각한다.

2. 부울 방정식 (Boolean Equations)

2.1 부울 방정식의 개념

• 입력 변수의 조합을 통해 출력을 정의하는 수식

• 예제:

합 출력 (S) = (XOR 연산)

자리올림 출력 (Cout) =

2.2 부울 연산의 기본 개념

  1. 보수(Complement): 변수를 반전한 값 (예: A̅, B̅)
  2. 리터럴(Literal): 변수 또는 보수된 변수 (예: A, A̅, B, B̅)
  3. 임플리컨트(Implicant): 논리곱(AND)으로 구성된 항 (예: ABC, AC, BC)
  4. 최소항(Minterm): 모든 입력 변수를 포함하는 AND 항 (예: ABC, A̅BC, AB̅C)
  5. 최대항(Maxterm): 모든 입력 변수를 포함하는 OR 항 (예: A+B+C, A̅+B+C̅)

 

2.3 연산 우선순위 (Order of Operations)

NOT(¬) > AND(•) > OR(+) 순서로 연산이 적용됨.

 

3. 논리 표현 방식 (Sum-of-Products & Product-of-Sums)

이 부분이 굉장히 이해가 안되고 헷갈렸다. 대체 이게 왜 필요한거지?

📌 SOP (Sum of Products)란?

더보기

SOP(Sum of Products, 곱의 합)란 논리곱(AND) 항들을 논리합(OR)으로 결합하여 표현하는 방식입니다.

쉽게 말해, 출력이 1이 되는 경우를 OR(+) 연산으로 묶는 것입니다.

1️⃣ 왜 SOP를 사용하는가?

 

✅ 논리 회로를 간단한 AND-OR 게이트 조합으로 만들 수 있기 때문입니다.

 

SOP 표현은 다음과 같은 장점이 있습니다:

1. 논리식을 간단하게 만들 수 있음

2. 디지털 회로(조합 논리 회로) 설계에 활용하기 쉬움

3. 논리 게이트(AND, OR)를 활용해 직접 회로 구현 가능

2️⃣ f값이 어떻게 결정되는가?

 

📌 표를 보면 출력 f가 1이 되는 경우만 골라서 Minterm을 만듭니다.

XYZMintermf
0 0 0 a’ b’ c’ 0
0 0 1 a’ b’ c 1
0 1 0 a’ b c’ 0
0 1 1 a’ b c 1
1 0 0 a b’ c’ 0
1 0 1 a b’ c 1
1 1 0 a b c’ 1
1 1 1 a b c 1

출력 f가 1인 행을 모아 Minterm을 작성하면:

 

이게 바로 SOP 형태입니다!

3️⃣ SOP 공식 표현

 

📌 f값이 1인 행들의 Minterm을 합(OR)으로 묶어주면 다음과 같이 표현할 수 있습니다:

 

 

 

이 공식의 의미: 출력이 1인 경우들만 골라서 합을 만든다.

 

즉,

m_1 = a' b' c

m_3 = a' b c

m_5 = a b' c

m_6 = a b c'

m_7 = a b c

이기 때문에 이들을 OR(+)로 묶으면 최종적인 SOP 표현식이 됩니다.

4️⃣ 왜 SOP가 중요한가?

1. 회로 설계에서 직접 사용 가능

AND-OR 게이트를 사용하여 쉽게 회로를 구현할 수 있음.

2. 논리식을 간략하게 표현할 수 있음

복잡한 논리식을 Minterm 형태로 쉽게 정리할 수 있음.

3. 디지털 시스템에서 활용됨

CPU, ALU, 디지털 신호 처리 등에 응용됨.

✅ 최종 정리

 

SOP는 “출력이 1이 되는 경우만을 OR(+) 연산으로 묶어서 표현하는 방식”이다.

논리 게이트(AND-OR)로 쉽게 회로를 만들 수 있기 때문에 사용된다.

진리표에서 f = 1인 행들만 골라서 Minterm으로 만든 후, 이를 OR(+)로 합하면 된다. 

3.1 Sum-of-Products (SOP) 형태

• 모든 부울 방정식은 SOP 형태로 변환 가능.

각 행마다 하나의 최소항(minterm)을 가짐.

1이 되는 행들의 최소항을 OR(+) 연산으로 묶어서 표현.

 

3.2 Product-of-Sums (POS) 형태

• 모든 부울 방정식은 POS 형태로 변환 가능.

각 행마다 하나의 최대항(maxterm)을 가짐.

0이 되는 행들의 최대항을 AND(•) 연산으로 묶어서 표현.

 

나중에 사용되는 예시가 있는지 모르겠지만 그냥 Y가 0되는거 묶으면 POS, 1되는거 묶으면 SOP 라고 생각하려고 한다.

 

4. 하드웨어 설계 언어 (Hardware Design Languages, HDL)

4.1 HDL 개요

• 논리 회로를 표현하기 위한 프로그래밍 언어.

• 주요 언어: Verilog, VHDL

• 주요 특징:

병렬 연산 지원 (하드웨어 병렬 동작 표현 가능)

하드웨어 동작을 모델링할 수 있음 (게이트 수준 설계, 데이터 흐름 설계)

논리 합성 도구(Synthesis Tool)를 통해 하드웨어 회로로 변환 가능

4.2 Verilog의 기본 문법

  1. 게이트 기본 정의
module AND_gate (output Y, input A, input B);
   and (Y, A, B);
endmodule
  1. 게이트 조합 예제
module simple_circuit (output F, input A, input B, input C);
   wire w1;
   and (w1, A, B);
   or (F, w1, C);
endmodule

5. 부울 대수 (Boolean Algebra)

5.1 부울 대수의 공리 (Boolean Axioms)

 

5.2 부울 정리 (Boolean Theorems)

 

 

 

6. 드모르간의 법칙 (De Morgan’s Theorem)

논리 연산을 변환하는 강력한 도구

• NAND 게이트와 NOR 게이트의 관계를 설명함.

너무너무 유명한 유명한이다.

 

그러면 우리가 위에서 방정식을 배우는 이유가 최소화를 위한 것이라고 했는데, 방정식을 정리하며 증명해보자.

방법은 크게 2가지로 나뉜다.

 

방법 1번은 간단히 말해 그냥 맵을 그려보는것이다. 

아래의 그림처럼 

 

방법 2번은 우리가 알고 있는 방정식을 통해 최소화의 과정을 수식을 통해 줄여나가는 것이다.

 

다음 게시글에서는 예시와 함께 이를 연습해 볼 예정이다!