Skip to the content
PCBKitNew board
4 layers48 × 26.2 mmMm2, the printed circuit board in 3D

ROM and RAM Resources for the HP-71B

Size
48 × 26.2 mm
Copper layers
4
Thickness
1.6 mm
Parts
50
Nets
72
Pads
258
Tracks, vias
578, 76
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
27 May 2026
Updated
31 Oct 2026

Overview

Mm2 is an open-source printed circuit board by mafleming, from the mafleming/MultiMod-II repository on GitHub, published under the BSD-3-Clause licence. It is a 4-layer board of 48 × 26.2 mm with 50 parts on 72 nets, routed with 578 tracks and 76 vias.

It is built around the ICE40UP5K-SG48ITR50, W25Q128JVSIQ and CD40109BPWRE4. Its parts include 17 resistors, 13 capacitors, 8 ICs, 3 connectors and 2 diodes. It belongs with the FPGA and CPLD boards of this library.

Main components

3

README

README.md

HP-71B MultiMod II Repository

MultiMod II, ROM and RAM Storage for the HP-71B

The MultiMod II is a follow-on development of the MultiMod ROM Emulator for the HP-71B handheld computer. The MultiMod was based on a Microchip PIC processor that stored ROM images in its flash memory and made those ROMs accessible to the HP-71B operator. However, the MultiMod could not provide RAM memory.

The MultiMod II is based on a Lattice iCE40UP5K FPGA with 128KB of single port RAM (SPRAM) and 15KB of dual port RAM. The FPGA fabric provides the logic needed to present the content of the SPRAM as a series of both ROM or RAM devices. The Winbond 16KB serial flash memory serves to hold up to four FPGA configuration bitstreams, and is also used to store ROM images that the HP-71B operator can dynamically plug and unplug into the HP-71B as needed.

MultiMod II Board Design

The MultiMod II PCB is a four layer, two sided component design. The design was done in Kicad 9.0 and the design files can be found in the board directory.

MultiMod II FPGA Configuration

To configure and provide content for ROM and RAM memories, a soft CPU is instantiated in fabric using the 15KB of dual port RAM for its programs. The J1a Forth CPU was selected in order to implement the intelligent functionality of the MultiMod II HP-71B accessory. The use of Forth as the base language complemented the availability of Forth for the HP-71B itself. The basis files can be found in the mecrisp-ice-2.7 directory.

The mecrisp-ice project combines the J1a Forth CPU with the Mecrisp ANSI Forth implementation that targets the J1a instruction set. Details about the J1a implementation can be found at James Bowman's github repository. More information about Mecrisp Forth can be found at its Sourceforge site. Unofficial documentation for Mecrisp Forth can be found on Sourceforge as well.

This configuration was customized for two purposes; one configuration serves as a programmable bootloader when connected to a host, while the second is the production configuration when the MultiMod II is operating in the HP-71B.

Bootloader Configuration

The bootloader Verilog and Forth files can be found in the mmj1boot subdirectory within the mecrisp-ice containing directory.

The bootloader configuration uses the standard mecrisp-ice j1a processor and USB device to communicate with a connected host. Going beyond the standard bootloader ability to update the production configuration, the interactive Forth console provides the means to transfer files and even extend its own capabilities.

Production Configuration

The bootloader Verilog and Forth files can be found in the multimod subdirectory within the mecrisp-ice containing directory.

The production bitstream configuration replaces the mecrisp-ice USB device interface with a serial interface. The serial device data and control registers are mapped into the HP-71B address space so that the HP-71B can interact with the Forth console. This gives the HP-71B operator the ability to configure the MultiMod II, plugging and unplugging ROMs at will. Independent RAM (IRAM) device content can be saved to flash, allowing the operator to compose collections of programs that can be saved to flash and later loaded when needed. All the functional capability of an external storage device are provided by the MultiMod II.

Parts

