All Projects β†’ regymm β†’ quasiSoC

regymm / quasiSoC

Licence: GPL-3.0 license
No-MMU Linux capable RISC-V SoC designed to be useful.

Programming Languages

c
50402 projects - #5 most used programming language
Verilog
626 projects
assembly
5116 projects
Makefile
30231 projects
SystemVerilog
227 projects
shell
77523 projects

Projects that are alternatives of or similar to quasiSoC

Platformio Core
PlatformIO is a professional collaborative platform for embedded development πŸ‘½ A place where Developers and Teams have true Freedom! No more vendor lock-in!
Stars: ✭ 5,539 (+19000%)
Mutual labels:  fpga, risc-v
Icestation 32
Compact FPGA game console
Stars: ✭ 93 (+220.69%)
Mutual labels:  fpga, risc-v
Darkriscv
opensouce RISC-V cpu core implemented in Verilog from scratch in one night!
Stars: ✭ 1,062 (+3562.07%)
Mutual labels:  fpga, risc-v
Cores Swerv
SweRV EH1 core
Stars: ✭ 406 (+1300%)
Mutual labels:  fpga, risc-v
Biriscv
32-bit Superscalar RISC-V CPU
Stars: ✭ 208 (+617.24%)
Mutual labels:  fpga, risc-v
Firesim
FireSim: Easy-to-use, Scalable, FPGA-accelerated Cycle-accurate Hardware Simulation in the Cloud
Stars: ✭ 415 (+1331.03%)
Mutual labels:  fpga, risc-v
Cores Swerv El2
SweRV EL2 Core
Stars: ✭ 79 (+172.41%)
Mutual labels:  fpga, risc-v
getting-started
List of ideas for getting started with TimVideos projects
Stars: ✭ 50 (+72.41%)
Mutual labels:  fpga, risc-v
Tang e203 mini
LicheeTang θœ‚ιΈŸE203 Core
Stars: ✭ 135 (+365.52%)
Mutual labels:  fpga, risc-v
Neorv32
A small and customizable full-scale 32-bit RISC-V soft-core CPU and SoC written in platform-independent VHDL.
Stars: ✭ 106 (+265.52%)
Mutual labels:  fpga, risc-v
Riscv
RISC-V CPU Core (RV32IM)
Stars: ✭ 272 (+837.93%)
Mutual labels:  fpga, risc-v
FPGAmp
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)
Stars: ✭ 190 (+555.17%)
Mutual labels:  fpga, risc-v
simple-riscv
A simple three-stage RISC-V CPU
Stars: ✭ 14 (-51.72%)
Mutual labels:  fpga, risc-v
Riscv Cores List
RISC-V Cores, SoC platforms and SoCs
Stars: ✭ 471 (+1524.14%)
Mutual labels:  fpga, risc-v
super-miyamoto-sprint
Homebrew game for homebrew FPGA game console
Stars: ✭ 48 (+65.52%)
Mutual labels:  fpga, risc-v
Ustc Rvsoc
FPGA-based RISC-V CPU+SoC.
Stars: ✭ 77 (+165.52%)
Mutual labels:  fpga, risc-v
yarvi
Yet Another RISC-V Implementation
Stars: ✭ 59 (+103.45%)
Mutual labels:  fpga, risc-v
KyogenRV
The Simple 5-staged pipeline RISC-V written in chisel3 for intel FPGA.
Stars: ✭ 37 (+27.59%)
Mutual labels:  fpga, risc-v
Riscboy
Portable games console, designed from scratch: CPU, graphics, PCB, and the kitchen sink
Stars: ✭ 103 (+255.17%)
Mutual labels:  fpga, risc-v
Icicle
32-bit RISC-V system on chip for iCE40 and ECP5 FPGAs
Stars: ✭ 234 (+706.9%)
Mutual labels:  fpga, risc-v

Quasi SoC

Crappy RISC-V CPU and fancy peripherals designed to be useful. No-MMU Linux capable. Free-software toolchain ready. Prioritize compatibility and easy-to-understand -- if I can write this, you also can.

βˆ‚CPU (partial CPU)

  • Multiple-cycle RISC-V RV32IMA* Zicsr* @ 62.5 MHz, ~0.27 CoreMark/MHz
  • M-mode, interrupt, exception*
    • Core local interrupt controller(CLINT, for mtime and software interrupt)
    • Platform-level interrupt controller(PLIC, for external interrupt)
  • U-mode*
  • Memory-mapped IO bus
    • with arbitration and DMA
  • Cache, direct mapping(configurable, 32 KB default)

   *: except amo(max|min)u?
   *: may not be exactly standard, stuffs like vectored interrupt not supported
   *: stuffs like illegal instruction not supported
   *: only MPP field in mstatus, which is enough

