HDL과 검증

위 기술의 리셋 종류와 동작으로 올바른 것은?

always @(posedge clk or negedge rst_n)
    if (!rst_n) q <= 0;
    else        q <= d;
  1. A동기 리셋으로, rst_n이 0인 상태에서 클록이 상승했을 때만 q가 0이 된다
  2. B비동기 리셋으로, rst_n이 0이 되면 클록을 기다리지 않고 곧바로 q가 0이 된다
  3. 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일 때 유효(부논리)하다는 의미입니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. 동기 리셋과 비동기 리셋의 차이로 올바른 것은?
  2. 비동기 리셋을 사용하는 회로에서 리셋 해제(0에서 1로의 변화)를 2단 플립플롭으로 클록에 동기시킨 뒤 각 회로에 분배하는 이유로 올바른 것은?
  3. HDL로 작성하는 상태 머신(스테이트 머신)의 기본 구성으로 올바른 것은?
  4. 위 상태 머신 기술에서 두 번째 always 블록 맨 앞에 "next = state;"를 쓴 이유로 올바른 것은?
  5. 밀리(Mealy)형 상태 머신의 특징으로 올바른 것은?

이 분야의 비교