All Projects → alexforencich → Verilog Uart

alexforencich / Verilog Uart

Licence: mit
Verilog UART

Labels

Projects that are alternatives of or similar to Verilog Uart

Logic
CMake, SystemVerilog and SystemC utilities for creating, building and testing RTL projects for FPGAs and ASICs.
Stars: ✭ 149 (-14.37%)
Mutual labels:  verilog
Fpga readings
Recipe for FPGA cooking
Stars: ✭ 164 (-5.75%)
Mutual labels:  verilog
Poprc
A Compiler for the Popr Language
Stars: ✭ 170 (-2.3%)
Mutual labels:  verilog
Sv2v
SystemVerilog to Verilog conversion
Stars: ✭ 151 (-13.22%)
Mutual labels:  verilog
Sha256
Hardware implementation of the SHA-256 cryptographic hash function
Stars: ✭ 160 (-8.05%)
Mutual labels:  verilog
Metroboy
MetroBoy - A playable, circuit-level simulation of an entire Game Boy
Stars: ✭ 169 (-2.87%)
Mutual labels:  verilog
Slang
SystemVerilog compiler and language services
Stars: ✭ 145 (-16.67%)
Mutual labels:  verilog
Tinyfpga B Series
Open source design files for the TinyFPGA B-Series boards.
Stars: ✭ 173 (-0.57%)
Mutual labels:  verilog
Cnn Fpga
使用Verilog实现的CNN模块,可以方便的在FPGA项目中使用
Stars: ✭ 160 (-8.05%)
Mutual labels:  verilog
Sv Parser
SystemVerilog parser library fully complient with IEEE 1800-2017
Stars: ✭ 169 (-2.87%)
Mutual labels:  verilog
Tinytpu
Implementation of a Tensor Processing Unit for embedded systems and the IoT.
Stars: ✭ 153 (-12.07%)
Mutual labels:  verilog
Fpg1
PDP-1 FPGA implementation in Verilog, with CRT, Teletype and Console.
Stars: ✭ 159 (-8.62%)
Mutual labels:  verilog
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-2.87%)
Mutual labels:  verilog
Learning Nvdla Notes
NVDLA is an Open source DL/ML accelerator, which is very suitable for individuals or college students. This is the NOTES when I learn and try. Hope THIS PAGE may Helps you a bit. Contact Me:[email protected]
Stars: ✭ 150 (-13.79%)
Mutual labels:  verilog
Verilog I2c
Verilog I2C interface for FPGA implementation
Stars: ✭ 171 (-1.72%)
Mutual labels:  verilog
Scale Mamba
Repository for the SCALE-MAMBA MPC system
Stars: ✭ 147 (-15.52%)
Mutual labels:  verilog
Kryon
FPGA,Verilog,Python
Stars: ✭ 169 (-2.87%)
Mutual labels:  verilog
Step into mips
一步一步写MIPS CPU
Stars: ✭ 174 (+0%)
Mutual labels:  verilog
Kestrel
The Kestrel is a family of home-made computers, built as much as possible on open-source technology, and supporting as much as possible the open-source philosophy.
Stars: ✭ 171 (-1.72%)
Mutual labels:  verilog
Sdram Controller
Verilog SDRAM memory controller
Stars: ✭ 169 (-2.87%)
Mutual labels:  verilog

Verilog UART Readme

Build Status

For more information and updates: http://alexforencich.com/wiki/en/verilog/uart/start

GitHub repository: https://github.com/alexforencich/verilog-uart

Introduction

This is a basic UART to AXI Stream IP core, written in Verilog with cocotb testbenches.

Documentation

The main code for the core exists in the rtl subdirectory. The uart_rx.v and uart_tx.v files are the actual implementation, uart.v simply instantiates both modules and makes a couple of internal connections.

The UART transmitter and receiver both use a single transmit or receive pin. The modules take one parameter, DATA_WIDTH, that specifies the width of both the data bus and the length of the actual data words communicated. The default value is 8 for an 8 bit interface. The prescale input determines the data rate - it should be set to Fclk / (baud * 8). This is an input instead of a parameter so it can be changed at run time, though it is not buffered internally so care should be used to avoid corrupt data. The main interface to the user design is an AXI4-Stream interface that consists of the tdata, tvalid, and tready signals. tready flows in the opposite direction. tdata is considered valid when tvalid is high. The destination will accept data only when tready is high. Data is transferred from the source to the destination only when both tvalid and tready are high, otherwise the bus is stalled.

Both interfaces also present a 'busy' signal that is high when an operation is taking place. The receiver also presents overrun error and frame error strobe outputs. If the data word currently in the tdata output register is not read before another word is received, then a single cycle pulse will be emitted from overrun_error and the word is discarded. If the receiver does not get a stop bit of the right level, then a single pulse will be emitted from the frame_error output and the received word will be discarded.

Source Files

rtl/uart.v     : Wrapper for complete UART
rtl/uart_rx.v  : UART receiver implementation
rtl/uart_tx.v  : UART transmitter implementation

AXI Stream Interface Example

two byte transfer with sink pause after each byte

          __    __    __    __    __    __    __    __    __
clk    __/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
                _____ _________________
tdata  XXXXXXXXX_D0__X_D1______________XXXXXXXXXXXXXXXXXXXXXXXX
                _______________________
tvalid ________/                       \_______________________
       ______________             _____             ___________
tready               \___________/     \___________/

Testing

Running the included testbenches requires cocotb, cocotbext-axi, and Icarus Verilog. The testbenches can be run with pytest directly (requires cocotb-test), pytest via tox, or via cocotb makefiles.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].