The ATF750C : Charm and Strangeness (*)

Topics relating to PALs, CPLDs, FPGAs, and other PLDs used for the support or creation of 65-family processors, both hardware and HDL.
Post Reply
GlennSmith
Posts: 162
Joined: 26 Dec 2002
Location: Occitanie, France

The ATF750C : Charm and Strangeness (*)

Post by GlennSmith »

[NOTE: all references to '750 in this document refer to the 'modern' CMOS PLD devices "ATF750C" or "ATF750LVC", not the older V750, 750B GALs ]

Whenever I've seen references to the ATF750 on the net it's nearly always called "a 22V10 on steroids". I suppose in some ways it's true, but I think it's rather 'cliché', as they say here in France ;) In this thread I'll document my discoveries about this unfortunate "black sheep" of the Atmel ATFxx series PLDs. Black Sheep for a major part in that very few PLD programmers actually know/care about it, probably due to some very wierd programming algorithms...

I'll talk about a fairly affordable DIY and open source solution for the programming later-on. I'd like to talk about the Charm and strangeness first.

The Charm
The device's pin configuration is identical to the 22V10. The "750C" version is a 5v beast, but there is an "LVC" version which can be used at 5v or down to 3.0v. Even when used at 3v, the inputs are 5v tolerant - which makes the device quite useful for interfacing. The ATF750LVC is available as 24-pin DIP but also in PLCC, SOIC and TSSOP formats. I'm not sure, but AFAIK there is only one speed option for the LVC, the "-15", which is rated at 15nS maximum propagation delay (pin-to-pin) *AT 3V* (the datasheet says 10nS max. at 5v). So a good candidate for address space decoding, or for latching the extended address lines from a 65816 (see example 1).

From the outside the '750 looks like a 22V10 - but under the hood there's a much bigger motor...
A complete macrocell (from <Using-ATF750C.pdf>)
A complete macrocell (from <Using-ATF750C.pdf>)
To start with, there's twice as many accessible registers. This is achieved by splitting each of the 22V10s original registers into two independant Flip-Flops, and providing access to each of them via buried nodes (see table, below). Each of the F/Fs provide internal feedback, and 10 have the output drivers for driving the O/P pins. Each F/F can be individually configured as D-type or T-type (toggle) - using the terms xxx.d or xxx.t.

Note that combinatory logic still has the same large fan-in (note the switch symbol between the two F/Fs) : each half has from 4 to 8 product terms, the two sides are then summed.
Buried node numbers (from &lt;Using-ATF750C.pdf&gt;)
Buried node numbers (from <Using-ATF750C.pdf>)
As with the 22V10, pins 14..23 on the '750 are configurable as Output or Input. Combinatory declarations will automatically configure a pin as Output, and will transparently enable the output enable term '.oe'. Registered declarations (i.e. using the F/F) can use the pin's Q0 F/F as a 'buried' node and define the pin as an input by forcing the '.oe' term to zero. It's even possible to use the pin as input AND output by careful synchronization of the register clocks and the '.oe' terms.

While talking about inputs and outputs, it's worth mentioning that the "polarity" of each pin (i.e. active high or active low) is defined in the PINS declaration. By default a pin is active high, to make it active low you simply place the '!' character in front of the pin name (e.g. !WR).

The next feature is that each F/F has it's own individual clock line with a selection switch to either use the 'master' clock (Pin1), or an internal signal, either a physical signal or a combinatory term. Each F/F clock can be either synchronous (by specifying '.ckmux'), or asynchronous (by specifying '.ck'). See the EX375 example, below.
And, to finish the list, each F/F has it's own Asynchronous Reset term, '.ar'.

The Strangeness
There were probably some compromises made in order to squeeze all this into the small package, the biggest and strangest of all is that the Synchronous Preset term '.sp' is GLOBAL - it affects ALL of the F/Fs. If you declare it, it will become global for all registers. WinCUPL also makes things stranger because it knows about this "feature" and will report an error if you declare more than one '.sp' term, but will all the same issue warnings for all the other used registers that don't have their sp term declared.

The rest of the strangeness is the programming algorithm, which seems to have been held "top secret" since the existence of the V750B GAL.
Very few affordable programmers are able to program the 750 series.

Programming
One affordable version, which is tailored very much to the Atmel series of GALs and SPLD devices, is the open-source afterburner project. The programmer itself is a board that plugs onto a standard Arduino controller, it holds a 24-pin ZIF socket and a programmable voltage source for the different Vpp voltages.

The Arduino does all of the actual programming stuff, and it is 'driven' by a simple command-line interface that is compatible with Win, Mac and linux. The project maintainer, Alexander Shniperson ("ole00"), has also designed some special carriers that fit onto the ZIF socket to allow programming of different package outlines. Full build and calibration details are provided, along with the gerber files to send to your favorite pcb manufacturer. The board is easy to assemble and has footprints for both through-hole and SMT components. You'll need a programming environment for the Arduino (the klunky IDE is OK for this).

A big note, though : if you want to program the ATF750 or the ATF1500 family you should choose an Arduino Mega 2560 controller : it has the memory capacity on-board to handle the large fusemaps of these devices. I have been using afterburner to program 8V16 and 22V10 devices for over a year, and have worked with Alexander to iron-out a few problems that were encountered with the ATF750. And it works !

I have attached the ATF750LVC datasheet and, more importantly, a very useful Atmel application note about using the '750s features.

