CS 10

최성원·2022년 2월 4일
0

CS

목록 보기
9/16

Day-10

3장 메모리와 디스크의 핵심: 순차논리

-컴퓨터는 비트를 어떻게 기억하는가

1-1 시간 표현과 상태 기억

게이트가 있는 래치

  • NAND 결과표
  • 하나라도 0이면 출력값은 1이고, 입력값이 1이 있다면 나머지 입력값에 따라 결과가 달라진다.

  • 앞에서 배운 S-R래치에 게이트와 OR게이트 한쌍을 추가한 것.

  • gate-bar값이 1일 때
  • set-bar와 reset-bar가 어떤 값이든지 상관 없이 출력은 그대로이다. (q = 1).

  • gate-bar값이 0일 때
  • set-bar와 reset-bar값에 따라서 출력이 변한다.

우리는 이를 통해서 게이트가 있는 래치는 gate-bar값이 0일때(gate값이 1일때)는
입력값을 출력에 반영하는 것이 가능하다.
반면에 gate-bar값이 1이라면 set또는 reset값과 무관하게 기존의 출력을 유지한다.
즉, gate를 통해서 S-R래치를 껐다 켰다 할 수 있게 된 것이다.

게이트가 있는 D래치

입력값을 set과 reset 두가지로 유지하는 것이 불편하기 때문에
등장한 것이 인버터를 추가한 게이트 방식이 존재한다.
이를 게이트가 있는 D래치라고 한다.

  • 즉, 이제는 인버터를 통해 D값 하나의 입력만으로 게이트가 있는 S-R래치를 다루는 것이 가능해졌다.

다만 게이트가 있는 S-R 래치는 치명적인 단점이 존재한다.

  • 게이트가 있는 S-R 래치는 level- trigger 방식이다.

  • 예를 들어서 지금처럼 positive-level trigger 방식이라면
    3번구간에서 한 게이트값에 두개의 입력(D)가 존재하기 때문에 문제가 생긴다.
    예를 들어 외부적 요인이나 잡음 등으로 잠깐 입력값이 바뀌었을 뿐인데
    출력값이 바뀌어버리는 결과가 나타날 수 있는 것이다.
    그래서 등장하게 된 개념이 edge-trigger방식이다.

  • 예를 들어서 지금처럼 positive-edge trigger 방식이라면
    3번구간에서 한 게이트값에 두개의 입력(D)이 존재하더라도
    출력값에는 영향을 주지 않아 문제가 없다.
    예를 들어 외부적 요인이나 잡음 등으로 잠깐 입력값이
    바뀌어도 출력값이 바뀌지 않는 결과가 나타날 수 있는 것이다.
  • 바로 이 edge trigger 방식을 사용하는 것이 플립플롭이다.

플립플롭

  • 구조가 굉장히 복잡하니 오른쪽의 두 게이트는 S-R 래치와 동일하므로
    그 부분을 제외한 나머지 부분만 가지고 어떤 논리로 돌아가는지 살펴보자.
  • 클록이 0이면 D값이 어떤 값이던지 간에 S-bar와 R-bar는 항상 1이다.
  • 클록이 1이고 R-bar가 0인 경우 D 값이 0 이던 1이던 상관없이
    무조건 S-bar는 1이고 R-bar는 0이다.
  • 클록이 1이고 S-bar가 0인 경우 D 값이 0 이던 1이던 상관없이
    무조건 S-bar는 0이고 R-bar는 1이다.
  • 결론 : 모든 경우의 수를 따져봤을 때 클록이 0이면 S-bar와 R-bar는 무조건
    1이고 클록이 1일때는 S-bar와 R-bar가 1, 0 또는 0, 1의 값을 갖는다.
    이 과정에서 입력값(D)가 미치는 영향은 전혀없다!
    이 점이 앞의 게이트가 있는 S-R 래치와의 결정적인 차이점이다.

이번에는 클록값을 변경하는 경우를 살펴보자.

  • D값이 1일때 우리는 클록값이 0에서 1로 바뀔 때 S-bar값이 1에서 0으로 바뀌고
    R-bar값은 그대로 0에서 0이라는 것을 확인할 수 있다.
    S-bar와 R-bar가 0, 1이라면 S-R래치에서 출력값이 1이기 때문에
    우리는 클록값이 0에서 1로 바뀔때 입력값인 1이 결과로 출력됨을 확인할 수 있다.
  • 다른 경우로 D값이 0일때 우리는 클록값이 0에서 1로 바뀔 때 S-bar값이 1에서 1로 그대로고
    R-bar값은 1에서 0으로 바뀐다는 것을 확인할 수 있다.
    S-bar와 R-bar가 1, 0이라면 S-R래치에서 출력값이 0이기 때문에
    우리는 클록값이 0에서 1로 바뀔때 입력값인 0이 결과로 출력됨을 확인할 수 있다.
  • 플립플롭 결론:
    D값의 변화는 전혀 출력값에 영향을 주지 않고 클록값의 변화로만 플립플롭을 껐다 켰다 할 수 있다.

최초의 플립플롭은 아래와 같다.

  • D는 데이터, CK는 클록을 의미한다. 이 플립플롭은 양의 edge-trigger방식이기 때문에 클록이 0에서 1로 바뀔때 입력값(D)을 출력한다.

카운터

레지스터

  • 레지스터는 값을 기억하기 위한 것으로 클록을 공유하는 여러 플립플롭들을 한 패키지에 넣은 것이다.
    CPU가 일시적으로 값을 기억하기 위한 기억장치이다.

참고자료
https://soojong.tistory.com/entry/%EC%9E%91%EC%84%B1%EC%A4%91%EC%88%9C%EC%B0%A8%ED%9A%8C%EB%A1%9C-%EB%9E%98%EC%B9%98

profile
각성구

0개의 댓글