Shift Register (8-bit)

Memory · Intermediate · 25 min

직렬 통신과 데이터 조작을 위한 8비트 시프트 레지스터를 마스터하세요. 시프트 모드, 직렬 I/O, 응용에 대해 알아보세요.

Fig. 1 — Interactive Shift Register (8-bit) circuit ● LIVE

8비트 시프트 레지스터

개요

  • 목적: 8비트 시프트 레지스터는 8비트의 이진 데이터를 저장하고 좌우로 시프트하는 순차 디지털 회로로, 직렬-병렬 및 병렬-직렬 데이터 변환, 임시 저장, 비트 조작을 가능하게 합니다.
  • 심볼: 일반적으로 직렬 입력(SI), 병렬 데이터 입력(D0-D7), 제어 입력(CLK, LOAD, SCLR), 병렬 출력(Q0-Q7) 및 직렬 출력(SO)을 가진 직사각형 블록으로 표현됩니다.
  • DigiSim.io 역할: 데이터를 시프트, 저장 또는 직렬 및 병렬 형식 간에 변환해야 하는 데이터 전송, 통신 인터페이스 및 순차 디지털 연산을 위한 필수 구성 요소입니다.

shift register 8uit component

기능 설명

논리 동작

8비트 시프트 레지스터는 세 가지 주요 동작을 수행합니다: 병렬 로딩(8비트를 동시에 캡처), 직렬 시프팅(레지스터를 통해 비트 이동), 출력(저장된 데이터를 병렬 또는 직렬 형태로 제공). 동작은 클록, 로드 및 클리어 신호에 의해 제어됩니다.

진리표 (8비트 범용 시프트 레지스터):

CLK DIR S/L SI D7..D0 Q7..Q0 (Next) 비고
X 1 X d7..d0 d7..d0 병렬 로드
0 0 si X si, Q7, Q6, Q5, Q4, Q3, Q2, Q1 우측 시프트
1 0 si X Q6, Q5, Q4, Q3, Q2, Q1, Q0, si 좌측 시프트
X X X X Q7..Q0 (변화 없음) 변화 없음

참고: ↑는 상승 클록 에지, ↓는 하강 에지, X는 무관, si는 직렬 입력, d7..d0은 병렬 데이터 입력. Qn은 현재 상태입니다.

입력 및 출력

  • 입력 (총 12개):

    • SI (직렬 입력): 직렬 데이터 입력을 위한 1비트 입력입니다.
    • CLK (클록): 1비트 입력; 상승 에지에서 동작이 수행됩니다.
    • DIR (방향): 1비트 입력; S/L이 0일 때 시프트 방향을 제어합니다 (0 = 우측, 1 = 좌측).
    • S/L (시프트/로드): 1비트 입력; 모드 제어 (0 = 시프트, 1 = 병렬 로드).
    • D0, D1, D2, D3, D4, D5, D6, D7: S/L이 1일 때 데이터를 동시에 로드하기 위한 8개의 1비트 병렬 데이터 입력입니다.
  • 출력 (총 9개):

    • Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7: 레지스터의 현재 저장된 비트를 나타내는 8개의 1비트 병렬 출력입니다.
    • SO (직렬 출력): 1비트 출력. 시프트 방향에 따라 동작이 달라집니다:
      • 우측 시프트 (DIR=0) 시: SO는 일반적으로 Q0를 반영합니다.
      • 좌측 시프트 (DIR=1) 시: SO는 일반적으로 Q7를 반영합니다.

구성 가능한 매개변수

  • 클록 에지: 상승 또는 하강 클록 에지에서 동작이 트리거되는지 여부입니다.
  • 시프트 방향: 우측 시프트, 좌측 시프트 또는 양방향 (일부 구현에서).
  • 클리어 유형: 동기(클록) 또는 비동기 클리어 기능입니다.
  • 제어 신호 논리: 제어 신호가 활성-하이인지 활성-로우인지 여부입니다.
  • 직렬 I/O 구성: 레지스터의 어느 끝이 직렬 입출력으로 사용되는지입니다.
  • 타이밍 매개변수: 셋업 시간, 홀드 시간 및 전파 지연입니다.

DigiSim.io에서의 시각적 표현

8비트 시프트 레지스터는 왼쪽에 데이터 입력 핀(D0-D7 및 SI), 하단에 제어 신호(CLK, DIR, S/L), 오른쪽에 데이터 출력 핀(Q0-Q7 및 SO)이 있는 직사각형 블록으로 표시됩니다. 회로에 연결되면 연결선의 색상 변화를 통해 저장된 값과 시프트 동작을 시각적으로 나타냅니다.

