This repository provides an overview and implementation examples of popular Serial Communication Protocols used in embedded systems and digital electronics.
- UART (Universal Asynchronous Receiver Transmitter)
- SPI (Serial Peripheral Interface)
- I2C (Inter-Integrated Circuit)
Each protocol includes:
- Verilog or C implementations
- Simulation testbenches
- Notes on hardware interfacing (optional)
serial-communication-protocols/
βββ uart/
β βββ uart_tx.v
β βββ uart_rx.v
β βββ testbench/
β βββ README.md
βββ spi/
β βββ spi_master.v
β βββ spi_slave.v
β βββ testbench/
β βββ README.md
βββ i2c/
β βββ i2c_master.v
β βββ i2c_slave.v
β βββ testbench/
β βββ README.md
βββ docs/
βββ diagrams/
βββ timing/
βββ datasheets/
- Asynchronous protocol
- Uses start/stop bits
- No clock line required
- Synchronous protocol
- Full-duplex communication
- Uses MISO, MOSI, SCLK, and SS lines
- Synchronous, half-duplex
- Uses SDA (data) and SCL (clock)
- Supports multi-master and multi-slave
- Simulated using ModelSim and Quartus Prime
- Testbenches provided
- Functional and timing verification
- Verilog/SystemVerilog support
- Intel Quartus Prime (Lite or Standard)
- ModelSim or compatible simulator
- (Optional) FPGA development board
git clone https://github.com/your-username/serial-communication-protocols.git
cd serial-communication-protocols- Anikait Sarkar
- RSA SEIP VLSI Trainee