Examples
The first example is a slightly modified form of one of BDD's POC experiments. In his design he was feeding the decoder with both PHI2 and PHI1 (antiphase), and at the same time was eliminating any clock assymetry - a requirement at high clock speeds. I'm currently "messing about" with a redesign of the RP6502 'picocomputer' (using a pi pico to 'drive' the 6502) to incorporate the 65816. I'm not running at breakneck speeds (yet) and as the pico is a 3v device I'm glad to have a cheap and simple PLD that works well at 3v. As it's the pico that supplies the PHI2 clock, I need to have an inverted clock to be able to latch the extended address from the data bus. The declaration in the WinCUPL PLD file is simple, and it works. I haven't yet measured the propagation delay nor experimented with other feedback paths to see what effect they have. I'll update this post once I have the results.
GDS_750c.pld.txt
BDD's example with internal PHI1 source
(5.51 KiB) Downloaded 197 times
EDIT : (rephrased the paragraph above about the individual clocks)
As a clock input can be a combinatory term, my translation of the BDD example above can be simplified by completely removing the PIN definition for pin23 and it's .oe. PHI1 is now just a 'convenience' identifier, but the phrase

Code: Select all

[A18..A16].ck = PHI1;
... will still correctly latch the bank data from the data bus on the falling edge of CLK. Tested in silicon/breadboard !

The second example is from a package of Atmel examples that target many different PLDs. This one is called EX375 but it shows how to create a 20-bit counter using some of the '750s features. Note the use of the '.ck', '.ckmux' and '.dfb' terms.
EX375.PLD.txt
20-bit counter example
(4.14 KiB) Downloaded 220 times
(*) Properties of Quarks - elementary particles (quantum physics)
Attachments
ApplicationNote_Using-ATF750C.pdf
AN "Using the ATF750"
(417.78 KiB) Downloaded 246 times
ATF750_datasheet.pdf
ATF750VLC datasheet
(351.75 KiB) Downloaded 213 times
Last edited by GlennSmith on Sun Jul 20, 2025 2:39 pm, edited 2 times in total.
Glenn-in-France
User avatar
BigDumbDinosaur
Posts: 9425
Joined: 28 May 2009
Location: Midwestern USA (JB Pritzker’s dystopia)
Contact:

Re: The ATF750C : Charm and Strangeness (*)

Post by BigDumbDinosaur »

GlennSmith wrote:
In this thread I'll document my discoveries about this unfortunate "black sheep" of the Atmel ATFxx series PLDs. Black Sheep for a major part in that very few PLD programmers actually know/care about it, probably due to some very weird programming algorithms...

The XGecu T56 unit I acquired last year knows about the ATF750C.  That was the means I used to program the device while experimenting with it.

Quote:
I'm not sure, but AFAIK there is only one speed option, the "-15", which is rated at 15nS maximum propagation delay (pin-to-pin) *AT 3V* (the datasheet says 10nS max. at 5v).

I have the ATF750C-7PX, which is a 7.5 nS (at 5 volts) device in DIP24.  During experimentation, I used the logic analyzer to get an idea of what the device’s actual switching speed was (the logic analyzer’s resolution is ±2 nS—the observed speed might be optimistic by a nS or two).  Being measured in the referenced graphic is the prop time that elapses after VADR (VDA || VPA) goes true.  As I noted in my GAL tester topic, it appeared the ATF750C was consistently performing better than advertised.  Of course, that was only one part being tested, so a conservative design should assume the device will be no faster than its published ratings.

One of these days, I might try to figure out how to synthesize a transparent latch in the ATF750C.  The secret to doing so is probably buried somewhere in the buried logic.
x86?  We ain't got no x86.  We don't NEED no stinking x86!
GlennSmith
Posts: 162
Joined: 26 Dec 2002
Location: Occitanie, France

Re: The ATF750C : Charm and Strangeness (*)

Post by GlennSmith »

BigDumbDinosaur wrote:
The XGecu T56 unit I acquired last year knows about the ATF750C.  That was the means I used to program the device while experimenting with it.
But it is infuriatingly difficult to get a genuine T56 from our favorite suppliers. I got bitten. OK, the T48 they sent me is useful for programming EPROMS (and 8V16, 22V10) but it won't do the '750.
Glenn-in-France
User avatar
BigDumbDinosaur
Posts: 9425
Joined: 28 May 2009
Location: Midwestern USA (JB Pritzker’s dystopia)
Contact:

Re: The ATF750C : Charm and Strangeness (*)

Post by BigDumbDinosaur »

GlennSmith wrote:
BigDumbDinosaur wrote:
The XGecu T56 unit I acquired last year knows about the ATF750C.  That was the means I used to program the device while experimenting with it.
But it is infuriatingly difficult to get a genuine T56 from our favorite suppliers. I got bitten. OK, the T48 they sent me is useful for programming EPROMS (and 8V16, 22V10) but it won't do the '750.
From where were you trying to get a T56?  I got mine from the XGecu store on Amazon.com.
x86?  We ain't got no x86.  We don't NEED no stinking x86!
GlennSmith
Posts: 162
Joined: 26 Dec 2002
Location: Occitanie, France

Re: The ATF750C : Charm and Strangeness (*)

Post by GlennSmith »

BigDumbDinosaur wrote:
GlennSmith wrote:
BigDumbDinosaur wrote:
The XGecu T56 unit I acquired last year knows about the ATF750C.  That was the means I used to program the device while experimenting with it.
But it is infuriatingly difficult to get a genuine T56 from our favorite suppliers. I got bitten. OK, the T48 they sent me is useful for programming EPROMS (and 8V16, 22V10) but it won't do the '750.
From where were you trying to get a T56?  I got mine from the XGecu store on Amazon.com.
It was a few years ago now, but it would either have been someone behind A-zon or someone behind Al-Xpress.
Glenn-in-France
Post Reply