교육적 가치

핵심 개념

  • 순차 논리: 디지털 회로에서 시간에 걸쳐 데이터가 저장되고 조작될 수 있는 방법을 보여줍니다.
  • 데이터 시프팅: 디지털 시스템에서 비트 이동 및 회전 연산을 설명합니다.
  • 형식 변환: 데이터가 직렬 및 병렬 형식 간에 변환될 수 있는 방법을 보여줍니다.
  • 클록 동작: 순차 회로에서 타이밍과 동기화의 중요성을 강조합니다.
  • 임시 저장: 데이터 버퍼링 및 단계별 처리의 개념을 소개합니다.
  • 디지털 통신: 직렬 및 병렬 데이터 전송의 기본 개념을 소개합니다.

학습 목표

  • 시프트 레지스터가 직렬 및 병렬 데이터 형식 간에 변환하는 방법을 이해합니다.
  • 디지털 시스템에서 클록 기반 순차 동작을 배웁니다.
  • 통신 인터페이스에서 시프트 레지스터의 중요성을 인식합니다.
  • 데이터 전송 시스템 설계에 시프트 레지스터 개념을 적용합니다.
  • 제어 신호와 레지스터 동작 간의 관계를 이해합니다.
  • 여러 동작 모드가 있는 순차 회로의 분석 및 설계 능력을 개발합니다.
  • 직렬 데이터 연산에서 타이밍 관계를 숙달합니다.

사용 예시/시나리오

  • 직렬 통신: 직렬 프로토콜과 병렬 데이터 버스 간의 변환을 위한 UART, SPI 또는 I²C 인터페이스 구현.
  • LED 디스플레이 제어: 디스플레이 데이터를 직렬로 시프팅하여 더 적은 제어선으로 여러 LED 디스플레이를 구동.
  • 데이터 수집: 직렬 센서 데이터를 캡처하여 처리를 위한 병렬 형식으로 변환.
  • 디지털 필터: 디지털 신호 처리 응용을 위한 지연선 생성.
  • 키보드 스캔: 단일 활성 비트를 시프팅하여 매트릭스 키보드를 스캔.
  • 패턴 생성: 테스트 또는 제어 응용을 위한 반복 비트 패턴 생성.
  • CRC 계산: 통신 시스템에서 오류 검사를 위한 다항식 나눗셈 구현.
  • 병렬-직렬 변환: 직렬 통신 채널을 통해 병렬 데이터 전송.

기술 참고사항

  • 구현은 일반적으로 직렬로 연결된 8개의 D 플립플롭과 병렬 로딩을 위한 추가 멀티플렉서를 사용합니다.
  • 시프트 레지스터는 하나의 직렬 출력을 다른 것의 직렬 입력에 연결하여 더 긴 비트 길이를 만들기 위해 캐스케이드할 수 있습니다.
  • 중요 타이밍 매개변수에는 셋업 시간(클록 에지 전 5-15ns)과 홀드 시간(클록 에지 후 0-5ns)이 포함됩니다.
  • 다양한 구성에는 SISO(직렬 입력, 직렬 출력), SIPO(직렬 입력, 병렬 출력), PISO(병렬 입력, 직렬 출력), 범용(병렬 로드가 있는 양방향)이 있습니다.
  • 일반적인 IC 구현에는 74HC164(SIPO), 74HC165(PISO) 및 74HC595(출력 래치가 있는 SIPO)가 포함됩니다.
  • 최대 시프팅 주파수는 플립플롭 체인을 통한 전파 지연에 의해 제한됩니다.
  • DigiSim.io에서 시프트 레지스터 시뮬레이션은 실제 시프트 레지스터 구성 요소의 타이밍 의존성과 비트 이동 연산을 정확하게 모델링합니다.

