HDL과 검증
Verilog에서 "always @(*)"라고 쓰는 의미로 올바른 것은?
- A클록 상승 에지마다 실행되는 플립플롭을 나타낸다
- B시뮬레이션 시작 시 한 번만 실행된다
- C블록 안에서 읽는 신호 중 하나라도 바뀔 때마다 실행되는 조합 회로를 나타낸다
정답과 해설 보기
정답: C. 블록 안에서 읽는 신호 중 하나라도 바뀔 때마다 실행되는 조합 회로를 나타낸다
always 뒤의 @( ) 안은 감지 목록(sensitivity list)이라고 하며, 어떤 신호가 바뀔 때 블록을 실행할지 지정합니다. "*"라고 쓰면 블록 안에서 읽는 모든 신호가 자동으로 나열된 것이 되어 조합 회로를 올바르게 나타낼 수 있습니다. 직접 나열하면 누락이 생기기 쉬우므로, 조합 회로에는 "@(*)"나 SystemVerilog의 always_comb를 사용하는 것이 안전합니다.
- A. 클록 에지를 지정하는 것은 posedge 등입니다.
- B. 한 번만 실행되는 것은 initial입니다.
- C. 올바릅니다. 읽는 신호를 모두 자동으로 나열한 것과 같습니다.