컴퓨터구조 5강 - 순차논리소자

soo·2022년 8월 4일
0

컴퓨터구조

목록 보기
5/6

학습 목표

  • 기억소자인 래치와 플립플롭의 기능을 설명할 수 있다.
  • 레지스터, 시프트 레지스터, 카운터의 기능을 설명할 수 있다.

내용

  • 5.1 래치
  • 5.2 플립플롭
    래치, 플립플롭: 1비트를 저장하는 기억소자
  • 5.3 레지스터와 카운터
    레지스터: 여러 비트를 저장하는 소자
  • 5.4 요약

5.1 래치

래치(걸쇠, latch)

  • 제어 입력에 따라 0 또는 1 상태를 유지하는 기억 소자
    걸쇠: 어떤 값을 탁 걸어서 계속 유지
    새로운 입력이 들어올 때까지 값은 유지된다.

내용

  • 5.1.1 NOR 래치
  • 5.1.2 NAND 래치
  • 5.1.3 클럭 제어 래치

5.1.1 래치

  • NOR 게이트 출력을 Cross해서 출력 >> 입력 연결 👉 출력을 피드백해서 입력으로 다시 보내면 값을 저장하는 기능이 생김
  • RR: Reset. 0으로 만든다.
    SS: Set. 1로 만든다.
    QQ: 출력
    Qˉ\bar{Q}: Q의 반대. Q'. 부출력
  • NOR 게이트 👉 입력 2 중 1이라도 1이면 출력 0
  • (a) 리셋이 1이 되면 출력은 무조건 0. 따라서 리셋이라고 부름
    (b) 리셋 상태에서 1 >> 0으로 바뀌어도 그대로 0으로 유지.
    리셋 상태에서 R의 값이 바뀌어도 출력은 변하지 않음
SRQ동작 설명
00Q0이전값 유지(b, d)
010리셋(a)
101셋(c)
11불허사용불가
  • Q0: 이전값을 유지한다. 이전 값이 변하지 않는다.
  • S1-R1 케이스가 사용불허인 이유: Q, Q'가 둘 다 0으로 서로 반대가 되지 않아서
  • S1 = 1을 기억해라, R1 = 0을 기억해라 라고 래치에게 명령을 준 것 👉 쭉 기억

5.1.2 NAND 래치

  • 신호 위치가 NOR 게이트와 반대 (부논리이므로 위는 S', 밑에는 R')
  • NAND 게이트 특성 👉 [정논리 기준] x, y 둘 다 1일 때만 0 출력
    [부논리 기준] 둘 중 하나가 0일 때 출력이 1
/S/RQ동작 설명
11Q0이전상태 유지
100리셋
011
00불허사용불가
  • 둘 다 1, 1은 가능하지만 0, 0은 불가 (부논리이므로)
  • NAND, NOR은 입력값은 반대지만 값을 유지하는 기능은 동일

5.1.3 클럭 제어 래치

  • NOR 래치, NAND 래치 둘 다로 만들기는 가능
  • CP: 클럭. 우선 제어신호라 생각
  • NOR 래치에서
    제어신호가 0이면 AND 게이트가 닫힌 것이라 값은 항상 0
    제어신호가 1이면 존재하지 않는다고 생각해도 됨(R=R1, S=S1)
    👉 그냥 NOR 래치와 동일하게 적용
  • NAND 래치에서
    제어신호가 0이면 /S1, /R1은 무조건 1 👉 유지
    제어신호가 1이면 반대로 전달이 됨(S, R이 뒤집혀서) 👉 NOR 래치와 동일한 결과
    (정논리로 동작하는 래치)
  • 결국 클럭제어 래치는 항상 다음과 같이 동작
CPSRQ
0xxQ0
100Q0
1010
1101
111사용불허

5.2 플립플롭

래치와 플립플롭

  • 래치: 클럭=1일 때, 출력 변경. 클럭=0일 때, 출력 불변
  • 플립플롭: 클럭 에지(0에서 1로, 1에서 0으로 변하는 순간에 출력이 변하는 기억 소자)에서 출력 변경