특성

  • 입력 구성:

    • 8개의 병렬 데이터 입력 (D0-D7)
    • 데이터 시프팅을 위한 직렬 입력 (SI)
    • 클록 입력 (CLK) - 일반적으로 상승 에지 트리거
    • 레지스터 리셋을 위한 동기 클리어 입력 (SCLR)
    • 병렬 데이터 로드를 위한 병렬 로드 인에이블 (LOAD)
    • 양방향 유형에서 시프트 방향 제어 포함 가능
    • 표준 디지털 논리 레벨과 호환
  • 출력 구성:

    • 8개의 병렬 데이터 출력 (Q0-Q7)
    • 직렬 출력 (SO) - 일반적으로 우측 시프트 레지스터에서 Q0
    • 각 출력은 해당 단계의 현재 상태를 나타냄
    • 표준 디지털 부하 구동 가능
    • 일부 구현에서 상보 출력이 포함될 수 있음
    • 클록 전환과 동기적으로 상태 변경
  • 기능:

    • 8비트의 이진 데이터를 저장하고 시프트
    • 병렬 또는 직렬로 데이터 로드 허용
    • 병렬 또는 직렬 형태로 데이터 접근 제공
    • 데이터를 우측(또는 양방향 변형에서 좌측)으로 시프트
    • 직렬 및 병렬 데이터 형식 간 변환
    • 직렬 입력/직렬 출력, 직렬 입력/병렬 출력, 병렬 입력/직렬 출력 또는 병렬 입력/병렬 출력 연산 구현
    • 더 큰 비트 폭을 위해 캐스케이드 가능
  • 전파 지연:

    • 클록-출력 (tCO): 일반적으로 10-25ns
    • 셋업 시간 (tS): 클록 에지 전 5-15ns
    • 홀드 시간 (tH): 클록 에지 후 0-5ns
    • 클리어-출력 (tCLR): 5-20ns
    • 기술에 따라 다름 (TTL, CMOS 등)
    • 고속 직렬 연산을 위한 중요 매개변수
    • 동기 설계에서 모든 비트에 걸쳐 일관성
  • 팬아웃:

    • 일반적으로 10-20개 표준 부하 구동
    • 출력 부하가 전파 지연에 영향
    • 높은 팬아웃 응용에서 버퍼링이 필요할 수 있음
    • 직렬 출력은 일반적으로 후속 단계 구동을 위해 설계
  • 전력 소비:

    • CMOS 구현에서 정적 전력 최소
    • 클록 주파수에 따라 동적 전력 증가
    • 시프팅 활동에 비례하는 전력 소비
    • 다중 비트 전환 시 전력 스파이크
    • 클록 게이팅을 통한 전력 관리
    • 기술에 따라 다름 (CMOS가 정적 전력 최소)
  • 회로 복잡성:

    • 보통 수준의 복잡성
    • 8개의 플립플롭과 제어 논리 필요
    • 병렬 로딩을 위한 추가 멀티플렉서
    • 모드 선택을 위한 입력 제어 논리
    • 추가 기능(양방향 등)에 따라 복잡성 증가
    • 통합 구현이 외부 부품 수를 줄임

구현 방법

  1. D 플립플롭 체인

    • 공통 클록을 가진 8개의 캐스케이드 D 플립플롭
    • 직렬 입력/직렬 출력을 위한 가장 간단한 구현
    • 각 플립플롭의 출력이 다음 플립플롭의 입력에 연결
    • 병렬 로드 기능을 위한 추가 멀티플렉서
    • 동작 선택을 위한 모드 제어 논리
    • 시프트 레지스터 동작의 일반적인 교육 예제
  2. 집적 회로 구현

    • 전용 8비트 시프트 레지스터 IC
    • 예: 74HC164(직렬 입력/병렬 출력), 74HC165(병렬 입력/직렬 출력), 74HC595(출력 래치가 있는 직렬 입력/병렬 출력)
    • 병렬 로드, 트라이스테이트 출력 등 다양한 기능
    • 다양한 논리 계열에서 사용 가능 (TTL, CMOS 등)
    • 부품 수와 보드 면적 감소
    • 잘 정의된 타이밍 특성
  3. 범용 시프트 레지스터

    • 좌측 시프트, 우측 시프트, 병렬 로드 구성 가능
    • 더 복잡한 제어 논리와 내부 경로
    • 서로 다른 동작을 위한 최대 유연성
    • 74HC194, 74HC299 등이 그 예
    • 모드 선택 입력이 동작을 결정
    • 더 복잡하지만 매우 다양한 용도로 활용
  4. 양방향 시프트 레지스터

    • 데이터를 좌우로 시프트 가능
    • 방향 제어 입력이 시프트 방향을 선택
    • 방향 제어를 위한 추가 멀티플렉서
    • 산술 연산(곱셈, 나눗셈)에서 일반적
    • 범용 시프트 레지스터로 구현되는 경우가 많음
    • 양방향 기능으로 인한 복잡성 증가
  5. SIPO (직렬 입력/병렬 출력) 구성

    • 데이터가 직렬로 입력되고 병렬로 읽힘
    • 직렬-병렬 변환에 일반적
    • 직렬 데이터 스트림 캡처 가능
    • 직렬 통신 인터페이스에 사용
    • 이 기능 전용일 경우 범용 설계보다 단순
    • 일반적인 예: 74HC164
  6. PISO (병렬 입력/직렬 출력) 구성

    • 데이터가 병렬로 입력되고 직렬로 출력
    • 병렬-직렬 변환 가능
    • 송신기 및 직렬 인터페이스에 사용
    • 병렬 로드 기능 필요
    • 직렬 시프팅을 위한 클록 제어
    • 일반적인 예: 74HC165
  7. FPGA/ASIC 구현

    • 플립플롭과 멀티플렉서를 사용하여 구현
    • 높은 구성 가능성의 설계 옵션
    • 특정 요구 사항에 최적화 가능
    • 대상 기술의 특수 기능을 활용할 수 있음
    • HDL 기술에서 합성되는 경우가 많음
    • 사용자 정의 기능을 쉽게 추가 가능

