PREVIEW
Shift Register (4-bit)

Shift Register (4-bit)

Memory signal_cellular_alt_2_bar Intermediate schedule 22 min

시프트 레지스터

개요

  • 목적: 시프트 레지스터는 이진 데이터를 저장하고 각 클록 펄스마다 내용을 한 비트 위치씩 시프트하는 순차 논리 회로입니다. 데이터를 좌우로 이동시켜 순차적 데이터 조작 및 저장을 가능하게 합니다.
  • 심볼: 시프트 레지스터는 데이터(직렬 및 경우에 따라 병렬), 클록, 리셋, 모드 제어 입력과 저장/시프트된 데이터를 위한 출력을 가진 직사각형 블록으로 표현됩니다.
  • DigiSim.io 역할: 디지털 회로 설계에서 직렬 및 병렬 형식 간의 데이터 변환, 데이터 저장 및 신호 처리 응용을 위한 필수 구성 요소입니다.

shift register component

기능 설명

논리 동작

시프트 레지스터는 각 클록 펄스마다 저장된 비트를 지정된 방향으로 시프트하여 이진 데이터를 저장하고 조작합니다. 유형에 따라 직렬(한 번에 한 비트)로 또는 병렬(모든 비트 동시에)로 데이터를 로드할 수 있으며, 직렬 또는 병렬 형식으로 데이터를 출력할 수 있습니다.

일반적인 동작 모드:

모드 제어 기능 설명
00 유지 현재 상태 유지
01 우측 시프트 비트를 오른쪽으로 이동, 왼쪽에서 새 비트 진입
10 좌측 시프트 비트를 왼쪽으로 이동, 오른쪽에서 새 비트 진입
11 병렬 로드 모든 비트를 동시에 로드

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

CLK DIR S/L SI D3 D2 D1 D0 Q3 (Next) Q2 (Next) Q1 (Next) Q0 (Next) 비고
X 1 X d3 d2 d1 d0 d3 d2 d1 d0 병렬 로드
0 0 si X X X X si Q3 Q2 Q1 우측 시프트
1 0 si X X X X Q2 Q1 Q0 si 좌측 시프트
X X X X X X X Q3 Q2 Q1 Q0 변화 없음

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

입력 및 출력

  • 입력 (총 8개):

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

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

구성 가능한 매개변수

  • 비트 폭: 시프트 레지스터가 저장할 수 있는 비트 수 (일반적으로 4, 8, 16 등).
  • 시프트 방향: 레지스터가 좌, 우 또는 양방향으로 시프트하는지 여부입니다.
  • 유형: 레지스터의 구성 (SISO, SIPO, PISO, PIPO 또는 범용).
  • 클록 에지 감도: 레지스터가 상승 또는 하강 클록 에지에 응답하는지 여부입니다.
  • 전파 지연: 트리거 이벤트 후 출력이 변경되는 데 걸리는 시간입니다.

DigiSim.io에서의 시각적 표현

시프트 레지스터는 왼쪽에 레이블된 입력(SI, D0-D3, CLK, DIR, S/L)과 오른쪽에 출력(Q0-Q3, SO)이 있는 직사각형 블록으로 표시됩니다. 클록 입력은 일반적으로 에지 감도를 나타내는 삼각형 기호로 표시됩니다. 회로에 연결되면 출력에 표시된 값과 연결선의 색상 변화를 통해 현재 상태를 시각적으로 나타냅니다.

교육적 가치

핵심 개념

  • 순차적 데이터 처리: 데이터가 순서대로 한 비트씩 처리될 수 있는 방법을 보여줍니다.
  • 직렬-병렬 변환: 순차적 데이터 형식과 동시 데이터 형식 간의 변환을 설명합니다.
  • 시간적 저장: 디지털 시스템이 시간에 걸쳐 데이터를 저장하고 지연시킬 수 있는 방법을 보여줍니다.
  • 클록 동작: 동기 디지털 시스템에 대한 이해를 강화합니다.
  • 디지털 통신: 디지털 데이터 전송의 기본 개념을 소개합니다.