Future plan
  • Illegal instruction/load/store exception
  • Bus arbitrationDMA
  • DMA
  • Optimize memory access cycles
  • U-mode memory protection (like PMP?)
  • Sv32 MMU
  • S-mode
  • GDB debug over openocd JTAG
  • faster M instructions
  • amo(max|min)u? (Linux doesn't use, not planned)
  • IO bus w/ burst (hard, not planned)
  • PMP (not planned)
  • Formal verification (not planned)
  • Pipeline (not planned)

Peripherals

  • ESP-PSRAM64H (8 MB) QPI mode @ 62.5 M, burst R/W
  • SDRAM
  • GPIO (LEDs, buttons, switches)
  • UART (115200/921600/1843200 baud), boot from UART, rest from UART
  • SD card (SPI mode, SDHC)
  • PS/2 keyboard
  • PS/2 mouse
  • Graphics
    • HDMI, character terminal, frame buffer graphics(320x240 8-bit color, 640x480 2-bit monochrome)
      • Quality of life fixes
    • Old good VGA
    • ILI9486 480x320 LCD
      • Refresh rate upgrade
  • CH375 USB disk
  • W5500 ethernet module
    • W5500 as MAC with LwIP stack
  • Bus converter: Use AXI/Wishbone peripherals
  • Hart transplant: Use other RISC-V cores with my peripherals
  • Xeno transplant: Use ARM or x86 cores with my peripherals
Future plan
  • Internet connectivity
    • LAN8720 module w/ RGMII PHY (need FPGA MAC)
    • ESP8266/ESP32 Wifi module (Boring and assaulting)
    • ENC28J60
    • LwIP stack
  • USB capability
    • Host controller, like SL811
    • USB3300/TUSB1210 ULPI PHY (need FPGA host)
    • Driver for classes(HID, HUB, Mass Storage)

Software

  • Linux kernel 32-bit No-MMU uClibc
    • busybox userspace
    • driver for my UART
  • MicroPython port
Misc
  • Standard RISC-V toolchain and ASM/C programming for RV32IM Newlib
  • Basic RISC-V tests
  • CoreMark performance approx. 0.27 CoreMark/MHz
  • Fancy but very slow soft renderer
  • Bad Apple!! on LCD(low quality)
  • Bad Apple!! on HDMI

Boards & FPGAs

Xilinx 7 series
  • xc7z010 PL @ SqueakyBoard, main dev platform ref
  • xc7z020 PL @ PYNQ-Z1 w/ extension PMOD module ref
  • xc7k325t @ Memblaze PBlaze 3 w/ extension board ref
  • xc7a100t @ Nexys A7 on USTC FPGAOL, SW/LED/UART/UARTBOOT Instructions
  • Xilinx 7-series w/ Symbiflow (partial)
Xilinx Spartan 6
  • xc6slx16 @ Nameless LED controller module
Others
  • ep4ce15 @ QMTech core board w/ SDRAM ref
  • ep2c35 @ Cisco HWIC-3G-CDMA router module ref
  • lfe5u-12f @ mystery module
  • K210 or some other hardcore RISCV
  • lfe5u or iCE40 w/ free software toolchain(Symbiflow, icestorm)

Build & Run

Quick start
Build & run instructions

Free-as-in-freedom
Free software toolchain -- SymbiFlow(Vivado-free!)

Linux Kernel

At least you saw a fancy kernel panic.
It's hacky and dirty(TODO)

Alternative RISC-V Cores

Use other RISC-V cores with Quasi SoC peripherals. Currently supports PicoRV32.
Hart Transplant

Gallery

Linux kernel and busybox, 8 MB RAM is enough for everything.

Pingo soft renderer of Viking room, with testing color strips, on HDMI monitor.

Pingo soft renderer on HDMI frame buffer

Ported MicroPython, on HDMI monitor.

MicroPython on HDMI character terminal

CoreMark benchmarking, serial port.

CoreMark benchmarking

Credits

Many peripherals' code are based on other's work. If I miss something please point out.

HDMI module, modified

HDMI module

SD card module, modified

UART module, heavily modified

Computer Organization and Design, where everything started

License

GPL-V3

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].