module uart_top(
    input  wire       clk,
    input  wire       rst,
    
    input  wire       uart_rx,
    output wire       uart_tx,
    
    // Interfaces RX
    output wire [7:0] rx_data,
    output wire       rx_data_valid,
    input  wire       rx_data_ready,

    // Interfaces TX
    input  wire [7:0] tx_data,
    input  wire       tx_data_valid,
    output wire       tx_data_ready
);

    parameter CLK_FRE  = 27_000_000; // Hz
    parameter UART_FRE = 115200;     // Baudrate

    // === Instanciation RX ===
    uart_rx #(
        .CLK_FRE(CLK_FRE),
        .BAUD_RATE(UART_FRE)
    ) uart_rx_inst (
        .clk           (clk),
        .rst_p         (rst),
        .rx_data       (rx_data),
        .rx_data_valid (rx_data_valid),
        .rx_data_ready (rx_data_ready),
        .rx_pin        (uart_rx)
    );

    // === Instanciation TX ===
    uart_tx #(
        .CLK_FRE(CLK_FRE),
        .BAUD_RATE(UART_FRE)
    ) uart_tx_inst (
        .clk           (clk),
        .rst_p         (rst),
        .tx_data       (tx_data),
        .tx_data_valid (tx_data_valid),
        .tx_data_ready (tx_data_ready),
        .tx_pin        (uart_tx)
    );

endmodule