HDL과 검증
위 기술에서 클록 상승 직전에 a=0, b=1이었다. 상승 후 a와 b의 값은 어떻게 되는가?
always @(posedge clk) begin
a <= b;
b <= a;
end
- Aa=1, b=0 (서로 바뀐다)
- Ba=1, b=1
- Ca=0, b=0
정답과 해설 보기
정답: A. a=1, b=0 (서로 바뀐다)
논블로킹 대입에서는 두 우변(b의 이전 값 1과 a의 이전 값 0)을 먼저 평가한 뒤 a에 1, b에 0을 동시에 쓰므로 값이 서로 바뀝니다. 회로로는 두 플립플롭의 출력을 서로의 입력에 연결한 형태입니다. 블로킹 대입(=)으로 쓰면 첫 번째 행에서 a가 1이 되고, 두 번째 행의 b에는 새로운 a인 1이 들어가 둘 다 1이 되어 버립니다.
- A. 올바릅니다. 우변은 둘 다 이전 값으로 평가됩니다.
- B. 이것은 "="로 쓴 경우의 결과입니다.
- C. 값이 사라지는 일은 없습니다.