본문 바로가기
Embedded System/Embedded Recipes

1.11 Register(레지스터)

by 리미와감자 2022. 7. 26.

1.10 Register(레지스터)

  • 레지스터(Register)란?

Register(메모리)와 Resistor(저항)을 헷갈려선 안된다.

 

Register는 Flip Flop의 집합이다. Flip Flop은 1bit를 저장할 수 있는 메모리이므로, 결국 Register는 여러 비트를 저장할 수 있는 메모리를 의미한다. Register는 최소 1bit 단위로 정보를 저장/수정할 수 있다.

 

  • Flip Flop과 Latch의 차이

Flip Flop과 Latch의 차이는 뭘까? Latch는 1bit를 저장할 수 있는 메모리를 통칭하는 말이다. 그중 대표적인 예가 Flip Flop이다. Flip Flop은 속도가 빨라서 Register 구현에 가장 많이 사용된다. 사실, Latch는 Level 트리거이고  Flip Flop은 Edge 트리거이다. 또, 더 많은 차이점은 있지만 여기서는 더 말하지 않겠다. 이 책에서는 Latch를 Flip Flop, Filp Flop을 Edge Trigger Flip Flop으로 설명한다. 아무튼, Latch와 Flip Flop의 차이만 잘 알고 있으면 되겠다.

 

  • 레지스터의 사용처

Register는 CPU 내부뿐만 아니라 외부에서도 메모리로 사용될 수 있다.  n-bit 레지스터는 n개의 Latch로 이루어지며, 간단한 데이터 처리/계산을 할 수 있는 Gate Combination도 덧붙여질 수 있다. 즉, 레지스터가 특정한 task를 수행하기 위해 존재할 수 있다. 이러한 특징 덕분에 레지스터를 이용한 Memory mapped I/O를 구현할 수 있게된다.

 

  • Flip Flop

Flip은 '홱 뒤집다' Flop은 '드러눕다'를 의미한다. 이름만 들어도 주기적으로 휙휙 바뀌는 그림이 연상된다.

 

R/S Flip Flop

Wirte가 1이라고 가정하고, R = 1이고 S = 0이면 Data Out(Q)는 0이 되고, R = 0이고 S = 1이면 Data Out(Q)는 1이 된다.

reference : 정보통신기술용어해설

진리표는 위 그림과 같다. 그냥 쉽게 set(셋)하면 1 reset(리셋)하면 0을 출력한다. 둘다 0일 때는 값을 유지하고 둘다 1일 때는 쓰지 않는다.

 

이 RS Flip Flop을 두 개 연결하면 Edge Trigger RS Flip Flop이 된다. 사실 Edge Trigger RS Flip Flop을 보통 엔지니어들은 Flip Flop이라고 부르고, 위에서 설명한 RS Flip Flop을 Latch라고 한다. 이 책에서는 다르게 구분했기 때문에, 그대로 따를 것이다.

 

▷clk이 붙어있는 모듈은 clk에 동기화하여 동작한다는 의미이다. 삼각형의 표시는 edge trigger 방식으로 동작하는 것을 의미한다.

 

clk이 0에서 1로 변할 때 값을 wirte하는 경우 rising edge trigger라고 부르고, 1에서 0으로 변할 때 값을 write하는 경우 falling edge trigger라고 부른다. rising edge trigger의 경우 clock이 0에서 1로 변할 때, 데이터를 받아들여서 메모리에 저장(캡처)한다.

 

Rising Edge Trigger

 

  • 4bit 레지스터

4bit Register는 1bit latch/1bit Flip Flop이 4개 있는 것을 의미한다. 즉, 4비트를 저장할 수 있는 메모리이다.

 

 

  • 여러가지 레지스터

레지스터는 I/O, CPU 내에서 메모리, CPU의 레지스터 파일 등 다양한 용도로 사용된다. 레지스터는 크게 General Purpose Register와 Special Purpose Register로 나눌 수 있다.

 

  1. General Purpose Register(word bit)
    - Address Register : 외부 메모리에 쓰고 읽을 때 data가 들어있는 주소를 담아두는 레지스터
    - Data Register : 외부 메모리에서 읽어온 데이터를 저장하는 레지스터(Data input과 Data output 레지스터가 있음)
    - Instruction Pipeline Register : 외부 메모리에서 읽어온 Op-code(명령어)를 저장하는 레지스터

  2. Special Purpose Register(word bit)
    - Program Counter : 현재 실행되고 있는 주소를 가리키는 레지스터
    - Stack Pointer : 현재 사용하는 Stack 영역에서 마지막에 데이터가 Push된 곳의 주소를 가리키는 레지스터
    - Linked Register : 방금까지 수행하다가 jump했을 때, 돌아갈 곳의 주소를 가리키는 레지스터
    - Status Register : MCU의 현재 상태를 나타내는 레지스터

  3. I/O Register(필요한 크기의 bit)
    - D F/F로 구성되어 값을 저장하거나 밀어냄
    - Readonly, Writeonly, Read-Write 중 하나의 Property를 가짐

 

1. 레지스터는 여러 비트를 저장할 수 있는 메모리를 의미한다.
2. Latch(Level Trigger Flip Flop)은 Level에 맞춰 동작하고, Flip Flop(Edge Trigger Flip Flop)은 Edge(Rising/Falling)에 맞춰서 동작한다.
3. 레지스터는 크게 General Purpose Register와 Special Purpose Register로 구성된다.

'Embedded System > Embedded Recipes' 카테고리의 다른 글

1.13 Bus Transfer Mechanism  (2) 2022.08.09
1.12 Clock이란?  (2) 2022.08.08
1.10 IC 기본  (1) 2022.07.25
1.9 논리회로로의 확장  (0) 2022.07.25
1.7 Pull up, Pull down 그리고 Open Collector  (1) 2022.07.25

댓글