응용 분야

  1. 직렬-병렬 변환

    • 직렬 주변 장치를 병렬 버스 시스템에 인터페이스
    • UART/USART 수신기 구현
    • SPI 슬레이브 인터페이스
    • I²C 슬레이브 수신기
    • 직렬 센서 데이터 수집
    • 직렬 데이터 역직렬화기
  2. 병렬-직렬 변환

    • 병렬 버스 시스템을 직렬 주변 장치에 인터페이스
    • UART/USART 송신기 구현
    • SPI 마스터 인터페이스
    • 전송을 위한 데이터 직렬화
    • 디스플레이 드라이버 인터페이스
    • 직렬 데이터 직렬화기
  3. 데이터 버퍼링 및 임시 저장

    • 데이터 경로의 파이프라인 레지스터
    • 입력 데이터 캡처 및 보관
    • 시스템 간 데이터 속도 적응
    • 데이터 스트림을 위한 다단계 버퍼
    • 처리를 위한 임시 저장
    • 바이트 단위 데이터 버퍼링
  4. 디지털 신호 처리

    • 디지털 필터 (FIR/IIR 구현)
    • 신호 처리를 위한 지연선
    • 상관 및 컨볼루션 연산
    • 디지털 파형 생성
    • 직렬 스트림의 패턴 감지
    • 시퀀스 인식
  5. 산술 연산

    • 이진 곱셈 및 나눗셈
    • 직렬 산술 장치
    • 다항식 나눗셈 (CRC 계산)
    • 비트 조작 연산
    • 특정 알고리즘을 위한 하드웨어 가속기
    • 선형 피드백 시프트 레지스터 구현
  6. 타이밍 및 제어

    • 시퀀스 생성
    • 고정 시퀀스가 있는 상태 머신
    • 시간 지연 구현
    • 펄스 시퀀스 제어
    • 패턴 생성기
    • 유사 난수 시퀀스 생성기
  7. 데이터 통신

    • 프레임 동기화
    • 프로토콜 캡슐화
    • 데이터 포맷팅
    • 비트 스터핑 및 디스터핑
    • 데이터 패킷화
    • 오류 감지 코드 생성

제한 사항

  1. 타이밍 제약

    • 셋업 및 홀드 시간 요구 사항
    • 최대 클록 주파수 제한
    • 직렬 스트림에 대한 데이터 전환 타이밍이 중요
    • 캐스케이드 시스템에서의 클록 스큐 감도
    • 최대 속도를 제한하는 전파 지연
    • 외부 시스템과의 동기화 문제
  2. 데이터 용량

    • 캐스케이드 없이 8비트로 제한
    • 더 넓은 데이터 경로에 여러 장치 필요
    • 캐스케이드가 전파 시간을 증가
    • 구현 후 데이터 폭 고정
    • 전용 메모리보다 적은 저장 용량
    • 소규모 데이터 응용에서의 제어 논리 오버헤드
  3. 동작 제약

    • 비범용 유형에서 고정된 시프팅 방향
    • 외부 저장 없이 시프팅 중 데이터 손실
    • 모드 제어 타이밍 요구 사항
    • 시프트된 데이터에 대한 순차적 접근
    • 내부 단계에 대한 제한된 접근성
    • 구현에 따라 다양한 리셋/프리셋 기능
  4. 전력 소비

    • 지속적인 클록킹으로 전력 소비 증가
    • 고주파 동작으로 동적 전력 증가
    • 비트 전환에 비례하는 활성 전력
    • 전력 관리에 클록 제어 필요
    • 배터리 구동 응용에서 신중한 설계 필요
    • 고속 시프팅으로 전력 요구 사항 증가
  5. 설계 복잡성

    • 더 큰 비트 폭을 위한 캐스케이딩 복잡성
    • 제어 신호 조정
    • 모드 선택 논리 오버헤드
    • 클록 분배 고려사항
    • 테스트 및 검증 과제
    • 비동기 시스템과의 통합

