본문 바로가기
학부 생활 + 랩실/Digital Circuits

Digital Circuits(디지털 회로)(7) - Registers and Register Transfers

by 프롭 2026. 4. 19.

 

비상이다 비상 교수님이 막판에 진도를 엄청 나가셨다...ㅠㅠㅠㅠ


Chpater 07 전체 구조

Chapter 07은 조합회로 + 순서회로를 실제 시스템 구조로 확장한 장이라 보면된다.

Chapter 07은 크게 3파트로 나누어진다.

  • Part 1: Registers, Microoperations and Implementations
  • Part 2: Counters, Register Cells, Buses, Serial Operations
  • Part 3: Control of Register Transfers

 

간단히

파트 1: 레지스터가 뭔지, 어떻게 load/shift/transfer 하는지

파트 2: 카운터, 버스, 3-state buffer, serial adder

파트 3: datapath와 control unit, 상태기계 기반 제어, 설계 절차


Register 정의

Register란

레지스터는 여러개의 binary storage element를 묶어놓은 것이다.

 

예를 들어 플립플롭 1개 = 1비트 저장, 플립플롭 여러 개 = 여러 비트 저장하는 것이다.

4개의 D flip flop -> 4비트 레지스터, 8개의 D flip-flop -> 8비트 레지스터

 

왜 중요한가?

디지털 시스템에서 데이터는 결국 레지스터에 저장된다.

그렇기에 레지스터는 datapath의 기본 저장단위라 할 수 있다.

 


Register와 Load Signal

단순 D FF만으로는 부족한 이유

D flip flop은 클록이 오면 입력값을 저장한다. 그런데 실제 레지스터는 매 클록마다 무조건 값이 바뀌면 안 된다.

즉 어떤 때는 새 값을 로드(load)하고 어떤 때는 기존 값을 유지(hold)해야 한다.

그렇기에 Load Signal이 필요하다.

 

Load의 의미

Load = 1이면 새 데이터를 저장 Load = 0이면 현재 값을 유지한다.

레지스터의 핵심 제어 입력 중 하나가 Load다.


Register 구현 방식 2가지

  • Clock Gating

클록 자체를 막거나 통과 시켜서 레지스터가 동작하게 하는 방식

Load = 1 -> 클록 전달 -> 저장

Load = 0 -> 클록 차단 -> 유지

장점 : 개념 적으로 단순 / 단점 : clock skew, 타이밍 문제, 신뢰성 저하

이론상 가능하지만 약간 위험하다.

* clock skew : 디지털 회로에서 동일한 클록 신호가 배선 길이, 온도, 공정 차이 등으로 인해 회로 내 서로 다른 위치에 서로 다른 시간에 도달하는 현상 또는 시간 차이를 의미한다.

  • Load-Controlled Feedback

더 믿을 만한 방식인데 핵심 아이디어는 다음과 같다.

1. 클록은 계속 정상적으로 공급

2. 입력 쪽에서 MUX를 사용해 Load = 1 ->외부 입력 선택, Load = 0 -> 현재 출력 값 feedback 선택

즉 레지스터 입력에 새 데이터와 현재 데이터 중 하나를 고르게 만드는 방식이다.

장점 : timing problem이 적다, clock gating 보다 안정적이다, 실제 설계에 더 선호된다.


Register Transfer Operation

레지스터 전송 동작(register transfer operation)은 한 레지스터의 데이터를 다른 레지스터로 옮기거나, 레지스터 내 데이터를 처리하는 동작이다.

예를 들어 위 동작은 R1의 내용을 R2로 전송하는 것이다.

핵심 구성 요소

register transfer operation의 3요소는 다음과 같다.

  1. set of registers
  2. operations
  3. control of operations

Microoperations

레지스터에 대해 수행되는 기본적인 연산을 microoperation이라 한다.

다음과 같이 4개의 종류가 있다.

  • Transfer - move data from one register to another
  • Arithmetic - perform arithmetic on data in registers
  • Logic - manipulate data or use bitwise logical operations
  • Shift - shift data in registers

 

1) Trangister

데이터를 한 레지스터에서 다른 레지스터로 이동

 

2) Arithmetic

 

3) Logic

 

4) Shift

  1. shift left
  2. shift right

 

 

Arithmetic Microoperations

 

Logical Microoperations

 

Shift Microoperations

 


Multiplexer-Based Transfer

여러 source register 중 하나를 선택해서 destination register로 보내기 위해 MUX를 사용하는 구조다.

위와 같이 R1 또는 R2 중 하나를 골라 R0에 저장하는 선택적 전송에 MUX가 쓰인다.

 

chap 3에서는 MUX는 조합회로 구현 블록이었는데 여기서는 데이터 전송 구조의 핵심 부품으로 쓰인다.


Shift Register

Shift register는 저장된 데이터를 한 비트씩 왼쪽 또는 오른쪽으로 이동시킬 수 있는 레지스터다.

병렬로 한 번에 데이터 로드 가능하며 클록마다 한 비트씩 이동 가능하다.

 

 

 

 

병렬 연산 가능한 parallel load + shift 기능이 함께 있는 shift register


Counter

Counter는 클록 펄스에 따라 상태가 규칙적으로 증가하거나 변화하는 순서회로다.

즉 레지스터의 특수한 형태다.

 

Ripple Counter

비동기 카운터(asynchronous counter)라고도 본다.

 

특징

  1. 첫 번째 플립플롭 출력이 다음 플립플롭의 클록 역할
  2. carry 또는 전이가 순차적으로 전달됨
  3. 구조는 단순

 

단점

  1. propagation delay누적
  2. 속도 느림
  3. glitch 가능성

 

앞에 4장의 개념과 비슷하다.

 

Synchronous Counters

