HDL과 검증

Verilog의 논블로킹 대입(<=)의 동작으로 올바른 것은?

  1. A대입한 순간 좌변이 갱신되고, 다음 행에서는 그 새로운 값이 사용된다
  2. B같은 타이밍의 모든 우변을 먼저 평가한 뒤, 그 후에 한꺼번에 좌변을 갱신한다
  3. C대입 결과를 버리고 아무것도 변경하지 않는다
정답과 해설 보기

정답: B. 같은 타이밍의 모든 우변을 먼저 평가한 뒤, 그 후에 한꺼번에 좌변을 갱신한다

논블로킹 대입에서는 클록 에지에서 모든 <=의 우변을 먼저 이전 값 그대로 평가한 뒤, 그 다음에 일제히 좌변을 갱신합니다. 이는 같은 클록으로 동작하는 수많은 플립플롭이 에지 직전의 값을 동시에 받아들이는 실제 회로와 같은 동작입니다. 그래서 클록으로 동작하는 순차 회로의 기술에는 논블로킹 대입을 사용하는 것이 원칙입니다.

  • A. 그것은 블로킹 대입(=)의 동작입니다.
  • B. 올바릅니다. 플립플롭이 일제히 값을 받아들이는 동작과 일치합니다.
  • C. 값은 갱신됩니다.
이 분야 연습하기 분야로 돌아가기

HDL과 검증의 다른 문제

  1. 위 기술에서 클록 상승 직전에 a=0, b=1이었다. 상승 후 a와 b의 값은 어떻게 되는가?
  2. 2단 시프트 레지스터를 의도하여 위와 같이 블로킹 대입(=)으로 작성했다. 발생하는 문제로 올바른 것은?
  3. Verilog에서 대입 종류를 구분해 사용할 때의 일반적인 가이드라인으로 올바른 것은?
  4. Verilog에서 "always @(*)"라고 쓰는 의미로 올바른 것은?
  5. 조합 회로를 의도하여 위와 같이 작성했다. 발생할 수 있는 문제로 올바른 것은?

이 분야의 비교