Altifigence Academy

16 / 36 · 개념

플립플롭과 저장 허용

리셋·인에이블·유지의 우선순위를 정합니다.

학습 목표

  • 클록 인에이블로 저장 여부를 제어합니다.
  • 리셋이 인에이블보다 우선하도록 작성합니다.

업데이트하지 않는 것도 동작입니다.

플립플롭은 클록 에지에서 값을 저장합니다. en=1일 때만 q<=d를 실행하면 en=0인 에지에서는 q가 유지됩니다. 이는 클록을 임의의 조합 논리로 잘라서 만드는 것과 다릅니다.

if(rst)를 먼저 쓰면 rst와 en이 동시에 1이어도 리셋이 우선합니다. 동기식 리셋이므로 클록 에지가 없는 순간에는 rst만으로 q가 바뀌지 않습니다.

RTL 코드 발췌
always_ff @(posedge clk) begin
  if (rst) q <= 1'b0;
  else if (en) q <= d;
end

순차 회로의 유지와 조합 회로의 누락을 구분하세요.

always_ff 안의 조건부 미대입은 의도한 저장 유지가 될 수 있습니다. always_comb에서는 모든 입력 경로에 출력을 대입해야 불필요한 래치를 피할 수 있습니다.

reset=1/en=1, reset=0/en=0, reset=0/en=1 세 경우를 각각 점검하세요. 리셋·유지·저장이 한 테스트 안에서 서로 구분되어야 합니다.

직접 생각해 보기

q=1, d=0, rst=0, en=0이면 다음 상승 에지 후 q는 무엇인가요?

해설 보기

en=0이므로 이전 q=1을 유지합니다.

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