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
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
[
{
"inputs": {}
},
{
"inputs": {}
},
{
"inputs": {}
},
{
"inputs": {}
},
{
"inputs": {}
}
]Сравните результат
После 5 циклов count=00. В 500,1500,2500,3500,4500ps ожидайте 00→01→10→11→00.
Практика использует двухсостоянийный RTL с одним тактом. Не добавляйте #delay, initial или тестбенчи X/Z. Учебный прогресс не подтверждает запуск симулятора.