본문 바로가기
학부 생활 + 랩실/Digital Circuits

Digital Circuits(디지털 회로)(4) - Combinational Logic Design

by 프롭 2026. 4. 11.

 

Chapter 3의 흐름

  • 회로의 기능을 정의한다
  • 진리표/논리식으로 표현한다
  • 논리식을 최소화한다
  • 실제 게이트로 구현한다
  • Decoder, Encoder, MUX 같은 기능 블록으로 더 효율적으로 만든다
  • 마지막으로 검증한다.

 

즉, 다음과 같은 흐름으로 진행된다.

Specification → Formulation → Optimization → Technology Mapping → Verification


조합 논리 설계 절차

Step 1 : Specification

가장 먼저 회로가 무슨 일을 하는지 명확히 정의하는 것이다.

여기서 정해야 하는 것

1. 입력은 무엇인가

2. 출력은 무엇인가

3. 입력과 출력의 의미는 무엇인가

4. 어떤 조건에서 출력이 1 또는 0이 되는가

 

예 :

  1. 입력 : BCD 코드 4비트(십진수 숫자의 각 자리수를 이진수로 나타냄)
  2. 출력 : Excess-3 코드 4비트(3증가 코드 + 0011)
  3. 기능 : BCD 입력을 Excess-3로 변환

 

Step 2 : Formulation

specification을 바탕으로 진리표, Boolean 식, 상태 정의 같은 수학적 표현으로 바꾸는 단계

조합 회로에서는 보통 :

1. 진리표 작성

2. 출력식 도출

3. minterm / maxterm 표현

이 단계에서 문장 문제를 논리 문제로 바꾸는 것이다.

 

예 :

BCD to Excess-3 변환기라면

  1. 0000(0) -> 0011(3)
  2. 0001(1) -> 0100(4)
  3. ...

이런 식으로 입력-출력 관계를 표로 정리한다.

 

Step 3 : Optimization

도출한 논리식을 더 간단하게 줄이는 단계다.

사용하는 방법 :

1. Boolean algebra

2. Karnaugh map

3. factoring

4. multi-level optimization

 

목적 :

1. gate 수 감소

2. literal 감소

3. gate input cost 감소

4. delay 감소

앞에서 배운 최소화 기법이 쓰인다.

 

Step 4 : Technology Mapping

최적화된 논리를 실제 구현 가능한 게이트 라이브러리 형태로 바꾸는 단계다.

 

예 :

1. AND/OR/NOT 식을 NAND만으로 구현

2. NOR만으로 구현

3. 표준 셀 라이브러리에 맞게 변환

 

논리적으로 맞는 식이라도, 실제 하드웨어는 특정 게이트만 주어질 수 있으므로 거기에 맞춰 다시 표현해야 한다.

Step 5 : Verification

최종 회로가 원래 specification과 일치하는지 확인하는 단계다.

방법 :

1. 진리표 재검토

2. 논리 해석

3. 시뮬레이션

4. 파형 확인


설계 절차 전체 요약

Specification - 기능 정의

Formulation - 진리표/논리식 작성

Optimization - 식 최소화

Technology Mapping - 실제 게이트로 변환

Verification - 결과 검증


Hierarchical Design

왜 필요한가?

입력이 많아지고 회로가 커지면 한 번에 전체를 직접 설계하기 어렵다.

그래서 큰 시스템을 작은 블록으로 나누는 계층적 설계를 사용한다.

 

장점

설계가 쉬워짐, 디버깅이 쉬움, 재사용 가능, 검증이 쉬움, 복잡도 관리 가능

 

예시

예를 들어 9입력 parity 회로를 만들 때, 한 번에 9입력을 직접 다루는 대신

작은 XOR블록들, 중간 결과 블록들로 나누어 설계할 수 있다.


Technology Mapping

의미

technology mapping은 최적화된 Boolean 네트워크를 실제 사용 가능한 게이트 구조로 바꾸는 과정이다.

예 : AND/OR/NOT 게이트로 설계된 식, NAND-only or NOR-only회로로 변화

 

왜 중요한가?

실제 반도체/디지털 회로에서는 특정 게이트가 더 싸거나 더 빠르거나 제조 공정상 유리할 수 있다.

 

NAND 구현이 중요한 이유

NAND는 universal gate다.

즉, NAND만으로 모든 논리함수를 구현할 수 있다

