리셋의 종류
리셋은 크게 다음과 같이 두 가지가 존재합니다.
Synchronous Reset
Asynchronous Reset
Synchronous reset은 클럭에 동기화하여 리셋을 주는 것을 의미합니다. 이와 달리 Asynchronous reset은 클럭에 상관없이 리셋을 줄 수 있습니다. 클럭에 동기화 되지 않기 때문에 reset 신호에 값이 인가되면 시스템은 바로 리셋 상태가 됩니다.
리셋 신호의 값에 따라 리셋은 다음과 같이 구분할 수도 있습니다.
Positive (Active-high) Reset
Negative (Active-low) Reset
Positive Reset은 값이 1일 때 리셋이 수행되는 것이고 Negative Reest은 값이 0일 때 리셋을 수행하는 것을 의미합니다.
코딩 스타일
Asynchronous Reset Flip-Flop
다음은 asynchronous negative reset를 사용하는 플립플롭의 코딩 스타일입니다.
always @ (posedge clk or negedge reset_n)
begin
if (!reset_n) begin
// reset
end else begin
end
end
Synchronous Reset Flip-Flop
다음은 synchronous negative reset를 사용하는 플립플롭의 코딩 스타일입니다.
always @ (posedge clk)
begin
if (!reset_n) begin
// reset
end else begin
end
end