학습 목표

  • 플립플롭의 동작 원리를 설명할 수 있다.
  • 클럭 펄스와 비동기 리셋 신호에 따른 플립플롭의 출력을 해석할 수 있다.

내용

  • 5.2.1 클럭 펄스
  • 5.2.2 플립플롭
  • 5.2.3 플립플롭 종류
  • 5.2.4 비동기 리셋 입력

5.2.1 클럭 펄스

📍 발진기 (oscillator)

  • 디지털 시스템에 클럭 펄스를 공급하는 소자

📍 클럭 펄스

  • 0과 1을 무한 반복하는 신호

  • 주기(period): 한 개의 구간. 단위는 시간, 초(second)

  • 주파수(frequency) = 1/주기 Hz

  • 0에서 1로 변하는 부분: rising edge

  • 1에서 0으로 변하는 부분: falling edge

  • 래치는 high-level 구간에서 입력 신호에 따라 변함
    플립플롭은 엣지(rising/falling)에서 변함

  • Q'는 생략하기도 함
  • IS = Input Signal (플립플롭 종류에 따라 IS 종류도 달라짐)
    CP = Clock pulse

📍 플립플롭(flip-flop)

  • 한 비트의 값을 저장하는 기억 소자
  • 0 ↔️ 1로 값이 변하는 모습을 형상한 데서 이름 유래
  • 출력 2개: Q, Q' (항상 반대 값)

📍 플립플롭의 동작을 결정하는 요인

  • 출력 변경 시간(타이밍): 클럭 펄스에 의해 결정
  • 입력 신호: 종류와 값에 따라 출력 값(다음 상태, next state) 결정

📍 플립플롭 동작 타이밍

  • 클록 펄스가 올라가는 순간(상승 엣지, positive edge, rising edge) 트리거되는 플립플롭을 Positive Edge Trigger라 함
  • 플립플롭의 현재 상태(current state)
    클럭이 인가되기 직전 입력 신호의 값에 따라
    클럭이 인가된 후에 다음 상태(next state)로 변한다.

5.2.3 플립플롭 종류

📍 플립플롭의 종류

  • SR-FF, D-FF, JK-FF, T-FF

📍 동작 타이밍

  • 상승 엣지 플립플롭과 하강 엣지 플립플롭이 있을 수 있다.
    (우리는 상승 엣지만)
  • 상승 엣지 플립플롭으로 설명한다.

  • IS 종류가 S, R이면 SR-FlipFlop
    D이면 D-FF
    J, K이면 JK-FF

📍 SR-플립플롭

  • SR-FF 특성표
CPSR다음상태 Q설명
⬆️00Q0
⬆️010
⬆️101
⬆️11불허
  • 클럭이 올라갈 때만 영향을 미침
    클럭이 올라갈 때 직전 값에 따라 직후에 변경
  • SR래치와 동일한데 클럭이 올라가는 순간에만 반영

📍 D-플립플롭

CPD다음상태 Q설명
⬆️00reset
⬆️11set
  • 직전 값에 따라 CP가 올라가면 값이 바뀌기 때문에 D 신호의 값대로 출력이 delay되어 나타나는 형태가 됨
    👉 Delay-플립플롭

📍 JK-플립플롭

CPJK다음상태 Q설명
⬆️00Q0Keep
⬆️010Reset
⬆️101Set
⬆️11Q0'Toggle
  • SR-플립플롭과 동일한데 SR-플립플롭에서는 S=1, R=1인 상황을 불허하는 현상을 해결하기 위함
  • TOGGLE한다 = 값이 바뀐다.

📍 T-플립플롭

CPT다음상태 Q설명
⬆️0Q0Keep
⬆️1Q0'Toggle
  • 순차회로를 사용할 때 4가지 플립플롭 중 어떤 것을 써도 만들 수 있으나,
    D-플립플롭이 가장 간단하므로 D-플립플롭을 주로 사용한다.

5.2.4 비동기 리셋 입력

