Tutorial: Hello UART (FPGAedu Board v1)

Envía "Hello, World!" por puerto serie desde tu FPGA.

Objetivo

Implementar un transmisor UART (TX) en Verilog que envíe un mensaje cíclico a 115200 8N1.

Diagrama de bloques

[ROM mensaje] -> [FSM control] -> [UART TX] -> Pin TXD -> USB-Serial -> PC

Código (resumen)

// uart_tx.v — transmisor 8N1, parametrizado
module uart_tx #(parameter CLK_HZ = 12_000_000, BAUD = 115_200) (
    input  wire clk,
    input  wire start,
    input  wire [7:0] data,
    output reg  tx,
    output reg  busy
);
    localparam DIV = CLK_HZ / BAUD;
    reg [15:0] cnt;
    reg [3:0]  bit_idx;
    reg [9:0]  shift;  // start + 8 datos + stop

    always @(posedge clk) begin
        if (!busy && start) begin
            shift   <= {1'b1, data, 1'b0};
            busy    <= 1;
            cnt     <= 0;
            bit_idx <= 0;
        end else if (busy) begin
            if (cnt == DIV-1) begin
                cnt   <= 0;
                tx    <= shift[0];
                shift <= {1'b1, shift[9:1]};
                if (bit_idx == 9) busy <= 0;
                else bit_idx <= bit_idx + 1;
            end else cnt <= cnt + 1;
        end
    end
endmodule

Restricciones

set_io clk  35
set_io txd   8   # pin USB-Serial TXD

Probar en PC

picocom -b 115200 /dev/ttyUSB0
# o en Windows: PuTTY @ 115200 8N1

Deberías ver Hello, World! repetidamente.

Siguiente paso

Combina con la Matriz LED 8x8 para un mini-display controlado por UART.

Comentarios

...