플립플롭은 1비트의 정보를 저장하는 회로를 뜻한다.
이러한 플립플롭은 클럭 펄스를 기반으로 동작이 되며 크게 SR , D , JK , T 로 구성되어있다.
1. SR F/F
S | R | Q(t+1) |
0 | 0 | Q(t) |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | X |
SR 플립플롭은 가장 기본적인 플립플롭으로 clock 신호가 1이 될 때 신호가 전달된다.
한번 R = 0 , S = 1 의 상황을 가정하여 설명을 하자면, (초기 상태이기에 Q = X 의 값을 지님)
AND (R = 0 , clk = 1) => 0 ($R_{A}$), AND (S = 1 , clk = 1) => 1 ($S_{A}$)
NOR ($R_{A}$ = 0 , Q' = X) => ? , NOR ($S_{A}$ = 1 , Q = X) => Q 가 어떤 값이 들어오든 0.
따라서, Q' = 0이 나오며 해당 값이 위로 전달되어 NOR ($R_{A}$ = 0 , Q' = 0) => 1 로 나온다.
2. D F/F
D | Q(t+1) |
0 | 0 |
1 | 1 |
D 플립플롭은 데이터의 전달을 늦추는 회로로, 다음 클럭까지 D값을 기억하는 회로이다.
회로를 살펴보면 SR 플립플롭에서 R 신호 대신 D' 의 신호가 들어가도록 되어있음을 확인 가능하다.
3. JK F/F
J | K | Q(t+1) |
0 | 0 | Q(t) |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | Q'(t) |
JK 플립플롭은 SR 플립플롭에서 정의되지 않았던 1 1 신호가 Q' 로 출력되는 기능이 구현되었다.
여기서 JK 의 회로를 살펴보면 SR과 달리 AND 게이트에 Q의 값을 포함한 3 입력이 들어간다.
마찬가지로 J = 1 , K = 1 일때의 상황을 가정하여 설명을 해보겠다. (초기 상태이기에 Q = 1 의 값을 지님)
AND (K = 1 , clk = 1 , Q = 1) => 1, ($K_{A}$), AND (J = 1 , clk = 1 , Q' = 0) => 0 ($J_{A}$)
NOR ($K_{A}$ = 1 , Q' = 0) => 0 , NOR ($J_{A}$ = 0 , Q = 1) => 0.
따라서, Q = 0이 나오며 해당 값이 아래로 전달되어 NOR ($J_{A}$ = 0 , Q = 0) => 1 (Q')로 나오고, 해당 값이 다시 위로 전달되어 NOR ($K_{A}$ = 1 , Q' = 1) => 0 (Q)의 값으로 고정된다.
최종적으로 Q = 1 -> 0 으로 Toggle 되었음을 확인 가능하다.
4. T F/F
T | Q(t+1) |
0 | 1 |
1 | 0 |
T 플립플롭은 T 가 0 이면 1로, T 가 1이면 0으로 바꾸는 기능이 있는 회로이다.
앞으로 디지털 회로에 관한 공부를 하다 애매한 부분이 생기면 공부 & 내용 정리 후 포스팅 예정!
'공부 > Verilog' 카테고리의 다른 글
Combinational logic delay (2) | 2022.08.26 |
---|---|
Verilog - Assign & Always 차이 (0) | 2022.08.22 |
[그냥 공부]#2 signed & unsigned (1) | 2022.03.06 |
[그냥 공부]#1 등가 연산자 , 타이밍 제어 (0) | 2022.03.01 |