RTL Studio Open IDE

Interface Protocols

UART with Integrated TX/RX FIFOs

8N1 UART Core with Configurable Depth TX and RX FIFOs. Supports backpressure and interrupt-ready status flags.

About this block

Simulate it in the Verilog IDE

Hardsystemverilogsimsyn

UART with Integrated TX/RX FIFOs is a SystemVerilog reference block in the Interface Protocols catalog. UART, SPI, I2C, and other serial or peripheral protocol interfaces. Marked Hard: a larger reference. Simulate the packaged testbench before you change the RTL.

This OpenIP provides a synthesizable 8-N-1 UART with separate TX and RX FIFOs. Host traffic uses ready/valid handshakes on each FIFO while serial I/O uses tx_pin_o and rx_pin_i. Verified with Verilator loopback tests.

  1. Choose Open in IDE. RTL Studio loads the packaged workspace for UART with Integrated TX/RX FIFOs.
  2. Read the SystemVerilog module in the editor. The catalog line for this block: 8N1 UART Core with Configurable Depth TX and RX FIFOs. Supports backpressure and interrupt-ready status flags.
  3. Run the packaged testbench with the in-browser Verilator simulator, then open the VCD in the waveform viewer.
  4. Run Yosys in the same IDE for a generic netlist. Sky130 liberty mapping is a separate Pro library option.

RTL Studio is the Verilog simulator and IDE around this block: Slang lint, Verilator, VCD waveforms, and Yosys, in the browser. Simulation guide · Yosys guide.

Features

  • Parameterized DATA_WIDTH, FIFO_DEPTH, CLK_FREQ, and BAUD_RATE.
  • TX FIFO write interface: tx_din, tx_valid, tx_ready.
  • RX FIFO read interface: rx_dout, rx_valid, rx_ready.
  • Status flags: tx_empty, tx_full, rx_empty, rx_full.
  • Interrupt-style flags: tx_int, rx_int (FIFO non-empty indicators).

Ports

PortDirectionWidthDescription
clkinput1System clock
rst_ninput1Active-low reset
tx_dininputDATA_WIDTHTX FIFO write data
tx_validinput1TX FIFO write valid
tx_readyoutput1TX FIFO not full
rx_doutoutputDATA_WIDTHRX FIFO read data
rx_validoutput1RX FIFO not empty
rx_readyinput1RX FIFO read enable
tx_pin_ooutput1Serial TX pin
rx_pin_iinput1Serial RX pin
tx_emptyoutput1TX FIFO empty
tx_fulloutput1TX FIFO full

Parameters

ParameterDefaultDescription
DATA_WIDTH8Byte width
FIFO_DEPTH16Entries per FIFO
BAUD_RATE115200Line rate in Hz
CLK_FREQ50_000_000Clock frequency in Hz

Integration

Tie rx_pin_i high when idle. Use tx_valid/tx_ready to push bytes and rx_valid/rx_ready to pop received bytes. For loopback wiring, connect rx_pin_i to tx_pin_o through your board or testbench. Allow one idle frame between back-to-back host sessions if the RX engine was previously active.

More in Interface Protocols

All Interface Protocols blocks