Altifigence Academy

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

Практика симуляции сдвигового регистра

Проследите последовательный вход вместе с q.

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

At each rising edge, the previous two low bits of q move left and din enters bit 0. Feed 1, 0, 1, 1 and compare each step.

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

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

SystemVerilog source

SystemVerilog
module top (
    input logic clk,
    input logic rst,
    input logic din,
    output logic [2:0] q
);
    // Old q[1:0] and din are captured together at each rising edge.
    always_ff @(posedge clk)
        if (rst) q <= 3'b000;
        else q <= {q[1:0], din};
endmodule

Запуск примера

В New analysis выберите Two-state single-clock v1, задайте Clock port=clk и период 1000ps. С указанными ниже значениями выполните Preflight, затем Run RTL simulation и сравните результат.

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

Input stimulus

json
[
  {
    "inputs": {
      "din": [
        false
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  },
  {
    "inputs": {
      "din": [
        false
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  },
  {
    "inputs": {
      "din": [
        true
      ]
    }
  }
]

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

После 5 циклов q=011. Последовательность после фронтов: 000→001→010→101→011.

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

Lesson files

shift-top.sv ↓shift-inputs.json ↓

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