HDL과 검증
위 기술의 리셋 종류와 동작으로 올바른 것은?
always @(posedge clk or negedge rst_n)
if (!rst_n) q <= 0;
else q <= d;
- A동기 리셋으로, rst_n이 0인 상태에서 클록이 상승했을 때만 q가 0이 된다
- B비동기 리셋으로, rst_n이 0이 되면 클록을 기다리지 않고 곧바로 q가 0이 된다
- Crst_n이 1이 되면 q가 0이 된다
정답과 해설 보기
정답: B. 비동기 리셋으로, rst_n이 0이 되면 클록을 기다리지 않고 곧바로 q가 0이 된다
감지 목록에 "negedge rst_n"이 포함되어 있으므로 rst_n이 1에서 0으로 바뀐 순간에도 블록이 실행되어 클록과 관계없이 q가 0이 됩니다. 이것이 비동기 리셋입니다. 이름의 "_n"은 0에서 유효해지는 부논리 신호를 나타내는 관례입니다. 클록이 멈춰 있어도 리셋할 수 있다는 장점이 있지만, 리셋을 해제하는 타이밍에는 주의가 필요합니다.
- A. 리셋의 에지도 트리거가 되므로 동기가 아닙니다.
- B. 올바릅니다. 감지 목록에 리셋의 에지가 있습니다.
- C. _n은 0일 때 유효(부논리)하다는 의미입니다.