Electronic – What was the protocol for programming GAL devices

programmable-logic

What actually has to happen, at a pins and signals level, to program a GAL device? Let's say I have a GAL 22V10, and a .JED file with the desired fuse pattern. The usual way to proceed is to drop the chip into a commercial programmer, load the .JED file, and tell it to go. But what goes on to configure the chip? How are those 'fuses' specified? How are they read back, written, erased?

After some effort with search engines, I don't have anything more concrete than 'PALs are programmed similar to PROMs' to go on. The implication seems to be that if you have a PROM programmer, it doesn't take too much to program a PAL or GAL. Does this mean that with programming voltage applied, you can address the fuses like a memory? Of course GALs are erasable and PROMs were not, so this analogy says nothing about how you'd go about erasing one.

In particular, the project at http://elm-chan.org/works/pgal/report_e.html makes it evident that the hardware is very simple; the only interesting bit being the software to control it. Unfortunately (for me) the commentary in the accompanying software is in Japanese, and the code itself is in 1980's style macro assembler for DOS, so teasing out the protocol looks daunting, as the code to read the .jed file (using DOS-isms) is all mixed up with the programmer I/O. (Not to mention he has his own protocol layered on top, to shift all the parallel bits through those 595s)

And yes, I know the 22v10 is a dinosaur. Let's say I just want to know.

Best Answer

My recollection is that they were programmed using parallel addressing and this page on TI's website would seem to confirm this.

Not all PALs are eraseable btw. AMD & Lattice's PALCEs are electrically eraseable (the standard PALs were not). I don't know about TI's TIBPAL & TICPALs I linked-to but the programming docs make no mention of erasing.