Tutorial: Hello UART (FPGAedu Board v1)
Send "Hello, World!" over serial from your FPGA.
Goal
Implement a UART transmitter in Verilog that sends a cyclic message at 115200 8N1.
Block diagram
[message ROM] -> [control FSM] -> [UART TX] -> TXD pin -> USB-Serial -> PC
Code (excerpt)
// uart_tx.v — parameterized 8N1 transmitter
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 data + 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
Constraints
set_io clk 35
set_io txd 8 # USB-Serial TXD pin
Test on host
picocom -b 115200 /dev/ttyUSB0
# or on Windows: PuTTY @ 115200 8N1
You should see Hello, World! repeating.
Next step
Combine with the 8x8 LED Matrix to drive a mini-display via UART.