Giter VIP home page Giter VIP logo

riscv_sbc's Introduction

RISC-V SBC based around the LambaConcept USB2Sniffer FPGA board

Github: https://github.com/ultraembedded/riscv_sbc

Intro

This repo contains a working RISC-V based Single Board Computer project based around the LambaConcept USB2Sniffer FPGA board. USB2Sniffer

The board is available for purchase on the LambdaConcept shop;
https://shop.lambdaconcept.com/home/35-usb2-sniffer.html

The USB2Sniffer is designed to be used as a USB 2.0 capture device, or as a development board for USB 2.0 IP designs.
It has plenty of fast DDR3 RAM and SPI-Flash, as well as USB 2.0 (Host + Device) and USB 3.0 (high speed FIFO) interfaces.

It can be repurposed as a single board computer (SBC) for running RISC-V Linux with both USB 2.0 host and USB 2.0 device support!

HW Features

Annotated

Getting Started

Cloning

To clone this project and its dependencies;

git clone --recursive https://github.com/ultraembedded/riscv_sbc.git

IP Designs Used

Most of the IP cores used in this project are designed by myself and available as easy to follow open-source Verilog modules. The remainder (DDR3, CDC, PLL) are IP cores built with Xilinx Vivado.

Name Description Provider
riscv_top 32-bit RISC-V CPU or Dual Issue RV32 -
usb_host Basic USB Host -
ulpi_wrapper ULPI PHY Interface -
core_soc Peripherals - UART, SPI, GPIO -
dbg_bridge UART to AXI bus master -
spiflash SPI-Flash XIP -
usb_serial USB Device UART -
mig_axis.xci MIG DDR3 Controller Xilinx
axi_cdc_buffer.xci AXI4 Clock Domain Converter Xilinx
axilite_cdc_buffer.xci AXI4-Lite Clock Domain Converter Xilinx

Current Status

  • DDR3, SPI-Flash, ULPI interfaces now working.
  • RISC-V CPU booting Linux RV32 5.0 kernel to BusyBox userspace.
  • Option of USB Serial port implemented in the FPGA fabric for Linux console access (connected via USB micro port).
  • Option of Linux console / debug output via UART connector (@ 1M baud).
  • USB Host port working under Linux (mounting USB storage devices).
  • Initial Verilog source released.
  • Prebuilt bitstream added to 'bitstreams' folder.
  • More instructions to come...

asciicast

Prebuilt Images

A prebuilt FPGA bitstream and series of bootloaders are provided in the bitstreams directory.

These can be flashed onto the board with a Vivado supported programmer using the provided makefile / Vivado TCL;

# Make sure vivado tools are available in the shell path....

# Create a MCS file containing the bitstream and various bootloaders
# This creates riscv_sbc.mcs
cd bitstreams
make create_mcs

# Program riscv_sbc.mcs onto the onboard SPI-Flash
make program_flash

The SPI-Flash device is expected to contain the following files;

Offset File Description
0x00000000 fpga.bit FPGA bitstream.
0x00300000 primary_boot.bin Bootloader copies Flash 0x00400000 - 0x0040FFFF to 0x80000000 and jumps to it.
0x00400000 secondary_boot.bin Bootloader for Linux. Copies Kernel from FLASH to RAM.
0x00500000 config.dtb Linux Device Tree Blob (output from dtc).
0x00600000 vmlinux.bin Linux Kernel binary.

riscv_sbc's People

Contributors

ultraembedded avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.