최소항(minterm)과 최대항(maxterm) 이란 디지탈 논리회로에서 맵 간략화를 위해 필요한 사항이다. 다시말해, 카노맵(또는 카르노맵) 이놈을 알기 위해서는 최소항, 최대항을 이해해야 한다.
최소항?, 최대항?.. 용어에 의미를 두고 해석을 하면 도통 감이 안 잡힌다. 원서 번역서를 읽으면 도통 무슨 말인지 모르게 써있는 경우가 꽤 있다. 그래서 경험을 비추어 이해하기 쉬운 방향으로 설명을 해보려 한다.
X와 Y 두 개의 입력이 있다고 하자. (이는 부울 함수의 X, Y 항이다.)
이 두개의 입력의 조합 방법은 2^2=4가지 경우다.
다음과 같다.(X' 는 X의 보수를 뜻한다.)
XY
X'Y
XY'
X'Y'
위 항들이 최소항이다.
논리 곱에 대한 조합 방법이라 생각하면 된다.
이는 디지털 논리 게이트에서 입력단에서 들어오는 신호가 X와 Y 두개이고 이를 조합해서 입력할 수 있는 신호의 조합을 나타낸 것이다.
그렇다면 최대항은?
논리 합에 대한 조합 방법이다.
X + Y
X' + Y
X + Y'
X' + Y'
마찬가지로 4가지 방법의 입력단의 신호 조합이 있고, 더 이상의 조합 방법이 없다.
위 항들은 최대항들을 나타낸다.
'최대항은 최소항에 대해서 보수관계를 지닌다'라고만 알아 놓고,
우선은 최소항에 대한 것만 생각하자.
여기서, 우리는 위 항들을 계산식이라고 생각하면 안된다. 이 부분에서 많이 혼동될 수 있다.
우리는 이를 입력단의 신호로 생각해야 한다.
XY 는 X=1, Y=1 의 신호를 나타내는 것이고
X'Y는 X=0, Y=1 의 신호
....
이 신호들의 조합은 차례대로 십진수의 1,2,3,4로 나타낼 수도 있다.
이런 식으로 어떤(분석하기 원하는)부울 함수에 대해서 조합 가능한 모든 신호를 대입한다.
그래서 최소항에 대한 값이 1인지 0인지 그 결과값을 진리표로 나타낸다. 물론, 결과값은 부울식에 따라서 다르게 된다. 그래서 여기서는 ?로 나타내었다.)
이 진리표를 토대로 맵에 그린 것이 카노 맵이다.
(X,Y 에 대한 부울식은 조합 가능 신호 4가지, X,Y,Z 인 경우 조합 가능 신호 2^3=8가지)
그리고 이런 입력 신호에 대한 결과 값을 토대로 카노맵을 그려 그 부울함수를 간략화 할 수 있는 것이다.
간략화 하는 방법은 여기서는 생략하고 다음에 카노맵에대한
카노맵은 다음과 같은 녀석이다.
아래는 3개의 변수 X,Y,Z에 대한 카노맵이다.
카노맵
조금만 주의깊게 보면 X와 Y 그리고 Z의 신호에 대한 진리표를 맵으로 나타낸 것임을 알 수 있다.
대략 최소항이 왜 카르노맵과 연관되는지 알 수 있을 것이다.
카르노맵을 그릴 땐 순서를 주의해야한다.
YZ 의 경우 아래 그림 처럼 00->01->11->10 으로 0자리부터 순서대로 하나의 숫자만 변하도록 적는다.(예> 01->10은 두 자리가 모두 변한 것)
4개의 변수를 사용하여 카르노맵을 그릴 때도 이 법칙에 맞게 그린다.
그래서 실제 10진수에 대응되는 맵의 순서는 다음과 같다.
위 값들은 X,Y,Z에 대한 부울 함수식에 따라서 1또는 0의 값의 가지게 된다.
다시 정리해보면, 각 칸들은 최소항을 나타내고, 이 최소항들은 부울 함수 식에 따라서 각각 0 또는 1의 값을 갖게 되는 것이다.
다음은 어떤 부울 함수의 최소항에 대한 진리표다.
부울함수 F에 대한진리표
원래의 부울함수는 F = X'Y'Z + X'YZ + XY'Z + XY'Z + XYZ 라고도 나타낼 수 있다.(동치)
이를 카르노맵 상에 나타내보자
위와 같은 모양이 된다.
각 구역은 위와 같이 나뉘어진다.
표시가 안된 부분은 X', Y' Z' 지역으로 보수 관계이다.
위 표에서 1이 표시된 구역은 Z 로 나타낼 수있다.
F=Z 가 된다.
이는 카르노맵의 간략화 방법이다.
원래의 부울함수가 어떤 모양이든 최소항의 진리표를 이용하여 F=Z로 간략화를 한 것이다.
최소항들을 묶어서 하나의 항으로 만드는 방법은 규칙이 있다.
서로 이웃한 항(대각선은 이웃이 아님)을 묶되, 묶는 수는 1,2,4,8 항을 묶을 수 있다.
1항묶음->3개문자로 표현
2항묶음->2개문자로 표현
4항묶음->1개문자로 표현
8항묶음->값 1
위 그림은 4개 문자이므로 1개의 문자 Z로 표현된다.
위 그림을 2개씩 4가지 방법으로도 묶어서 3항 또는 4항으로 표현할 수 있다. 이 또한 같은 함수가 된다. 하지만 논리 게이트 낭비로 효율성 면에서 떨어질 거다.
그래서 크게 묶어야 한다.
그리고 겹쳐서 묶어도 상관은 없다.
카노맵에 대한 자세한 설명은 다음 시간에....