16 / 37 · 개념
모듈러·포화 카운터와 종료 펄스
최댓값 처리 방식과 terminal-count 신호의 정확한 사이클을 설계합니다.
내용은 무료로 볼 수 있습니다. 수강 신청하면 학습 기록을 저장할 수 있어요.
범위 초과의 정책은 세 가지가 다릅니다
같은 N비트 레지스터레지스터 여러 비트의 상태를 저장하는 회로입니다. 이 과정의 동기식 레지스터는 클록 에지에서 정해진 입력을 저장합니다. 자세히 보기라도 최댓값에서 순환할지, 최댓값을 유지할지, 오류를 보고할지는 명세입니다.
8비트에서 255 다음이 0인 모듈러 카운터와 255인 포화 카운터는 서로 다른 기능입니다. 음수와 양수가 필요한 누산기에서는 signed 범위와 양쪽 포화 경계까지 고려합니다.
각 열은 한 상승 에지상승 에지 클록이 0에서 1로 바뀌는 순간입니다. CLK=1인 구간 전체를 뜻하는 레벨과 구별합니다. 자세히 보기의 관찰 기록입니다. 입력은 에지 직전, 이름에 after가 붙은 상태는 갱신 직후 값입니다. 열의 정렬은 샘플 순서를 나타내며 물리적인 전파 지연전파 지연 입력이 바뀐 뒤 출력이 올바른 값으로 안정되기까지 걸리는 시간입니다. 논리식의 등가성과 시간 특성은 별개입니다. 자세히 보기을 그린 것이 아닙니다. 초기 count=8, reset=0, enable=1입니다. 같은 입력에도 modulo-10, 4비트 wrap, 4비트 포화는 서로 다른 궤적을 만듭니다.
파형 데이터 보기
| 신호 | 파형 | 버스 값 |
|---|---|---|
| edge | 234523452 | E0 → E1 → E2 → E3 → E4 → E5 → E6 → E7 → E8 |
| mod10 after | 234523452 | 9 → 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 |
| wrap4 after | 234523452 | 9 → 10 → 11 → 12 → 13 → 14 → 15 → 0 → 1 |
| sat4 after | 2345234.. | 9 → 10 → 11 → 12 → 13 → 14 → 15 |
modulo-M의 마지막 상태를 비교합니다
10회마다 펄스를 내고 싶으면 상태 0~9를 쓰고, enable이 있는 유효 에지만 셉니다. pulse는 '이 에지에서 9를 소비하고 0으로 돌아갔다'는 의미로 등록할 수 있습니다.
always_ff @(posedge clk) begin
if (rst) begin
count <= 4'd0;
pulse <= 1'b0;
end else begin
pulse <= 1'b0;
if (en) begin
if (count == 4'd9) begin
count <= 4'd0;
pulse <= 1'b1;
end else count <= count + 4'd1;
end
end
endpulse의 기본 대입이 있어 다음 에지에 0으로 돌아옵니다. 단순히 count==9를 출력하면 enable이 0으로 멈췄을 때 여러 사이클 동안 1일 수 있습니다. 종료 상태와 완료 이벤트를 구분해야 합니다.
주기를 세는 기준
reset 뒤 count=0에서 시작해 enable=1인 에지를 10번 통과해야 첫 pulse가 나옵니다. 첫 에지를 0번으로 부를지 1번으로 부를지보다, 입력·상태·출력 표의 정의를 일관되게 사용하는 것이 중요합니다.
이 실습은 modulo-16 카운터입니다. 초기 1110에서 한 에지를 진행하면 1111, 다음 에지는 0000입니다. 1111에서 enable=0으로 정지시켜 보세요. 유지와 포화는 값이 같아 보여도 재개했을 때 다른 동작입니다. 포화 카운터라면 같은 조건에서 어떤 값이 되어야 하는지 비교하세요.
동기 reset이 enable보다 우선합니다. enable=0이면 현재 값을 유지합니다. q=1110; q_next = (q + 1) mod 16
직접 생각해 보기
위 회로가 count=9, pulse=0일 때 en=0인 에지를 두 번 지나고 en=1인 에지를 지나면 count와 pulse는 어떻게 되나요?
해설 보기
정지한 두 에지 동안 count=9, pulse=0을 유지합니다. 세 번째 에지에서 count=0, pulse=1이 됩니다. 그다음 에지에는 기본 대입으로 pulse=0이 됩니다.