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
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
[
{
"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. Учебный прогресс не подтверждает запуск симулятора.