Skip to the content
4 layers97.6 × 74.8 mmProject byte hamr, the printed circuit board in 3D

Open source expansion platform for Apple IIe prototyping and development

Size
97.6 × 74.8 mm
Copper layers
4
Thickness
1.6 mm
Parts
93
Nets
335
Pads
901
Tracks, vias
1,859, 242
Pours
17
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
16 Dec 2025
Updated
6 Nov 2026

Overview

Project byte hamr is an open-source printed circuit board by robertrico, from the robertrico/project_byte_hamr repository on GitHub. It is a 4-layer board of 97.6 × 74.8 mm with 93 parts on 335 nets, routed with 1,859 tracks and 242 vias.

It is built around the LFE5U-85F-8BG381I, TLV62569DBVR-TP and FT231XQ-R, with the IS25LP128F-JBLE, SN74LVC8T245PW and SN74LVC1G04DBVR among its other parts. Its parts include 42 capacitors, 20 resistors, 14 ICs, 4 connectors and 3 inductors. It belongs with the FPGA and CPLD boards of this library.

Main components

12

README

README.md

Byte Hamr

An open-source FPGA expansion card for the Apple II family of computers.

Byte Hamr

Overview

Byte Hamr brings modern FPGA capabilities to the Apple II, II+, IIe, and IIgs. Unlike purpose-built cards that serve a single function, Byte Hamr is a general-purpose platform for developing and running custom hardware designs on vintage Apple hardware.

The card sits between the simplicity of the A2FPGA (which targets HDMI output) and the complexity of the Carte Blanche (which is difficult to obtain and uses proprietary tooling). Byte Hamr uses the Lattice ECP5 FPGA with full support for the open-source Yosys/nextpnr toolchain.

Features

  • Lattice ECP5-85F FPGA (84K LUTs, BGA381 package)
  • 64MB SDRAM (AS4C32M16SB-7TCNTR)
  • 128Mb SPI Flash for bitstream storage
  • USB programming via FTDI FT231XQ
  • JTAG header for development/debugging
  • 20-pin GPIO header with heavy ground interleaving (Rev 2)
  • 2×3 power breakout: +3V3, +5V, −5V, +12V, −12V (Rev 2)
  • Full Apple II bus interface with bidirectional level shifting
  • Dedicated FPGA-controlled data-bus transceiver OE (Rev 2)
  • Hardware R/W inverter for correct transceiver direction (Rev 2)
  • Bidirectional nRES — drive and monitor Apple II reset (Rev 2)
  • Dual power input (USB or Apple II bus) with automatic switching
  • On-board 100 MHz oscillator (Rev 2; 25 MHz on Rev 1)
  • Open-source hardware and gateware

Specifications

ParameterValue
FPGALattice ECP5-85F (LFE5U-85F-8BG381I)
Logic Elements84K LUTs
Block RAM3744 Kbit
SDRAM64MB, 16-bit bus
Flash128Mb SPI
USBFull-speed via FT231XQ
GPIO20 pins, 3.3V LVCMOS33
Oscillator100 MHz (Rev 2)
Power+5V from USB or Apple II slot
DimensionsStandard Apple II card form factor

Architecture

text
                                    +------------------+
                                    |     SDRAM        |
                                    |   (64MB x16)     |
                                    +--------+---------+
                                             |
+-------------+     +----------+     +-------+--------+     +----------+
| Apple II    |     | Level    |     |                |     |   SPI    |
| Expansion   +---->+ Shifters +---->+   ECP5-85F     +---->+  Flash   |
| Slot        |     | (5V/3.3V)|     |     FPGA       |     |  (16MB)  |
+-------------+     +----------+     +-------+--------+     +----------+
                                             |
                                     +-------+--------+
                                     |      USB       |
                                     |  (FT231XQ)     |
                                     +----------------+

Power Distribution

Three on-board switching regulators generate the required voltages:

  • +3.3V for FPGA I/O, SDRAM, Flash, level shifters
  • +2.5V for FPGA auxiliary power
  • +1.1V for FPGA core

