UART Protocol

Understanding the UART Protocol

UART (Universal Asynchronous Receiver-Transmitter) is a widely used asynchronous serial communication protocol for exchanging data between devices, such as FPGAs and computers.

Unlike synchronous protocols, UART does not use a shared clock signal. Instead, data is sent at a predefined transmission rate (baud rate) agreed upon by both devices. Each transmitted byte includes:

During transmission, the data is sent bit by bit through the TX (transmit) line, while the receiving device reads these bits from the RX (receive) line, synchronizing with the established timing.

Below is a placeholder for an image that illustrates how UART works (start bit, data bits, stop bit, idle state, etc.).

 

Creating Your Project in ChipInventor

In this tutorial, you will create a serial communication system using UART with three main blocks: uart_rx, uart_logic_const, and uart_tx. When a character is received via UART, the system compares it with a predefined value and toggles an LED if it matches.

Step-by-Step:

4. Click "Create".

Blocks Used in the Project

The project uses the following blocks based on the provided Verilog modules:


Connecting the Blocks

Assemble the project with the following configuration:

uart_rx Block
uart_logic_const Block
uart_tx Block

Final Connections:

Block/Pin

Connection

clk

All blocks

uart_rx

UART RX input

uart_tx

UART TX output

b0

Reset signal for uart_tx

led0

Output from signal of uart_logic_const

 

Project Simulation

  1. Go to the Simulate tab in the top menu.

  2. Select Advanced Simulation.

  3. Click on Run Iverilog to compile and simulate.

  4. Check if the simulation runs without errors.

FPGA Synthesis and Programming

Once the simulation is validated:

 

Hardware Validation

 

Wrapping Up

Congratulations! You’ve implemented a complete UART system with receiving, comparison, and data echo. This practice reinforces your understanding of serial communication, logical comparison, and module integration in FPGA using ChipInventor.

Try experimenting with different characters, adding more conditions, or expanding the system with multiple LEDs and control commands!