forked from tanchou/Verilog
59 lines
1.6 KiB
Coq
59 lines
1.6 KiB
Coq
![]() |
module dht11_leds (
|
||
|
input wire clk, // 27 MHz
|
||
|
inout wire dht11_sig,
|
||
|
input wire start,
|
||
|
output reg [5:0] leds
|
||
|
);
|
||
|
// === Registres ===
|
||
|
wire io_dht11_sig;
|
||
|
reg dht11_start;
|
||
|
wire dht11_data_ready;
|
||
|
wire dht11_busy;
|
||
|
wire [7:0] dht11_temp_data;
|
||
|
wire [7:0] dht11_hum_data;
|
||
|
wire dht11_error;
|
||
|
|
||
|
dht11_interface dht11_interface (
|
||
|
.i_clk(clk),
|
||
|
.io_dht11_sig(io_dht11_sig),
|
||
|
.i_start(dht11_start),
|
||
|
.o_dht11_data_ready(dht11_data_ready),
|
||
|
.o_busy(dht11_busy),
|
||
|
.o_temp_data(dht11_temp_data),
|
||
|
.o_hum_data(dht11_hum_data),
|
||
|
.o_dht11_error(dht11_error)
|
||
|
);
|
||
|
|
||
|
initial begin
|
||
|
dht11_start = 0;
|
||
|
leds = 6'b000000;
|
||
|
end
|
||
|
|
||
|
always @(posedge clk) begin
|
||
|
if (start) begin
|
||
|
dht11_start = 1; // Démarre la lecture des données
|
||
|
leds[0] = 1; // LED verte allumée
|
||
|
end else begin
|
||
|
dht11_start = 0; // Arrête la lecture des données
|
||
|
leds[0] = 0; // LED verte éteinte
|
||
|
end
|
||
|
|
||
|
if (dht11_busy) begin
|
||
|
leds[1] = 1; // LED jaune allumée
|
||
|
end else begin
|
||
|
leds[1] = 0; // LED jaune éteinte
|
||
|
end
|
||
|
|
||
|
if (dht11_data_ready) begin
|
||
|
leds = {dht11_temp_data[7:4], dht11_hum_data[7:4]}; // Affiche les données sur les LEDs
|
||
|
end
|
||
|
|
||
|
if (dht11_error) begin
|
||
|
leds[5:3] = 3'b111; // Toutes les LEDs allumées en cas d'erreur
|
||
|
end else begin
|
||
|
leds[5:3] = 3'b000; // Éteint les LEDs si pas d'erreur
|
||
|
end
|
||
|
end
|
||
|
|
||
|
endmodule
|