2장 컴퓨터와 디지털 논리회로
목차
디지털 논리회로
- 조합논리회로 : 입력받은 값에 의해서만 출력값이 결정됨
- 순서논리회로 : 조합논리회로와 저장요소로 구성됨
논리게이트
- AND : 곱
- OR : 덧셈
- NOT : 부정
- NAND : AND 결과의 반대
- NOR : OR 결과의 반대
- XOR : 1이 홀수면 1, 짝수면 0
- XNOR : 1이 홀수면 0, 짝수면 1
X | Y | AND | OR | NAND | NOR | XOR | XNOR |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
논리회로
- 작성 흐름 : 진리표 -> 불함수 -> 논리회로도
- 진리표 : 원하는 입력과 출력이 적힌 사양서라고 할 수 있다.
입력 | X | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Y | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | |
Z | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
출력 | F | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
- 불함수 : 진리표를 만족하는 대수 표현
F = XẎ + XYZ + ẊYZ
- 논리회로도 : 불함수를 이용하여 필요한 논리게이트를 표현한 그림
불함수의 간소화
진리표를 만족하는 불함수는 여러 개 있을 수 있다.
불함수에 따라 효율이 달라지기 때문에 최적화할 필요가 있다.
이를 불함수의 간소화라 한다.
- 대수적 간소화 공식
X + 0 = X | X * 1 = X | X + 1 = 1 | X * 0 = 0 | X + X = X |
X * X = X | X + Ẋ = 1 | X * Ẋ = 0 | Ẍ = X | X + Y = Y + X |
XY = YX | X + (Y+Z) = (X+Y) + Z | X(YZ) = (XY)Z | X(Y+Z) = XY + XZ | X + YZ = (X+Y)(X+Z) |
(X+Y)` = Ẋ*Ẏ | (XY)` = Ẋ + Ẏ | X + XY = X | X(X+Y) = X |
일반적인 수학상식으로 이해가 되는 부분이 많지만 그렇지 않은 부분도 있다.
예를 들어 X + XY = X 와 같은 것은 언뜻 이해하기 힘들다.
X(1 + Y) -> X(1) -> X
와 같은 논리로 도출된다.
- 카르노 도표
대수적 간소화만으로는 최적화된 결과를 얻기가 힘들다. 이때 사용하는 것이 카르노 도표이다.
변수가 2~4개 일때 유용하게 쓰일 수 있다.
아래 블로그에서 잘 설명되어있어 링크를 남긴다.
https://m.blog.naver.com/leeyunghuk1/220958708825
조합논리회로
- 가산기/감산기 : 덧셈과 뺄셈을 수행
- 반가산기(HA, Half Adder) : 2개의 항을 더한다.
- 전가산기(FA, Full Adder) : 3개의 항을 더한다. 덧셈이나 뺄셈을 할때 자릿수 올림/내림이 발생하면 3항연산이 필요하게 된다.
- 인코더 : 부호화되지 않은 입력을 받아서 부호화된 출력으로 내보낸다. 2^n 입력을 n으로 변환한다. 예) 10진수를 2진수로 변환
- 디코더 : 기억장치에서 특정 주소를 선택할 때나 컴퓨터 명령어 해독에 사용된다. n비트의 2진 코드를 최대 2^n개의 서로 다른 정보로 바꿔 주는 조합논리회로이다.
- 멀티플렉서 : 여러 개의 입력 중에서 하나를 선택하여 단일 출력으로 내보낸다. 2^n개의 입력에는 n개의 선택자가 필요하다.
- 디멀티플렉서 : 멀티플렉서의 반대로 하나의 입력을 여러 개의 출력으로 내보낸다.
순서논리회로
- 플립플롭 : 입력신호에 의해서 상태를 바꾸도록 지시할 때까지 현재의 2진 상태를 유지한다. 클록입력에 따라 출력상태를 변경한다.
- RS : S와 R 입력을 받는데 모두 1이면 상태를 결정할 수 없는 단점이 있다.
- D : RS의 미정 상태를 S/R 동시에 1을 갖지않도록하여 제거했다.
- JK : S, R이 1이면 현재 상태의 보수를 얻도록 하였다.
- T : JK의 확장으로 SR입력을 하나로 묶었다.
- 레지스터 : 플립플롭을 여러개 연결하여 데이터를 일시 저장하거나 전송하는 장치
- 데이터 적재 레지스터 : 새로운 데이터를 기억시킨다. 보통 D 플립플롭을 사용한다.
- 직렬형 : 플립플롭을 직렬연결하여 데이터를 순차적으로 기록한다.
- 병렬형 : 플립플롭을 병렬연결하여 데이터를 동시에 기록한다.
- 시프트 레지스터 : 플립플롭을 직렬로 연결하여 레지스트가 기억하고 있는 데이터를 한 방향 혹은 양방향으로 위치를 이동시킬 수 있다.
- 카운터 : 입력되는 클록 펄스의 적용에 따라 미리 정해진 순서를 밟아가는 특수한 형태의 레지스터. T 또는 JK가 사용된다.
- 2진 카운터 :
- 모듈로 N 카운터 : 원하는 수의 상태 순서만 계수하도록 설계. 8로 설계된 카운터는 0부터 7까지 계수한다.
- 링 카운터 : 시프트 레지스터를 응용한 카운터로 한 쪽방향으로 1의 위치가 순환한다.