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.