Skip to the content
PCBKitNew board
2 layers68.6 × 53.3 mmAtf150x programmer, the printed circuit board in 3D

Atf150x programmer

ifilot/atf150x-programmer

Arduino Leonardo shield for programming ATF150X-type of CPLDs

Size
68.6 × 53.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
71
Pads
106
Tracks, vias
97, 0
Pours
64
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
11 Sep 2026
Updated
16 Oct 2026

Overview

Atf150x programmer is an open-source printed circuit board by ifilot, from the ifilot/atf150x-programmer repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 68.6 × 53.3 mm with 12 parts on 71 nets, routed with 97 tracks and 0 vias.

Its parts include 6 resistors, 4 capacitors and 1 IC. It belongs with the interfaces and adapters boards and the AVR (ATmega, ATtiny) and FPGA and CPLD boards of this library.

README

README.md

ATF150x programmer

GitHub Actions Version License: GPL v3

Program ATF1502AS and ATF1504AS chips with an Arduino Leonardo and a small open-source adapter board, instead of the expensive ATDH1150USB programmer and its vendor software.

These chips (CPLDs) hold a small digital-logic design that you create in a tool such as WinCUPL. That tool produces a .jed file; this project writes that file into the chip and checks that it arrived correctly.

ATF150x Programmer showing the fuse map of an ATF1504AS design

Contents

What you need

  • The adapter board from pcb/atf150X-programmer, fitted on an Arduino Leonardo.
  • A 5 V ATF1502AS or ATF1504AS in the PLCC-44 socket, with JTAG enabled.
  • A .jed file for your design, for example made with WinCUPL.
  • A USB cable and a Windows PC for the desktop application, or Windows or Linux for the command line.

Not supported: ATF1502ASV/BE and other low-voltage variants, other chip sizes, several chips in one chain, and chips whose JTAG port has been switched off.

Download

WhatDownload (v0.3.0)
Desktop application for Windows (recommended)Installer · Portable zip
Command-line toolWindows · Linux
Arduino Leonardo firmwareFirmware (already included with the desktop application)

Newer versions and checksums are on the latest release page.

Quick start (Windows)

  1. Install the desktop application with the installer above.
  2. Insert the chip while the board is unplugged. Check the orientation.
  3. Plug in the Arduino by USB and start ATF150x Programmer. It finds the programmer by itself. The first time, it offers to install the firmware on the Arduino: click Yes.
  4. Open your .jed file with Open JEDEC… or by dragging it onto the window.
  5. Click Program. The chip is erased, programmed and checked, which takes tens of seconds. Do not unplug the board while it runs.

The status bar and the log at the bottom tell you whether it succeeded.

The desktop application

Fuse map of an ATF1502AS designZoomed fuse map with the hovered cell described below the map
An ATF1502AS design, fitted to the window.Zoomed in; the cell under the mouse is described below the map.
  • Program, Verify, Erase, Identify. Verify compares the chip with the open file without changing it. Identify reports which chip is in the socket. If you rebuild the .jed file in WinCUPL, it is reloaded automatically before programming.
  • Fuse map. Shows every memory cell of the chip, colored by what it does. Hover over a cell to see its meaning. The side panel summarizes the design: chip type, how much of the chip is used, and whether the checksum is valid.
  • Firmware updates. If the Arduino runs an older or different program, the application offers to install the right firmware. The Arduino's bootloader is never changed.
  • Update notification. At startup the application checks for a newer release; turn this off in the Help menu.

Command line (Windows and Linux)

atfprog does the same as the desktop application from a terminal. Replace COM3 with your Arduino's port (on Linux, for example /dev/ttyACM0). In Windows PowerShell, type .\atfprog.exe instead of atfprog.

sh
atfprog inspect design.jed            # check the file; does not touch the chip
atfprog scan --port COM3              # identify the chip
atfprog flash design.jed --port COM3  # erase, program and check
atfprog verify design.jed --port COM3 # compare chip and file
atfprog erase --port COM3             # erase the chip
atfprog --help

flash checks the .jed file before it touches the chip, and switches the new design on only after every bit has been read back and compared. If programming is interrupted, reconnect and run flash again. A nonzero exit status means the operation failed.

Troubleshooting

  • "No Arduino Leonardo found" or the port is busy. Close the Arduino IDE Serial Monitor and other programs using the port, then press the refresh button.
  • The chip reads as all zeros or all ones. Check that the chip is seated the right way round, the board is assembled correctly and the chip is a 5 V ATF1502AS/ATF1504AS. A chip with JTAG switched off cannot be recovered with this programmer.
  • Linux: permission denied on /dev/ttyACM0. Add your user to the serial group (usually dialout), then log out and in again.
  • Programming was interrupted. Nothing is switched on until the design has been checked; simply program again.

Technical details

Board pin assignments
JTAGLeonardo pinSeries resistor
TDID2R3
TCKD3R4
TDOD4R5
TMSD12R6

The board uses ordinary GPIO pins, not the Leonardo's SPI header. Its 5V1 pin supplies the +5V net. The firmware leaves the JTAG pins as inputs between sessions and does not switch the chip's power. ATF1502AS reports IDCODE 0x0150203F; ATF1504AS reports 0x0150403F.

License

The software, firmware, tests, build configuration and documentation are licensed under the GNU General Public License version 3 only (GPL-3.0-only); see LICENSE. Copyright (c) 2026 ATF1502 programmer contributors. Required upstream notices are kept in third-party attribution. The PCB files keep their CC BY-SA 4.0 license.

Parts

12
QtyValueFootprintReferences
40.1uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC2, C3, C4, C5
4100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4, R5, R6
210kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
1ATF1502ASPackage_LCC:PLCC-44_THT-SocketU4
1Arduino_Leonardo_ShieldArduino:Arduino_Uno_ShieldXA1

Questions

How big is the Atf150x programmer PCB?

It measures 68.6 × 53.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Atf150x programmer use?

12 parts. 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 Atf150x programmer KiCad files?

From the ifilot/atf150x-programmer repository on GitHub, at the commit this page was made from: the board is pcb/atf150X-programmer/atf150X-programmer.kicad_pcb and its schematic pcb/atf150X-programmer/atf150X-programmer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Atf150x programmer design in my own project?

Its repository publishes it under the GPL-3.0 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 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696