

Motherboard
Risc-V pipelined CPU and SoC written in SystemVerilog
- Size
- 183.4 × 143.1 mm
- Copper layers
- 4
- Thickness
- 4.69 mm
- Parts
- 126
- Nets
- 230
- Pads
- 687
- Tracks, vias
- 0, 0
- Routed
- Not yet
- KiCad
- KiCad 6 (file 20211014)
- Created
- 12 Mar 2023
- Updated
- 5 May 2025
Overview
Motherboard is an open-source printed circuit board by apistol78, from the apistol78/rv32 repository on GitHub. It is a 4-layer board of 183.4 × 143.1 mm with 126 parts on 230 nets.
It is built around the RP2040, FE1.1S and SII9022ACNU, with the W25Q128JVSIQ, USBLC6-2SC6 and AZ1117EH-1.2TRG1 among its other parts. Its parts include 54 capacitors, 31 resistors, 13 connectors, 11 ICs and 5 inductors. It belongs with the fPGA and programmable logic and computers and single-board computers boards and the RP2040 and FPGA and CPLD boards of this library.
Main components
9RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)FE1.1S
SSOP-28USB 2.0 USB Hub SSOP-28 USB Converters ROHSTerminus TechUSB ConvertersSII9022ACNU
QFN-72-EP(10x10)-20℃~+85℃ 1.62V~1.98V、3V~3.6V 1.65Gbps I2C Transmitter QFN-72-EP(10x10) Video Interface ICs ROHSLatticeVideo Interface ICsW25Q128JVSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 120ms@(32KB) 128Mbit 133MHz 1uA 2.7V~3.6V 20 Years 3ms Power-on reset、Hardware write protection、Software write protection、Write enable latch、Absolute write protection SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)AZ1117EH-1.2TRG1
SOT-223-40℃~+125℃@(Tj) 0.003%Vout 1 1.1V@(1A) 1.2V 13V 1A 3.5mA 70dB Fixed Over Current Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSDiodes IncorporatedDropout Regulators(LDO)AZ1117EH-3.3TRG1
SOT-223-40℃~+125℃@(Tj) 0.003%Vout 1 1.1V@(1A) 13V 1A 3.3V 3.5mA 70dB@(120Hz)、70dB Fixed Over Current Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSDiodes IncorporatedVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsCS4344-CZZ
TSSOP-10Digital filtering Sigma-Delta TSSOP-10 ADCs/DACs - Special Purpose ROHSCirrus LogicADCs/DACs - Special PurposeIS61LV25616AL-10T
44-TSOP II0℃~+70℃ 100mA 10ns 15mA 3.135V~3.63V 4Mbit Auto power-down function Parallel Port (Parallel) 44-TSOP II SRAM ROHSISSISRAM
README
readme.mdMOJO Risc-V CPU and System-on-a-Chip
The MOJO SOC is an educational and fun system for FPGA and "Bare metal" programming experimentations.
It's a RISC-V CPU running at 100 MHz, 32 MiB RAM, audio and 320*200 video resolution.
To make user input easy I've moved USB host functionality to an external PCB using Raspberry Pico as a FPGA <-> HID bridge.
Prerequisites
This project require an install of Traktor to generate required resources. You will also need a RISC-V GCC toolchain compiled and installed at /opt/riscv32/bin on your machine.
How to build
Run build.sh to build host (i.e. Linux) and target products:
./build.shAfter everything has been built you should be able to run the emulators:
./build/linux/ReleaseStatic/Rv32T -elf=./build/rv32/ReleaseStatic/Bootor
./build/linux/ReleaseStatic/Rv32 -elf=./build/rv32/ReleaseStatic/BootCPU
MOJO CPU is a conventional 5-stage (F,D,X,M,W) pipelined RISC-V CPU. It also contain configurable data- and instruction caches.
Written using SystemVerilog and are split up into logical pieces where each stage of the pipeline is in a separate module:
| Module | Description |
|---|---|
| CPU_ALU | ALU unit, fully combinatorial |
| CPU_CSR | CSR control unit |
| CPU_DCache_Comb | Data cache, combinatorial |
| CPU_DCache_Reg | Data cache, registered |
| CPU_DCache_None | Data cache, disabled |
| CPU_Decode | Decode stage |
| CPU_Defines | CPU defines |
| CPU_Divide | Divison wrapper, usually implemented with a vendor IP |
| CPU_Execute | Execute stage |
| CPU_Fetch | Fetch stage |
| CPU_Forward | Register forwarding logic |
| CPU_ICache_Comb | Instruction cache, combinatorial |
| CPU_ICache_Reg | Instruction cache, registered |
| CPU_ICache_None | Instruction cache, disabled |
| CPU_Memory | Memory stage |
| CPU_Multiply | Multiplication wrapper, usually implemented with a vendor IP |
| CPU_Registers | Register file |
| CPU_SkidBuffer | Generalized skid-buffer |
| CPU_Types | CPU types |
| CPU_Writeback | Writeback stage |
Perifherials
A lot of perifherial modules has been implemented as port of the SoC:
| Module | Description |
|---|---|
| AUDIO_controller, AUDIO_i2s_output, AUDIO_pwm_output | PCM based audio modules |
| BRAM | Various block-ram modules |
| BRIDGE | BUS bridge, to separate BUS devices for improved timing. |
| BROM | Block-rom module |
| BusAccess | BUS multiplexed access |
| ClockDivider | Generic clock divider |
| DMA | Direct memory access controller |
| FIFO_BRAM | Block ram backed FIFO |
| FIFO | Register backed FIFO |
| GPIO | General purpose IO controller |
| I2C | I2C controller |
| LED | LED controller |
| PLIC | PLIC interrupt controller |
| RESET | Reset controller |
| SD | SD controller |
| SDRAM_controller | Generic SDRAM controller |
| SRAM_interface | Generic SRAM controller |
| SystemRegisters | System wide register map |
| Timer | Hardware timer with compare |
| UART | UART controller |
| VIDEO_controller | Video output controller |
| VIDEO_VGA | Video VGA signal generator |
| WriteBuffer | Write buffer (queue) with readback or read-through |
System-on-a-Chip
A couple of custom PCBs designed to connect to QM-Tech FPGA boards is the physical basis for MOJO SoC. The SoC support following perifherials:
- HDMI output
- Stereo audio output through PWM and through I2S HDMI.
- SD card interface using 4-bit SD protocol.
- 2 UARTs, one for host and one for HID input.
- Raspberry Pico based USB host to FPGA bridge supporting three external HID devices (keyboard, mouse and gamepad).
Emulators
Two different emulators, one C++ highlevel emulator and one based on Verilator. The highlevel is useful for application development and the other is used for verification of gate level logic.
Runtime
C/C++ runtime library, including a preemptive multithreaded kernel, expose all hardware features to user programs. Support CRT for easy portability.
Schematics
KiCad schematics for all perifherial boards are available and been built using JLCPCB.
Parts
126| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C34, C35, C36, C37, C38, C39, C40, C41, C42, C43, C44 |
| 11 | 100nF | Capacitor_SMD:C_0402_1005Metric | C5, C7, C8, C9, C10, C11, C13, C14, C15, C16, C19 |
| 7 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C28, C29, C30, C31, C45, C46, C51 |
| 6 | 27 | Resistor_SMD:R_0402_1005Metric | R8, R9, R11, R12, R13, R32 |
| 6 | 4.7k | Resistor_SMD:R_0402_1005Metric | R14, R15, R16, R17, R19, R20 |
| 5 | 4k7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R21, R22, R23, R24, R25 |
| 4 | 0.1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C24, C25, C26, C27 |
| 4 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R26, R27, R30, R31 |
| 4 | 27pF | Capacitor_SMD:C_0805_2012Metric | C3, C4, C17, C18 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 4 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP2, TP3, TP4, TP5 |
| 3 | 0.022uH | Inductor_SMD:L_0805_2012Metric_Pad1.15x1.40mm_HandSolder | L2, L3, L4 |
| 3 | 10uF | Capacitor_SMD:C_0805_2012Metric | C21, C22, C23 |
| 3 | 292303-1 | 292303-1:TE_292303-1 | J7, J8, J9 |
| 3 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U4, U5, U6 |
| 2 | 100uF | Capacitor_SMD:CP_Elec_5x5.3 | C2, C33 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R2, R18 |
| 2 | 10uF | Capacitor_SMD:CP_Elec_5x5.3 | C1, C32 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C52, C53 |
| 2 | 12MHz | Crystal:Crystal_SMD_HC49-SD | Y1, Y2 |
| 2 | 1k | Resistor_SMD:R_0805_2012Metric | R1, R6 |
| 2 | 1uF | Capacitor_SMD:C_0402_1005Metric | C6, C12 |
| 2 | 2.7nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C49, C50 |
| 2 | 27 | Resistor_SMD:R_0805_2012Metric | R4, R5 |
| 2 | 3.3uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C47, C48 |
| 2 | 470 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R28, R29 |
| 1 | 0.022uH | Inductor_SMD:L_0805_2012Metric_Pad1.05x1.20mm_HandSolder | L1 |
| 1 | 10uF | Capacitor_SMD:C_0402_1005Metric | C20 |
| 1 | 1uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C54 |
| 1 | 2.7k 1% | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 220uH | Inductor_SMD:L_0805_2012Metric | L5 |
| 1 | 33 | Resistor_SMD:R_0805_2012Metric | R3 |
| 1 | 685119134923 | hdmi connector:685119134923 | J10 |
| 1 | AZ1117EH-1.2TRG1 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U8 |
| 1 | AZ1117EH-3.3TRG1 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | AudioJack3 | Connector_Audio:Jack_3.5mm_CUI_SJ-3523-SMT_Horizontal | J11 |
| 1 | CS4344-CZZ | 2022-04-22_11-49-30:CS4344-CZZ | U11 |
| 1 | FE1.1s | Package_SO:SSOP-28_3.9x9.9mm_P0.635mm | U7 |
| 1 | IS61LV25616AL | Package_SO:TSOP-II-44_10.16x18.41mm_P0.8mm | U10 |
| 1 | Jack-DC | Connector_BarrelJack:BarrelJack_CLIFF_FC681465S_SMT_Horizontal | J13 |
| 1 | LED | LED_SMD:LED_0805_2012Metric | D1 |
| 1 | LEFT | Connector_PinSocket_2.54mm:PinSocket_2x32_P2.54mm_Vertical | J2 |
| 1 | Micro_SD_Card | Connector_Card:microSD_HC_Hirose_DM3D-SF | J4 |
| 1 | RIGHT | Connector_PinSocket_2.54mm:PinSocket_2x32_P2.54mm_Vertical | J1 |
| 1 | RP2040 | rp2040:QFN40P700X700X90-57N | U3 |
| 1 | SII9022ACNU | Package_DFN_QFN:QFN-72-1EP_10x10mm_P0.5mm_EP6x6mm | U9 |
| 1 | SOC_BOOTMODE | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J14 |
| 1 | SOC_NRESET | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J12 |
| 1 | SWD | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J5 |
| 1 | TestPoint_Small | TestPoint:TestPoint_Pad_D1.5mm | TP1 |
| 1 | UART0 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U2 |
More from apistol78/rv32
9- 2 layers129 × 41.9 mm

