레지스터
개요
- 목적: 레지스터는 여러 비트의 이진 데이터를 저장하는 디지털 저장 구성 요소입니다. 1비트를 저장하는 단일 플립플롭과 달리, 레지스터는 완전한 이진 워드를 저장하기 위해 여러 플립플롭으로 구성됩니다.
- 심볼: 레지스터는 4개의 데이터 입력(D0-D3), 클록 입력(CLK), 로드 인에이블(LD), 클리어(CLR), 그리고 4개의 데이터 출력(Q0-Q3)을 가진 직사각형 블록으로 표현됩니다.
- DigiSim.io 역할: 디지털 시스템에서 처리 작업 중 이진 정보의 임시 저장을 제공하는 기본 순차 논리 구성 요소로 사용됩니다.

기능 설명
논리 동작
레지스터는 클록 신호에 의해 트리거될 때 데이터 입력에 있는 값을 캡처하여 저장합니다. 저장된 값은 다음 클록 트리거 또는 리셋/클리어 신호가 적용될 때까지 변경되지 않습니다.
진리표 (4비트 레지스터):
| CLR | LD | CLK | D[3:0] | Q[3:0] (다음 상태) | 동작 |
|---|---|---|---|---|---|
| 1 | X | X | xxxx | 0000 | 비동기 클리어 |
| 0 | 1 | ↑ | abcd | abcd | 동기 로드 |
| 0 | 0 | ↑ | xxxx | Q (prev) | 유지 (로드 없음) |
| 0 | X | 0 | xxxx | Q (prev) | 유지 (클록 에지 없음) |
참고: ↑는 상승 클록 에지, X는 "무관(don't care)", "prev"는 이전 상태를 나타냅니다. CLR은 활성-HIGH이며 비동기입니다 — CLK에 관계없이 즉시 레지스터를 리셋합니다. 데이터는 상승 클록 에지에서 LD=1일 때만 로드됩니다.
입력 및 출력
입력 (총 7개):
- D0: Pin 0. 데이터 입력 비트 0 (LSB).
- D1: Pin 1. 데이터 입력 비트 1.
- D2: Pin 2. 데이터 입력 비트 2.
- D3: Pin 3. 데이터 입력 비트 3 (MSB).
- CLK: Pin 4. 클록 입력 — LD가 HIGH일 때 상승 에지에서 데이터가 로드됩니다.
- LD (로드): Pin 5. 로드 인에이블 — 상승 클록 에지에서 HIGH일 때 데이터 입력이 레지스터에 래치됩니다.
- CLR (클리어): Pin 6. 비동기 클리어 — HIGH일 때 클록에 관계없이 모든 저장된 비트를 0으로 리셋합니다.
출력 (총 4개):
- Q0: Pin 0. 출력 비트 0 (LSB).
- Q1: Pin 1. 출력 비트 1.
- Q2: Pin 2. 출력 비트 2.
- Q3: Pin 3. 출력 비트 3 (MSB).
구성 가능한 매개변수
- 비트 폭: 레지스터가 저장할 수 있는 비트 수 (일반적으로 4, 8, 16 등).
- 클록 에지 감도: 레지스터가 상승 또는 하강 클록 에지에 응답하는지 여부입니다.
- 비동기 vs. 동기 제어: 클리어 및 기타 제어 신호가 클록에 대해 어떻게 동작하는지입니다.
- 전파 지연: 트리거 이벤트 후 출력이 변경되는 데 걸리는 시간입니다.
DigiSim.io에서의 시각적 표현
레지스터는 왼쪽에 레이블된 입력(D[n:0], CLK, CLR 등)과 오른쪽에 출력(Q[n:0])이 있는 직사각형 블록으로 표시됩니다. 클록 입력은 일반적으로 에지 감도를 나타내는 삼각형 기호로 표시됩니다. 회로에 연결되면 출력에 표시된 값과 연결선의 색상 변화를 통해 현재 상태를 시각적으로 나타냅니다.
교육적 가치
핵심 개념
- 데이터 저장: 디지털 회로가 여러 비트의 정보를 저장할 수 있는 방법을 보여줍니다.
- 동기 동작: 클록 신호에 의해 트리거되는 동작의 개념을 설명합니다.
- 메모리 소자: 컴퓨터 메모리 시스템의 기본 구성 요소를 소개합니다.
- 이진 워드 처리: 컴퓨터가 개별 비트가 아닌 다중 비트 데이터 워드를 처리하는 방법을 보여줍니다.
- 상태 보존: 디지털 시스템이 클록 사이클 간에 상태를 유지하는 방법을 보여줍니다.
학습 목표
- 레지스터가 클록 사이클에 걸쳐 이진 데이터를 저장하고 유지하는 방법을 이해합니다.
- 순차 회로에서 클록 신호와 데이터 캡처 간의 관계를 배웁니다.
- 데이터 처리 및 임시 저장에서 레지스터의 역할을 인식합니다.
- 카운터 및 시프트 레지스터와 같은 더 복잡한 순차 회로 설계에 레지스터 개념을 적용합니다.
- 조합 논리(메모리가 없음)와 순차 논리(상태를 보존함)의 차이를 이해합니다.
사용 예시/시나리오
- 데이터 저장: CPU에서 계산 결과를 임시로 보관합니다.
- 주소 레지스터: 페치-실행 사이클 동안 메모리 주소를 저장합니다.
- 데이터 버퍼: 서로 다른 속도로 동작하는 시스템 간 인터페이스 경계에서 데이터를 보관합니다.
- 명령 레지스터: CPU에서 현재 명령을 저장합니다.
- 파이프라인 단계: 파이프라인 아키텍처에서 순차적 처리 단계를 생성합니다.
- 병렬-직렬 변환: 비트 단위 직렬 전송을 위해 병렬 데이터를 저장합니다.
기술 참고사항
- 레지스터는 일반적으로 D 플립플롭을 사용하여 구현되며, 저장 비트당 하나의 플립플롭이 사용됩니다.
- 구성 플립플롭의 셋업 및 홀드 시간 요구 사항이 안정적인 레지스터 동작을 위한 타이밍 제약을 결정합니다.
- DigiSim.io에서 레지스터는 상태 전환의 명확한 시각적 피드백과 함께 일반적인 에지 트리거 동작을 모델링합니다.
- 레지스터는 시프트 레지스터, 카운터 및 메모리 배열과 같은 더 복잡한 순차 구성 요소의 기초를 형성합니다.
- 특수 목적 레지스터에는 누산기(산술 연산용), 상태 레지스터(조건 플래그용) 및 인덱스 레지스터(메모리 주소 지정용)가 포함됩니다.
특성
- 워드 크기: 일반적으로 4, 8, 16, 32 또는 64비트 (임의의 수 가능)
- 저장 용량: 레지스터의 비트(플립플롭) 수와 동일
- 동작 모드:
- 로드 (쓰기): 새 데이터를 레지스터에 저장
- 읽기: 현재 저장된 데이터를 출력
- 클리어/리셋: 모든 비트를 0으로 설정
- 세트: 모든 비트를 1로 설정
- 시프트: 레지스터 내에서 데이터를 좌우로 이동
- 타이밍 제어: 일반적으로 클록 신호와 동기화
- 속도: 플립플롭 전파 지연에 의해 결정 (일반적인 셋업 시간: 2-5ns)
- 전력 소비: 플립플롭 수와 스위칭 주파수에 비례
레지스터의 종류
- 데이터 레지스터: 범용 데이터 값 저장
- 시프트 레지스터: 데이터를 좌우로 시프트할 수 있음
- SISO (직렬 입력, 직렬 출력)
- SIPO (직렬 입력, 병렬 출력)
- PISO (병렬 입력, 직렬 출력)
- PIPO (병렬 입력, 병렬 출력)
- 버퍼 레지스터: 시스템 구성 요소 간의 임시 저장
- 주소 레지스터: 메모리 주소 보관
- 명령 레지스터: 프로세서 명령 보관
- 상태 레지스터: 조건 플래그 및 상태 정보 저장
- 누산기 레지스터: 산술 연산을 위한 특수 레지스터
응용 분야
- 마이크로프로세서 및 마이크로컨트롤러: CPU 레지스터용
- 메모리 시스템: 주소 및 데이터 레지스터로 사용
- I/O 인터페이스: 서로 다른 속도 도메인 간의 버퍼링
- 산술 논리 장치 (ALU): 피연산자 저장용
- 데이터 변환: ADC 및 DAC에서 사용
- 신호 처리: 데이터 버퍼링 및 파이프라이닝용
- 통신 시스템: 병렬-직렬 및 직렬-병렬 변환
- 카운터: 이진 카운터의 저장 소자로 사용
- 상태 머신: 순차 회로의 상태 저장용
- 디스플레이 드라이버: 디스플레이 데이터 보관
구현
레지스터는 다음을 사용하여 구현할 수 있습니다:
플립플롭:
- D 플립플롭 (가장 일반적)
- JK 플립플롭
- T 플립플롭
집적 회로:
- 74174/74175: 헥스/쿼드 D형 플립플롭
- 74273: 클리어가 있는 옥탈 D형 플립플롭
- 74377/74378: 클록 인에이블이 있는 옥탈 D형 플립플롭
- 74595: 출력 래치가 있는 8비트 시프트 레지스터
- 74299: 8비트 범용 시프트 레지스터
메모리 기술:
- 정적 RAM 셀
- 동적 RAM 셀 (리프레시 필요)
- FPGA의 플립플롭 배열
회로 구현
D 플립플롭을 사용한 기본 4비트 레지스터:
graph LR
D0[D bit 0] --> FF0[D Flip-Flop 0]
D1[D bit 1] --> FF1[D Flip-Flop 1]
D2[D bit 2] --> FF2[D Flip-Flop 2]
D3[D bit 3] --> FF3[D Flip-Flop 3]
CLK[Clock] --> FF0
CLK --> FF1
CLK --> FF2
CLK --> FF3
FF0 --> Q0[Q bit 0]
FF1 --> Q1[Q bit 1]
FF2 --> Q2[Q bit 2]
FF3 --> Q3[Q bit 3]
구조: 모든 플립플롭이 동기 동작을 위해 공통 클록 신호를 공유합니다.
관련 구성 요소
- 플립플롭: 레지스터의 기본 구성 요소 (D, JK, T)
- 래치: 레지스터와 유사하지만 에지 트리거 대신 레벨 트리거
- 카운터: 펄스를 세기 위해 레지스터를 사용하는 순차 회로
- 시프트 레지스터: 시프팅 연산을 위한 특수 레지스터
- 메모리 모듈: 더 큰 저장 소자 배열 (RAM, ROM)
- 멀티플렉서: 데이터 선택을 위해 레지스터와 함께 자주 사용
- 버스 시스템: 데이터 전송을 위해 여러 레지스터를 연결
- 마이크로프로세서: 다양한 목적의 여러 레지스터를 포함
- 메모리 버퍼: 메모리 시스템과의 인터페이스를 위한 특수 레지스터
- I/O 컨트롤러: 서로 다른 시스템 간의 데이터 버퍼링에 레지스터를 사용