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은 '드러눕다'를 의미한다. 이름만 들어도 주기적으로 휙휙 바뀌는 그림이 연상된다.
Wirte가 1이라고 가정하고, R = 1이고 S = 0이면 Data Out(Q)는 0이 되고, R = 0이고 S = 1이면 Data Out(Q)는 1이 된다.
진리표는 위 그림과 같다. 그냥 쉽게 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로 변할 때, 데이터를 받아들여서 메모리에 저장(캡처)한다.
- 4bit 레지스터
4bit Register는 1bit latch/1bit Flip Flop이 4개 있는 것을 의미한다. 즉, 4비트를 저장할 수 있는 메모리이다.
- 여러가지 레지스터
레지스터는 I/O, CPU 내에서 메모리, CPU의 레지스터 파일 등 다양한 용도로 사용된다. 레지스터는 크게 General Purpose Register와 Special Purpose Register로 나눌 수 있다.
- General Purpose Register(word bit)
- Address Register : 외부 메모리에 쓰고 읽을 때 data가 들어있는 주소를 담아두는 레지스터
- Data Register : 외부 메모리에서 읽어온 데이터를 저장하는 레지스터(Data input과 Data output 레지스터가 있음)
- Instruction Pipeline Register : 외부 메모리에서 읽어온 Op-code(명령어)를 저장하는 레지스터 - Special Purpose Register(word bit)
- Program Counter : 현재 실행되고 있는 주소를 가리키는 레지스터
- Stack Pointer : 현재 사용하는 Stack 영역에서 마지막에 데이터가 Push된 곳의 주소를 가리키는 레지스터
- Linked Register : 방금까지 수행하다가 jump했을 때, 돌아갈 곳의 주소를 가리키는 레지스터
- Status Register : MCU의 현재 상태를 나타내는 레지스터 - 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 |
댓글