회로 구현 상세

기본 8비트 직렬 입력/병렬 출력 시프트 레지스터

graph LR
    SI[Serial In] --> FF0[D FF 0]
    CLK[Clock] --> FF0
    FF0 -->|Q0| OUT0[Q0]
    FF0 --> FF1[D FF 1]
    CLK --> FF1
    FF1 -->|Q1| OUT1[Q1]
    FF1 --> FF2[D FF 2]
    CLK --> FF2
    FF2 -->|Q2| OUT2[Q2]
    FF2 --> FF7[D FF 7]
    CLK --> FF7
    FF7 -->|Q7| OUT7[Q7]

동작: 각 클록 에지에서 데이터가 우측으로 시프트되고 모든 플립플롭에서 병렬 출력을 사용할 수 있습니다.

74HC595 출력 래치가 있는 8비트 직렬 입력/병렬 출력 시프트 레지스터

핀 구성:

신호 기능
SER 직렬 입력 데이터 입력
SRCLK 시프트 클록 상승 에지에서 데이터 시프트
RCLK 레지스터 클록 시프트 레지스터를 출력으로 래치
/SRCLR 클리어 활성-LOW 클리어
/OE 출력 인에이블 활성-LOW 출력 인에이블
QA-QH 출력 병렬 데이터 출력 Q0-Q7
QH' 직렬 출력 캐스케이딩 출력
VCC, GND 전원 +5V 및 접지

특징:

  • 이중 단계: 시프트 레지스터 + 출력 래치
  • 캐스케이드: QH'로 여러 장치 연결 가능
  • 출력 제어: /OE를 통한 트라이스테이트 출력

74HC165 8비트 병렬 입력/직렬 출력 시프트 레지스터

핀 구성:

신호 기능
A-H 데이터 입력 병렬 데이터 입력 D0-D7
SER 직렬 입력 캐스케이드/직렬 데이터 입력
CLK 클록 시프트 클록 입력
CLK INH 클록 억제 HIGH일 때 클록 정지
SH//LD 시프트/로드 LOW=병렬 로드, HIGH=시프트
QH 직렬 출력 직렬 데이터 출력
QH' 보수 출력 반전된 직렬 출력
VCC, GND 전원 +5V 및 접지

동작:

  • 로드 모드 (SH//LD=LOW): 병렬 데이터 로드
  • 시프트 모드 (SH//LD=HIGH): 데이터가 직렬로 시프트 출력

CLK = 클록, CLK INH = 클록 억제, SH/LD = 시프트/로드, SER = 직렬 입력, QH = 직렬 출력, QH' = 상보 직렬 출력

관련 구성 요소

  • 4비트 시프트 레지스터: 니블 크기 연산을 위한 더 작은 버전
  • 16비트 시프트 레지스터: 워드 크기 연산을 위한 확장 버전
  • 범용 시프트 레지스터: 여러 시프트 모드가 있는 유연한 레지스터
  • 양방향 시프트 레지스터: 데이터를 좌우로 시프트 가능
  • SIPO (직렬 입력/병렬 출력) 레지스터: 직렬-병렬 변환 전용
  • PISO (병렬 입력/직렬 출력) 레지스터: 병렬-직렬 변환 전용
  • SISO (직렬 입력/직렬 출력) 레지스터: 직렬 입출력을 가진 단순 시프트 레지스터
  • PIPO (병렬 입력/병렬 출력) 레지스터: 시프팅 기능이 없는 기본 레지스터
  • 존슨 카운터: 시퀀스 생성을 위한 반전 피드백이 있는 시프트 레지스터
  • 링 카운터: 시퀀스 생성을 위한 직접 피드백이 있는 시프트 레지스터

학습 경로

자주 묻는 질문

8비트 시프트 레지스터는 어디에 사용되나요?

직렬 통신(SPI, UART), LED 디스플레이 드라이버, 의사 난수 생성기, 직렬과 병렬 데이터 형식 간 변환에 사용됩니다.

다른 컴포넌트 보기