📍 플립플롭 제어 신호

  • 동기(synchronous): 클럭 신호에 맞춰 동작
    클럭 신호의 rising edge에서 입력 신호값을 보고 출력 신호가 변한다.
  • 비동기(asynchronous): 클럭과 관계없이 동작
    입력 신호가 변하면 그 순간 동작한다.

  • 아래의 R'이 비동기 방식으로 동작
R'CPDQ설명
0xx0비동기 리셋
1⬆️00클리어
1⬆️11set
  • R'이 클럭과 상관없이 0으로 들어오면 즉시 비동기 리셋이 진행됨.
    들어오는 순간 바로 0

5.3 레지스터와 카운터

레지스터

  • 여러 비트를 저장하는 기억 소자
    플립플롭 1개: 1비트 저장 👉 플립플롭 여러 개

학습 목표

  • 여러 가지 레지스터의 동작 원리를 이해한다.
  • 입력 신호에 대한 레지스터의 출력 신호를 해석할 수 있다.

내용

  • 5.3.1 레지스터
  • 5.3.2 시프트 레지스터
  • 5.3.3 카운터

5.3.1 레지스터

📍 정의

  • 여러 비트의 이진 정보를 저장하는 소자
  • 클럭을 공유하여 동시에 동작
    단, 입력과 출력은 각각 D0-D3, Q0-Q3로 다름

📍 동작 예시

  • 리셋이 0일 때가 가장 순위가 높음. 그 즉시 무조건 0
    1이면 Enable이 0이면 현재 상태 유지. 1이고 Clock 올라가면 동기 적재
  • 입력소자 4개, 출력소자 4개이지만 입출력이 전부 동시에 일어남

5.3.2 시프트 레지스터

📍 정의

  • 연결 방법에 따라 데이터를 왼쪽 또는 오른쪽으로 자리이동하는 레지스터
    SO: Serial Outpupt
  • Q2는 Q3가 입력이고 Q1이 출력 👉 오른쪽으로 한 칸씩 연결해가는 모양새

📍 양방향 시프트 레지스터

/ResetclkS1S0S_1S_0Q3Q2Q1Q0Q_3Q_2Q_1Q_0기능
0xx x0 0 0 0비동기 리셋
1⬆️0 0Q3Q2Q1Q0Q_3Q_2Q_1Q_0현재상태 유지
1⬆️0 1DSRQ3Q2Q1D_{SR}Q_3Q_2Q_1오른쪽 시프트
1⬆️0 1Q2Q1Q0DSLQ_2Q_1Q_0D_{SL}왼쪽 시프트
1⬆️1 1D3D2D1D0D_3D_2D_1D_0병렬 적재

📍 레지스터 전송

  • 레지스터 A의 값을 레지스터 B로 전달하는 것
    RB ⬅️ RA

5.3.3 카운터

📍 카운터(counter)

  • 일정한 순서로 상태를 반복하는 레지스터
    상태: 레지스터의 출력
  • 2진 카운터: 2진수 순서로 증가
  • N진 카운터(modulo-N counter): 0~N-1까지 세는 카운터
  • 클럭이 하나 들어올 때마다 상태가 변화.
    그림은 0000➡️0001.... 16진카운터
  • (b)의 clock이 클럭펄스. 클럭이 올라갈 때마다 값이 변화.
    순서대로 0000➡️0001....
    16진 카운터는 클럭을 1/16으로 만든 것. N진 카운터의 클럭은 1/N (주파수 낮추는 성질)

📍 JK-FF 이진 카운터

  • 상향 카운터(up counter): 이전 단의 값이 모두 1일 때, 출력 토글
  • 하향 카운터(down counter): 이전 단의 값이 모두 0일 때, 출력 토글
  • 상하향 카운터(up-down counter): 제어선으로 상향/하향 선택

📍 병렬 적재 4비트 카운터

  • 카운터로도 쓸 수 있고 레지스터로도 쓸 수 있는 소자

📍 카운터 활용

  • 카운터(counter)
    이벤트 발생 횟수 카운트: 펄스를 센다.
  • 타이머(timer)
    시간 측정: 주기가 일정한 펄스를 센다.
  • PWM(Pulse Width Modulation)
    펄스의 듀티비 조정
profile
기록+기록

0개의 댓글