Power can be sourced from USB (+5V) or the Apple II slot, with Schottky diode OR-ing for automatic switching. Rev 2 moves the 5V input diode ahead of the level-shifter rail so USB alone can power the bus logic.

Bus Interface

Six 74LVC8T245 bidirectional level shifters translate between the Apple II's 5V bus and the FPGA's 3.3V I/O. The interface provides access to:

  • 16-bit address bus
  • 8-bit data bus (bidirectional)
  • Control signals (R/W, PHI0, device select, etc.)

Rev 2 adds a dedicated 74AHC1G04 inverter (U7) that generates the correct-polarity DIR control for the data-bus transceiver, and exposes the transceiver's OE on an FPGA pin so gateware can cleanly gate drive.

GPIO Header

20-pin header with ground interleaving (pin 1 marked at the top, 20 at the bottom). All pins are 3.3V LVCMOS33.

GPIOFPGA SiteGPIOFPGA Site
GPIO_1P3GPIO_11J1
GPIO_2P1GPIO_12H2
GPIO_3P2GPIO_13H1
GPIO_4N1GPIO_14G2
GPIO_5M1GPIO_15G1
GPIO_6L2GPIO_16F2
GPIO_7L1GPIO_17F1
GPIO_8K3GPIO_18E2
GPIO_9K1GPIO_19E1
GPIO_10K2GPIO_20D2

See byte_hamr.lpf for full pin constraints.

Project Status

Rev 2 — fabricated and bring-up in progress (April 2026). Both boards enumerate over USB and pass initial SDRAM + GPIO tests.

Rev 1 — sent to fabrication (December 2025). Tagged rev1 in git; all Rev 1 gateware preserved under gateware/rev1/.

See VERSION.md for full version history.

Rev 2 changes

  • Board footprint shrunk
  • GPIO expanded from 12 → 20 pins with dense ground interleaving
  • Power breakout block exposing ±5V / ±12V / 3V3
  • On-board R/W inverter (replaces Rev 1 bodge wire)
  • 5V diode moved ahead of level shifters so USB can power the bus side
  • Shortened SDRAM routes to the ECP5
  • Data-bus transceiver OE promoted from GPIO bodge to dedicated FPGA pin (DATA_OE, B20)
  • Bidirectional nRES: separate nRES_READ input (A5) so gateware can monitor Apple II reset
  • Oscillator upgraded 25 MHz → 100 MHz for better CDC oversampling and PLL headroom

Repository Structure

text
project_byte_hamr/
├── hardware/
│   └── byte_hamr/          # Main FPGA card
│       ├── kicad/          # KiCad schematic and PCB
│       ├── bom/            # Bill of materials
│       └── gerbers/        # Manufacturing files
├── gateware/
│   ├── rev1/               # Rev 1 designs (frozen, matches rev1 git tag)
│   │   ├── constraints/
│   │   ├── signal_check/
│   │   ├── sdram_test/
│   │   ├── sdram_bank/
│   │   ├── pattern_rom/
│   │   ├── logic_hamr/
│   │   ├── smart_hamr/
│   │   ├── block_hamr/
│   │   └── flash_hamr/
│   └── rev2/               # Rev 2 designs (porting in progress)
│       ├── constraints/
│       └── signal_check/
├── software/
│   ├── ASM/                # 6502 assembly source (Merlin32)
│   ├── LOGICHAMR/          # Logic analyzer disk contents
│   └── utils/              # Disk image utilities
└── docs/                   # Documentation

Getting Started

Prerequisites

Gateware:

6502 Assembly:

Disk Utilities:

Building Gateware

Builds are selected by DESIGN and REV. REV defaults to rev1; set REV=rev2 when targeting the current hardware.

bash
make                                # Build default (REV=rev1, DESIGN=signal_check)
make DESIGN=xxx                     # Build specific design (rev1)
make DESIGN=xxx REV=rev2            # Build against Rev 2 pinout
make sim DESIGN=xxx REV=rev2        # Run simulation
make wave                           # Run simulation and open GTKWave
make help                           # Show all available targets

