q3-dsb-labs/ch4/robot.sv

57 lines
1.3 KiB
Systemverilog
Raw Normal View History

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,
output logic motor_r_pwm,
output logic [20:0] count,
output logic count_reset,
2025-02-20 10:05:52 +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