Academy
English한국어

12 / 24 · 개념

이전 값으로 다음 값 계산하기

비차단 대입과 리셋의 우선순위를 코드로 읽습니다.

학습 목표

  • 오른쪽 식이 사용하는 이전 상태 찾기
  • 리셋 분기와 증가 분기의 우선순위 읽기

다음 상태를 따로 계산하기

count <= count + 2'b01에서 오른쪽 count는 갱신 전 값입니다. 현재 01이면 다음 값 10을 계산한 뒤 저장합니다. 오른쪽과 왼쪽을 순서대로 덮어 쓰는 메모장처럼 해석하지 마세요.

비차단 대입 <=는 평가한 값을 나중의 비차단 갱신 단계에서 반영합니다. 같은 에지에 갱신되는 여러 레지스터의 연결을 읽을 때도 이전 값과 다음 값을 구분하는 습관이 도움이 됩니다.

RTL 코드 발췌
always_ff @(posedge clk)
    if (rst) count <= 2'b00;
    else count <= count + 2'b01;

한 에지에서 실행되는 분기는 하나

if와 else는 둘 중 하나만 선택합니다. rst=1이면 00을 저장하고 증가 분기는 실행하지 않습니다. 그래서 리셋 에지에서 00으로 만들자마자 01까지 증가하지 않습니다.

손으로 추적할 때는 현재 count, 현재 rst, 선택된 분기, 다음 count 네 칸을 적으세요. 이 표를 코드와 비교하면 리셋 우선순위와 순환 지점을 함께 확인할 수 있습니다.

직접 생각해 보기

count=11, rst=1인 상승 에지에서 결과는 00일까요, 01일까요?

해설 보기

00입니다. 리셋 분기가 선택되므로 같은 에지에 증가 분기는 실행되지 않습니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.