Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- vivado
- ring counter
- KEYPAD
- behavioral modeling
- i2c 통신
- structural modeling
- atmega 128a
- soc 설계
- Edge Detector
- prescaling
- LED
- uart 통신
- FND
- hc-sr04
- pwm
- Recursion
- test bench
- dataflow modeling
- DHT11
- half adder
- java
- stop watch
- Linked List
- Algorithm
- gpio
- ATMEGA128A
- BASYS3
- Pspice
- verilog
- D Flip Flop
Archives
- Today
- Total
거북이처럼 천천히
Verilog RTL 설계(6월 25일 - 2, T Flip Flop) 본문
1. T Latch
- J-K Latch에서 입력값으로 J = 1, K = 1을 주었을 때, 출력값, Q(t+1)은 이전 출력값, Q(t)를 Toggle시켜 출력한다.
- T Latch는 J-K Latch에서 입력 J와 입력 K을 하나로 묶어서 하나의 T로 동작하는 Latch이다.
- 따라서 T Latch는 J-K Latch의 동작 중에서 입력값으로 J = 1, K =1이 들어왔을 때, 이전 출력값을 Toggle시켜 출력시키는 기능을 가져와 구현한 Flip Flop이라고도 볼 수 있다.
- T Latch의 게이트 회로와 블록도는 아래와 같다.
2. T Flip Flop
- T Flip Flop은 T Latch에서 CP(Clock Pulse)의 단자에 펄스 전이 검출기를 장착하여 edge에서 동작하는 Flip Flop이다.
- 따라서 아래와 같이 edge trigger에 대해서 T = 0이면 이전 출력값, Q(t)을 그대로 유지하고, T = 1이면 이전 출력값, Q(t)을 Toggle 시켜 출력한다.
3. D Flip Flop으로 T Flip Flop을 만들기.
- 아래와 같이 D Flip Flop과 XOR Gate를 이용하여 T Flip Flop을 만들 수 있다.
- D Flip Flop과 XOR Gate는 아래와 같은 진리표를 갖기 때문에 T 값과 Q(t) 값을 XOR Gate의 입력값으로 넣게 되면 Q(t) 값은 T값에 의해서 Toggle되거나 과거의 출력 값을 유지한다.
- 따라서 T Flip Flop은 아래와 같은 진리표를 갖는다.
4. D Flip Flop으로 만든 Negative edge sensitive T Flip-Flop
< Source code >
// Behavioral modeling of T Flip Flop (Negative edge)
module Negative_edge_sensitive_T_Flip_Flop(
input d,
input clk, t, reset,
output reg q );
always @(negedge clk or posedge reset) begin
if(reset) q = 0;
else begin
if(t) q = ~q;
else q = q;
end
end
endmodule
< Simulation >
< Analysis >
- 소스 코드에 대한 분석은 다음과 같다.
- Negative edge sensitive T Flip Flop을 구현하기 때문에 always 블록의 감지 변수는 clk 변수가 negedge일때 동작하도록 설계.
- if(t) q = ~q; else q =q; 가 갖는 의미는 "입력 값 t가 1인 경우에는 NOT 연산자를 사용하여 이전 출력값, q를 toggle시켜 출력하고, 입력 값 t가 0인 경우에는 toggle없이 이전 출력값 그대로 출력한다." 이다. - 시뮬레이션에 대한 분석은 다음과 같다.
- 주의) T Flip Flop 시뮬레이션을 하기 전에 출력값, q를 0으로 초기화해야 한다.
- 출력값, q을 초기화하지 않는다면 edge에 도달하여 Toggle이 발생한다하더라도 이전 출력값을 모르는 상태에 Toggle을 시킬 수 없기 때문에 반드시 출력값, q를 초기화해줘야 한다.
- Negative edge일때, T 값이 0인 경우 이전 출력 값,Q(t)을 그대로 출력
- Negative edge일때, T 값이 1인 경우 이전 출력 값, Q(t)을 Toggle시켜 출력
< RTL Analysis >
- 출력값, Q값을 invertor시켜 (=Toggle시켜) 다시 D Flip-Flop의 D값으로 전달한다.
- 이렇게 되면 edge sensitive 되었을 때, 반전된 Q값을 D Flip-Flop이 받아서 출력한다.
- 이때, T값이 1인경우, D 값과 Q 값은 CLK에 따라 동작하지만, PDT (Propagation delay time)이 발생하는데, 자세한 내용은 아래에 별도로 설명한다.
< Sysnthesis >
- Sysnthesis을 동작하게 되면 FPGA가 갖고 있는 D Flip-Flop을 기반으로 T Flip-Flop을 만들게 된다.
- Sysnthesis을 보게 되면 D Flip-Flop의 출력값, Q와 T값을 LUT2에 넣은 뒤, LUT2의 출력값을 D Flip-Flop의 입력값, D로 넣게 된다.
- LUT2의 진리표를 보게 되면 LUT2가 XOR Gate임을 확인할 수 있다. 즉, D Flip-Flop과 XOR 게이트를 이용하면 T Flip-Flop을 만들 수 있음을 확인할 수 있다.
- 하지만, FPGA는 LUT을 통해 회로를 구현하기 때문에 XOR Gate를 LUT으로 구현하면 LUT2처럼 구현이 가능하며, 이를 사용하여 XOR Gate를 대체한다.
5. D Flip Flop으로 만든 Positive edge sensitive T Flip-Flop
< Source code >
module Positive_edge_sensitive_T_Flip_Flop(
input d,
input clk, t, reset,
output reg q);
always @(posedge clk or posedge reset) begin
if(reset) q = 0;
else begin
if(t) q = ~q;
else q = q;
end
end
endmodule
< Simulation >
< Analysis >
- 소스를 분석하면 다음과 같다.
- clk 값이 Positive edge sensitive이기 때문에 clk값이 0 ▶ 1로 변하면 always 문이 동작
- t 값이 1이면 출력 값, q를 Toggle시켜 출력한다. - 시뮬레이션을 분석하면 다음과 같다.
- 10ms 동안 reset 값을 1로 설정하여 출력 값,q를 0으로 초기화한다.
- positive edge 때, t값을 읽어서 t값이 1이면 출력값, q를 toggle시키고, 0이면 출력값, q는 이전 출력을 그대로 출력한다.
< RTL Analysis >
- 출력값, Q은 invertor를 거쳐 Toggle시킨 뒤, 다시 D Flip-Flop의 입력값, D로 다시 넣는다.
< Sysnthesis >
- Negative edge sensitive T Flip-Flop과 동일하게 D Flip Flop의 출력값, Q값와 T값을 XOR의 입력값으로 넣은 뒤, XOR 게이트의 출력값을 다시 D Flip-Flop의 입력값, D로 넣게 된다.
- 하지만, FPGA는 게이트 및 논리 함수를 MUX를 통해 구현하기 때문에 LUT로 구현하면 위와 같은 회로도를 갖는다.
6. Propagation Delay Time (PDT)
- T Flip Flip내에는 D Flip Flop과 XOR로 구성되어 있기 때문에 입력값이 들어가면 바로 출력값이 출력되는 것이 아니라 PDT를 가지고, 약간의 delay를 갖고 출력된다.
- 이를 Timing Diagram으로 표현하면 다음과 같다.
- 출력 값, Q이 입력 값, D까지의 과정은 다음과 같은 과정을 거친다.
출력 Q → Invertor → D Flip Flop의 입력 D - 위 과정을 보면 알 수 있듯이 다양한 소자들을 거치기 때문에 PDT (전파 지연 시간)이 생길 수 밖에 없으며, 회로 설계시, 이를 고려할 필요가 있다.
'RTL Design > Verilog RTL 설계' 카테고리의 다른 글
Verilog RTL 설계(7월 12일 - 1, 비동기 카운터까지 복습) (0) | 2024.07.13 |
---|---|
Verilog RTL 설계(6월 25일 - 3, Counter) (0) | 2024.06.29 |
Verilog RTL 설계(6월 25일 - 1, J-K Flip Flop) (0) | 2024.06.27 |
Verilog RTL 설계(6월 24일 - 4, 순차 논리 회로, Flip-Flop) (0) | 2024.06.26 |
Verilog RTL 설계 (6월 24일 - 4, 순차 논리 회로, Latch) (0) | 2024.06.26 |