forked from tanchou/Verilog
Création de la structure du uart fifo
This commit is contained in:
@@ -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 déclencher la transmission ===
|
||||
localparam IDLE = 0, SEND = 1;
|
||||
reg state = IDLE;
|
||||
// === FSM avec dé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
|
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user