
Endeavour
petrmikheev/endeavour
Endeavour - open-source FPGA board and SoC ==========================================

Endeavour - open-source FPGA board and SoC ==========================================
Endeavour is an open-source printed circuit board by petrmikheev, from the petrmikheev/endeavour repository on GitHub. It is a 2-layer board of 82 × 58 mm with 85 parts on 197 nets, routed with 1,401 tracks and 143 vias.
It is built around the 10M50SAE144C8G, AP63203WU and LM4811MM, with the MCP4728-E/UN, SI5351A-B-GT and AP2114H-2.5TRG1 among its other parts. Its parts include 26 resistors, 18 capacitors, 11 connectors, 10 ICs and 5 switches.
![]() | ![]() |
![]() | ![]() |
What are the practical uses of the device? No practical use. It is a hobby project, I just wanted to do it.
Initially I planned to make a video game optimized specifically for this FPGA board. But now I am considering to skip this step and try to design a more advanced FPGA board.
This project is no longer maintained, superseded by endeavour2.
FPGA
Due to the "I can't solder BGA" limitation there wasn't much choice.
I use 10M50SAE144, Intel MAX10 series, as currently (2024) it is by a huge margin the biggest (50K logic cells) non-BGA FPGA chip and also over all alternatives has the largest number of available IO pins.
RAM
Seems all RAM starting from DDR2 are BGA-only. I chose the biggest available DDR1 chip:
There is an option to use a smaller compatible chip. E.g. AS4C32M16D1 (64MB).
Other chips
Main interfaces
LEDs and buttons
For future extensions
Results:
Used open source IP cores:
wstrb support, changed bus width to 64 bit, and optimized some parts for better fMax. On my FPGA board it works stable at frequency up to 100 MHz (i.e. upper bound for throughput is 400 MB/s).Components designed from scratch:
SpinalHDL is used to bring this all together.
There are several clock domains in the design:
Pixel clock and TMDS clock are generated by internal PLL. CPU and RAM clocks are generated by Si5351A chip that is configured on startup via I2C.
Address map
See details in endeavour_defs.h.
0x00001000 - 0x0000100B | UART controller |
0x00002000 - 0x00002007 | Audio controller |
0x00003000 - 0x0000301F | SD card controller |
0x00004000 - 0x0000402B | LEDs, keys, timer, frequency control |
0x00009000 - 0x00009017 | Video controller |
0x0000A000 - 0x0000A05B | OHCI controller |
0x04000000 - 0x07FFFFFF | PLIC |
0x40000000 - 0x40001FFF | BIOS ROM (8 KB) |
0x40002000 - 0x40003FFF | Internal RAM (8 KB) |
0x80000000 - 0x87FFFFFF | External RAM (128 MB) |
Initializes text video mode, runs memtest, initializes sdcard, loads bootsector and starts bootloader. Provides UART console for debugging. Provides a few functions like printf/sscanf (see at the end of endeavour_defs.h).
Bootloader with EXT2 filesystem support. Built-in console allows to set screen resolution and wallpaper (only 16bit BMP supported), view text files, run files in M mode, load and run linux kernel in S mode. Implements riscv timer SBI extension.
Contains linux kernel config and drivers for UART, SD card, and display (audio driver currently not implemented).
Text-based window manager. Features:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 1uF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C7, C8, C13, C14, C15, C21 |
| 4 | 1.5K | Resistor_SMD:R_0603_1608Metric | R15, R16, R18, R19 |
| 4 | 15K | Resistor_SMD:R_0603_1608Metric | R8, R12, R13, R14 |
| 3 | 1K | Resistor_SMD:R_0603_1608Metric | R2, R7, R26 |
| 3 | 1M | Resistor_SMD:R_0603_1608Metric | R24, R25, R31 |
| 3 | 350 | Resistor_SMD:R_0603_1608Metric | R4, R5, R6 |
| 2 | , | ||
| 2 | 0 | Resistor_SMD:R_0603_1608Metric | R29, R30 |
| 2 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C10, C19 |
| 2 | 100uF | Capacitor_Tantalum_SMD:CP_EIA-3528-12_Kemet-T | C5, C6 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric | C9, C12 |
| 2 | 25MHz | endeavour_footprints:XTAL_ECS-120-20-3X-TR | Y2, Y3 |
| 2 | 27pF | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | 5.1K | Resistor_SMD:R_0603_1608Metric | R22, R23 |
| 2 | 560 | Resistor_SMD:R_0603_1608Metric | R10, R11 |
| 2 | LED2 | LED_SMD:LED_0603_1608Metric | D2, D4 |
| 2 | Si5351A-B-GT | Package_SO:MSOP-10_3x3mm_P0.5mm | U4, U5 |
| 2 | USB_A | Connector_USB:USB_A_Receptacle_GCT_USB1046 | J6, J7 |
| 1 | 10K | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 10M50SAE144 | Package_QFP:EQFP-144-1EP_20x20mm_P0.5mm_EP8.93x8.7mm | U1 |
| 1 | 12K | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 12MHz | endeavour_footprints:XTAL_ECS-120-20-3X-TR | Y1 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C20 |
| 1 | 4.7uH | Inductor_SMD:L_0603_1608Metric | L1 |
| 1 | 47uF | Capacitor_SMD:C_0603_1608Metric | C11 |
| 1 | 75 | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | AP2114H-2.5TRG1 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U8 |
| 1 | AP63203WU | Package_TO_SOT_SMD:TSOT-23-6 | U7 |
| 1 | AS4C64M16D1 | endeavour_footprints:TSOP66-400 | U3 |
| 1 | Conn_01x03_Socket | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J9 |
| 1 | Conn_01x04_Socket | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J8 |
| 1 | Conn_02x03_Odd_Even | Connector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_Vertical | J11 |
| 1 | Conn_02x05_Odd_Even | Connector_PinSocket_2.54mm:PinSocket_2x06_P2.54mm_Vertical | J10 |
| 1 | FT2232HL | Package_QFP:LQFP-64_10x10mm_P0.5mm | U11 |
| 1 | FTDI/DIRECT | endeavour_footprints:SW_JS202011SCQN | SW5 |
| 1 | HDMI_A | Connector_HDMI:HDMI_A_Amphenol_10029449-x01xLF_Horizontal | J2 |
| 1 | KC2520Z 100MHz | Oscillator:Oscillator_SMD_Kyocera_KC2520Z-4Pin_2.5x2.0mm | U2 |
| 1 | LED1 | LED_SMD:LED_0603_1608Metric | D1 |
| 1 | LED3 | LED_SMD:LED_0603_1608Metric | D3 |
| 1 | LM4811 | Package_SO:TSSOP-10_3x3mm_P0.5mm | U9 |
| 1 | MCP4728 | Package_SO:MSOP-10_3x3mm_P0.5mm | U6 |
| 1 | Micro_SD_Card_Det2 | Connector_Card:microSD_HC_Molex_104031-0811 | J5 |
| 1 | PB400EEQR1BLK | endeavour_footprints:PB400EEQR1BLK_EWI | SW4 |
| 1 | Push1 | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | Push2 | Button_Switch_THT:SW_PUSH_6mm | SW2 |
| 1 | SJ-3523-SMT | endeavour_footprints:SJ-3523-SMT_CUD | J4 |
| 1 | SWx02 | endeavour_footprints:SW_219-2MSTR | SW6 |
| 1 | UART | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J1 |
| 1 | USB_C_Receptacle_USB2.0 | endeavour_footprints:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J3 |
| 1 | snd_power | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm | JP1 |
The 81 most common of 85 parts.

petrmikheev/endeavour
Endeavour - open-source FPGA board and SoC ==========================================




grantek/minisynth32
A 3D-printable MIDI synthesiser inspired by the Roland MT-32 and clumsyMIDI, and powered by the mt32-pi MT-32 emulator.

Demetrius-Ross/SimMonitor
Rename the main script to main.py '''bash mv espnowsenderrelay.py main.py '''

iandodson/DEN161_GameControllerDesign
Design and full report for a video game controller using an Arduino Micro

rustbox/router
Use ARJM11C7-502-KB-EW2 on mouser Tab up, so would have to be placed on the reverse side of the PCB $3.09 @ 10

It measures 82 × 58 mm and has 2 copper layers, 1.6 mm thick.
85 parts, built around the 10M50SAE144C8G, AP63203WU, LM4811MM and MCP4728-E/UN. 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.
From the petrmikheev/endeavour repository on GitHub, at the commit this page was made from: the board is hardware/rev2/endeavour.kicad_pcb and its schematic hardware/rev1/endeavour.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask petrmikheev before reusing the design.