FPGA/Verilog

Digital Logic2

장영현 2023. 6. 13. 15:17
728x90
  • Sequential Logic

Sequential Logic은 기억능력을 가진다. 

  1. 과거의 입력값(또는 상태)과 현재 입력 값을 비교하여 출력하게 된다.
  2. 일반적으로 Clockdp Synchronous(동기)한 로직(Synchronous Sequential Logic) -> Clock에 맞춰 동작하기 때문

 

  • 출력값을 결정할 때
  1. 입력값에 변화가 생겼을 때 X (Level - Triggered)
  2. Clock이 0->1로 Positive-dege일 때 O (Edge - Triggered) 
  3. Triggered = Sequential Logic을 동작시키는 것 (JK FF이면 JK입력이 둘다 1일 때 출력을 반전시킨다. -> 이런 동작을 스타트 시키는 것을 Triggered라 한다.)
  4. Level, edge = 입력상태가 무엇에 트리거되는지를 결정. (Level에 트리거되는지, edge에 트리거되는지)
    1. level = 단순 전압의 레벨(HIGH, LOW상태, 1,0)
    2. edge = rising edge, falling edge(0 -> 1 / 1 -> 0으로 변하는 그 순간 상태) 값이 변하는 순간에만 동작하게 된다.

 

  • Sequential Logic이 과거의 상태를 기억하는 것은
  1. Combinational Logic은 입력값이 1이였으면 출력값이 1이라면 입력값이 사라지는 동시에 출력값도 사라진다.
  2. Sequential Logic은 Clock이 Rising edge에서 입력값을 출력값으로 내보낼때, Clock에 Rising edge가 뜨지 않는한 현재의 입력값이 사라지더라도(0이되더라도) 그 이전의 Rising edge때의 상태는 변하지 않는다.

 

  • D Flip-flop

D FF 심볼 / D FF CIRCUIT

D의 입력으로 들어오는 데이터 로직값을 Q의 출력으로 내보는다.

->  세모로 표현되는 곳의 신호의 로직이 변화하는 그 순간 D의 입력으로 들어오는 데이터를 Q로 출력한다.

 

D FF은 실제 회로상으로 표현할 수 없다 -> 게이트레벨로 표현해야한다.

 

베릴로그 표현 상으로는 오른쪽의 심볼로 표현하지만, 실제 회로적인 레벨 왼쪽의 게이트 조합으로 구성

-> 실제 반도체공정에서 사용될 때는 NAND게이트 또한 하나의 심볼로 NAND게이트를 구현하는 트랜지스터의 조합으로 구성

 

D FF은 주로 데이터 버퍼 FF 혹은 딜레이 FF로 불린다.

신호들을 한클럭 딜레이 시킬 때 주로 사용

 

시프트레지스터 

4개의 FF으로 연결.

클럭의 source가 가장 왼쪽에 구성. source를 sink한다면 클럭과 클럭사이에 Clock Skew(클럭 스큐)가 발생.

 

동일한 시간에 클럭이 들어간다 가정한다면

  1. D의 입력이 Q로 나가게 된다.
  2. Q의 출력은 그다음 D의 입력으로 들어가게 된다.
  3. DATA = 1이라면, 바로 Q가 1로 나오게 되진 않는다. 클럭이 들어와야 Q가 출력됨.
  4. 만약, DATA가 1이고 클럭이 들어올 때
    1. 2번째 D FF에서 앞의 신호들을 본다면 QA는 0으로 D FF의 QB는 0이 출력된다.
    2. 그러나 첫번째 D FF은 클럭과 데이터가 1이 들어와 QA로 1이 출력이 된다.
    3. 위 과정을 반복하면 1이 시프트되는 것을 확인할 수 있다. 
  5. 플립플롭의 갯수마다 데이터의 흐름이 클럭의 갯수만큼 딜레이가 되고, 그 위치들이 하나씩 시프트된다.

 

  • J-K Flip-flop

JK FF은 입력측 시그널이 2개 존재. J = SET / K = RESET으로 본다.

또한, 현재출력값을 반전시키는 /Q가 존재.

 

  1. J = 1, K = 0 -> SET
  2. J = 0, K = 1 -> RESET -> Q의 출력이 RESET된다
  3. J = 1, K = 1 -> 현재 출력값을 반전 (Q = 0 -> /Q = 1)

 

  • T Flip-flop

JK FF을 서로 묶어 T의 신호로 만든 것. 

SET과 RESET기능이 합쳐졌다. 항상 동시에 시그널을 넣어줘야 한다.

T = 1이면, J와 K가 1인 것으로 볼 수 있다. -> Q는 항상 반전

T = 0이면, J와 K도 0으로 볼 수 있다. -> Q는 현재 상태를 유지