Skip to the content
2 layers104.1 × 71.1 mmMinifp, the printed circuit board in 3D

This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

Size
104.1 × 71.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
69
Nets
176
Pads
440
Tracks, vias
763, 151
Pours
5
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
17 Jul 2022
Updated
11 Nov 2023

Overview

Minifp is an open-source printed circuit board by eigenco, from the eigenco/frankenpi repository on GitHub. It is a 2-layer board of 104.1 × 71.1 mm with 69 parts on 176 nets, routed with 763 tracks and 151 vias.

It is built around the ICE40HX4K-TQ144, AMS1117-1.2 and AMS1117-3.3, with the IS61WV10248EDBLL-10TLI and K66X-E15S-N among its other parts. Its parts include 22 capacitors, 21 resistors, 4 ICs, 4 connectors and 1 crystal. It belongs with the FPGA and CPLD boards of this library.

Main components

5

README

README.md

frankenpi

This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

What is currently implemented (to some degree), i.e. PC can access through ISA

  • Mass storage access from a file on the Raspberry Pi (written sectors are flushed every 2 seconds by default)
  • Adlib output to optical SPDIF
  • Sound Blaster 8-bit mono with DMA and IRQ (basic functions only), output to optical SPDIF
  • Gravis Ultrasound (basic wavetable only), output to optical SPDIF
  • Roland MT-32 (UART only), output to optical SPDIF
  • USB mouse plugged into the Raspberry Pi will appear as a kind of serial mouse in DOS, custom ctmouse driver is provided (start with /v)
  • Boot from custom TVGA9000i VGABIOS, i.e. no other devices are required to be present in the ISA bus besides FrakenPi and VGA-adapter

Youtube links:

https://www.youtube.com/watch?v=1ej76w8sHxY

https://www.youtube.com/watch?v=CkwgHHmKaSI

TESTED and working:

  • Wolfenstein 3D (SB & Adlib)
  • Second Reality (GUS)
  • Scream Tracker 3.21 (SB1 and GUS)
  • Skyroads (SB & Adlib)
  • Keen 4 (Adlib)
  • Monkey Island (Adlib/MT32/Mouse)
  • Space Quest 3 (Adlib/Mouse)
  • Space Quest 4 (Adlib/MT32/Mouse)
  • Lotus 3 (Adlib)
  • Lemmings (Adlib/Mouse)
  • Eye of the Beholder I & II (Adlib/Mouse)
  • Indiana Jones and the Fate of Atlantis (Adlib/MT32/Mouse)

Planned

  • General MIDI
  • MPU-401 support
  • Sound Blaster AWE32 wavetable support
  • Standard ATA at ports 1f0h-1f7h
  • Compatibility improvements
  • Boot ROM in the FPGA so hacked VGABIOS isn't required
  • VGA output

Used resources

  • Harddisk: ports 170h-171h
  • SoundBlaster: ports 22ah-22eh corresponding ot base address of 220h, IRQ 7 and DMA 1
  • MT32: 330h-331h
  • Gravis Ultrasound: ports 341h-347h corresponding to base address of 240h
  • Adlib: ports 388h-389h (standard)
  • Mouse: port 3f8h and IRQ 4 (COM1)
  • Bootcode for custom int 13h resides in hacked VGABIOS at the end of C0000-C7FFF memory region

Further explanation

  • Outgoing port operations are transferred from the FPGA to the Raspberry Pi GPIO using dedicated unidirectional 8-bit data bus
  • Incoming data from the Raspberry Pi GPIO (PCM, harddisk, mouse) is transferred using dedicated unidirectional 8-bit data bus
  • Raspberry Pi: CPU0 handles hdd flushing and mouse, CPU1 handles GPIO transfers, CPU2 handles Adlib, Gravis Ultrasound and MT32 (software selected)
  • Raspberry Pi operates with CPU1-CPU3 in isolated mode, all CPUs run at constant 1 GHz and sched_rt_runtime_us is -1
  • Raspberry Pi generates sound data 64 samples at a time (16-bit stereo corresponds to 256 bytes it must transfer every 1.45ms or so)
  • SPDIF is running in 24-bit 44100 Hz Stereo
  • Hardcoded harddisk type is CHS 256/16/63, i.e. approx. 126MiB

Plan for the next PCB

  • ICE40HX8K-CT256 (FPGA) seems to be available at Mouser
  • IS61WV102416FBLL-10TLI (2 MByte SRAM) seem to be available at Mouser
  • Created KiCAD project (PCB_v2)

