공머씨의 블로그
내가 공부한 논리회로 설계15. K-map (2 inputs) 본문
말로만 듣던 카르노맵이라는것을 공부합니다.
회로를 최적화하는 방법은 크게 두가지가 있는데
하나는 지금까지배운 불대수를 이용한 방법입니다.
또하나는 카르노맵이라는것이 있습니다.
각각의 장단점이 있습니다. 아래 사진을 참고하면 되겠습니다.

장점과 단점이 각각 있습니다.
장점은 쉽게할 수 있다는 장점이 있습니다 .
맵을 사용해서 할 수 있고 불대수에 비해서 정답인지를 쉽게 알 수 있습니다.
단점은 입력변수가 2,3,4개인경우에만 최적화 할 수있다는 한계가 있습니다.
참고로,이번학기 논리회로 에서는 불대수도 잘 알아야되고 카르노맵도 잘아야 됩니다.
2학기때 디지털 시스템 설계를 공부할때는 불대수를 몰라도 됩니다. 모든걸다 카르노맵으로 최적화 하게 됩니다.
카르노맵을 모르면 후수과목을 공부할 수가 없습니다.

위의 내용을 읽고 이해가 된다면 카르노맵을 다 이해했다고 볼 수 있습니다.
위의 내용은 '카르노 맵'에 대해 다 공부한뒤 점검차원에서 읽어보면 됩니다.
예시를 들어 설명해보겠습니다 .
입력변수가 2개일 경우 최적화 하는 방법에 대해 공부하겠습니다.

예시를 들어보겠습니다.
이해하면 굉장히 쉽습니다.
입력변수가X,Y이고 출력이 F인경우 위의 진리표가 있습니다.
위 진리표를 이용해 회로를 만들라고 하면 우리가 지금까지 공부했던 내용을 바탕으로는
Minterm of sum 으로 최적화한다고 하면
F=X/Y+XY
=X
라고 최적화 할 수 있습니다.
앞으로 카르노맵을 이용해서 최적화 할것입니다.
입력변수가 두개인 경우에는 2 ⨉2크기의 행렬을 만듭니다.

그리고 출력값F를 순차적으로 작성합니다.

그리고 나서
입력변수 X,Y를 다음과 같이 그립니다.

출력1만 포함하도록 가장 크게 묶습니다.
두개짜리 네모는 X로 Boundary되어 있습니다.
그러면 최종적인 F는 X가 됩니다 .

이전에 불대수를 이용해 최적화한 결과와 같습니다.
왜 그런지 카르노맵의 원리를 자세히 알아보겠습니다!
좌측상단에 m0의 값을 집어넣었습니다.
행렬에 m0 m1 m2 m3값을 차례대로 적습니다.

m이라는 문자대신 입력변수 X,Y의 minterm 을 넣어주면 아래와 같이 나타낼 수 있습니다.

잘 생각해보면 m0=/X /Y입니다. ( 0은 2bit이진수로 00)
밑에있는 두개의 칸을 잘 보길바랍니다. (m2,m3)
X/Y XY입니다.
이 두개의 입력을 최적화 하면 X가 됩니다.
위쪽에 있는 두개를 네모칸으로 묶을 수 있었다면 /X이 최적화된 결과가 됩니다.
(m0=1,m1=1이었다면)
행렬에서 2열을 봅시다.
공통적으로 Y를 포함하고 있습니다.
만약 2열의 원소에 1 1이 채워졌다면 Y로 묶고 Y(X+/X)이라는 결과가 나와서 이를 최적화하면
결과는 Y가 됩니다.
1열에 1 1이 있었다면 각원소자리에 있는 입력값들의 공통은
/Y이 됩니다.
정리하자면 아래의 그림과 같습니다.

m0 m1 m2 m3 처럼 Map을 작성하고 나면 표가 됩니다.
또 다른 예시를 들어 확실히 알아보도록 합니다.

Sum of Minterm을 사용하여 최적화하면
출력은 다음과 같이 작성할 수 있습니다.

이렇게 하지 말고 카르노맵을 사용하여 최적화된 결과를 구해보도록 합시다.
0은 작성하지 않아도 됩니다.


만약 네모를 작게 그리고 싶다면 1열 상단의 1을 하나의 작은네모로 만듭니다.
그러면 /X /Y이 됩니다. (X가 아니고 Y가 아닌 구역에 있는 1이기 때문에)
아래의 그림과 같이 됩니다.

네모칸을 작게그리면 회로가 조금 더 복잡해집니다.
최적화가 되지않았다는 뜻 입니다.
(F=X+/X/Y는 최적화가 되지않은 논리함수)
카르노맵은 사실상 진리표와 같습니다. 표현만 다릅니다.
카르노맵도 사실Table 이라고 할수 있습니다.
조금더 보편화된 방법(쉬운방법)으로 카르노맵을 작성해보겠습니다.
- 1을 묶어서 식을 적는다.
- 네모는 가급적 크게 적는다.
- 중첩되는공간에 1이 있어도 무관하다.
- 예를 들면 방금 봤던 아래와 같은 k-map

다음포스트에서 입력변수가 3,4개 일떄 카르노맵의 작성법에 대해서 공부하겠습니다.
도움이 되셨다면 로그인이 필요없는 하트버튼 한번 부탁드립니다!!
'내가 공부한 3학기 전공 > 내가 공부한 논리회로 설계' 카테고리의 다른 글
| 내가 공부한 논리회로설계 17.k-map(4 inputs) (1) | 2020.05.11 |
|---|---|
| 내가 공부한 논리회로 설계16.K-map (3 inputs) (0) | 2020.05.08 |
| 내가 공부한 논리회로설계14. Maxterm, POS(Product of Sum) (0) | 2020.05.03 |
| 내가 공부한 논리회로 설계13. Minterm과 SOP 최적화 (0) | 2020.04.30 |
| 내가 공부한 논리회로 설계12.불대수를 이용한 최적화 (0) | 2020.04.26 |