

Backplane
RV4028 - A hackable Risc-V computer
- Size
- 90 × 100 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 37
- Nets
- 94
- Pads
- 489
- Tracks, vias
- 958, 77
- Pours
- 7
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 24 Oct 2025
- Updated
- 22 Feb 2026
Overview
Backplane is an open-source printed circuit board by MichaelBell, from the MichaelBell/RV4028 repository on GitHub, published under the BSD-3-Clause licence. It is a 4-layer board of 90 × 100 mm with 37 parts on 94 nets, routed with 958 tracks and 77 vias.
It is built around the AP2112K-3.3, WS2812B and KT-0603R, with the USB4500-03-0-A among its other parts. Its parts include 13 capacitors, 6 resistors, 6 diodes, 6 connectors and 1 IC.
Main components
4AP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedWS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorisedKT-0603R
0603-40℃~+85℃ 1.6mm x 0.8mm square LED 1.8V~2.4V 120° 20mA 300mcd 40mW 615nm~630nm 645nm Discrete Diode Red Water Clear 0603 LED Indication - Discrete ROHSHubei KENTO ElecLED Indication - DiscreteUSB4500-03-0-A
SMD-25℃~+85℃ 1 24P 48V 5A Black Female Type-C USB 2.0 SMD USB Connectors ROHSGlobal Connector Technology (GCT)USB Connectors
README
README.mdRV4028 - A hackable Risc-V computer
RV4028 is intended to be a modular Risc-V computer, similar to the excellent RC2014 Z80 homebrew computer.
The idea is to create a minimal Risc-V system that is easy to understand and extend.
The inspiration for this came from @theJPster's post.
All hardware and software are open source and permissively licensed.
Architecture
The system bus has a 32-bit address and 16-bit data, which fits reasonably well with an RV32 system and readily available (P)SRAM chips, and runs at 3.3V.
Modules are attached by an 80-pin dual row header, similar to RC2014 modules but with 2 rows of pins instead of 1. 2mm pitch headers are used instead of 2.54mm, this makes boards slightly smaller (and cheaper), and also avoids the possibility of boards being plugged into RC2014 by mistake.
However, the pinout is chosen such that RC2014 modules might be compatible, if 3v3 capable components are used and a backplane with additional 2.54mm pitch sockets were created. The pinout is also chosen such that modules not requiring access to the full bus can use just a single row.
Software
The intention is to be able to run standard RV32I programs with a C SDK. A Micropython port and Rust support are likely.
It is currently not a goal to support either real time operating systems (although this may be possible in future), or Linux (which would likely not be possible without moving to a larger FPGA).
Initial modules
CPU

Keeping things minimal and simple, we use a Bruno Levy's FemtoRV Quark (RV32I) core with some small modifications, and a wrapper to handle breaking each 32-bit data access into 16-bit accesses. This is the most minimal Risc-V instruction set and can fit in a small FPGA, so we use an ICE40 HX1K, which is available in a 100-pin QFP.
A small flash is required for the FPGA configuration, a header will be provided that will allow the FPGA to be held in reset and the flash programmed. Although it is significantly larger than required, using a 1MB W25Q80DV seems cost effective.
RAM

The two candidates here are PSRAM, such as the IS66WVE, or SRAM such as the CY7C1041G30.
The PSRAM is larger but slower, and the larger capacities only seem available in BGA packages. The linked SRAM is available in TSOP, which may allow for easier assembly.
The current RAM module uses the PSRAM.
ROM
Something like SST39VF3202C looks suitable, and available at the same access speed as the PSRAM (70ns).
ROM might not be required - we can embed a small amount of ROM (6kB) in the CPU gateware which could be enough for a simple SD card driver, allowing a program to be loaded from SD card to RAM without any ROM.
IO

