1
0
forked from tanchou/Verilog

Création de la structure du uart fifo

This commit is contained in:
Gamenight77
2025-05-06 09:42:26 +02:00
parent aaebf22d48
commit 1ca3456ab8
17 changed files with 758 additions and 12 deletions

3
Semaine_4/UART/README.md Normal file
View File

@@ -0,0 +1,3 @@
# UART
Faire deux modules : un pour l'émetteur et un pour le récepteur. Le module émetteur doit être capable d'envoyer des données sur le port série, tandis que le module récepteur doit être capable de recevoir des données sur le port série. Les deux modules doivent être capables de communiquer entre eux.

View File

@@ -13,7 +13,7 @@ module top_uart_loopback (
wire tx_ready;
initial begin
leds = 6'b000000; // Initialiser les LEDs à 0
leds = 6'b111111;
end
// === UART RX ===
@@ -36,32 +36,51 @@ module top_uart_loopback (
.tx(tx)
);
// === FSM pour clencher la transmission ===
localparam IDLE = 0, SEND = 1;
reg state = IDLE;
// === FSM avec lai ===
localparam IDLE = 0, WAIT = 1, SEND = 2;
reg [1:0] state = IDLE;
reg [8:0] delay_counter = 0;
always @(posedge clk) begin
leds[5] <= rx;
leds[4] <= tx;
case (state)
IDLE: begin
tx_enable <= 0;
delay_counter <= 0;
if (rx_received && tx_ready) begin
tx_data <= rx_data;
tx_enable <= 1;
state <= SEND;
leds[0] <= 1;
leds[5:1] <= 0;
state <= WAIT;
leds[0] <= 0;
leds[1] <= 1;
end
end
WAIT: begin
delay_counter <= delay_counter + 1;
if (delay_counter == 8'd400 && tx_ready) begin
tx_enable <= 1;
state <= SEND;
end else begin
tx_enable <= 0;
end
leds[0] <= 1;
leds[1] <= 0;
end
SEND: begin
tx_enable <= 0;
state <= IDLE;
leds[0] <= 0; // LED 0 allumée pour indiquer la réception
leds[1] <= 1; // LED 1 éteinte pour indiquer l'attente de transmission
leds[0] <= 0;
leds[1] <= 0; // Envoi terminé
end
endcase
end
endmodule
endmodule

View File

@@ -84,7 +84,7 @@ module uart_tx #(
if(rst_p == 1'b1) begin
tx_data_latch <= 8'd0;
end else if(state == IDLE && tx_enable == 1'b1) begin
tx_data_latch <= data; // Charger les données de `data` dans `tx_data_latch`
tx_data_latch <= data; // Charger les données de data dans tx_data_latch
end
end