본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

시프트 레지스터(shift register, 자리 이동 레지스터)는 D 플립플롭 여러 개를 앞 단의 출력이 다음 단의 입력이 되도록 잇고 같은 클록을 주어, 클록 에지마다 저장된 비트들을 한 칸씩 옆으로 옮기는 순차 논리 회로이다.

플립플롭 n 개로 n 비트를 담는다. 첫 단의 D 에 직렬 입력을 넣고 모든 단에 공통 클록을 주면, 에지가 올 때마다 각 단은 에지 직전의 앞 단 값을 받아들인다. 그래서 비트들이 클록 하나에 한 자리씩 밀려간다. 데이터를 직렬과 병렬로 바꾸거나, 정해진 클록 수만큼 늦추거나, 이진수의 자리를 옮기는 데 쓴다.

출력을 Q0(첫 단)부터 Qn-1(마지막 단)이라 하면 클록 에지마다

Q0←Input,Q1←Q0,Q2←Q1,…

가 동시에 일어난다. 모든 플립플롭이 에지 직전 값으로 바뀌므로 입력이 한 번에 여러 칸을 건너가지 않는다.

타이밍 읽는 법

편집 원본 편집

상승 에지에서 동작하는 4비트 시프트 레지스터, 처음 Q0Q1Q2Q3 = 0000. 클록 상승 에지 t1~t5 에서 Input 이 각각 1, 1, 0, 1, 0 일 때(Input 은 t2 와 t3 사이에 내려가고, t3 와 t4 사이에 오르고, t4 와 t5 사이에 다시 내려간다)

에지 에지 순간 Input Q0Q1Q2Q3 (에지 뒤)
t1 1 1000
t2 1 1100
t3 0 0110
t4 1 1011
t5 0 0101
  • 구간 t4~t5 의 출력은 t4 에지 뒤의 값 1011 이다
  • 에지와 에지 사이에 Input 이 바뀌어도 출력은 변하지 않는다. 각 에지 순간의 Input 만 읽는다
  • Q0 이 가장 최근 입력, Q3 이 세 클록 전 입력이다
종류 입력 출력 쓰임
SISO(직렬 입력 직렬 출력) 한 비트씩 마지막 단에서 한 비트씩 지연 회로(n 클록 지연)
SIPO(직렬 입력 병렬 출력) 한 비트씩 모든 단을 한꺼번에 직렬 통신 수신(UART), 직렬-병렬 변환
PISO(병렬 입력 직렬 출력) 모든 단에 한꺼번에 적재 한 비트씩 직렬 통신 송신, 병렬-직렬 변환
PIPO(병렬 입력 병렬 출력) 한꺼번에 한꺼번에 임시 저장(레지스터)
양방향 시프트 레지스터 제어 입력으로 왼쪽·오른쪽 이동을 고른다 - 산술 시프트
  • 이진수를 왼쪽으로 한 자리 옮기면 2 를 곱한 것, 오른쪽으로 옮기면 2 로 나눈 것과 같다
  • 마지막 단 출력을 첫 단 입력으로 되돌리면 링 카운터·존슨 카운터가 된다 → 카운터 (논리 회로)