Altifigence Academy

21 / 36 · Практика

Практика симуляции счётчика

Наблюдайте увеличение и переход через максимум после сброса.

Чему вы научитесь

Start at 3 and reset on the first rising edge. The sequence is then 0, 1, 2, 3, 0. A synchronous reset changes the value only at a clock edge.

Перед началом

Подготовьте проект Digital Design Studio Desktop и права запуска. Сохраните каждый пример в отдельной папке как rtl/top.sv.

SystemVerilog source

SystemVerilog
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 и сравните результат.

ПараметрЗначение
Начальные значения регистра (младший бит первым)[true,true]
Порт сбросаrst · Активный высокий · 1 цикл
Максимум циклов / времени5 / 5000ps

Input stimulus

json
[
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  },
  {
    "inputs": {}
  }
]

Сравните результат

После 5 циклов count=00. В 500,1500,2500,3500,4500ps ожидайте 00→01→10→11→00.

Практика использует двухсостоянийный RTL с одним тактом. Не добавляйте #delay, initial или тестбенчи X/Z. Учебный прогресс не подтверждает запуск симулятора.

Lesson files

counter-top.sv ↓counter-inputs.json ↓

Выбор действует в этом браузере. Его можно изменить внизу страницы.