마찬가지로 NOR도 universal gate다.


NAND-only 구현 원리

기본 아이디어

SOP 형태는 보통 AND 단계, OR 단계로 구현된다.

이걸 NAND로 바꾸려면

  1. AND를 NAND + inverter 구조로 변환
  2. 마지막 OR도 DeMorgan을 이용해 NAND 구조로 바꾼다.

수식 표현 예

위 쉬에 DeMorgan을 이용하면

즉 OR도 NAND 구조로 바꿀 수 있다.

인버터 밀기 형태를 바꾸고 인버터 쌍을 상쇄하는 방식이다

.

NAND Mapping Example

NOR-only 구현 원리

POS는 OR-AND구조다

이를 NOR만으로 바꾸기 쉽다.

위와 같은 수식에서 각 OR 항을 NOR 구조로 만들고, 마지막 AND를 DeMorgan으로 NOR 구조로 바꿔 구현한다.

NOR Mapping Example

Functional Blocks

대표 기능 블록은 다음과 같다.

  1. Decoder
  2. Encoder
  3. Priority Encoder
  4. Multiplexer(MUX)

Decoder

Decoder는 n비트 입력을 받아서 2^n개의 출력 하나만 활성화하는 회로다.

즉, 입력 코드에 해당하는 출력 선 하나만 1이 된다.

동작 원리

예를 들어 2-to-4 decoder는 입력이 A0, A1일 때 출력이 4개다.

Decoder의 각 출력은 입력 변수들의 minterm을 나타낸다.

 

Enable 입력

실제 decoder에는 종종 enable 입력이 있다.

enable = 1일 때만 정상 동작

enable = 0이면 모든 출력 비활성화


Decoder를 이용한 논리 함수 구현

핵심 원리

decoder는 minterm 생성기 역할을 하므로, 어떤 함수가 SOP 형태라면 필요한 출력들만 OR하면 된다.

3-to-8 decoder를 쓰면 D1, D3, D5, D7를 OR해서 F를 만든다.

decorder + OR 게이트로 논리 함수를 구현할 수 있다. 설계가 체계적이고 함수 구현이 쉬워진다.

4-to-16 decoder + OR 게이트의 예

Decoder 확장

작은 decoder를 조합해서 더 큰 decoder를 만들 수 있다.

3-to-8 decoder 여러 개를 사용해서

4-to-16 또는 7-to128 decorder 등을 구성할 수 있다.

상위 비트를 enable 신호로 사용해서 하위 decorder들을 선택할 수도 있다.


Encoder

Enocoder는 decoder의 반대 개념이다.

즉, 여러 입력선 중 하나가 active일 때 그 위치를 이진 코드로 출력한다.

예 : 4-to-2 encoder, 8-to-3 encoder

 

예시

4-to-2 encoder에서 입력 D0, D1, D2, D3 중 하나가 1이면

D0 = 1 -> 출력 00

D1 = 1 -> 출력 01

D2 = 1 -> 출력 10

D3 = 1 -> 출력 11

즉 active input의 번호를 binary로 변환한다.

 

주의점 기본 encoder는 한 번에 하나의 입력만 1이라는 가정을 보통한다. 만약 동시에 여러 입력이 1이면 출력이 모호해질 수 있다. 이 문제를 해결한 것이 priority encoder다.


Priority Encoder

Priority encoder는 여러 입력이 동시에 1이어도 우선순위가 가장 높은 입력을 선택해 출력하는 encoder다.

 

왜 필요한가?

현실에서는 여러 요청이 동시에 들어올 수 있다. 기본 encoder는 이를 처리하지 못하므로 priority encoder가 필요하다.

 

추가 출력으로 종종 valid bit, group signal같은 출력이 있다. 예: 아무 입력도 active가 아니면 valid=0이다.

 

정리하면 priority encoder는 multiple active inputs 처리 가능하다는 장점이 있다는 것이다.


Multiplexer(MUX)

MUX는 여러 입력 중 선택선(select lines) 값에 따라 하나의 입력을 출력으로 전달하는 회로다.

즉 MUX는 디지털 회로에서 데이터 선택기 역할을 한다.

예 :

2-to-1 MUX : 입력 2개 중 1개 선택

4-to-1 MUX : 입력 4개 중 1개 선택

8-to-1 MUX : 입력 8개 중 1개 선택

 

