비동기 액티브 로우 리셋 D 플립플롭 설계
D 플립플롭은 클럭의 주어진 에지에서 입력 핀 d를 따르는 순차 소자입니다.
설계 #1: 비동기 액티브 로우 리셋
module dff (
input d,
input rstn,
input clk,
output reg q
);
always @ (posedge clk or negedge rstn)
if (!rstn) q <= 0;
else q <= d;
endmodule
하드웨어 회로도
테스트벤치
module tb_dff;
reg clk;
reg d;
reg rstn;
reg [2:0] delay;
dff dff0 (
.d(d),
.rstn(rstn),
.clk(clk),
.q(q)
);
// 클럭 생성
always #10 clk = ~clk;
// 테스트케이스
initial begin
clk <= 0;
d <= 0;
rstn <= 0;
#15 d <= 1;
#10 rstn <= 1;
for (int i = 0; i < 5; i = i + 1) begin
delay = $random;
#(delay) d <= i;
end
end
endmodule
설계 #2: 동기 액티브 로우 리셋
module dff (
input d,
input rstn,
input clk,
output reg q
);
always @ (posedge clk)
if (!rstn) q <= 0;
else q <= d;
endmodule
하드웨어 회로도
테스트벤치
module tb_dff;
reg clk;
reg d;
reg rstn;
reg [2:0] delay;
dff dff0 (
.d(d),
.rstn(rstn),
.clk(clk),
.q(q)
);
// 클럭 생성
always #10 clk = ~clk;
// 테스트케이스
initial begin
clk <= 0;
d <= 0;
rstn <= 0;
#15 d <= 1;
#10 rstn <= 1;
for (int i = 0; i < 5; i = i + 1) begin
delay = $random;
#(delay) d <= i;
end
end
endmodule