Parallel Port ATF and GAL Programmer
- Programs ATF22V10, GAL22V10 and others (smaller chips require socket adapter)
- Based on GALBlast by Manfred Winterhoff
- Plugs into PC Parallel Printer port.
- Works on Windows 3.1 and above (tested on an IBM Thinkpad 600 running Windows98)
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
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)
ATFBlast_ALL.zip (local copy of file found at zx-pk.ru)
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 zx-pk.ru.
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.
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.