HDL과 검증
Verilog에서 대입 종류를 구분해 사용할 때의 일반적인 가이드라인으로 올바른 것은?
- A어디서나 블로킹 대입(=)만 사용한다
- B클록으로 동작하는 순차 회로에는 논블로킹 대입(<=), 조합 회로의 always에는 블로킹 대입(=)을 사용한다
- C하나의 always 안에서 두 가지를 무작위로 섞어서 사용한다
정답과 해설 보기
정답: B. 클록으로 동작하는 순차 회로에는 논블로킹 대입(<=), 조합 회로의 always에는 블로킹 대입(=)을 사용한다
순차 회로를 논블로킹 대입으로 작성하면 모든 플립플롭이 동시에 값을 받아들이는 회로의 동작과 일치하며, 기술 순서나 다른 always 블록과의 실행 순서에 따라 결과가 좌우되지 않습니다. 조합 회로에서는 위에서부터 순서대로 중간 값을 계산해 가는 방식이 자연스러우므로 블로킹 대입을 사용합니다. 하나의 always 블록 안에서 둘을 섞지 않는 것도 중요합니다.
- A. 순차 회로에서 블로킹을 사용하면 의도와 다른 회로가 되기 쉽습니다.
- B. 올바릅니다. 시뮬레이션과 회로의 동작을 일치시키기 쉬워집니다.
- C. 섞으면 동작을 알기 어렵고 오류의 원인이 됩니다.