학습 목표

  • 순차적 데이터 저장 및 조작의 원리를 이해합니다.
  • 디지털 시스템이 직렬 및 병렬 데이터 형식 간에 변환하는 방법을 배웁니다.
  • 다양한 유형의 시프트 레지스터와 그 응용을 인식합니다.
  • 디지털 회로에서 데이터 처리 문제를 해결하기 위해 시프트 레지스터 개념을 적용합니다.
  • 디지털 통신 프로토콜에서 시프트 레지스터의 역할을 이해합니다.

사용 예시/시나리오

  • 직렬 통신: 마이크로프로세서의 병렬 데이터와 전송을 위한 직렬 데이터 간의 변환.
  • 지연선: 신호 처리 응용을 위한 정밀한 디지털 지연 생성.
  • 데이터 버퍼링: 처리 전에 데이터 비트를 임시 저장.
  • 패턴 생성: 테스트 또는 디스플레이 목적의 반복 비트 패턴 생성.
  • 디지털 필터: 신호 처리를 위한 유한 임펄스 응답(FIR) 필터 구현.
  • 디스플레이 드라이버: 제한된 제어선으로 LED/LCD 매트릭스 디스플레이 제어.

기술 참고사항

  • 시프트 레지스터는 일반적으로 D 플립플롭을 사용하여 구현되며, 저장 비트당 하나의 플립플롭이 사용됩니다.
  • 최대 동작 주파수는 플립플롭 체인을 통한 전파 지연에 의해 제한됩니다.
  • 범용 시프트 레지스터는 가장 유연하지만 더 많은 제어 입력과 내부 논리가 필요합니다.
  • 선형 피드백 시프트 레지스터(LFSR)는 유사 난수 생성 및 CRC 계산에 사용되는 특수 구성입니다.
  • DigiSim.io에서 시프트 레지스터는 시프팅 동작의 명확한 시각적 피드백과 함께 일반적인 에지 트리거 동작을 모델링합니다.
  • 단일 구성 요소가 제공하는 것보다 더 큰 데이터 폭을 처리하기 위해 여러 시프트 레지스터를 캐스케이드할 수 있습니다.

시프트 레지스터의 종류

  1. 직렬 입력, 직렬 출력 (SISO)

    • 데이터가 한 번에 한 비트씩 들어가고 한 번에 한 비트씩 나옴
    • 지연선 또는 디지털 메모리 소자로 작동
  2. 직렬 입력, 병렬 출력 (SIPO)

    • 데이터가 직렬로 입력되지만 병렬로 접근 가능
    • 직렬-병렬 변환에 사용
    • 통신 인터페이스(UART, SPI)에서 일반적
  3. 병렬 입력, 직렬 출력 (PISO)

    • 데이터가 병렬로 로드되지만 직렬로 시프트 출력
    • 병렬-직렬 변환에 사용
    • 데이터 전송 시스템에 필수적
  4. 병렬 입력, 병렬 출력 (PIPO)

    • 데이터가 병렬로 입력되고 병렬로 출력
    • 임시 저장을 제공하고 데이터를 시프트할 수 있음
    • 시스템 간 데이터 버퍼링에 사용
  5. 양방향 시프트 레지스터

    • 데이터를 좌우로 시프트 가능
    • 유연한 데이터 조작 허용
  6. 범용 시프트 레지스터

    • 여러 동작 모드 지원 (위의 모든 모드)
    • 제어 입력으로 구성 가능
    • 최대 유연성 제공

동작 모드

모드 제어 (S/L, DIR) 기능 설명
1, X 병렬 로드 Q[3:0] = D[3:0]
0, 0 우측 시프트 SI → Q3, Q3 → Q2, Q2 → Q1, Q1 → Q0
0, 1 좌측 시프트 Q2 → Q3, Q1 → Q2, Q0 → Q1, SI → Q0

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

CLK DIR S/L SI D3 D2 D1 D0 Q3 (Next) Q2 (Next) Q1 (Next) Q0 (Next) 비고
X 1 X d3 d2 d1 d0 d3 d2 d1 d0 병렬 로드
0 0 si X X X X si Q3 Q2 Q1 우측 시프트
1 0 si X X X X Q2 Q1 Q0 si 좌측 시프트
X X X X X X X Q3 Q2 Q1 Q0 변화 없음

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

