Altifigence Academy

22 / 63 · 개념

동기식 상태 전이와 클록의 역할

여러 레지스터가 같은 이전 상태를 읽고 함께 갱신되는 동기 시스템의 동작을 이해합니다.

한 에지에서 상태 전체가 함께 갱신됩니다

동기회로의 상태 벡터를 QkQ_k, 입력을 XkX_k라 하면 핵심 명세는 다음과 같습니다.

Qk+1=F(Qk,Xk),Yk=G(Qk,Xk)Q_{k+1}=F(Q_k,X_k),\qquad Y_k=G(Q_k,X_k)

F는 다음 상태 함수, G는 출력 함수입니다. 클록은 계산 내용을 정하지 않고, 계산된 다음 상태를 언제 저장할지 정합니다. 여러 레지스터레지스터 여러 비트의 상태를 저장하는 회로입니다. 이 과정의 동기식 레지스터는 클록 에지에서 정해진 입력을 저장합니다. 자세히 보기가 있으면 모두 같은 이전 상태를 기준으로 자신의 다음 값을 결정한다고 생각하면 됩니다.

Q가 조합 함수 F를 통과해 다음 상태 입력을 만듭니다. 저장한 값은 다음 구간의 Q가 됩니다. 따라서 에지 사이에는 다음 값을 계산하고, 에지에서는 그 값을 저장합니다.

이전 상태로 다음 상태를 계산하기
  1. 현재 상태 Q: 클록 사이에 유지
  2. F(Q, X): 입력과 이전 상태로 계산
  3. 에지에서 저장: 계산 결과를 다음 Q로

가장 느린 경로를 기준으로 클록 주기를 정합니다

입력 레지스터에서 새 값이 나오는 데에도 시간이 걸리고, 조합회로를 지나 다음 레지스터에 도착하는 데에도 시간이 걸립니다. 다음 에지 전에 setupsetup 클록의 캡처 에지 전에 입력 데이터가 안정되어 있어야 하는 최소 시간입니다. 위반하면 저장 결과를 보장할 수 없습니다. 자세히 보기 여유까지 확보되어야 합니다. 코드를 짧게 썼다는 이유로 높은 클록 주파수가 가능한 것은 아닙니다.

클록 주기 10ns는 100MHz입니다.

f=1Tf=\frac{1}{T}

단위 변환을 생략하지 마세요. 1ns의 역수는 1GHz이고, 1ps의 역수는 1THz입니다. 시뮬레이션에 지정한 주기는 클록 입력의 시간 간격을 정할 뿐, 실제 회로가 그 주파수로 동작한다는 측정 결과는 아닙니다.

에지 사이의 신호를 해석하기

레지스터 출력은 다음 유효 에지까지 논리 상태를 유지하지만, 조합 출력은 에지 사이에서도 바뀔 수 있습니다. 리셋리셋 상태를 명세한 초기값으로 돌리는 제어입니다. 동기식인지 비동기식인지, 다른 제어보다 우선하는지를 함께 정해야 합니다. 자세히 보기이 동기식인지 비동기식인지에 따라 상태가 바뀌는 시점에는 예외가 있을 수 있습니다. 이 과정에서 제공하는 실습은 단일 클록과 동기식 리셋을 사용합니다.

입력의 유효 시점, 상태 갱신 시점, 출력의 관찰 시점을 먼저 명세하고 파형을 읽으세요. '클록마다 한 줄씩 코드가 실행된다'는 소프트웨어식 해석보다 상태 방정식이 정확합니다.

직접 생각해 보기

200MHz 클록의 주기는 얼마인가요? 같은 클록으로 연결된 두 레지스터 a, b에서 a<=d; b<=a;라면 b는 그 에지에 갱신된 a를 받나요?

해설 보기

주기는 5ns입니다. b는 에지 직전의 a를 받습니다. 두 레지스터가 같은 이전 상태에서 다음 값을 계산하므로 d의 새 값이 한 에지에 두 단계를 모두 통과하지 않습니다.

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