논리회로 소개(3)

chelseey·2025년 4월 14일

부울 함수의 간략화의 특징

부울 함수의 간략화

회로를 설계할 때 효율성을 높이기 위해 필요
ex. 복잡도 감소, 부품 수 절약, 공간 및 비용 절감, 처리 시간 단축

카르노 맵(Karnaugh map)의 간략화

효과적인 간략화 기법 중 하나로, 시각적으로 논리식을 단순화함

부울 대수로만 간략화하는 건 복잡하고 오류 가능성 있음
반면, 카르노 맵을 이용하면 논리식을 쉽게 간소화할 수 있음.

2~5변수의 부울 함수에 적용 가능

기본적인 카르노 맵의 특징

2변수 카르노 맵 표현 방법

변수 A, B 두 개를 사용하는 2x2 정사각형 형태의 맵
인접한 셀이 한 변수만 바뀌도록 배열됨

무관항 (Don't care):
논리회로의 출력에 영향을 주지 않는 최소항
일반적으로 x 또는 d로 표시함

일반항과 무관항 표현

  • 함수의 진리표에 따라 카르노 맵의 각 셀에 값을 할당하여 시각적으로 표현

  • 인접한 1의 그룹핑
    인접해 있는 1들을 묶어 불필요한 변수를 제거
    ex. 만약 두 인접한 셀 AB\overline{A}BABA\overline{B} 에 1이 있다면,
    두 셀을 하나의 그룹으로 묶어 A\overline{A} 라는 공통 조건만 남기게 할 수 있음

  • 최소항 1과 무관항 x의 그룹핑
    무관항은 그룹핑 시 1과 함께 포함될 수 있음
    x를 포함하면 더 큰 그룹을 형성할 수 있어,
    불필요한 변수를 더 많이 제거할 수 있음

→ 카르노 맵에서 1인 최소항을 선택하는 것은
해당 부울 함수를 SOP 형태로 간소화한다는 의미

함수에 따라 출력이 0인 경우의 최대항(maxterm)을 이용한
POS(Product of Sums) 표현 방식도 존재.
그러나, 일반적으로 카르노 맵을 통한 간소화는 SOP 방식을 흔히 사용

카르노 맵을 이용한 간소화 방법

  • 같은 출력(주로 1)을 가진 인접한 셀들을
    2, 4, 8, 16개 등 2의 제곱수 단위로 그룹화

  • 그룹은 반드시 직사각형이나 정사각형 형태로 만들어야 하며,
    인접한 셀끼리 묶어야 함

  • 가능한 한 가장 큰 그룹을 만들어서 불필요한 변수를 최대한 제거

  • 셀들이 중복되어 그룹에 포함되어도 전체 간소화에 기여한다면 허용

  • 무관항은 간소화에 도움이 되는 경우 그룹에 포함시키고,
    그렇지 않으면 포함시키지 않음

카르노 맵을 이용한 간소화 방법의 예

빨간색으로 묶은 두 셀은 수평으로 인접한 상태
둘을 OR 연산으로 묶으면:

F=AB+ABF = \overline{A}B + A\overline{B}

간소화 (Boolean 대수 법칙 적용)

F=AB+AB=A(B+B)=A1=AF = \overline{A}B + A\overline{B} = \overline{A}(\overline{B} + B) = \overline{A} \cdot 1 = \overline{A}

2변수 카르노 맵 간소화 예

무관항(d)을 포함한 2변수 카르노 맵

  • 파란색 그룹:
    (0,0)(1)과 (1,0)(x) 묶음
    A는 0과 1 → 다름 → 제거
    B=0 → 공통
    → 결과: B\overline{B}

  • 검정색 그룹:
    (1,1)(1)과 (1,0)(x) 묶음
    B는 0과 1 → 다름 → 제거
    A=1 → 공통
    → 결과: AA

최종 함수

F(A,B)=B+AF(A, B) = \overline{B} + A

→ 무관항 x는 1과 묶일 수 있기 때문에, 두 그룹에 모두 활용

3변수 카르노 맵 표현 방법

3개의 입력 변수(A, B, C)를 사용하는 카르노 맵은
2³ = 8개의 최소항(minterm)을 가짐

2행 4열 또는 4행 2열 형태로 배치할 수 있음
→ 논리적으로만 맞으면 행/열 배치는 마음대로 가능

3변수 카르노 맵 표현 방법 예제

  • 파란색 그룹 : A=0인 행에서 BC=00, 01 → m₀(000), m₁(001)
    공통 조건:
    A=0 → A\overline{A}
    B=0 → B\overline{B}
    C는 0,1 → 다름 → 제거

  • 빨간색 그룹 : A=1인 행에서 BC=11, 10 → m₆(110), m₇(111)
    공통 조건:
    A=0 → A
    B=0 → B
    C는 0,1 → 다름 → 제거

최종 함수

F=AB+ABF = \overline{A}B + AB

3변수 카르노 맵 표현 방법 → 양쪽 끝의 항 묶음

카르노 맵은 양끝이 연결된 형태

맵의 맨 왼쪽(00)과 맨 오른쪽(10)
: 한 비트만 다름(B만 바뀜)으로 이웃하는 셀

  • A는 둘 다 0 → A\overline{A}
  • C는 둘 다 0 → C\overline{C}

따라서 F=ACF = \overline{A}\overline{C}

3변수 카르노 맵 표현 방법

→ 다른 묶음에 모두 포함되어 있는 경우는 묶지 않음

오로지 겹치기만 하고
새로운 1을 하나도 추가로 커버하지 않는 묶음은 생략

3변수 카르노 맵 표현 방법

→ 가능한 2,4개로 최대한 크게 묶음

작게 묶으면 중복 항(C\overline{C})이 생기고,
AC+C\overline{A}C + \overline{C} 처럼 왼쪽보다 덜 최소화된 식이 됨

3변수 카르노 맵 표현 방법

→ 세번 중복하여 묶는 경우

  • 가로 2셀, 세로 2셀로만 묶으면 모든 1을 전부 커버하지 못함
  • 한 묶음의 크기가 반드시 2n(1,2,4,8,)2^n(1, 2, 4, 8, …)여야 하므로
    3개의 1을 한꺼번에 묶을 수 없음

진리표로부터 카르노 맵을 작성하고 간소화하는 방법

×(don't care)는 1로 가정해도 식을 최소화하는 데 방해가 없음
→ 8-셀 묶음을 만들 때 포함시켜 더 큰 묶음을 형성

0개의 댓글