b8008_hamr lives under gateware/rev2/ and always needs REV=rev2; it also needs fusesoc installed and a sibling intel-8008-vhdl checkout (INTEL8008_DIR, default ~/Development/intel-8008-vhdl) to generate its netlist at build time, e.g. make DESIGN=b8008_hamr REV=rev2 bit.

Programming

bash
make DESIGN=xxx REV=rev2 prog                         # Program via JTAG (volatile)
make DESIGN=xxx REV=rev2 prog-flash                   # Program SPI flash (persistent)
make DESIGN=xxx REV=rev2 prog-flash SERIAL=<FTDI_SN>  # Target a specific board

Software Development Workflow

text
┌─────────────┐     ┌───────────────┐     ┌─────────────┐     ┌───────────┐
│  Merlin32   │────▶│ AppleCommander│────▶│   ADTPro    │────▶│ Apple IIe │
│  (assemble) │     │ (create .dsk) │     │  (transfer) │     │   (run)   │
└─────────────┘     └───────────────┘     └─────────────┘     └───────────┘
bash
# 1. Edit source in software/LOGICHAMR/*.S

# 2. Assemble with Merlin32
make assemble ASM_SRC=software/LOGICHAMR/LOGIC.S

# 3. Create disk image (auto-copied to ADTPro disks folder)
make create-dsk DSK=LOGICHAMR

# 4. Transfer via ADTPro to real hardware

# 5. On Apple II: BRUN LOGIC

Disk utilities:

bash
make extract-dsk DSK=file.dsk     # Extract files from disk image
make list-dsk                     # List disks in ADTPro folder

Utility Commands

bash
make pinout             # Regenerate FPGA pinout from schematics
make lpf                # Regenerate LPF constraints
make clean              # Remove build files

Gateware Designs

Rev 1 versions (proven on Rev 1 hardware):

DesignDescription
signal_checkBoard bring-up test (SDRAM, GPIO, bus monitor)
sdram_testRegister-driven SDRAM access from Apple II
sdram_bankSDRAM bank-switching controller
pattern_romSDRAM-backed pattern ROM for display testing
logic_hamr8-channel logic analyzer with HIRES display
smart_hamrSmartPort/IWM disk controller with ESP32 companion
block_hamrProDOS block device with SDRAM and SPI flash persistence
flash_hamrSD card ProDOS block device (PicoRV32 + FatFS)

Rev 2 port: signal_check ported and validated; other designs pending.

Testing

Bringup sequence for new boards:

  1. Visual inspection
  2. Power rail verification (+5V, +3.3V, +2.5V, +1.1V)
  3. USB enumeration (FTDI detection)
  4. FPGA configuration with signal_check
  5. Oscillator verification (100 MHz on scope; derived 25 MHz appears on SDRAM_CLK)
  6. GPIO walk — watch walking 1s across GPIO_9..GPIO_20
  7. Apple II bus communication (register loopback at $C0C0)
  8. Data-bus transceiver + R/W inverter walk: C0C0:01 → C0C0, then 02, 04, … 80
  9. Full system integration

Design References

This project builds on the work of others:

Why "Byte Hamr"?

"Hamr" is Old Norse for "shape" or "form" — the concept of shapeshifting in Norse mythology. Byte Hamr: shapeshifting bytes. An FPGA that can become any hardware you define. The shape changes based on what you program it to be.

License

This project is released under the MIT License.

Author

Robert Rico

Contributing

This is an early-stage project. Issues, suggestions, and pull requests welcome.

Parts

