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

기능 설명
논리 동작
시프트 레지스터는 각 클록 펄스마다 저장된 비트를 지정된 방향으로 시프트하여 이진 데이터를 저장하고 조작합니다. 유형에 따라 직렬(한 번에 한 비트)로 또는 병렬(모든 비트 동시에)로 데이터를 로드할 수 있으며, 직렬 또는 병렬 형식으로 데이터를 출력할 수 있습니다.
일반적인 동작 모드:
| 모드 제어 | 기능 | 설명 |
|---|---|---|
| 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에서 시프트 레지스터는 시프팅 동작의 명확한 시각적 피드백과 함께 일반적인 에지 트리거 동작을 모델링합니다.
- 단일 구성 요소가 제공하는 것보다 더 큰 데이터 폭을 처리하기 위해 여러 시프트 레지스터를 캐스케이드할 수 있습니다.
시프트 레지스터의 종류
직렬 입력, 직렬 출력 (SISO)
- 데이터가 한 번에 한 비트씩 들어가고 한 번에 한 비트씩 나옴
- 지연선 또는 디지털 메모리 소자로 작동
직렬 입력, 병렬 출력 (SIPO)
- 데이터가 직렬로 입력되지만 병렬로 접근 가능
- 직렬-병렬 변환에 사용
- 통신 인터페이스(UART, SPI)에서 일반적
병렬 입력, 직렬 출력 (PISO)
- 데이터가 병렬로 로드되지만 직렬로 시프트 출력
- 병렬-직렬 변환에 사용
- 데이터 전송 시스템에 필수적
병렬 입력, 병렬 출력 (PIPO)
- 데이터가 병렬로 입력되고 병렬로 출력
- 임시 저장을 제공하고 데이터를 시프트할 수 있음
- 시스템 간 데이터 버퍼링에 사용
양방향 시프트 레지스터
- 데이터를 좌우로 시프트 가능
- 유연한 데이터 조작 허용
범용 시프트 레지스터
- 여러 동작 모드 지원 (위의 모든 모드)
- 제어 입력으로 구성 가능
- 최대 유연성 제공
동작 모드
| 모드 제어 (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으로 클리어
- 프리셋 옵션: 일부 레지스터는 초기값 설정 허용
- 데이터 흐름 제어: 인에이블/디세이블 기능 포함 가능
- 전력 요구 사항: 플립플롭 수와 클록 주파수에 비례
응용 분야
데이터 변환
- 직렬-병렬 및 병렬-직렬 변환
- 직렬 버스와 병렬 프로세서 간의 인터페이스
디지털 통신
- UART, SPI, I2C 인터페이스
- 인코딩/디코딩 연산
- 비트 프레이밍 및 데이터 포맷팅
신호 처리
- 디지털 필터 (FIR 필터)
- 디지털 신호 처리를 위한 지연선
- 상관 및 컨볼루션 연산
데이터 저장
- 임시 버퍼 저장
- 비트 패턴 생성 및 인식
컴퓨팅 시스템
- CPU 시프트/로테이트 연산
- CRC 생성 및 검사
- 유사 난수 시퀀스 생성
디스플레이 시스템
- LED/LCD 디스플레이 다중화
- 스크롤 디스플레이
- 디스플레이 패널 데이터 배포
타이밍 및 제어
- 시퀀스 생성
- 이벤트 타이밍 및 제어
구현
시프트 레지스터는 다음을 사용하여 구현할 수 있습니다:
플립플롭 체인:
- D 플립플롭 (가장 일반적)
- JK 플립플롭
- 마스터-슬레이브 구성
집적 회로:
- 74xx 시리즈:
- 7491: 8비트 SISO
- 74164: 8비트 SIPO
- 74165: 8비트 PISO
- 74194/74195: 4비트 범용/4비트 병렬 접근
- 74299: 8비트 범용
- 74xx 시리즈:
메모리 기반:
- 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 버퍼: 고급 데이터 저장 구조
- 디지털 필터: 지연선 구현에 시프트 레지스터 사용
- 시퀀스 감지기: 패턴 인식 회로