q3-dsb-labs/ch4/robot_tb.sv

48 lines
1.1 KiB
Systemverilog
Raw Normal View History

`timescale 1ns/1ps
module robot_tb();
logic clk;
logic reset;
logic sensor_l;
logic sensor_m;
logic sensor_r;
logic [2:0] sensors;
logic motor_l_pwm, motor_r_pwm;
logic [20:0] count;
logic count_reset;
logic motor_l_reset, motor_r_reset;
robot test (clk, reset, sensor_l, sensor_m, sensor_r,
motor_l_pwm, motor_r_pwm, count, count_reset, motor_l_reset, motor_r_reset);
assign {sensor_l, sensor_m, sensor_r} = sensors;
always
#5ns clk = ~clk; // period 10ns (100 MHz)
initial
clk = 0;
initial begin
#0ms; reset = 1;
#40ms; reset = 0;
end
initial begin
2025-02-20 12:57:17 +01:00
$dumpfile("output.vcd");
$dumpvars;
#0ms; sensors = 3'b000; // Forward
#70ms; sensors = 3'b001; // Gentle left
#40ms; sensors = 3'b010; // Forward
#40ms; sensors = 3'b011; // Sharp left
#40ms; sensors = 3'b100; // Gentle right
#40ms; sensors = 3'b101; // Forward
#40ms; sensors = 3'b110; // Sharp right
#40ms; sensors = 3'b111; // Forward
2025-02-20 12:57:17 +01:00
#40ms; $finish;
end
endmodule