This text contains my condensed notes from my self tuition in
programmable logic.
I took the trouble to make them because although there are many
texts around, most of them are too long winded for an impatient
guy like me who wants to get in, grab the essential knowledge,
and get out.
When I research a subject, I find the first hurdle is sifting out the key concepts from the mountains of waffle. Usually the key concepts are quite easy to understand.
I'll assume you have some experience of TTL gates (perhaps even simple PLDs) and wants to investigate the next steps. If not, then you really need to get some before progressing.
First thing you need to know is the architectural differences
between devices.
Click on the title above for simple diagrams.
For SPLDs, very easily using CUPL for example. It doesn't take much looking at an example PLD source file before you see the syntax and start writing your own. About as hard as writing a few lines of assembler code. CUPL is very simple and therefore fast.
For CPLDs, ABEL is the simplest language. About the level of writing a few lines of BASIC. ABEL is fairly simple and fast.
For CPLDs, you typically use VHDL or Verilog. About the level of writing in Ada or Pascal respectively. These compile a target-independent intermediate EDIF file, which is then used to generate configuration data for the target-specific devices. The latter process is done by programs written by the target chip manufacturers. These are called 'fitters', because they work out how to fit the compiled EDIF description into the chip.
VHDL and Verilog can also be used for CPLDs.
Compilers are relatively fast, fitters are the slow process. Fitting an logic design into a chip is like fitting a conventional circuit into a PCB, but even harder because signal routing is much more restricted and human skills are limited to suggesting initial placement of logic blocks and I/O pins. The fitter is a bit like a PCB autorrouter program, and equally slow.
Compilers can be obtained from the public domain, though one can just as easily get software from the chip makers themselves:
Xilinx produce the Foundation software, and the Webpack software.
Foundation is the earlier product available on CD, and supports the older devices
Webpack is the later software downloadable from the net, and supports the newer devices.
They overlap in the mid-range. At the very top of the range you may have to pay for fitters that can cope with the bigger chips.
Altera produce the Quartus software.
They have their own proprietary language - AHDL (Altera Hardware Design Language) and although this may have good points it does lock your designs into Altera software.
Atmel are another source.
Atmel are noted for their reprogrammable range of products, including the popular 8051, their own AVR micro design, and ARM based products.
When first stepping into the FPGA device market, there seems a bewildering array of devices. I sifted throught the data sheets to summarise the key features of the various device families available.
Again this first seems bewildering. They are typically rated in terms of the number of equivalent gates they can replace. This is a hard figure to quantify, and usually a minimum and maximum is quoted. The number of logic cells is not such a good guide to complexity because some cells are more complex than others, but it is a precise number and I've used this to sort a table of devices.
The ones available in PLCC packages (socketable) and
preferably have JTAG interfaces.
There are devices in 44, 68 and 84 pin PLCC packs. These should
be okay for most hobbyist designs.
Unfortunately the FPGA market seems to be pushing larger devices in the newer families, which are moving away from PLCC packages toward surface mount packages with closer pins on a metric grid.
Programming can be do through a printer, USB or RS232 port. The printer cables rely on the PC to generate the programming signals, and so are cheaper than the other cables which contain some microcontroller to geerate the signals.
Manufacturers and others can sell you a printer port cable, but the circuits are readily available and you can make one yourself. Typically they just have a TTL chip to tristate buffer the signals.