An RP2350B is used for IO. The board should include:
- Two UARTs
- Two I2C broken out to Qw/ST compatible ports
- A micro SD card socket
- An SPI with a couple of chip selects (this should be made easy to connect to the CPU for updating the gateware)
- Some GPIO
8 bits of address should easily be sufficient, and 8 bits of data should also be fine, which allows this to be single row.
I'm tempted to put USB on a couple of the spare backplane pins, so a single USB connection can power the system and be used to communicate with/program the RP2350.
If we also wired clock and reset from the RP2350 then it could provide a clock, meaning a separate clock module would not be required.
Clock
As above, a clock module likely won't be required, but it is a nice educational addition, and would allow the machine to be used without the RP2350 based IO module.
A 14.7456MHz crystal would seem appropriate - double the clock rate of the RC2014. Assuming IS66WVE PSRAM is used, the maximum reliable clock rate of the system should be around 17-18MHz (TBC).
An SN74LVC1GX04 could be used to drive the crystal.
Backplane
USB-C socket, with data wired to spare pins for RP2350 on IO board.
AP2112K for 3.3V supply. 3v3 enable is delayed by a few milliseconds to help with power sequencing on the CPU board (the core power to the FPGA should be applied before IO voltage).
Decoupling caps, LED, reset button. Use surface mount headers for the 2x40 pin connectors, allows all the signals to run above a nice unbroken ground plane, rather than having loads of through holes breaking up the ground planes.
Bus timing
Addresses are always 16-bit aligned and a byte mask is used for single byte stores.
All writes complete in a two cycles. Reads normally complete in two cycles, but wait may be asserted to extend the read cycle.
MREQ is intended to be wired to the (P)SRAM CE, so must be pulsed regularly even if reads are continuous in order to avoid exceeding max CE assertion time on PSRAM. This is acheived by pulsing it high in the first half clock of each read cycle. MREQ remains low at the start of a write cycle in order to support a faster clock speed when used with a IS66WVE.
IORQ is not required as the address space is sufficiently large. It is simply set to ~A31.
LO_ADDR indicates if the address is in the bottom 16MB of the address space, to reduce the amount of address checking logic required on low addressed modules.




Expected RAM implementation
RAM access is controlled by CE, OE, WE and byte selects.
- Address high bits are compared for the chip, CE is never asserted if the address doesn't match
- CE is MREQ
- WE is WR
- OE is RD
- Byte selects are MSK.
Writes are latched by deasserting WE and CE. So a full store instruction that read the instruction and wrote data back to the same RAM chip would look like:

Parts
37| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12 |
| 5 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D1, D2, D3, D4, D5 |
| 5 | ~ | RV4028:Backplane_Header_2mm | J1, J2, J3, J4, J5 |
| 4 | Hole | MountingHole:MountingHole_2.7mm_M2.5_DIN965_Pad | H1, H2, H3, H4 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R3, R6 |
| 2 | 47k | Resistor_SMD:R_0402_1005Metric | R4, R5 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R1, R2 |
| 1 | 1uF | Capacitor_SMD:C_0402_1005Metric | C13 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | KT-0603R | LED_SMD:LED_0603_1608Metric | D6 |
| 1 | RESET | RV4028:SW-SMD_HX-TS-1101-C-W | SW1 |
| 1 | USB-C | RV4028:TYPE-C-SMD_MC-107DJ | J6 |
Questions
How big is the Backplane PCB?
It measures 90 × 100 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Backplane use?
37 parts, built around the AP2112K-3.3, WS2812B, KT-0603R and USB4500-03-0-A. 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 Backplane KiCad files?
From the MichaelBell/RV4028 repository on GitHub, at the commit this page was made from: the board is backplane/backplane.kicad_pcb and its schematic backplane/backplane.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Backplane design in my own project?
Its repository publishes it under the BSD-3-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
More from MichaelBell/RV4028
4- 4 layers84 × 40 mm

- 4 layers84 × 40 mm

- 4 layers84 × 40 mm

- 2 layers16 × 84 mm

Similar boards
- 2 layers45 × 52.5 mm

Caravel breakout fpga ICE40UP5K TT3
TinyTapeout/breakout-pcb
Tiny Tapeout breakout PCBs
234 parts22Apache-2.0 - 2 layers100 × 60 mm

- 2 layers274 × 158 mm

Acacia
jpsecher/keyboards
Goals - Good ergonomics - Good for programming - No drivers - Configurable - Use standard components where possible
127 parts1ISC - 2 layers30 × 51 mm

WasteIndicator
FunDeckHermit/WasteIndicator
Scripts that modify Tasmota to interact with the Ximmio waste API
16 partsMIT - 4 layers104.5 × 81 mm

Tinytapeout demo
KiCad/kicad-source-mirror
This is an active mirror of the KiCad development branch, which is hosted at GitLab (updated every time something is pushed). Pull requests on GitHub are not accepted or watched.
309 parts3.1kGPL-3.0 - 4 layers25 × 16 mm

- 4 layers64 × 43 mm

Dalws
anhldptit2610/dalws
This project is my attempt to learn about microcontroller and PCB design. Now I realize that making a full, complete electronic project is super hard.
83 parts2MIT - 2 layers43 × 20 mm

