Parallel Port ATF and GAL Programmer


I created this project because I wanted to program some GAL22V10 and ATF22V10 programmable logic array ICs (which my so-called 'universal' programmer wouldn't program properly!). The hardware is a simplified version of Manfred Winterhoff's GALblast. I removed the parallel port buffers and replaced the DAC voltage generator with a fixed +12V regulator. Programming voltage is connected directly to the DC power jack and must be set manually, using a suitable regulated power supply (most GALs use +15V, but you should read the PES first to find out what voltage your chip needs). I modified the software so that it automatically switches the programming voltage between +12V and Vin (+13.5~16V) when writing to the chip. The modified program is called GALBLAT.EXE.

For Atmel ATF chips a different programming algorithm is required that I do not have any information about, so I was not able to add them to GALBLAT. Luckily someone has already produced a version which does work with Atmel chips, called ATFblast.exe. I found it in a post on the website Atmel chips require the voltage to be switched from +5V to +11V for reading and writing. Both voltages are supplied by the on-board  regulators, so the power supply doesn't need to be regulated. 

Files for download (zip archives)
GALBLAT.EXE and ATFblast.exe  (applications for GAL and ATF)
GALBlat Source code (compiles with Borland Turbo C++ V4.5) (local copy of file found at (schematics)
conditio.jed  (JEDEC file for conditioning Atmel PLDs)
The 'intelligent' programming circuit uses SW1 to ensure that programming voltage cannot be applied to the Edit pin until the software is running. Jumpers J1 and J2 set the low and high programming voltages depending on which type of chip (ATF or GAL) is being programmed. As the target IC may draw up to 120mA (typically 60~70mA), regulator IC2 should have a heat sink installed. I used resistor arrays to provide the pullups and puldowns, but discrete resistors will also work. Q1 and Q2 can be any general purpose transistors such as 2N3904 and 2N3905 or 2SC945 and 2SA1015. D1 should be a Schottky  type for low voltage drop. If you only want to program ATF chips then D1 and J2 are not required, and J1 can be replaced with fixed wiring.


The circuit below is a further simplified version for ATF chips. Programming voltage is switched on and off manually via the «EDIT» switch (SW1). A regulated 12VDC power supply is required. As with the 'intelligent' programmer, SW1 should be set to the low voltage position when powering up, then switched to high voltage once the ATFblast program is running.


Here are the instructions for using the minimal ATF programmer, translated from the post at

1. Run AtfBlast.exe, select LPT port and type of chip.
2. Plug GAL chip into programmer.
3. Connect power (+5V, +12V) to programmer.
4. Plug programmer into LPT port.
5. Turn «EDIT» switch ON.
6. Load JEDEC-firmware file.
7. Click «Write GAL». Answer "Yes" to "Unknown PES" requester.
8. Click «Write PLD» and wait until cursor changes back to an arrow (~30 seconds).
9. Click «Verify GAL». If verify fails then erase GAL and repeat steps 7-9.  
10. Turn «EDIT» switch OFF.
11. Unplug programmer from LPT port.
12. Disconnect power from programmer.
13. Remove the programmed chip.

Update 2017-07-09

Changed part number of Schottky diode D1 to a higher voltage axial leaded type.
Added Eagle schematics.

Atmel recommends that their PLDs be 'conditioned' before programming. This means that the whole device should be completely programmed with 0's twice, then erased. Verify errors can be ignored during conditioning. The JEDEC file conditio.jed is supplied for this purpose.

I recently purchased an ATF16V8BQL, which has much lower static current draw than the standard version. As the ID code doesn't match the standard ATF16V8B a requester will ask if you want to change it. After selecting 'no' to continue, it programmed fine.

[home] [electronics]