모든 플립 플롭이 공통 클록을 사용한다.

 

특징

  1. 동시에 상태 변화
  2. delay 문제 감소
  3. 설계가 더 바람직

Modulo-N Counter

카운터가 0부터 특정 수까지 반복하도록 만든 구조

상태수가 N개

 

Suicide Counter 주의

보통 비동기 clear로 특정 상태를 강제로 초기화하는 구조에서 생길 수 있는 문제를 말한다.

즉 비동기 clear방식은 위험하며 synchronous load 방식이 더 안전하다는 것이다.


Register Cell Design

레지스터를 한 번에 크게 보는 게 아니라, 1비트 cell을 설계하고 이를 반복해서 n비트 레지스터를 만든다.

즉, bit slice / replication 관점이다.

 

의미

  • 설계 모듈화
  • 반복 구조
  • 확장 용이

Bus System

Bus란

여러 장치가 공유하는 공통 데이터 전송선이다.

즉 레지스터들 사이에 각각 선을 다 따로 연결하는 대신 공유된 경로를 통해 데이터를 이동시키는 방식이다.

 

왜 필요한가?

레지스터가 많아지면 모든 레지스터 끼리 직접 연결하는 방식은 너무 비싸고 배선 수가 증폭하기 때문이다.


Register Transfer Structure 3가지 비교

 

  • Multiplexer-Based Transfer

각 목적 레지스터 앞에 전용 MUX를 둔다.

장점 - 유연성 큼, 원하는 source를 쉽게 선택 가능

단점 - 하드웨어 비용 큼, 레지스터 수가 많아지면 MUX 규모 커짐

 

  • Bus-Based Transfers

공유 MUX가 버스를 만들고, 여러 레지스터가 그 버스를 통해 데이터를 받는다.

장점 - 전용 MUX를 다는 것보다 저렴, 구조 단순화

단점 - 동시에 가능한 transfer가 제한됨

 

  • Three-State Bus

3-state buffer를 이용해 여러 장치 출력을 하나의 bus에 연결

핵심

  1. 한 번에 하나의 장치만 bus를 구동해야 함
  2. 나머지 Hi-Z(high impedance) 상태여야 함

 

장점 - 비용 더 줄일 수 있음

단점 - 동시 전송 제한, enable 제어 중요, bus contention 주의


Three- State Buffer

출력이 3가지 상태를 가질 수 있는 버퍼

 

왜 필요한가

여러 장치가 하나의 bus를 공유할 때, 선택되지 않은 장치는 bus에 영향을 주면 안된다.

그래서 출력이 완전히 분리된 것처럼 보이는 Hi-Z 상태가 필요하다.


Serial Operations / Serial Adder

Serial Operation이란?

데이터를 한 번에 여러 비트 병렬로 처리하지 않고, 한 비트씩 순차적으로 처리하는 방식이다.

 

Serial Adder

구성 : shift register. full adder, carry 저장 요소

즉 병렬 가산기처럼 많은 하드웨어를 쓰지 않고 한 비트씩 시간에 따라 더하는 구조다.

하드웨어 비용이 적다는 장점이 있으나 느리다는 단점이 있다.

 

Parallel adder : 빠르지만 하드웨어 크다.

Serial adder : 싸지만 느리다.


Datapath와 Control Unit

Datapath

실제 데이터가 저장되고 이동되고 연산되는 부분

 

Control Unit

Datapath가 어떤 동작을 언제 수행할지 제어하는 부분

출력 - load signal, shift signal, enable, select lines

입력 - 외부 제어 입력, datapath로부터의 status signals


Status Signal과 Control Signal

Control Signal

Control unit -> datapath로 가는 신호

예 : Load R1, Select bus source, Increment counter, Shift right

 

Status Signal

Datapath -> control unit으로 가는 신호

예: zero flag, compare result, timer reached, register equal

 

즉 control unit은 status를 보고 다음 동작을 결정한다.


Register Transfer System Design Procedure

chap03 설계 절차의 확장 느낌이다. 여기서는 어떻게 설계하느냐가 중요하다.

핵심 흐름

  1. system specification
  2. datapath 정의
  3. control signals 정의
  4. state machine 설계
  5. 내부 상태 / 제어식 유도

 

즉 그냥 논리식을 만드는 것이 아닌 datapath + control을 같이 설계하는 단계다.


DASHWATCH 예제

개념

99.99초 stopwatch 같은 시스템을 설계하는 예제

  1. 시간 저장 레지스터
  2. 비교 저장 레지스터
  3. 제어 상태
  4. 시작, 정지, reset 입력을 포함한 register transfer system 설계 예다.

 

이 예제에서 봐야 할 것

숫자 자체보다 중요한 건 아래다.

  1. 상태기계로 제어를 표현한다.
  2. 각 상태에서 어떤 register transfer가 발생하는지 정한다.
  3. control signal을 상태와 입력으로 부터 만든다.
  4. one-hot state assignment를 사용할 수 있다.

One-Hot State Assignment

상태가 N개면 N개의 flip flop을 써서 각 상태에 대해 오직 한 비트만 1이 되게 하는 방식

장점 - 상태 해석 쉬움, 제어식 단순화 가능, FPGA나 제어회로에서 자주 사용

단점 - flip flip 수 많이 필요


Microprogrammed Control

control signal을 조합논리로 직접 만들지 않고

memory(ROM / RAM)에 저장된 microinstructuin으로 부터 생성하는 방식

즉 hardwired control의 반대 개념

 

제어를 논리회로로 박아 넣는 대신, 일종의 작은 프로그램처럼 control memory에 저장해서 제어한다.

장점 - 수정 / 확장 쉬움, 복잡한 제어에 유리

단점 - 하드와이어드보다 느릴 수 있음