핵심은 입력이 2^n개면 선택선은 n개 필요하다.

예 :

4-to-1 MUX -> 선택선 2개

8-to-1 MUX -> 선택선 3개

 

2-to-1 MUX

가장 기본적인 MUX다.

입력 : I0, I1, 선택선 S

출력 : Y

동작 : S = 0이면 Y = I0, S=1이면 Y=I1

논리식은 다음과 같다.

 

4-to-1 MUX

입력 : I0, I1, I2, I3 선택선 S1, S0

출력 : Y

동작 :

S1S0 = 00이면 Y = I0, S1S0 = 01이면 Y=I1

S1S0 = 10이면 Y = I2, S1S0 =111이면 Y=I3

논리식은 다음과 같다. 식을 보면 사실상 선택선의 minterm이 입력 하나를 고르는 구조라는 것을 알 수 있다.

 

MUX의 핵심 의미

MUX는 단순 입력 중 하나를 고르는 회로이기도 하지만 더 중요한 의미는 임의의 조합논리함수를 구현할 수 있는 범용 블록이라는 것이다.


MUX로 함수 구현하는 방법

방법으로는 모든 변수를 select line으로 사용하요 각 데이터 입력은 진리표에 따라 0 또는 1고정으로 하는 큰 MUX 사용법과 n-1개의 변수를 select line으로 사용하고 남은 1개 변수는 각 데이터 입력에서 0, 1, x, x'(x는 선택선으로 쓰지 않은 남은 변수)중 하나로 표현하는 작은 MUX 구현 방법이 있다.

방법 2가 더 효율적인데 3변수 함수를 만든다 할 때

방법 1은 8-to-1 MUX가 필요하지만 방법 2는 4-to-1 MUX + 인버터 1개정도로 가능하여 하드웨어 비용을 줄일 수 있다.


Smaller MUX 구현의 핵심 개념 : Rudimentary Function

선택선으로 사용하지 않은 변수 x에 대해 위 데이터 입력 조합에서 출력이 항상 0인지 항상 1인지 x와 같은지 x의 반대인지를 보면된다.

 

판단 방법으로 A, B, C에서 A, B를 select line으로 쓰고, C를 남긴다할 때 각 선택선 조합마다 C=0일 때와 C= 1일 때 출력 두 개를 본다. 규칙은 다음과 같다.


MUX 구현 문제 푸는 절차

  1. 어떤 변수를 select lime으로 쓸지 정한다.
  2. 남는 변수를 하나 정한다
  3. select 조합별로 남는 변수 값 0/1에 대한 출력 쌍을 본다.
  4. 각 데이터 입력은 0,1,x,x'중 하나로 결정한다
  5. 최종 MUX 연결을 완성한다.

Decoder, Encoder, MUX 비교

Decoder

입력 코드에 따라 출력선 하나를 활성화

출력은 보통 minterm 형태

선택된 출력 1개를 만든다.

 

Encoder

활성 입력의 위치를 이진 코드로 변환

입력을 코드로 압축한다.

 

MUX

여러 입력 중 하나를 골라 출력

입력 선택기 역할


Chapter 3 총정리

  • 조합논리 설계 절차는 Specification → Formulation → Optimization → Technology Mapping → Verification 이다.
  • hierarchical design은 복잡한 회로를 작은 블록으로 나누는 설계 방법이다.
  • NAND와 NOR는 universal gate이므로 모든 논리함수를 구현할 수 있다.
  • decoder의 각 출력은 입력 변수의 minterm에 대응한다.
  • encoder는 active 입력을 binary 코드로 변환한다.
  • priority encoder는 여러 입력이 동시에 active여도 우선순위에 따라 하나를 선택한다.
  • MUX는 여러 입력 중 하나를 선택해 출력하는 데이터 선택기다.
  • 2^n개의 입력을 가진 MUX에는 n개의 select line이 필요하다.
  • 큰 MUX 방식은 진리표 값을 0/1로 직접 연결하는 ROM-like(진리표를 그대로 저장해놓고 선택하는 방식의)구현이다.
  • 작은 MUX 방식은 데이터 입력을 0, 1, x, x' 형태로 구성해 더 효율적으로 구현한다.
  • SOP는 NAND-NAND 구현에 적합하고, POS는 NOR-NOR 구현에 적합하다.