회로를 설계할 때 효율성을 높이기 위해 필요
ex. 복잡도 감소, 부품 수 절약, 공간 및 비용 절감, 처리 시간 단축
효과적인 간략화 기법 중 하나로, 시각적으로 논리식을 단순화함
부울 대수로만 간략화하는 건 복잡하고 오류 가능성 있음
반면, 카르노 맵을 이용하면 논리식을 쉽게 간소화할 수 있음.
2~5변수의 부울 함수에 적용 가능
변수 A, B 두 개를 사용하는 2x2 정사각형 형태의 맵
인접한 셀이 한 변수만 바뀌도록 배열됨
무관항 (Don't care):
논리회로의 출력에 영향을 주지 않는 최소항
일반적으로 x 또는 d로 표시함
함수의 진리표에 따라 카르노 맵의 각 셀에 값을 할당하여 시각적으로 표현
인접한 1의 그룹핑
인접해 있는 1들을 묶어 불필요한 변수를 제거
ex. 만약 두 인접한 셀 와 에 1이 있다면,
두 셀을 하나의 그룹으로 묶어 라는 공통 조건만 남기게 할 수 있음
최소항 1과 무관항 x의 그룹핑
무관항은 그룹핑 시 1과 함께 포함될 수 있음
x를 포함하면 더 큰 그룹을 형성할 수 있어,
불필요한 변수를 더 많이 제거할 수 있음
→ 카르노 맵에서 1인 최소항을 선택하는 것은
해당 부울 함수를 SOP 형태로 간소화한다는 의미
함수에 따라 출력이 0인 경우의 최대항(maxterm)을 이용한
POS(Product of Sums) 표현 방식도 존재.
그러나, 일반적으로 카르노 맵을 통한 간소화는 SOP 방식을 흔히 사용
같은 출력(주로 1)을 가진 인접한 셀들을
2, 4, 8, 16개 등 2의 제곱수 단위로 그룹화
그룹은 반드시 직사각형이나 정사각형 형태로 만들어야 하며,
인접한 셀끼리 묶어야 함
가능한 한 가장 큰 그룹을 만들어서 불필요한 변수를 최대한 제거
셀들이 중복되어 그룹에 포함되어도 전체 간소화에 기여한다면 허용
무관항은 간소화에 도움이 되는 경우 그룹에 포함시키고,
그렇지 않으면 포함시키지 않음
빨간색으로 묶은 두 셀은 수평으로 인접한 상태
둘을 OR 연산으로 묶으면:
간소화 (Boolean 대수 법칙 적용)
무관항(d)을 포함한 2변수 카르노 맵
파란색 그룹:
(0,0)(1)과 (1,0)(x) 묶음
A는 0과 1 → 다름 → 제거
B=0 → 공통
→ 결과:
검정색 그룹:
(1,1)(1)과 (1,0)(x) 묶음
B는 0과 1 → 다름 → 제거
A=1 → 공통
→ 결과:
최종 함수
→ 무관항 x는 1과 묶일 수 있기 때문에, 두 그룹에 모두 활용
3개의 입력 변수(A, B, C)를 사용하는 카르노 맵은
2³ = 8개의 최소항(minterm)을 가짐
2행 4열 또는 4행 2열 형태로 배치할 수 있음
→ 논리적으로만 맞으면 행/열 배치는 마음대로 가능
파란색 그룹 : A=0인 행에서 BC=00, 01 → m₀(000), m₁(001)
공통 조건:
A=0 →
B=0 →
C는 0,1 → 다름 → 제거
빨간색 그룹 : A=1인 행에서 BC=11, 10 → m₆(110), m₇(111)
공통 조건:
A=0 → A
B=0 → B
C는 0,1 → 다름 → 제거
최종 함수
카르노 맵은 양끝이 연결된 형태
맵의 맨 왼쪽(00)과 맨 오른쪽(10)
: 한 비트만 다름(B만 바뀜)으로 이웃하는 셀
따라서
오로지 겹치기만 하고
새로운 1을 하나도 추가로 커버하지 않는 묶음은 생략
작게 묶으면 중복 항()이 생기고,
처럼 왼쪽보다 덜 최소화된 식이 됨
×(don't care)는 1로 가정해도 식을 최소화하는 데 방해가 없음
→ 8-셀 묶음을 만들 때 포함시켜 더 큰 묶음을 형성