forked from tanchou/Verilog
55 lines
1.1 KiB
Verilog
55 lines
1.1 KiB
Verilog
module top_ultrason_uart(
|
|
input wire clk,
|
|
input wire start,
|
|
inout wire sig,
|
|
output wire tx,
|
|
);
|
|
|
|
parameter CLK_FREQ = 27_000_000;
|
|
parameter BAUD_RATE = 115_200;
|
|
localparam BIT_PERIOD = CLK_FREQ / BAUD_RATE;
|
|
|
|
// Paramètres pour le capteur à ultrasons
|
|
wire [15:0] distance;
|
|
wire [2:0] state_sensor;
|
|
|
|
// Signaux pour l'UART TX
|
|
reg [15:0] tx_data;
|
|
reg tx_start = 0;
|
|
|
|
// Instance du capteur à ultrasons
|
|
ultrasonic_fpga #(
|
|
.CLK_FREQ(CLK_FREQ)
|
|
) sensor_inst (
|
|
.clk(clk),
|
|
.start(start),
|
|
.sig(sig),
|
|
|
|
.distance(distance),
|
|
.state(state_sensor)
|
|
);
|
|
|
|
// Instance de l'UART TX
|
|
uart_tx #(
|
|
.CLK_FREQ(CLK_FREQ),
|
|
.BAUD_RATE(BAUD_RATE)
|
|
) tx_instance (
|
|
.clk(clk),
|
|
.start(tx_start),
|
|
.data(tx_data[7:0]),
|
|
|
|
.tx(tx)
|
|
);
|
|
|
|
always @(posedge clk) begin
|
|
if (state_sensor == 3'd6) begin // Lorsque la mesure est terminée, préparer les données
|
|
|
|
tx_data <= distance;
|
|
tx_start <= 1;
|
|
|
|
end else begin
|
|
tx_start <= 0;
|
|
end
|
|
end
|
|
|
|
endmodule |