거북이처럼 천천히

Verilog RTL 설계(6월 25일 - 1, J-K Flip Flop) 본문

Verilog/Verilog RTL 설계

Verilog RTL 설계(6월 25일 - 1, J-K Flip Flop)

유로 청년 2024. 6. 27. 12:08

1. S-R Flip Flop

  • S-R Flip Flop은 S-R Latch의 CP(Clock Pulse)에 펄스 전이 검출기를 장착하여 edge에서 동작하는 Flip Flop이다.
  • S-R Flip Flop의 게이트 회로는 다음과 같은 회로도를 갖는다.

S-R Flip Flop의 게이트 회로

  • S-R Flip Flop은 S-R Latch의 CP 단자에 펄스 전이 검출기를 장착하여 edge에서 동작하는 edge trigger일 뿐, S-R Latch가 갖고 있는 문제점인 "입력값으로 S = 1, R = 1을 주었다가 S = 0, R = 0을 주면 회로의 출력값이 발진한다." 은 그대로 갖고 있다.
      

(위) S-R F/F (Positive edge), (아래) S-R F/F (Negative edge)

 

 

 

 

 

 

2. J - K Flip Flop

  • 이전 블로그에서 다루었던 D Flip Flop 은 S-R Flip Flop의 문제점을 "하나의 입력만 받고, 내부에서 invertor를 이용하여 입력값으로 S = 1, R = 1 이 들어오는 상황을 제한함"으로서 해결했다.

D Flip-Flop의 게이트 회로

 

  • J-K Flip Flop도 S-R Flip Flop의 문제점을 보완한 Flip Flop이다. 하지만, D Flip-Flop과 달리 입력값을 제한함으로서 문제 해결이 아닌 S = 1, R = 1인 입력값을 받지만, 해당 입력값이 들어오면 이전 출력값을 Toggle시켜 출력으로 내보낸다.
  • J-K Flip Flop의 J는 set에, K는 reset에 대응된다.
  • J-K Flip Flop에서 CP 단자에 달려있는 펄스 전이 검출기를 떼어낸 J-K Latch으로 J-K Flip Flop의 동작을 알아보자.

J-K Latch의 게이트 회로도

 

 

 

 

 

 

 

 

2.1. J - K Latch의 동작

    • J = 0, K = 0 일 경우 : Q(t+1)은 이전 출력값을 그대로 출력
    • J = 1, K = 0 일 경우 : Q(t+1)은 1 을 출력
    • J = 0, K = 1 일 경우 : Q(t+1)은 0 을 출력
    • J = 1, K = 1 일 경우 : Q(t+1)은 이전 출력 값(Q(t))의 Toggle 값을 출력

(왼) J-K Latch의 동작, (오른) J-K Latch의 진리표
J-K Latch의 Timing diagram

 

 

 

 

2.2. J - K Flip Flop의 동작

  • J-K Flip Flop은 아래와 같이 J-K Latch의 CP (Clock Pulse) 단자에 펄스 전이 검출기를 연결하여 Level trigger → Edge trigger에서 동작하도록 설계한 Flip Flop이다.
  • J-K Latch의 특성인 "입력값으로 J = 1, K = 1이 들어오면 이전 출력값을 Toggle시켜 출력시킨다." 을 유지하면서 Edge에서 동작하도록 설계한 Flip Flop이다.

Edge sensitive J-K Flip Flop (NAND Gate로 구현)

  • J-K Flip Flop은 아래와 같이 Positive edge sensitive, Negative edge sensitive Flip Flop으로 나뉘며, 각각의 진리표는 다음과 같다.

(위) Positive edge sensitive, (아래) Negative edge sensitive

 

 

 

 

 

 

3. FPGA와 D Flip Flop

  • 일반적으로 FPGA (Field Programmable Gate Array)는 D Flip-Flop과 LUT (Look up table)이 병렬로 연결된 구조를 갖는다.
  • 따라서 J-K  Flip Flop은 FPGA내에 직접적으로 구현되어 있지 않고, 필요에 따라 D Flip-Flop과 조합 로직을 이용하여 J-K Flip Flop과 T Flip Flop을 구현할 수 있다.
  • 이는 FPGA의 특성인 Programmable을 활용할 수 있어 가능한 기능이다.