Revision history:
220928 최초 작성
참조:
https://web.mit.edu/6.111/www/f2017/handouts/L07a.pdf
위 그림과 같이 clock을 분주하여 여러개의 clock domain을 만들게되면 클럭마다 sync를 맞추기 어려워짐으로 timing 특성이 안좋아진다.
해결방법은 아래 그림과 같이 enb라는 신호를 만들어 enb가 1일때 동작을 기술하면 된다. 따라서 D-FF의 clock은 원래 사용하던 clk(clock domain은 1개)를 사용하면 된다.
always @(posedge clk) begin
if(resetn == 1'b0) begin
// 리셋 동작 기술
end
else if(enb8)begin
// enb8이 1이 됐을대 동작 기술
end
end
시뮬레이션 코드
RTL 코드
module div_clk(
input clk ,
input resetn
);
reg [3:0] count;
always @(posedge clk) begin
if(resetn == 1'b0) begin
count <= 4'b0;
end
else begin
count <= count + 4'b1;
end
end
wire enb2 = (count[0] == 1'b1);
wire enb4 = (count[1:0] == 2'b11);
wire enb8 = (count[2:0] == 3'b111);
wire enb16 = (count[3:0] == 4'b1111);
endmodule
시뮬레이션 코드
테스트벤치
module tb_div_clk();
reg clk ;
reg resetn ;
initial begin
clk = 1'b0;
forever begin
#5 clk = ~clk;
end
end
initial begin
resetn = 1'b0;
#100;
resetn = 1'b1;
end
div_clk DUT(
.clk (clk ),
.resetn (resetn )
);
endmodule
'FPGA > 개발' 카테고리의 다른 글
JESD204B: DL (Deterministic Latency) (0) | 2022.08.26 |
---|---|
JESD204B: Data Link Layer (0) | 2022.08.26 |
JESD204B: Transport Layer (0) | 2022.08.23 |
JESD204B: Clock (0) | 2022.08.23 |
JESD204B: 장단점 (0) | 2022.08.23 |