HDL과 검증
조합 회로를 의도하여 위와 같이 작성하면 논리 합성으로 무엇이 만들어지는가?
always @(*) begin
if (en)
y = d;
end
- Aen이 0일 때 y가 자동으로 0이 되는 조합 회로
- B클록으로 동작하는 D 플립플롭
- Cen이 0일 때 y의 값을 유지해야 하므로 의도하지 않은 래치가 만들어진다
정답과 해설 보기
정답: C. en이 0일 때 y의 값을 유지해야 하므로 의도하지 않은 래치가 만들어진다
en이 0일 때 y에 대한 대입이 없으므로 y는 이전 값을 기억하고 있어야 합니다. 조합 회로에는 기억 기능이 없으므로 논리 합성은 값을 유지하기 위한 래치를 만듭니다. 래치는 타이밍 분석을 어렵게 하고 노이즈로 인한 오동작의 원인도 되므로, 의도하지 않았다면 피해야 합니다. "else y = 0;"처럼 모든 경우에 값을 대입하면 조합 회로가 됩니다.
- A. 0으로 만드는 기술이 없으므로 0이 되지 않습니다.
- B. 클록을 사용하지 않았으므로 플립플롭이 되지 않습니다.
- C. 올바릅니다. else가 없는 것이 원인입니다.