Giter Site home page Giter Site logo

regymm / quasisoc Goto Github PK

View Code? Open in Web Editor NEW
115.0 7.0 8.0 9.89 MB

Linux capable RISC-V SoC designed to be readable and useful.

License: GNU General Public License v3.0

Makefile 3.22% C 40.47% Assembly 8.29% Verilog 34.72% SystemVerilog 1.70% Python 0.13% QMake 0.08% Shell 0.58% Tcl 10.74% C++ 0.06%
fpga risc-v

quasisoc's Introduction

Quasi SoC

RISC-V CPU and rich bunch of peripherals designed to be useful. Runs Linux. Free-software toolchain ready. Prioritize compatibility and easy-to-understand -- if I can write this, you also can.

Build & Run

Boardless start Simulation

Quick start Build & run instructions

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

Functionalities

∂CPU (partial CPU)

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

   *: except amo(max|min)u?
   *: as far as Linux requires

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

Peripherals

  • AXI MIG DDR2/DDR3
  • UberDDR3
  • SDRAM
  • ESP-PSRAM64H (8 MB) QPI mode @ 62.5 M, burst R/W
  • 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)
    • Old good VGA
    • ILI9486 480x320 LCD
  • CH375 USB disk
  • W5500 ethernet module
    • W5500 as MAC with LwIP stack
  • Bus arbitration: Multiple hosts, "DMA"
  • Bus converter: Use AXI 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 with MMU
    • busybox userspace
    • driver for my UART
  • Linux kernel 32-bit No-MMU with uClibc
  • 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
  • xc7a200t @ Nexys Video, main dev platform, with Vivado or OpenXC7 ref
  • xc7z010 PL @ SqueakyBoard, previous 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)
Others
  • xc6slx16 @ Nameless LED controller module, deprecated
  • 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)

Alternative RISC-V Cores

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

Gallery

MMU Linux with Buildroot running on Nexys Video

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

DDR3 module

SDRAM module

SD card module, modified

UART module, heavily modified

The awesome ahead-of-its-years SBI by UltraEmbedded

Computer Organization and Design, where everything started

License

GPL-V3

quasisoc's People

Contributors

regymm avatar

Stargazers

Fran Rodríguez avatar Kerim Turak avatar  avatar Miroslav Tišma avatar Jitesh Nayak avatar astrolemonade avatar Kazumoto Kojima avatar master99 avatar LordCasser avatar Seven7VII avatar Yu Jin avatar  avatar charain avatar  avatar Miao Yuyang avatar zhenwei avatar Poverty avatar 飞 avatar  avatar  avatar __NYA__ avatar  avatar weimingtom avatar 0x2h avatar Marcelo Samsoniuk avatar Mike G avatar Juan Gonzalez-Gomez avatar Yiwei Yang avatar steve hu avatar Alexander Mann avatar Bipin avatar Xiao avatar btwl avatar  avatar  avatar Naseef avatar  avatar  avatar mingzr avatar Chih-Jen Hsu avatar YiChenCityU avatar Wolf Scott avatar Danijel Korent avatar 0sonHo avatar Justin En Hian, Chew avatar Yashas Nagavane Dattatreya avatar  avatar Leon Woestenberg avatar Ahmed Morsi avatar Anuraj R avatar Yusuf Coşgun avatar N.K. avatar Manupa Wickramasinghe avatar Carlos Venegas Arrabé avatar roy1994 avatar  avatar apple avatar Li Keran avatar Bernhard Damberger avatar  avatar leo.chen avatar sarvel avatar  avatar Mohsen Tahmasebi avatar Matheus 'Bois' Souza avatar Wei avatar lawrence avatar Takumi Sueda avatar Dmitrii avatar Suhas Kudlur Viswanath avatar Chandler Klüser avatar  avatar Yuxuan Dai avatar  avatar Rob Wright avatar  avatar Ajin Asokan avatar Paul G avatar Jesse Taube avatar Balint Cristian avatar André Magoga avatar Ângelo Andrade Cirino avatar Rohit Singh avatar  avatar  avatar fatih avatar Laura Kirsch avatar Paulo Henrique Silva avatar Ted Feng avatar Md. Eftakharul  Islam avatar Aidan Dodds avatar Ased Mammad avatar  avatar splinedrive avatar Victor Suarez Rovere avatar  avatar Jiatong Bu avatar Zhang avatar Jevin Sweval avatar Wentao Zhang avatar

Watchers

Jevin Sweval avatar splinedrive avatar  avatar  avatar  avatar  avatar Zhao Zuohong avatar

quasisoc's Issues

What's the plan to update riscv32-linux-nommu?

I met the same case to need riscv32 linux nommu support. Currently, boot the riscv32 nommu kernel successfully, but the the ramfs's init process failed. I have tried to fix it, but not success. So, What's the plan to update those patches, Thanks a lot firstly.

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.