Skip to content
This repository was archived by the owner on Oct 2, 2024. It is now read-only.

samblenny/ocfpga

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

141 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ocfpga

Notes on OrangeCrab 85F ECP5 fpga dev board experiments.

OrangeCrab, Tigard, and logic analyzer with simplified wiring

Experiments

Documentation & Downloads

OrangeCrab Software

  • Gateware: Github orangecrab-fpga/production-test-sw: Software, firmware, and gateware for OrangeCrab test fixture (probably a good starting point to understand how DFU boot mode works). The prebuilt directory has prebuilt bootloader and firmware images. The current 85F prebuilt bootloader is from 2021. Based on 1BitSquared #orangecrab Discord (Feb 2024), it has a file size limit carried over from the 25F bootloader, so fully utilizing the gateware capacity of an r0.2.1 85F probably requires a patched bootloader to be flashed over jtag.

  • Examples: Github orangecrab-fpga/orangecrab-examples: Example projects and code for OrangeCrab (probably good starting point for learning how to build riscv SoCs with Litex or Amaranth)

  • Old CircuitPython Example: Github gregdavill/circuitpython (orangecrab branch): 4 year old CircuitPython port for OrangeCrab (likely broken or incomplete? but it has interesting Litex stuff.)

  • Bootloader: Github gregdavill/foboot (OrangeCrab branch): OrangeCrab bootloader based on the Fomu bootloader. See notes above about prebuilt bootloader and firmware files in orangecrab-fpga/production-test-sw.

  • ecpprog: Github gregdavill/ecpprog: ECP5 JTAG programmer that works with FTDI-based JTAG probes (including the FT2232H).

  • openOCD config (OrangeCrab): Github orangecrab-hardware/contrib/openocd/orangecrab-85f.cfg: openOCD config for OrangeCrab 85F with FTDI JTAG probe. This config is set up for USB device 0403:6010, which is the default product ID for the FTDI FT2232H/D (source: FTDI's Utilities page, search for "6010").

  • openOCD config (Tigard): Gitub tigard-tools/tigard/README.md: The main README includes an openOCD config for Tigard JTAG (compare to the OrangeCrab openOCD config above).

OrangeCrab Hardware

Related ECP5 Boards

ECP5 EDA Tools

  • YosysHQ (Github): Open Source EDA CAD suite with projects including Yosys, nextpnr, and Project Trellis

  • YosysHQ/yosys (Github): Open RTL synthesis tools to translate Verilog and SystemVerilog into RTL. (Litex depends on this)

  • YosysHQ/nextpnr (Github): Portable FPGA place and route tool to translate RTL into an FPGA-specific bitstream.

  • YosysHQ/prjtrellis (Github): Documentation for Lattice ECP5 bitstream format and internal architecture. This may be useful for learning about which ECP5 features are available in nextpnr and how to make use of them.

  • danderson/ulxs LPF file format specification (Github): Notes on using Lattice Preference File (LPF) file format to tell nextpnr how to configure the ECP5 FPGA. This was cited on 1BitSquared #orangecrab Discord as a good source of info on configuring pin drive strength and slew rate.

RISC-V Compiler Toolchains

  • Embecosm Tool Chain Downloads: Prebuilt RISC-V toolchains with GNU binutils, gcc or clang compiler, gdb, and Newlib C standard library.

  • embecosm/embecosm-toolchain-releases (Github): Build scripts and related dependencies for Embecosm toolchains. This could be useful as a reference for building C standard libraries for specific RISC-V instruction set extension combinations.

Lattice (ECP5 family datasheets and guides)

Where to Buy

These links are for the OrangeCrab 85F, which uses the 85F variant of the Lattice ECP5 fpga. There is also an OrangeCrab 25F. If you want to reproduce experiments in this repo, keep in mind that I'm using an OrangeCrab r0.2.1 85F.

Licenses

This repository is structured as a lab notebook describing (hopefully) reproducible experiments with FPGA gateware and firmware. As such, there are files of different types, from different sources, and with different licenses.

In general, files in this repository mostly fit into four categories:

  1. My "MIT OR CC-BY-SA-4.0" stuff: lab notes that may include code snippets

  2. My "MIT" stuff: source code, documentation, build files, and prebuilt binaries for software, such as firmware to run on an RV32 CPU

  3. My "CERN-OHL-P-2.0", "ISC", or "Apache-2.0" stuff: source code, documentation, build files, and prebuilt binaries for hardware design specifications, such as pin constraint files and Verilog peripherals. For things that I write to extend a soft CPU that somebody else wrote, I try to match the original license.

  4. Other people's openly-licensed stuff: files copyrighted by people who are not me (e.g. prebuilt binaries that I built using MIT-licensed source code and build files from orangecrab-fpga/orangecrab-examples)

For specifics, check the individual files and folders.

My text files should have SPDX license identifier comments at the top (for markdown, view the raw files to see the HTML comments). Files that came from elsewhere should be grouped in a folder next to a LICENSE or README file that explains their origin and licensing.

For plain-text copies of the licenses used in this repo, refer to the LICENSES folder.

About

OrangeCrab ECP5 fpga dev board experiments

Resources

Stars

Watchers

Forks

Contributors