Parts

69
QtyValueFootprintReferences
18100nCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C5, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20 +2
17, , , , , , , , , , , , , , , +1
61k1Resistor_SMD:R_0603_1608MetricR2, R3, R9, R10, R16, R17
410uCapacitor_SMD:C_0603_1608MetricC201, C202, C203, C204
318kResistor_SMD:R_0603_1608MetricR7, R14, R21
31kResistor_SMD:R_0603_1608MetricR1, R8, R15
32k2Resistor_SMD:R_0603_1608MetricR4, R11, R18
34k3Resistor_SMD:R_0603_1608MetricR5, R12, R19
39k1Resistor_SMD:R_0603_1608MetricR6, R13, R20
1830207044109BasicISA8:830207044109Y1
1AMS1117-1.2Package_TO_SOT_SMD:SOT-223-3_TabPin2U602
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U601
1Bus_ISA_8bitBasicISA8:Conn_Bus_ISA8J1
1Conn_02x08_Odd_EvenConnector_PinHeader_1.27mm:PinHeader_2x08_P1.27mm_VerticalJ2
1ICE40HX4K-TQ144Package_QFP:TQFP-144_20x20mm_P0.5mmU2
1IS61WV10248EDBLL-10TLIMODELS:SOP80P1176X120-44NIC1
1K66X-E15S-NBasicISA8:K66XE15SNJ401
1Raspberry_Pi_2_3Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ4

More from eigenco/frankenpi

3
  • 2 layers104.1 × 71.1 mmMinifp, the printed circuit board in 3D

    Minifp

    eigenco/frankenpi

    This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

    49 parts139
  • 2 layers102.8 × 73.8 mmCPU, the printed circuit board in 3D

    CPU

    eigenco/frankenpi

    This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

    18 parts139
  • 2 layersFPGA, the printed circuit board in 3D

    FPGA

    eigenco/frankenpi

    This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

    3 parts139

Similar boards

  • 4 layers173 × 134 mmCha, the printed circuit board in 3D

    Cha

    DocteurPCB/SDAES

    SD to AES project

    117 parts
  • 4 layers181.5 × 182.3 mmStencil, the printed circuit board in 3D

    Stencil

    jerry-kerenzikov/ytterbium

    Project files for Ytterbium modular CPU platform and Yprog programming tool

    421 partsCERN-OHL-S-2.0
  • 4 layers70 × 78 mm2067-Z8S180, the printed circuit board in 3D

    2067-Z8S180

    johnwinans/2067-Z8S180

    Z8S180 Breakout Board

    13 parts7
  • 4 layers85.3 × 78 mm2067-Z8S180, the printed circuit board in 3D

    2067-Z8S180

    dennowiggle/Z8S180-WTM

    Repository for sharing Z8S180-WTM design changes only. A private repository.

    53 parts1LGPL-2.1
  • 2 layers100 × 100 mmRamRomBoard, the printed circuit board in 3D

    RamRomBoard

    roberto314/Unicomp3

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    97 partsBSD-2-Clause
  • 2 layers78 × 60 mmIce viz, the printed circuit board in 3D

    Ice viz

    muni-works/vcad

    BRep CAD kernel in Rust/WASM

    44 parts442Apache-2.0
  • 2 layers94.5 × 74.4 mmAx58100-stm32-ethercat, the printed circuit board in 3D

    Ax58100-stm32-ethercat

    MetalMusings/MyOwnEtherCATDevice

    Documentation accompanying the "Make My Own EtherCAT device" video serie on Youtube.

    184 parts93
  • 2 layers101.6 × 147.3 mmKarabas pro revER, the printed circuit board in 3D

    Karabas pro revER

    andykarpov/karabas-pro

    FPGA based retrocomputer with FDD and HDD controllers

    223 parts37MIT

Questions

How big is the Minifp PCB?

It measures 104.1 × 71.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Minifp use?

69 parts, built around the ICE40HX4K-TQ144, AMS1117-1.2, AMS1117-3.3 and IS61WV10248EDBLL-10TLI. 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 Minifp KiCad files?

From the eigenco/frankenpi repository on GitHub, at the commit this page was made from: the board is ice40HX4K/minifp.kicad_pcb and its schematic KiCad/CPU.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Minifp design in my own project?

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