Altifigence Academy

23 / 63 · 개념

조합 선택과 레지스터 출력의 지연

MUX 결과를 레지스터에 저장했을 때 인터페이스와 지연이 어떻게 달라지는지 분석합니다.

출력에 레지스터를 붙이는 이유

MUX멀티플렉서 선택 신호에 따라 여러 입력 중 하나를 출력으로 연결하는 조합회로입니다. 선택 비트와 입력 번호의 대응을 명세해야 합니다. 자세히 보기의 조합 출력은 선택선이나 데이터가 바뀔 때마다 달라질 수 있습니다. 뒤에 레지스터레지스터 여러 비트의 상태를 저장하는 회로입니다. 이 과정의 동기식 레지스터는 클록 에지에서 정해진 입력을 저장합니다. 자세히 보기를 두면 다음 단계가 클록 경계에서 정해진 값을 사용하도록 만들 수 있지만, 관찰 시점과 지연이 달라집니다.

에지 k 직전에 준비된 입력을 ak,bk,ska_k,b_k,s_k라 하고, 그 에지 이후 저장값을 qk+1q_{k+1}로 표기하면 다음과 같습니다.

yk=sk‾ak+skbk,qk+1=yky_k=\overline{s_k}a_k+s_kb_k,\qquad q_{k+1}=y_k

지연을 말할 때 입력을 언제 넣고 출력을 언제 관찰하는지 반드시 함께 정의하세요. 입력과 출력을 둘 다 레지스터 출력으로 정의한 인터페이스에서는 중간 레지스터 단계 수가 사이클 지연을 결정합니다.

입력과 출력의 변화 시점 정리하기

에지 직전absely에지 직후 q
101000
201111
310100

에지 1과 2 사이에 sel이 바뀌면 y는 먼저 변하고 q는 에지 2까지 유지됩니다. 입력 변화와 q의 변화를 같은 시점에서 비교하면 한 사이클 어긋난 오류처럼 보일 수 있습니다.

각 열은 일정한 시간 간격이 아니라 값을 관찰한 순서를 나타냅니다. a=0, b=1로 두었습니다. sel이 바뀐 뒤 다음 에지 전까지 q가 유지되는 구간을 보세요.

y가 먼저 바뀌고 q가 따라오는 순서
파형 데이터 보기
파형 데이터: 각 문자는 한 구간, 점은 이전 상태 유지, p는 클록 한 주기입니다.
신호파형버스 값
event23452E1 after → sel → 1 → E2 after → sel → 0 → E3 after
sel01.0.
y01.0.
q0.1.0

레지스터가 해결하지 않는 것

입력이 캡처 에지 주변에서 불안정하면 레지스터를 붙여도 안전한 동작을 보장할 수 없습니다. 다른 클록 도메인에서 온 선택 신호를 사용하려면 별도로 동기화해야 합니다. 또한 조합 출력 y의 glitch가 완전히 없어진다는 뜻도 아닙니다. 인터페이스가 q만 사용하는지, 다른 경로에서 y도 사용하는지를 함께 검토해야 합니다.

직접 생각해 보기

같은 클록을 쓰는 입력 레지스터 → MUX → 출력 레지스터를 생각하세요. 입력 레지스터가 에지 k에서 바뀐 새 값은 보통 출력 레지스터의 어느 에지에 반영되나요?

해설 보기

정상적인 단일 사이클 동기 경로라면 에지 k+1에 캡처합니다. 에지 k에서 출력 레지스터는 입력 레지스터의 이전 값을 보며, 새 값은 clock-to-Q 지연과 조합 지연을 거쳐 다음 에지에서 저장됩니다. 같은 에지에서 새 값이 즉시 두 레지스터를 통과한다고 계산하면 안 됩니다.

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