Synchronous (동기)
모든 작동이 clk
즉 clock
기반으로 작동
예시
Sync. Reset
module dff_sync(
input wire clk;
input wire reset;
input wire D;
output reg Q;
)
always @(posedge clk) begin
if (reset) Q <= 0;
else Q <= D;
end
Asynchronous (비동기)
모든 작동이 해당 신호 기반으로 작동, clk
와 상관이 없이 작동
예시
Async. Reset
module dff_async(
input wire clk;
input wire reset;
input wire D;
output reg Q;
)
always @(posedge clk, posedge reset) begin
if (reset) Q <= 0;
else Q <= D;
end
참고
posedge
는 신호가 0에서 1로 변할때 올라가는 Rising Edge를 의미negedge
는 신호가 1에서 0로 변할때 내려가는 Falling Edge를 의미