반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

공머씨의 블로그

내가 공부한 논리회로 설계16.K-map (3 inputs) 본문

내가 공부한 3학기 전공/내가 공부한 논리회로 설계

내가 공부한 논리회로 설계16.K-map (3 inputs)

공머씨 2020. 5. 8. 21:07
반응형

지난 포스트에 이어서 카르노 맵을 공부 해보겠습니다.

 

입력 변수가 2개인 경우 카르노 맵을 작성하는 것을 공부했습니다. 

이번 포스트에서는 입력이 3개인 경우의 카르노 맵 작성법에 대해서 공부해보겠습니다.

카르노 맵이 얼마나 강력한지 드러나기 시작합니다. 

어떤 회로를 만들건대 입력이 3 input입니다.  출력은 F라고 하면,

000부터 시작해서 111까지 

F의 값이 구현하고자 하는 논리 값이 있을 것입니다.

 

입력 변수가 3개인 경우에 맵은 2행 4열로 작성합니다.  (총 8개의 칸)

아래쪽에 X를 작성하고 위쪽에 두 칸을 Y, 그 옆을 Z라고 작성합니다. 

 

 

 

왜 이렇게 작성하는지는 나중에 설명하도록 하겠습니다. 

 

 

 

 

입력 변수가 3개일 경우 맵에다가 값을 채워 넣는데 순서를 잘 보아야 합니다. 

각각 minterm을 작성해주면 됩니다. 

위의 카르노 맵을 바탕으로  진리표를 작성하면 됩니다. 

아래 4개의 칸에 공통점이 있습니다 

X가 항상 고정되어있음을 알 수 있습니다. 

위에 있는 4개 칸에서는 /X을 포함한다는 공통점이 있습니다. 

 

3,4열을 잘 살펴보면 Y가 공통으로 포함되어있음을 볼 수 있습니다. 

 

2,3 열을 잘 살펴보면 Z가 공통으로 포함되어있는 것을 볼 수 있습니다. 

 

실제 예시를 보고 카르노 맵을 작성하는 연습을 해보겠습니다.

위와 같은 진리표가 있습니다. 

회로를 만들고 싶은데. 최적화해서 구현하라는 문제가 있다고 합시다.

 

첫 번째 방법은 불대수를 이용해서 최적화하는 방법이 있습니다. 

Minterm의 방법으로 살펴보겠습니다. 

 

F(X, Y, Z)=∑m(5,7) 

 

 

두 번째 방법은 맵을 작성하는 것입니다.

카르노 맵을 사용 하면 더욱 쉽게 풀 수 있습니다. 

X의 영역, Y의 영역, Z의 영역을 표기를 합니다. 

 

 

 

 

 

 

 

그다음 Minterm의 값을 작성해주면 됩니다. 우리가 필요한 것은 F가 1일 때 입력값이므로,,,

다음과 같이 작성할 수 있겠습니다. 

 

 

다음과 같은 수식이 생성됩니다.

이 수식을

파란색 네모의 속성은(공통점) X이면서 Z입니다.

F=XZ로 최적화가 됩니다.

위와 같이 작성한 뒤 최적화 과정을 거치는 것도 가능합니다.

 

 

 

아래의 예제를 풀어봅시다. 

만약 진리표로 옮겨서 작성한다면 출력 값은 아래와 같이 작성할 수 있겠습니다. 

 위의 주어진 F값만 보고 진리표를 작성해서 Sum of Minterm으로 최적화하는 방법도 물론 가능하지만,

최적화된 결괏값만 빠르게 보기 위해서는 카르노 맵을 작성하는 것이 낫습니다.

 

 

 

카르노 맵을 아래와 같이 작성할 수 있습니다. 

그리고 맵에 있는 입력값을 보고 맵을 완성한 다음,  함수 F를 불대수로 나타낼 수 있습니다. 

불대수를 다음과 같이 작성할 수 있습니다. 

그런 뒤에 최적화하면 됩니다.

 

