2025-02-20 12:57:17 +01:00
|
|
|
`timescale 1ns/1ps
|
|
|
|
|
2025-02-20 10:05:52 +01:00
|
|
|
module robot
|
|
|
|
(input logic clk,
|
|
|
|
input logic reset,
|
|
|
|
|
|
|
|
input logic sensor_l_in,
|
|
|
|
input logic sensor_m_in,
|
|
|
|
input logic sensor_r_in,
|
|
|
|
|
|
|
|
output logic motor_l_pwm,
|
2025-02-20 12:29:17 +01:00
|
|
|
output logic motor_r_pwm,
|
|
|
|
output logic [20:0] count,
|
|
|
|
output logic count_reset,
|
2025-02-20 10:05:52 +01:00
|
|
|
|
2025-02-20 12:29:17 +01:00
|
|
|
output logic motor_l_reset,
|
|
|
|
output logic motor_r_reset
|
|
|
|
);
|
|
|
|
|
|
|
|
//logic count;
|
|
|
|
logic motor_l_direction, motor_r_direction;
|
|
|
|
logic sensor_l, sensor_m, sensor_r;
|
|
|
|
|
|
|
|
|
|
|
|
inputbuffer inputbuffer_module(
|
|
|
|
.clk(clk),
|
|
|
|
.sensor_l_in(sensor_l_in), .sensor_r_in(sensor_r_in), .sensor_m_in(sensor_m_in),
|
|
|
|
.sensor_l_out(sensor_l), .sensor_m_out(sensor_m), .sensor_r_out(sensor_r)
|
|
|
|
);
|
|
|
|
|
|
|
|
timebase timebase_module(
|
|
|
|
.clk(clk), .reset(count_reset), .count(count)
|
|
|
|
);
|
|
|
|
|
|
|
|
controller control_module(
|
|
|
|
.clk(clk), .reset(reset),
|
|
|
|
.sensor_l(sensor_l), .sensor_m(sensor_m), .sensor_r(sensor_r),
|
|
|
|
.count_in(count), .count_reset(count_reset),
|
|
|
|
.motor_l_reset(motor_l_reset), .motor_l_direction(motor_l_direction), .motor_r_reset(motor_r_reset), .motor_r_direction(motor_r_direction)
|
|
|
|
);
|
|
|
|
|
|
|
|
motorcontrol motorcontrol_l_module(
|
|
|
|
.clk(clk),
|
|
|
|
.rst(motor_l_reset), .direction(motor_l_direction),
|
|
|
|
.count_in(count),
|
|
|
|
.pwm(motor_l_pwm)
|
|
|
|
);
|
|
|
|
|
|
|
|
motorcontrol motorcontrol_r_module(
|
|
|
|
.clk(clk),
|
|
|
|
.rst(motor_r_reset), .direction(motor_r_direction),
|
|
|
|
.count_in(count),
|
|
|
|
.pwm(motor_r_pwm)
|
|
|
|
);
|
2025-02-20 10:05:52 +01:00
|
|
|
|
|
|
|
endmodule
|