- 2 layers42.7 × 83.8 mm

- 2 layers47 × 83.8 mm

- 4 layers45.7 × 83.8 mm

- 2 layers38.1 × 83.8 mm

- 2 layers

- 2 layers30.5 × 83.8 mm

- 2 layers68.6 × 99.1 mm

- 2 layers27.4 × 63.2 mm

Similar boards
- 4 layers77 × 71.5 mm

Ksz9031-eval
azonenberg/misc-devboards
Miscellaneous prototype hardware that wasn't major enough to warrant a dedicated repo
173 parts17BSD-3-Clause - 2 layers290.5 × 116.7 mm

Keeby60v2
minhazislamnafi/KEEBY60-20
A moduler 60% mechanical hot-swapble keyboard. With 20% numpad attachment will form a proper 80% keyboard
237 partsCERN-OHL-S-2.0 - 4 layers91.4 × 102.9 mm

FPGC4IOboard
bartpleiter/FPGC5
A completely self designed (game) computer, implemented in hardware using an FPGA. Basically every component is self designed, from the ISA up to the PCB and software.
150 parts6GPL-3.0 - 8 layers68 × 67.8 mm

Reform kintex
kitspace-forks/reform-kintex-som
This is the open hardware system-on-module featuring the Xilinx/AMD Kintex-7 FPGA (XC7K160T or XC7K325T) and 2GB DDR3 RAM.
297 parts2 - 4 layers70 × 69.8 mm

- 4 layers536.5 × 385.7 mm

- 4 layers50 × 100 mm

BeamBender
jbilander/BeamBender
An open source flicker fixer PCB for Amiga 1200 and 500
104 parts25CC-BY-SA-4.0 - 4 layers109.2 × 47 mm

Arty a7-expansion
antmicro/arty-expansion-board
IO expansion board compatible with Digilent Arty A7
125 parts14Apache-2.0
Questions
How big is the Motherboard PCB?
It measures 183.4 × 143.1 mm and has 4 copper layers, 4.69 mm thick.
What parts does the Motherboard use?
126 parts, built around the RP2040, FE1.1S, SII9022ACNU and W25Q128JVSIQ. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Motherboard KiCad files?
From the apistol78/rv32 repository on GitHub, at the commit this page was made from: the board is schematics/motherboard/motherboard.kicad_pcb and its schematic schematics/hdmi brd/hdmi brd.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Motherboard design in my own project?
Its repository states no licence, so its author keeps all rights: ask apistol78 before reusing the design.