특성

  • 비트 용량: 일반적으로 4, 8 또는 16비트 (임의의 길이 가능)
  • 시프트 방향: 구성에 따라 좌/우/양방향
  • 클록 요구 사항: 클록 에지에서의 동기 동작
  • 타이밍: 전파 지연이 최대 시프트 주파수를 제한
  • 샘플링: 활성 클록 에지에서 입력 데이터 샘플링
  • 리셋 동작: 일반적으로 모든 비트를 0으로 클리어
  • 프리셋 옵션: 일부 레지스터는 초기값 설정 허용
  • 데이터 흐름 제어: 인에이블/디세이블 기능 포함 가능
  • 전력 요구 사항: 플립플롭 수와 클록 주파수에 비례

응용 분야

  1. 데이터 변환

    • 직렬-병렬 및 병렬-직렬 변환
    • 직렬 버스와 병렬 프로세서 간의 인터페이스
  2. 디지털 통신

    • UART, SPI, I2C 인터페이스
    • 인코딩/디코딩 연산
    • 비트 프레이밍 및 데이터 포맷팅
  3. 신호 처리

    • 디지털 필터 (FIR 필터)
    • 디지털 신호 처리를 위한 지연선
    • 상관 및 컨볼루션 연산
  4. 데이터 저장

    • 임시 버퍼 저장
    • 비트 패턴 생성 및 인식
  5. 컴퓨팅 시스템

    • CPU 시프트/로테이트 연산
    • CRC 생성 및 검사
    • 유사 난수 시퀀스 생성
  6. 디스플레이 시스템

    • LED/LCD 디스플레이 다중화
    • 스크롤 디스플레이
    • 디스플레이 패널 데이터 배포
  7. 타이밍 및 제어

    • 시퀀스 생성
    • 이벤트 타이밍 및 제어

구현

시프트 레지스터는 다음을 사용하여 구현할 수 있습니다:

  1. 플립플롭 체인:

    • D 플립플롭 (가장 일반적)
    • JK 플립플롭
    • 마스터-슬레이브 구성
  2. 집적 회로:

    • 74xx 시리즈:
      • 7491: 8비트 SISO
      • 74164: 8비트 SIPO
      • 74165: 8비트 PISO
      • 74194/74195: 4비트 범용/4비트 병렬 접근
      • 74299: 8비트 범용
  3. 메모리 기반:

    • FIFO 메모리 구성
    • 링 버퍼 구현
    • FPGA의 시프트 레지스터 LUT

회로 구현

기본 4비트 직렬 입력, 직렬 출력 시프트 레지스터:

### 직렬 입력 직렬 출력 (SISO) 시프트 레지스터

```mermaid
graph LR
    SIN[Serial In] --> FF0[D FF0]
    CLK[Clock CLK] --> FF0
    FF0 -->|Q0| FF1[D FF1]
    CLK --> FF1
    FF1 -->|Q1| FF2[D FF2]
    CLK --> FF2
    FF2 -->|Q2| FF3[D FF3]
    CLK --> FF3
    FF3 -->|Q3| SOUT[Serial Out]

관련 구성 요소

  • 레지스터: 범용 데이터 저장
  • 카운터: 펄스를 세는 순차 회로
  • 플립플롭: 시프트 레지스터의 기본 구성 요소 (D, JK)
  • 멀티플렉서: 범용 시프트 레지스터 설계에서 자주 사용
  • 직렬 통신 인터페이스: UART, SPI, I2C
  • 선형 피드백 시프트 레지스터: 유사 난수 시퀀스 생성용
  • 배럴 시프터: 단일 사이클에서 다중 비트 시프트용
  • FIFO/LIFO 버퍼: 고급 데이터 저장 구조
  • 디지털 필터: 지연선 구현에 시프트 레지스터 사용
  • 시퀀스 감지기: 패턴 인식 회로

school 학습 경로

arrow_back 사전 요구 사항

help_outline 자주 묻는 질문

시프트 레지스터는 어떻게 작동하나요?

각 클럭 에지에서 각 플립플롭이 이웃에게 출력하면서 반대쪽에서 입력을 받습니다. 데이터가 왼쪽 또는 오른쪽으로 한 위치씩 이동합니다.

SIPO와 PISO란 무엇인가요?

SIPO(직렬 입력 병렬 출력): 직렬 데이터가 입력되고 병렬 데이터를 사용할 수 있습니다. PISO(병렬 입력 직렬 출력): 병렬로 로드하고 직렬로 시프트 출력합니다.

play_arrow 실시간 회로 실행

다른 컴포넌트 보기