본문으로 건너뛰기
code0.HDL

클록·리셋·enable

클록의 주기·에지·사이클, 갱신과 유지를 고르는 enable, 종류·극성·우선순위로 구분하는 리셋을 다루고, clear가 enable을 이기는 이유를 설명합니다.

이 장에서 배울 내용

  • 클록에서 상승 에지·주기·사이클을 짚을 수 있습니다
  • 갱신과 유지를 고르는 enable이 있는 레지스터를 예측할 수 있습니다
  • 종류·극성·우선순위에 따라 리셋을 적용하고, enable보다 우선하는 clear를 설명할 수 있습니다
이 장에서 배우는 개념
  • 클록 주기·에지·사이클
  • enable: 갱신과 유지
  • 리셋의 종류·극성·우선순위
먼저 알아야 할 개념

1. 클록은 일정한 주기로 반복되고, 레지스터는 상승 에지에서만 움직입니다

클록은 0과 1을 주기적으로 반복하는 신호입니다. 0에서 1로 바뀌는 순간이 상승 에지이고, 상승 에지에서 다음 상승 에지까지가 한 주기, 곧 한 클록 사이클입니다. 이 장에서는 상승 에지마다 레지스터의 상태를 추적합니다. 에지 사이에도 조합 회로의 신호는 바뀔 수 있습니다.

용어뜻예
상승 에지클록이 0에서 1로 바뀌는 순간레지스터가 D를 저장하는 순간
주기상승 에지에서 다음 상승 에지까지의 시간10 ns
주파수1초 동안의 주기 수주기 10 ns는 100 MHz
사이클한 주기 동안의 회로 동작에지 하나로 끝나는 구간

주기가 10 ns인 클록에서 세 사이클은 30 ns입니다. 이상적인 모델에서는 초기 상태와 각 에지에서의 입력으로 레지스터의 상태를 예측합니다. 실제 회로에서는 에지 전후에 입력이 안정되어 있어야 하는 설정 시간과 유지 시간도 지켜야 합니다. 아래 실험은 이 조건이 충족된다고 가정하고 에지 단위로 상태를 계산합니다.

이 단원의 실험에서 사이클 번호는 0부터 시작합니다. 사이클 0은 레지스터가 초깃값을 가진 채 시작하고 에지 0으로 끝납니다. 표의 한 행이 한 사이클이며, "에지에서 샘플링한 입력" 열은 그 에지 직전에 입력에 놓여 있던 값, "에지 직후" 열은 그 에지가 저장한 값입니다.

참고. 이 입문 과정의 레지스터 모델은 클록 하나, 상승 에지, 동기 클리어로 고정되어 있습니다. 하강 에지에서 동작하는 레지스터와 클록이 여럿인 설계는 각 언어 과정에서 필요한 곳에 다룹니다.

2. enable은 갱신과 유지 가운데 하나를 고릅니다

enable은 레지스터에 "이번 에지에 저장할 것인지"를 알려 주는 입력입니다. en이 1이면 에지에서 d를 저장하고, en이 0이면 에지가 와도 현재 값을 그대로 유지합니다.

en에지에서 하는 일다음 값
1갱신d
0유지현재 q

enable이 있어도 레지스터가 저장하는 순간은 여전히 에지뿐입니다. 아래 실험에서 en을 1로 두고 d를 0, 1, 0, 1로 여러 번 바꾼 뒤 에지를 한 번만 누르세요. q에는 에지 순간의 d 하나만 남습니다. 그다음 en을 0으로 내리고 d를 바꾸면서 에지를 눌러 보세요. q는 움직이지 않습니다.

개념 실험 · dff-enable

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

q
0

아직 에지가 없습니다. 입력을 정한 뒤 클록 에지를 인가하세요.

주의. en이 0이면 d가 바뀌어도 저장된 값에 영향을 주지 않습니다. 멀티플렉서로 현재 값을 되먹임하는 구현에서는 외부 d 대신 현재 q를 다음 값으로 선택합니다.

확인 문제

에지 사이에서 d가 0, 1, 0으로 바뀌었고 에지 순간에는 0입니다. en은 1입니다. 에지 뒤 q는 무엇입니까?

답

3. 리셋은 레지스터를 정해진 값으로 되돌립니다

리셋은 정해진 리셋 조건이 성립할 때 레지스터에 설계자가 지정한 값을 저장하게 합니다. 리셋이나 명시적 초기화가 없는 레지스터는 4상태 RTL 시뮬레이션에서 보통 x로 시작합니다. 리셋 입력이 있더라도 실제로 적용하기 전에는 초기화되지 않습니다. 리셋 회로를 읽을 때는 동작 시점, 극성, 다른 갱신 조건과의 우선순위를 확인합니다.