그런데 카르노 맵을 통해 최적화한다면 다음과 같이 작성할 수 있습니다.

연두색 형광펜

 

 

 

그다음 남아있는 1이 있으므로 아래와 같이 묶어줍니다. 

같아래에 있는 2개를 묶어야 합니다.

겹쳐지지 않게 )

 

????

가장 크게 묶으라고 하지 않았나?

왜 3개를 묶지 않고 2개를 묶는가????

3개로 묶을 수 없는 이유는 수식을 적을 수 없기 때문입니다. 

한번 직접 해보겠습니다. 

 

형광색으로 표기된 부분을 한 번수식으로 적어본다고 합시다. 

음... 일단 공통으로 X를 가지고 있으니까

X를 작성해줍니다.

그런데 Y는 공통이 아니므로 이야기할 수 없습니다. 

어떤 2개는 Z를 포함하고 어떤 2개는/Z을 포함하고 있습니다. 

... 3개를 동시에 만족하는 수식을 작성할 수가 없습니다.

네모의 크기는 2^n크기여야 합니다. 

...

그 외의 네모들은 공통적인 수식을 적을 수 없기 때문입니다. 

이번에는 다음과 같이 입력이 X, Y, Z이고 출력이 F인 회로를 만드려고 합니다. 

 

일단 아래와 같이 그림을 그리면 되겠습니다. 

 

 

값을 작성하면 아래와 같습니다. 

 

 

 

 

 

 

다음 예제를 풀어보기 바랍니다. 

 

카르노 맵은 다음과 같이 작성할 수 있습니다. 

 

 

가장 큰 네모는 가운데 4개입니다.  모두 다 Z라고 할 수 있습니다. 

그다음 1이 두 개 남았는데 끄트머리의 1을 포함하는 네모를 생각하면 됩니다. 

X /Y /Z

 

 

또 위쪽 끄트머리에 있는 1을 네모로 만들면 됩니다.

X Y /Z

 

최종적으로 다음과 같게 됩니다.

 

 

 

 

 

 

X, Y, Z 가 입력이고 F가 출력입니다.

카르노 맵으로 그리면 다음과 같습니다.

 

 

 

 

왼쪽 네모는 Y가 아니면서 Z가 아닌 것들이 기 때문에

Y이면서 Z가 아닌 것들

 

 

답은 /Z임을 알 수 있습니다.

잘 생각해보면 1111이 있는데 얘를 4개짜리로 묶을 수 있습니다.

이 사실은 빨간 네모처럼 묶으면 F는 Z가 아닌 것들 즉,/Z으로 작성할 수 있습니다.

 

 

 

 

 

 

k-map은 닫힌 네모칸이아닌, 상하좌우가 연결되어있는 구의 형태라고 생각하면 될 것입니다.

 

 

 

 

 

 

 

다음과 같은 예제를 풀어보도록 하겠습니다.

 

 

다음과 같은 과정을 거칩니다.

네모는 1,2,4,8칸으로 구성된 것만 만들 수 있으므로 , (이것은 X이면서 Y가 아닌 것이므로 작성합니다.)

연두색 네모에 포함되지 않은 네모는 분홍색 네모와 같습니다.

 

주어진 진리표를 SOP로 최적화한 결과는 다음과 같습니다.

 

 

 

첨언하자면  카르노 맵이 구처럼 연결되어있는 이유는  Gray code를 생각하면 쉽게 이해할 수 있습니다.

서로 인접한 Cell끼리는 literal하나만 다르도록 배치를 했기 때문입니다.

 

 

예제 진리표를 보고 SOP로 최적화하고 회로를 구현하여라.

입력 변수가 3개니까 2by 4로 맵을 작성 합니다.

그리고 F값을 채워 넣으면 됩니다.

회로를 구현해보면 다음과 같습니다.

 

도움이 되셨다면 로그인이 필요없는 하트버튼 한번 부탁드립니다!!

반응형
Comments