50
QtyValueFootprintReferences
71uFCapacitor_SMD:C_0603_1608MetricC6, C7, C8, C9, C10, C11, C12
5100KResistor_SMD:R_0603_1608MetricR11, R12, R13, R15, R16
5100nFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C5
5TestPointTestPoint:TestPoint_Pad_1.0x1.0mmTP1, TP2, TP3, TP4, TP5
410KResistor_SMD:R_0603_1608MetricR7, R8, R9, R17
3CD40109BPWRPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU3, U4, U5
222Resistor_SMD:R_0603_1608MetricR2, R3
25K1Resistor_SMD:R_0603_1608MetricR5, R6
2CDBUC00340-HFDiode_SMD:D_0603_1608MetricD1, D2
11 Ohm, 1%Resistor_SMD:R_0603_1608MetricR1
11.5KResistor_SMD:R_0603_1608MetricR14
1100Resistor_SMD:R_0603_1608MetricR4
14.7uFCapacitor_SMD:C_0603_1608MetricC13
151KResistor_SMD:R_0603_1608MetricR10
1AP2127K-1.2Package_TO_SOT_SMD:SOT-23-5U7
1AP2127K-2.5Package_TO_SOT_SMD:SOT-23-5U9
1AP2127K-3.3Package_TO_SOT_SMD:SOT-23-5U8
1Alps PB SWmm2:SKSVCBE010S1
1Conn_01x11mm2:SIP-11J1
1Conn_02x05_Odd_Even_1.27Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ3
1ECS-2520MV-480-BNOscillator:Oscillator_SMD_ECS_2520MV-xxx-xx-4Pin_2.5x2.0mmX1
1ICE40UP5K-SG48ITRPackage_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mmU1
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500J2
1W25Q128JVSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU2

Questions

How big is the Mm2 PCB?

It measures 48 × 26.2 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Mm2 use?

50 parts, built around the ICE40UP5K-SG48ITR50, W25Q128JVSIQ and CD40109BPWRE4. 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 Mm2 KiCad files?

From the mafleming/MultiMod-II repository on GitHub, at the commit this page was made from: the board is board/mm2/mm2.kicad_pcb and its schematic board/mm2/71Interface.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mm2 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).

Similar boards

  • 2 layers170.1 × 96.9 mmSmartPrintCoreH7x, the printed circuit board in 3D

    SmartPrintCoreH7x

    BoltzRnD/SmartPrintCoreH7x

    STM32H7 based Robust and Open Source 3D Printer Mainboard

    567 parts89
  • 2 layers58.7 × 110.9 mmSCMplus, the printed circuit board in 3D

    SCMplus

    4ms/pcb-SCMv3

    SCM and SCMBO in one module

    144 parts2
  • 4 layers20.3 × 90 mmHp45, the printed circuit board in 3D

    Hp45

    BenChung/hp45-controller

    109 parts1
  • 4 layers95 × 67 mmLoRaDongle iCE40, the printed circuit board in 3D

    LoRaDongle iCE40

    marrrk/LoRaDongle

    A Risc-V Based LoRa custom PCB

    145 parts4
  • 6 layers111 × 111 mmLed panel, the printed circuit board in 3D

    Led panel

    antmicro/programmable-led-panel

    LED matrix controlled with iCE40 FPGA or RP2040 MCU for benchmarking and integration of video systems

    315 parts2Apache-2.0
  • 4 layers50.8 × 20.3 mmIceblink, the printed circuit board in 3D

    Iceblink

    bminch/iceBlinkPico

    Design files and SystemVerilog examples for iceBlinkPico, a small breadboard-friendly iCE40UP5K FPGA dev board

    57 parts2BSD-2-Clause
  • 4 layers27 × 55.5 mmNS FPGA V2 iCE, the printed circuit board in 3D

    NS FPGA V2 iCE

    uzzambutt/NorthernStudios-iCE40-UltraPlus-FPGA-Dev-Board

    NorthernStudios iCE40 UltraPlus FPGA Dev Board

    70 parts1MIT
  • 4 layers99.1 × 83.8 mmIbm-5151-pcb, the printed circuit board in 3D

    Ibm-5151-pcb

    asinghani/ibm-5151-controller

    Building a VT100 emulator out of an IBM 5151 monitor and an FPGA

    85 partsMIT