Altifigence Academy
EN학습 시작

실습 02 / 25 MIN

카운터와 리셋

2비트 카운터로 동기식 리셋과 순환을 확인합니다.

배울 내용

초기값을 3으로 두고 첫 상승 에지에서 리셋합니다. 이후 0, 1, 2, 3, 0으로 진행합니다. 리셋 신호가 켜져 있어도 클록 에지 전에는 값이 그대로입니다.

SystemVerilog 소스

rtl/top.sv소스 다운로드
module top (
    input logic clk,
    input logic rst,
    output logic [1:0] count
);
    // Active-high synchronous reset: sampled only at the rising clock edge.
    always_ff @(posedge clk)
        if (rst) count <= 2'b00;
        else count <= count + 2'b01;
endmodule

실행 방법

New analysis에서 Two-state single-clock v1을 선택하세요. Clock port는 clk, 주기는 1000ps입니다. 아래 값으로 Preflight 후 Run RTL simulation을 실행하고 결과를 비교하세요.

초기 레지스터 값 (LSB부터)
[true,true]
Reset port
rst · Active high · 1 cycle
Maximum cycles / time
5 / 5000ps
입력 자극입력 JSON 다운로드
[
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  }
]

결과 비교

5 cycles · count=00. 500, 1500, 2500, 3500, 4500ps에서 00 → 01 → 10 → 11 → 00을 확인하세요.

스스로 확인하기

3 다음에 4 대신 0이 나오는 이유는 무엇인가요?

설명 보기

2비트에는 0부터 3까지만 담을 수 있어 증가한 값의 하위 2비트인 00이 남습니다.

이 실습은 0/1 단일 클록 RTL을 사용합니다. #delay·initial·X/Z 테스트벤치는 포함하지 않습니다. 이 페이지의 체크는 학습 기록이며 실행 결과는 아닙니다.

다음 실습 →