2025-02-20 12:29:17 +01:00
|
|
|
`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;
|
|
|
|
|
2025-02-20 12:29:17 +01:00
|
|
|
#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;
|
2025-02-20 12:29:17 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
endmodule
|