FPGA/Verilog
Digital Logic2
장영현
2023. 6. 13. 15:17
728x90
- Sequential Logic
Sequential Logic은 기억능력을 가진다.
- 과거의 입력값(또는 상태)과 현재 입력 값을 비교하여 출력하게 된다.
- 일반적으로 Clockdp Synchronous(동기)한 로직(Synchronous Sequential Logic) -> Clock에 맞춰 동작하기 때문
- 출력값을 결정할 때
- 입력값에 변화가 생겼을 때 X (Level - Triggered)
- Clock이 0->1로 Positive-dege일 때 O (Edge - Triggered)
- Triggered = Sequential Logic을 동작시키는 것 (JK FF이면 JK입력이 둘다 1일 때 출력을 반전시킨다. -> 이런 동작을 스타트 시키는 것을 Triggered라 한다.)
- Level, edge = 입력상태가 무엇에 트리거되는지를 결정. (Level에 트리거되는지, edge에 트리거되는지)
- level = 단순 전압의 레벨(HIGH, LOW상태, 1,0)
- edge = rising edge, falling edge(0 -> 1 / 1 -> 0으로 변하는 그 순간 상태) 값이 변하는 순간에만 동작하게 된다.
- Sequential Logic이 과거의 상태를 기억하는 것은
- Combinational Logic은 입력값이 1이였으면 출력값이 1이라면 입력값이 사라지는 동시에 출력값도 사라진다.
- Sequential Logic은 Clock이 Rising edge에서 입력값을 출력값으로 내보낼때, Clock에 Rising edge가 뜨지 않는한 현재의 입력값이 사라지더라도(0이되더라도) 그 이전의 Rising edge때의 상태는 변하지 않는다.
- D Flip-flop
D의 입력으로 들어오는 데이터 로직값을 Q의 출력으로 내보는다.
-> 세모로 표현되는 곳의 신호의 로직이 변화하는 그 순간 D의 입력으로 들어오는 데이터를 Q로 출력한다.
D FF은 실제 회로상으로 표현할 수 없다 -> 게이트레벨로 표현해야한다.
베릴로그 표현 상으로는 오른쪽의 심볼로 표현하지만, 실제 회로적인 레벨 왼쪽의 게이트 조합으로 구성
-> 실제 반도체공정에서 사용될 때는 NAND게이트 또한 하나의 심볼로 NAND게이트를 구현하는 트랜지스터의 조합으로 구성
D FF은 주로 데이터 버퍼 FF 혹은 딜레이 FF로 불린다.
신호들을 한클럭 딜레이 시킬 때 주로 사용
시프트레지스터
4개의 FF으로 연결.
클럭의 source가 가장 왼쪽에 구성. source를 sink한다면 클럭과 클럭사이에 Clock Skew(클럭 스큐)가 발생.
동일한 시간에 클럭이 들어간다 가정한다면
- D의 입력이 Q로 나가게 된다.
- Q의 출력은 그다음 D의 입력으로 들어가게 된다.
- DATA = 1이라면, 바로 Q가 1로 나오게 되진 않는다. 클럭이 들어와야 Q가 출력됨.
- 만약, DATA가 1이고 클럭이 들어올 때
- 2번째 D FF에서 앞의 신호들을 본다면 QA는 0으로 D FF의 QB는 0이 출력된다.
- 그러나 첫번째 D FF은 클럭과 데이터가 1이 들어와 QA로 1이 출력이 된다.
- 위 과정을 반복하면 1이 시프트되는 것을 확인할 수 있다.
- 플립플롭의 갯수마다 데이터의 흐름이 클럭의 갯수만큼 딜레이가 되고, 그 위치들이 하나씩 시프트된다.
- J-K Flip-flop
JK FF은 입력측 시그널이 2개 존재. J = SET / K = RESET으로 본다.
또한, 현재출력값을 반전시키는 /Q가 존재.
- J = 1, K = 0 -> SET
- J = 0, K = 1 -> RESET -> Q의 출력이 RESET된다
- 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는 현재 상태를 유지