Skip to the content
2 layers133.4 × 55.2 mmSynthboard, the printed circuit board in 3D

A musical synthesizer that generates and outputs I2S audio with an FPGA

Size
133.4 × 55.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
51
Nets
38
Pads
174
Tracks, vias
525, 210
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
29 Jan 2026
Updated
15 Aug 2026

Overview

Synthboard is an open-source printed circuit board by SomethingFourier, from the SomethingFourier/FPGA-Musical-Synth repository on GitHub. It is a 2-layer board of 133.4 × 55.2 mm with 51 parts on 38 nets, routed with 525 tracks and 210 vias.

It is built around the 74HC165D and WS2812B. Its parts include 12 resistors, 12 diodes, 12 switches, 6 capacitors and 3 connectors. It belongs with the audio and music and fPGA and programmable logic boards of this library.

Main components

2

README

README.md

FPGA-Musical-Synth

A musical synthesizer based on the iCE40 FPGA that outputs I2S audio.

Video demonstration of sine wave synth: https://youtu.be/_ejQGvuSiI


27 May 2026: Board bring-up is in progress!

The PCBs have been ordered and delivered! All that remains for that part is to bring the boards up and perform PCBA. picture of front of manufactured PCB picture of back of manufactured PCB


29 April 2026: Key Input PCB design complete!

The PCB for the input module has been completed. Each module represents 1 octave (12 keys). We decided to use shift registers to read key input in parallel and send out that data to the FPGA as serial (PISO). This provides a few advantages over other methods of key input:

  1. Fixed # of FPGA Pins: We use a fixed number of pins on the FPGA for key input, regardless of how many keys we have.
  2. Daisy Chaining: Shift registers can be daisy-chained to create a long line of parallel input with just one serial output. To take advantage of this, we designed the modules to daisy chain together, with each additional module in the line giving the user an additional octave.
  3. No Wasted PCBs: PCB minimum order quantities (often 5) do not produce unused boards because these modules are made to be daisy-chained. If I have to order a minimum of 5 boards, and that's all I want to order, I get 5 octaves for my synth.

top of the key input PCB

The order for this PCB will be placed within a week or two; I am waiting to order it alongside PCBs for a class I'm currently taking. Because this PCB was designed to daisy-chain duplicates together, it was not designed with a place for an FPGA or the development board; that will be a separate module.

Current limitations:
  1. FPGA still only supports one key press at a time.

12 March 2026: Numerically Controlled Oscillator (NCO)

Video demonstration of sine wave synth: https://youtu.be/_ejQGvuSiI8

The synth now makes sine waves by the Numerically-Controlled Oscillator (NCO)! This opens the door to make any kind of wave we want just by updating the ROMs. Additionally, a multi-clock cycle multiplication algorithm has been implemented to save space on the FPGA and take advantage of the 512 master clock cycles between one sample and the next.

Current limitations:
  1. Only supports one key press at a time.

2 Feb 2026: Square Wave Synthesizer

Video demonstration of square wave synth: https://youtu.be/o0nXdgJRZlI

The wave_period_selector method of synthesis used is described by this process:

wave_period_selector sends the half-period of the frequency (musical note) associated with the key pressed to i2s_transmitter. i2s_transmitter sends a square wave via I2S that oscillates every half-period (the one sent to it by wave_period_selector) to an I2S DAC. This generates a square wave at the desired frequency.

The square wave synth only supports one key press at a time. If multiple keys are pressed, the key that gets checked first in wave_period_selector is the note that gets played. Further, due to the nature of this synthesis, this only supports square waves.


Hardware:

  1. pico2-ice development board
  2. Adafruit I2S 3W Class D Amplifier

Software Tools:

1. RTL Synthesis:

OSS-CAD-SUITE is being used for iCE40 synthesis, Place-and-Route, as well as packing.

2. Simulation:

Icarus Verilog (iverilog) is being used for test bench simulation and other debugging. Verilator may replace icarus if it is decided that it is superior for testbenching this project's verilog modules.

3. HDL:

The FPGA was programmed in SystemVerilog.

Parts

51
QtyValueFootprintReferences
1211kResistor_SMD:R_0805_2012MetricR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12
12SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PlateSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12
12WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12
60.1 µFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C6
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
274HC16574HC165D_653:SOIC127P600X175-16NU1, U2
1Connect to Lower ModuleConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_HorizontalJ2
1Connect to Upper Module/MotherboardConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_HorizontalJ1
1Modular InputsConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3

Similar boards

  • 4 layers149.9 × 74.2 mmBCD-0o27, the printed circuit board in 3D

    BCD-0o27

    petnica-rac-seminari/BCD-0o27-Tetris

    The BalcCon Cyberdeck 0o27 (BCD-0o27) comes with a development framework that makes it easier to add functionality to the cyberdeck.

    142 parts1
  • 2 layers201.8 × 201.8 mmChess board, the printed circuit board in 3D

    Chess board

    Alen1132011/Smart-chess-board

    A physical chess board that can detect the position of chess pieces in real time using Hall effect sensors and provide visual feedback through RGB LEDs.

    266 parts
  • 4 layers136 × 95 mmGamepad PCB, the printed circuit board in 3D

    Gamepad PCB

    pacman314159/Multipurpose_ESP32_Gamepad

    140 parts
  • 4 layers90 × 100 mmMud-16, the printed circuit board in 3D

    Mud-16

    ratmuds/mud-16

    a little retro console with a Motorola 68000 and FPGA PPU

    100 parts
  • 2 layers100 × 80 mmMK74HC-16, the printed circuit board in 3D

    MK74HC-16

    xingrz/MK74HC-16

    78 parts
  • 2 layers114.5 × 45 mmSolderbit gamepad v0.6, the printed circuit board in 3D

    Solderbit gamepad v0.6

    devices-lab/solderbit-gamepad

    Learn-to-solder kit for the BBC micro:bit

    47 parts4GPL-3.0
  • 2 layers60 × 60 mmBase node, the printed circuit board in 3D

    Base node

    koko69420/HomeBus

    Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

    34 parts
  • 11 layers284.7 × 100.3 mmAzimuth PCB, the printed circuit board in 3D

    Azimuth PCB

    MysteryAssss/Keyboard_PCB

    172 parts

Questions

How big is the Synthboard PCB?

It measures 133.4 × 55.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Synthboard use?

51 parts, built around the 74HC165D and WS2812B. 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 Synthboard KiCad files?

From the SomethingFourier/FPGA-Musical-Synth repository on GitHub, at the commit this page was made from: the board is kicad/key_input_module/rev_1/synthboard.kicad_pcb and its schematic kicad/key_input_module/rev_1/synthboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Synthboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask SomethingFourier before reusing the design.