93
QtyValueFootprintReferences
2322nFCapacitor_SMD:C_0603_1608MetricC13, C14, C15, C18, C21, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35 +7
922uFCapacitor_SMD:C_0805_2012MetricC1, C3, C4, C5, C7, C8, C9, C11, C12
715kResistor_SMD:R_0603_1608MetricR9, R31, R32, R33, RA1, RA2, RA3
72.2uFCapacitor_SMD:C_0805_2012MetricC16, C17, C19, C20, C22, C23, C24
6SN74LVC8T245footprints:DBQ24-LU8, U9, U11, U12, U13, U14
410kResistor_SMD:R_0603_1608MetricR11, R12, R27, R28
433ΩResistor_SMD:R_0603_1608MetricR1, R2, R5, R6
30jumper:R_0805_2012Metric_Pad1.29x1.40mm_HandSolder_Jumper_NCRP1, RP2, RP3
3100pFCapacitor_SMD:C_0603_1608MetricC2, C6, C10
32.2uHL_1008_1210:L_1008_1210L1, L2, L3
3TLV62569DBVTSOT-25:TSOT-25U3, U4, U5
227Resistor_SMD:R_0603_1608MetricR49, R50
24.7kResistor_SMD:R_0603_1608MetricR30, RB2
2STPS2L40AFDiode_SMD:D_SMAD1, D2
11.1kResistor_SMD:R_0603_1608MetricR29
1100Mhzoscxo:Crystal_SMD_7050_4PadsY1
118kResistor_SMD:R_0603_1608MetricRB1
13.3kResistor_SMD:R_0603_1608MetricRB3
174AHC1G04SN74LVC1G04DBVR:SOT95P280X145-5NU7
1Bus_Apple_II_Card_Sidecom_github_markadev_KiCad-AppleII:Peripheral_Bus_EdgeJ3
1CONN_02X03Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ4
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ6
1Conn_02x20_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ1
1FT231XQft231x:FT231X-QFN-20-1EP_4x4mm_P0.5mm_EP2x2mmU6
1IS25LP128F-JBLESOA008-150mil:SOA008-150-208milU10
1LFE5U-85F-8BG381Ilfe5bg381:BGA-381_pitch0.8mm_dia0.4mmU1
1LOGOproject_byte_hamr:logo_smG***
1MICRO_USBusb_otg:USB-MICRO-B-FCI-10118192-0001LFUS1
1MT48LC16M16A2TGTSOP54:TSOP54U2

More from robertrico/project_byte_hamr

1
  • 4 layers109.5 × 74.8 mmByte ravn, the printed circuit board in 3D

    Byte ravn

    robertrico/project_byte_hamr

    Open source expansion platform for Apple IIe prototyping and development

    36 parts2

Similar boards

  • 6 layers113 × 99 mmUlx4m panel, the printed circuit board in 3D

    Ulx4m panel

    intergalaktik/ulx4m-ls

    ULX4M Lattice SDRAM

    970 parts5
  • 4 layers94 × 50.8 mmUlx3s, the printed circuit board in 3D

    Ulx3s

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    235 parts744MIT
  • 8 layers60.1 × 32.1 mmPanelith, the printed circuit board in 3D

    Panelith

    w531t4/panelith

    PCB for Panelith FPGA Board

    103 parts
  • 4 layers25 × 25 mmEnvironment, the printed circuit board in 3D

    Environment

    brown-studios/minuet

    Minuet upgrades your MAXXAIR Maxxfan with a brushless DC motor, home automation features, and accessories.

    17 parts67MIT
  • 4 layers130 × 106.7 mmSvga devboard, the printed circuit board in 3D

    Svga devboard

    Doomn00b/Open-SVGA

    Video-card and GPU for the PC x86 platform, including PCB reference-design

    183 parts6
  • 4 layers96 × 70 mmTedium x8, the printed circuit board in 3D

    Tedium x8

    jboone/tedium

    TDM telephony experimentation

    283 parts3BSD-3-Clause

Questions

How big is the Project byte hamr PCB?

It measures 97.6 × 74.8 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Project byte hamr use?

93 parts, built around the LFE5U-85F-8BG381I, TLV62569DBVR-TP, FT231XQ-R and IS25LP128F-JBLE. 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 Project byte hamr KiCad files?

From the robertrico/project_byte_hamr repository on GitHub, at the commit this page was made from: the board is hardware/byte_hamr/kicad/project_byte_hamr.kicad_pcb and its schematic deprecated/byte_ravn/kicad/byte_ravn.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Project byte hamr design in my own project?

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