축선택지뜻
종류동기 / 비동기동기 리셋은 다음 상승 에지에서 동작합니다. 비동기 리셋은 리셋 신호가 활성화되는 즉시 에지를 기다리지 않고 동작합니다
극성active-high / active-lowactive-high는 1일 때 리셋, active-low는 0일 때 리셋입니다. active-low 신호는 흔히 이름 끝에 _n을 붙입니다
우선순위이 카운터에서는 clear가 enable보다 우선clear와 enable이 함께 1이면 증가한 값이 아니라 0을 저장합니다

이 단원의 카운터 counter4에서 clear는 동기이고 active-high인 기능적 클리어입니다. 에지에서 clear가 1이면 enable과 무관하게 q가 0이 되고, clear가 0일 때만 enable이 갱신과 유지를 고릅니다. 값은 0부터 15까지이고 15 다음은 0입니다.

에지에서 clear에지에서 enable다음 q
10 또는 10
01q + 1 (15 다음은 0)
00q

예를 들어 q가 2일 때 clear = 1, enable = 1로 에지를 맞으면 다음 값은 3이 아니라 0입니다. 그 다음 사이클에 clear = 0, enable = 1이면 0에서 1이 됩니다. 아래 표는 이 순서를 사이클마다 적은 것입니다.

사이클clearenable에지 직전 q에지 직후 q
00101
10112
21120
30101
40011

같은 순서를 실험에서 직접 만들어 보세요. enable을 1로 두고 에지를 두 번, clear도 1로 올려 에지를 한 번, clear를 내려 에지를 한 번, enable도 내려 에지를 한 번 누릅니다. 실험 표의 "에지 직후" 열이 위 표와 같아야 합니다.

개념 실험 · counter4

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

q
0

아직 에지가 없습니다. 입력을 정한 뒤 클록 에지를 인가하세요.

확인 문제

q가 7이고 에지에서 clear와 enable이 모두 1입니다. 에지 뒤 q는 무엇입니까?

확인 문제

비동기 active-high 리셋이 에지와 에지 사이의 시각에 1이 되었습니다. 레지스터는 언제 초깃값이 됩니까?

답

참고. 기본 리셋은 언어마다 다릅니다. BSV 컴파일러가 생성하는 Verilog의 기본 리셋은 동기이며 active-low입니다(RST_N). Chisel의 기본 리셋은 동기이며 active-high입니다. Verilog는 코드에 적은 대로입니다. 리셋을 클록 에지에서만 검사하면 동기 리셋이고, 리셋 신호 자체의 변화에도 반응하도록 적으면 비동기 리셋입니다. 작성법은 각 언어 경로에서 다룹니다.

4. 상태표 채우기

clear와 enable 열은 각 사이클의 에지에서 샘플링되는 값입니다. 에지 직후 q를 적으세요. 사이클 0은 q = 0에서 시작합니다. 비교 버튼은 처음 틀린 사이클을 알려 줍니다.

예측한 뒤 비교 · counter4

비교하기 전에 모든 칸을 채우세요. 빈칸도 불일치로 처리합니다.

상태표
사이클clear에지에서 샘플링한 입력enable에지에서 샘플링한 입력q에지 직후
011
101
201
300
411
501
600

5. 변형: enable로 값을 붙잡아 두는 레지스터

enable은 카운터에만 쓰이지 않습니다. 센서 값을 특정 순간에만 받아 두고 다음 순간까지 바꾸지 않으려면, en을 그 순간에만 1로 올리는 레지스터 하나로 충분합니다. en이 0인 사이클 동안 d가 어떻게 바뀌어도 q는 마지막으로 받아 둔 값을 유지합니다.

아래 표의 d는 센서 값, en은 받아 두는 순간입니다. 에지 직후 q를 적으세요.

예측한 뒤 비교 · dff-enable

비교하기 전에 모든 칸을 채우세요. 빈칸도 불일치로 처리합니다.

상태표
사이클d에지에서 샘플링한 입력en에지에서 샘플링한 입력q에지 직후
011
100
210
301
410
511

6. 정리

  • 클록은 주기적으로 반복되고, 레지스터는 상승 에지에서만 저장합니다. 상승 에지에서 다음 상승 에지까지가 한 사이클이며, 실험의 사이클 번호는 0부터 시작합니다.
  • 에지 사이에서 입력이 어떻게 바뀌었든 에지 순간의 값만 저장됩니다.
  • enable은 다음 값으로 d(갱신)와 현재 q(유지) 가운데 하나를 고릅니다.
  • 리셋은 종류(동기/비동기), 극성(active-high/low), 우선순위(enable보다 먼저)로 구분합니다. counter4의 clear는 동기, active-high이며 enable을 이깁니다.
  • 기본 리셋은 언어마다 다르므로 각 언어 경로의 설명을 따릅니다.

다음 장에서는 이 표를 시간축 위에 그린 파형을 읽고, 입력을 구동하는 시각과 출력을 관찰하는 시각을 구분합니다.

확인 지점

이 장의 확인 문제에 답하세요