
SmartPrintCoreH7x
BoltzRnD/SmartPrintCoreH7x
STM32H7 based Robust and Open Source 3D Printer Mainboard

ROM and RAM Resources for the HP-71B
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.
HP-71B MultiMod II Repository
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.
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.
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.
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.
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 1uF | Capacitor_SMD:C_0603_1608Metric | C6, C7, C8, C9, C10, C11, C12 |
| 5 | 100K | Resistor_SMD:R_0603_1608Metric | R11, R12, R13, R15, R16 |
| 5 | 100nF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4, C5 |
| 5 | TestPoint | TestPoint:TestPoint_Pad_1.0x1.0mm | TP1, TP2, TP3, TP4, TP5 |
| 4 | 10K | Resistor_SMD:R_0603_1608Metric | R7, R8, R9, R17 |
| 3 | CD40109BPWR | Package_SO:TSSOP-16_4.4x5mm_P0.65mm | U3, U4, U5 |
| 2 | 22 | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | 5K1 | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 2 | CDBUC00340-HF | Diode_SMD:D_0603_1608Metric | D1, D2 |
| 1 | 1 Ohm, 1% | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 1.5K | Resistor_SMD:R_0603_1608Metric | R14 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C13 |
| 1 | 51K | Resistor_SMD:R_0603_1608Metric | R10 |
| 1 | AP2127K-1.2 | Package_TO_SOT_SMD:SOT-23-5 | U7 |
| 1 | AP2127K-2.5 | Package_TO_SOT_SMD:SOT-23-5 | U9 |
| 1 | AP2127K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U8 |
| 1 | Alps PB SW | mm2:SKSVCBE010 | S1 |
| 1 | Conn_01x11 | mm2:SIP-11 | J1 |
| 1 | Conn_02x05_Odd_Even_1.27 | Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical | J3 |
| 1 | ECS-2520MV-480-BN | Oscillator:Oscillator_SMD_ECS_2520MV-xxx-xx-4Pin_2.5x2.0mm | X1 |
| 1 | ICE40UP5K-SG48ITR | Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mm | U1 |
| 1 | USB_C_Receptacle_USB2.0 | Connector_USB:USB_C_Receptacle_JAE_DX07S016JA1R1500 | J2 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U2 |
It measures 48 × 26.2 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
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).

BoltzRnD/SmartPrintCoreH7x
STM32H7 based Robust and Open Source 3D Printer Mainboard




antmicro/programmable-led-panel
LED matrix controlled with iCE40 FPGA or RP2040 MCU for benchmarking and integration of video systems

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

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

asinghani/ibm-5151-controller
Building a VT100 emulator out of an IBM 5151 monitor and an FPGA