PREVIEW
Shift Register (8-bit)

Shift Register (8-bit)

Memory signal_cellular_alt_2_bar Intermediate schedule 25 min

Interactive Circuit

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 (병렬 입력/병렬 출력) 레지스터: 시프팅 기능이 없는 기본 레지스터
  • 존슨 카운터: 시퀀스 생성을 위한 반전 피드백이 있는 시프트 레지스터
  • 링 카운터: 시퀀스 생성을 위한 직접 피드백이 있는 시프트 레지스터

school 학습 경로

arrow_back 사전 요구 사항

arrow_forward 다음 단계

help_outline 자주 묻는 질문

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

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

play_arrow 실시간 회로 실행

다른 컴포넌트 보기