논리회로를 배우기 시작하면서 도대체 왜 0, 1 이런 게 반복되는 것을 왜 배워야 하는지 이해가 가지 않을 것이다.
어차피 신호 들어가면 켜지는 건데 도대체 왜 이걸 논리적으로 구현한다는 건지???
디지털 로직을 설명하기에 앞서 아래에 간단한 예를 확인해보자.
여행을 가는 데 있어서 아래와 같은 과정이 있다고 보자.
(0은 가기 싫다고 1은 가고 싶다이다.)
나 | 아빠 | 엄마 | 여행결정 |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
이 경우에 한눈에 보았을 때 결과가 어떤 변수에 의해 영향을 미치는지 이해하기 어렵다.
간단하게 정리하기 위해서 나 = A, 아빠 = B, 엄마 = C, 여행결정은 F 라고 놓아보자.
첫 줄부터 차근차근 진리표를 정리해보자면 여행이 결정되는 경우는 (F=1인경우)
F= A'B'C + A'BC' + A'BC + AB'C + ABC' + ABC
여행결정 | 2번째줄 | 3번째줄 | 4번째줄 | 6번째줄 | 7번째줄 | 8번째줄 |
F = | A'B'C + | A'BC' + | A'BC + | AB'C + | ABC' + | ABC |
이렇게 구성된다. 하지만 이걸 더 간단하게 압축하는 방법이 있다.
K-map으로도 알려진 카르노맵이다.
우선 사용방법은 크기 2, 4, 8, 16 이렇게 2의 배수의 크기로 최대한 크게 묶어야 하며
열이나 행에 변수가 2개일 경우 좌측이나 상단값은 00 01 11 10 이런식으로 나간다.
묶인다고 다가 아니라 정말로 최대한 크게 묶어야한다.
(만약에 총 변수가 5개인 카르노맵을 만들고 싶으면 4개로 나누고 4x4 열을 두개 만들어서 로직을 합친다. 6변수 카르노맵의 경우 2x2x2로 3차원 배열로 해결.)
자 이처럼 두 개의 4사이즈 상자로 묶었을때 각각의 값을 나열해서 다 더하면된다.
결과적으로 위에서 하나씩 나열해서 구했던
F = A'B'C + A'BC' + A'BC + AB'C + ABC' + ABC = B + C 와 동일하다.
의심이 간다면 Boolean algebra로 직접 계산해 보기를 :D
F = B + C
즉 위에 식을 해석하자면 A 나의 선택은 여행결정에 영향을 미치지 않고 B와 C의 선택만 결과에 영향을 미친다고 볼 수 있다.
불대수 (Boolean algebra)와 카르노맵에 대한 자세한 설명은 구글 검색으로 쉽게 찾을 수 있음므로 더 자세한 정보나 예제를 원하면 직접 검색하기를 바란다.
이 정보를 활용하여 이전에서 게시물에서 설명한 NAND Gate를 활용하여 특정 로직의 결과값을 구할 수 있는 디지털 로직을 만들어 보려 한다.
이전게시물↓
'Electrical Engineering > 디지털 로직' 카테고리의 다른 글
Forward Error Correction, 순방향 오류 정정법 (0) | 2021.12.08 |
---|---|
2. 변조방식, Modulation system (BPSK, QPSK, DQPSK) (0) | 2021.04.18 |
1. 변조방식, Modulation system (ASK, FSK, PSK) (0) | 2021.03.22 |
[디지털 로직] 이해하기 쉬운 디지털 로직1 (NAND 구조) (1) | 2019.12.11 |
댓글