Programmable Logic Devices

Home | Articles | Forum | Glossary | Books

1. Introduction

The ever-rising demand for huge amounts of data to move faster and faster through processors and networks has resulted in an endless sea of logic devices.

To accomplish these tasks, semiconductor technology is moving toward speedier, more powerful processors and denser, more complex "glue chips" (devices that surround processors performing control logic functions) to manipulate information. The breadth of product offerings from the ASIC and programmable logic device vendors allows designers to select the device that is most cost effective for a target application. However, confusing terminology used by manufacturers and various other reasons make choosing among these devices a trying task. Understanding the basic architectures around which these glue chips evolved, their progress, and their design methodologies will ease the task of selecting the right device for an application. Until 1970, most designers were using standard digital components in designing electronic products and systems.

However, these fixed-function devices posed certain limits in achieving lower printed circuit board (PCB) real estate as well as product reliability due to the use of many interconnections. The need to design more compact digital circuits than is possible with standard digital components, without increasing design time and cost hampered design flexibility and led to the development of programmable logic. FIG. 1 shows logic devices classified into five general types.

The programmable logic device (PLD) market has expanded in so many directions that the term has become a generic term for several subclasses of products, including programmable logic arrays, programmable array logic, programmable multilevel devices, and field programmable gate arrays.

Programmable memories such as PROM, EPROM, and EEPROM are the earliest and simplest forms of PLD.

FIG. 1 Logic device types

This section is an introduction to the designer who needs to use simple PLD applications and to identify the possibilities for using more complex forms of programmable devices such as field programmable gate arrays.

2.Basic Concepts

A PLD is an integrated circuit that is user configurable and capable of implementing digital logic functions. A typical PLD is composed of a programmable array of logic gates and interconnections with array inputs and outputs connected to the device pins through fixed logic elements such as inverters and flip-flops, based on the fact that all digital circuitry can be built using the basic elements such as NAND and NOR gates.

Any combinatorial logic function can be expressed as a sum of products: The variables are ANDed together to form products and the products are then ORed to form a sum. All PLDs are made up of combinations of AND gates, OR gates, inverters, and flip-flops. Programmable elements usually fuse connect the gates and flip-flops implement the desired logic functions. Each programmable logic device family requires a unique algorithm for fuse programming and verification on commercial programming equipment. The algorithm is a combination of voltage and timing required for addressing and programming fuses in the user array. The PLD's programming circuitry is enabled by pulsing one or more pins to a specific voltage level, generally different from normal logic levels. Once the programming circuitry is enabled, inputs become addressing nodes for the input and product lines within the PLD. The actual fuse link is at the intersection of the input product lines. Once addressed, the fuse can be programmed by pulsing the output associated with the location of the fuse link. A fuse can be verified to be programmed by enabling the programming circuitry, supplying the fuse address to the device's inputs, and reading the level of the device's output. In erasable PLDs, the fuses can be reset, effectively erasing the old design, so the PLD can be reprogrammed with a new design. For an average PLD user, the actual method by which the PLD "stores" data is not all that important. Most of the good PLD development tools available today handle code implementation automatically, leaving the developer free to concentrate on code development.

To keep the PLD easy to understand and use, a special convention has been adopted. FIG. 2 is the representation of a three-input AND gate. Note that only one line is shown as the input to the AND gate. This line commonly is called the product line. The inputs are shown as vertical lines, and at the intersection of these lines are the programmable fuses. An x represents an intact fuse, which makes that input part of the product term. No x represents a blown fuse, which means that input will not be part of the product term. A dot at the intersection of any line represents a hardwired connection.

FIG. 2 (a) basic symbols and (b) example.

In FIG. 2(b), the symbols are extended to develop a simple two-input programmable AND array feeding an OR gate. Note that buffers have been added to the inputs, which provide both true and complement outputs to the product lines. The intersection of the input terms forms a 4 x 3 programmable AND array.

From these symbols, we can see that the output of the OR gate is programmed u to the following equation, F -- AB + AB. Note that the bottom AND gate has an x marked inside the gate symbol. This means that all fuses are left intact, which results in that product line having no effect on the sum term. In other words, the output of the AND gate will be a logic 0. When all the fuses are blown on a product line, the output of the AND gate always will be a logic 1. This has the effect of locking up the output of the OR gate to a logic level 1.

FIG. 3 PROM architecture

2.1 PROM as a Programmable Device

The PROM was the first widely used programmable logic family. Its basic architecture is an input decoder configured from AND gates, combined with a programmable OR matrix on the outputs. As shown in FIG. 3, this allows every output to be programmed individually from every possible input combination. In this example, a PROM with four inputs has 24, or 16, possible input combinations. With the output word width being 4 bits, each of the 16 x 4 bit words can be programmed individually. Applications such as data storage tables, character generators, and code converters are just a few design examples ideally suited for the PROM. In general, any application that requires every input combination to be programmable is a good candidate for a PROM. However, PROMs have difficulty accommodating large numbers of input variables. Eventually, the size of the fuse matrix will become prohibitive, because for each input variable added, the size of the fuse matrix doubles.

2.2 PLD Architecture

To overcome the limitation of a restricted number of inputs, the PLD utilizes a slightly different architecture, as shown in FIG. 4. The same AND- OR implementation is used as with PROMs, but now the input AND array is programmable instead of the output OR array. This has the effect of restricting the output OR array to a fixed number of input AND terms. The trade-off is that, now, every output is not programmable from every input combination, but more inputs can be added without doubling the size of the fuse matrix. For example, if we were to expand the inputs on the PLD shown in FIG. 4 and on the PROM in FIG. 3 to ten, we would see that the fuse matrix required for the PLD would be 20 x 16 (320 fuses) vs. 4 x 1024 (4096 fuses for the PROM). It is important to realize that not every application requires every output to be programmable from every input combination. This makes the PLD a viable product family.

Simple PLDs such as programmable array logic (PAL TM of Advanced Micro Devices) and generic array logic (GAL TM of Lattice Semiconductor) derive their usefulness from an internal structure designed to allow the programming of either arbitrary products or sums or both. For example, PAL devices have a programmable AND-array and a fixed OR-array (FIG. 4). PAL devices have two basic versions, with and without memory elements (flip-flops). Combinational PALs are devices that are based on a PAL structure but contain no memory elements. Combinational PALs are useful for a wide variety of random logic functions, including decoders, interface logic, and other applications that require a simple decoding of device inputs. The 16L8, a typical combinational PAL, is diagrammed in FIG. 5. The diagram for the 16L8 shows that the device has ten dedicated inputs (pins 1 through 9 and 11) to the programmable AND array. Each input to the array is available in its true or a complemented form, allowing any combination of the inputs to be expressed on any row of the array. Each row of the 16L8 array corresponds to one product term of the device.

The 16L8 has eight output gates, each of which is fed by a seven-input OR gate. Each output of this device is capable of implementing a logic function composed of seven or fewer product terms. The eighth product term is used to control the three-state output buffer.

FIG. 4 PLD architecture

FIG. 5 The 16L8 PAL device

Some devices, such as GAL family from Lattice Semiconductor, integrate an output logic macro cell on some or all of their output pins ( FIG. 6). The macro cell is configured by the designer on a pin-by-pin basis to implement the desired functions. This allows design of synchronous logic blocks.

FIG. 6 The 16V8- (GAL-)type PLD with output macro cells

FIG. 7 An output macro cell: (a) polarity selection, (b)output logic macro cell. (Source: Programmable Logic Databook, 1993, Texas Instruments Inc.)

FIG. 8 User options, resulting macro cell feedback and output logic after programming: (a) register feedback, registered active low output; (b) register feedback, registered active high output; (c) I/O feedback, combinational active low output; (d) I/O feedback, combinational active high output. (Source: Programmable Logic Databook, 1993, Texas Instruments Inc.)

PLDs equipped with output macro cells offer total output flexibility.

FIG. 7 shows examples of these features as implemented in the TIBPAL22V10 device. Fuses SO and S1 allow selection between registered or combinational outputs as well as output polarity. FIG. 8 illustrates the user options.

The user options are as follows:

1. Clock polarity select. The clock signal can be inverted via a clock polarity select fuse. This allows the transition of the register output to be on either the positive or negative edge of the clock pulse.

2. Internal-state registers. Several devices offer internal-state registers, often called buried registers. With the internal-state register, the output of the register is fed back into the AND array rather than to an output pin. This feature can be used for timing control sequences.

3. Variable product terms. Some PLD device architectures vary the number of product terms associated with each output pin to allow better utilization of the programmable array.

There may be variations of these in practical devices from different manufacturers.

2.3 FPLA Architecture

The field programmable logic array (FPLA) goes one step further in offering both a programmable AND array and a programmable OR array ( FIG. 9). This feature makes the FPLA the most versatile device of the three but impractical in most low-complexity applications. For applications in which complex timing control is required, Texas Instruments (TI) offers several programmable state machines based on the FPLA architecture. Some of these devices incorporate internal state registers or on-chip binary counters to aid in generating complex timing sequences.

FIG. 9 FPLA architecture.

2.4 Erasable PLDs

Another type of programmable logic device is the erasable programmable logic device (EPLD). Based on traditional PLD architecture, these devices typically offer a higher level of flexibility in the input and output configuration, register selection, and clocking options. CMOS EPLDs provide a higher level of density over standard PLDs and have lower power dissipation than bipolar PLDs.

All programmable logic approaches discussed have their own unique advantages and limitations. The best choice depends on the complexity of the function being implemented and the current cost of the devices themselves. It is important to realize that a circuit solution may exist for more than one of these logic families.

3. Advantages of Programmable Logic

Low-density PLDs offer many advantages to the system designer presently using several standard catalog small scale integrated circuit (SSI) and medium scale integrated circuit (MSI) functions. The following list mentions just few of the benefits achievable when using programmable logic:

• Package count reduction. Several MSI/SSI functions can be replaced with one PLD to reduce system power requirements.

• PCB area reduction. Fewer devices consume less PCB space.

• Circuit flexibility. Programmability allows for minor circuit changes without changing the PC board.

• Improved reliability. With fewer interconnections, overall system reliability increases.

• Shorter design cycle. When compared with standard-cell or gate-array approaches, custom functions can be implemented much more quickly.

• Proprietary design protection (fuse protection). Circuit can be protected by blowing the security fuse.

• Minimization of design labor. Advantages of PLD computer-aided design tools could help save time in logic implementation.

4. Designing with PLDs

FIG. 10 shows a basic PLD design flowchart. The best way to demonstrate the unique capabilities of the PLD is through a design example. With the design example given later, the user will gain the basic understanding on how to design a PLD application using design tools.

FIG. 10 PLD process flowchart

5. Design Tools for PLDs

An important secondary issue to choosing and using PLDs is selecting the right design tools. Design tools for PLDs comprise compilers, simulation products, and test software. Compilers convert the design into a fuse map; simulation products allow testing the design before programming a PLD to make sure that the design is right. Test software, which includes fault graders and automatic test pattern generators, helps keep things right during production.

A number of software products are available to make logic designs easier and less cumbersome. When choosing a design tool, understanding the design process involving PLD designs and the key differences in design tools is necessary to help narrow down the choices. FIG. 11 shows the typical design steps involved in designing with PLDs. The first step is to enter the design, and the common design entry methods are shown in FIG. 11. Not all compilers support every design entry method. Schematic and Boolean entry methods remain popular among PLD designers, as they work well with 7400 TTL-style designing.

Many PLD compilers allow creating a design without regard to a particular device architecture. These compilers accept device specifications and allow postponing device selection until much later. Device specificity introduces one of the first criteria you must consider when selecting a PLD compiler. Another key factor involved in selecting a compiler is good optimization performance. Good optimization centers around the compiler's ability to generate device solutions that require minimal resources for a given logic function. Logic reduction algorithms eliminate redundant elements while preserving the required functionality.

FIG. 11 Steps involved in designing with PLD compilers.

Different types of architecture often require different optimization techniques to maximize their use.

After optimization, a device must be selected with the physical resources necessary to implement the reduced equations. Most compilers can partition a design by trying single and multiple PLD solutions to create the "best fit." Some engineers appreciate a compiler's ability to partition. However, others know what PLDs they want to use and are not interested in the compiler's ability to partition.

Even if familiar with all the devices a designer may wish to use, partitioning software can explore many more possibilities in far less time than by hand.

Furthermore, some compilers will allow creating subset libraries that contain just the PLDs in the designer's lab stock or on a company's approved list, eliminating obviously useless choices when generating alternative solutions.

Most PLD compilers include some sort of simulation capability. However, sometimes simulators may have to be purchased separately to fulfill particular requirements. The simulators with the least capabilities accept input and output vectors created by the designer and simulate the designer's logic equations to ensure that the equations produce the results expected. More complex simulators use a model of a target PLD to create a simulation that reproduces the behavior specified. For this type of simulation, the designer specifies the input vectors, and the simulator generates output vectors or waveforms. The results can be checked to see if a design works as expected. Thus, the designer finds out how the circuit will behave instead of guessing and verifying that guess.

After obtaining satisfactory results from the functional simulation, the next step is to run the place and route software. This is a critical step to get accurate timing simulation. There will be numerous possible routings, and it is difficult to comment on the ability of the routers to successfully route designs that meet tough timing requirements. Although users prefer placing and routing to be completely automatic, most do not want to run into a brick wall if the automatic software cannot handle the job. Some vendors offer an interactive design editor which allows manually tidying up things. Once the routing is complete, the next step will be to verify the timing, by loading the timing information generated by the place and route software into a simulator and running the timing simulation. The final step is to verify that the program has been correctly loaded into the device and debug. Most PLD problems can be found and corrected with no significant cost or schedule impact.

To achieve satisfactory programming yields for PLDs, it is critical that the device programmers adhere to the programming algorithm specifications as defined by the device manufacturer. Some helpful hints for good programmability follow:

1. Follow accepted standards for electrostatic discharge (ESD) protection.

Equipment, personnel and work surfaces should be grounded. Air ionization is recommended when handling static sensitive devices outside protective containers.

2. Misaligned connectors and worn sockets can contribute to poor programming yield. Be aware of the manufacturer's specification for number of insertions and be sure sockets are replaced frequently to ensure proper contact.

3. Be sure to use the latest update. Most program manufacturers offer updates and repair services to their users. The cost of service typically is not much more than the cost of a single update and the manufacturer may update four or more times per year.

4. Programming equipment should be calibrated. It is recommended to have no less than two calibrations per year.

5. Verify that the correct family pin-out codes or device entry codes are being used. It is important to understand that different algorithms may be needed for different speed versions of the same function.

6. Ensure that the programming equipment is evaluated and approved by the device manufacturer for highest possible programming yields and quality level.

In addition to the functional testing described earlier, static parametric testing such as input and I/O leakage currents, output high and low voltages under static loading, and power supply current will only improve the quality of the PLD going into the application. This will ensure that devices are functional and were not damaged due to ESD or electrical + overstress (EOS) during the customization process.

The CUPL (Logical Devices Inc.), PL Designer (MINC Inc.), and ABEL (Data I/O) are universal computer-aided design (CAD) tools that support PLDs.

With these software products, complex designs can be described using Boolean equations, truth tables, state machine diagrams, and schematic capture methods available on most CAD systems.

ABEL consists of a special purpose, high-level language used to describe logic designs and a language processor that converts logic descriptions to programmer load files or JEDEC files. These files contain the information necessary to program and test PLDs.

The ultimate function of these software products is to generate a JEDEC file of the original design and program the PLD. However, most software vendors provide more than a JEDEC file as output from the software. Here, we describe the attributes of a few of the popular logic design products. We recommend contacting specific manufacturers to obtain the latest and most comprehensive information available.

The CUPL (universal compiler for programmable logic), like ABEL, is a universal CAD tool that supports PLDs. It has utility files that facilitate conversion of designs done in other design software environments to the CUPL design environment. CUPL also produces a standard programmer load file in JEDEC format, making it compatible with logic programmers that accept JEDEC files.

Some features of CUPL design language follow:

• Flexible forms for design description. The forms include Boolean equations, truth tables, and state diagrams.

• Expression substitutions and time-saving macros. This involves the assignment of names to equations and having the software do the substitution any time the assigned name is encountered during the compiling process.

• Shorthand features. These features include list notation, bit fields, distributive properties, and De Morgan's theorem. List notation means the nested directive

[A4, A3, A2, A1, A0]

can be represented as

[A4 . .0]

Bit fields means that a group of bits may be assigned to a name as in

FIELD ADDR = [A4...0]

In the use of distributive property,

A & (B # C)

is replaced with

A & B # A & C

In De Morgan's theorem, (A & B) is replaced with

!A# !B

• The CUPL language processor. CUPL provides design templates that allow designers to just fill in the blanks when originating a design. Free form comments can be used throughout the design.

• Error checking. Error checking with detailed error messages directs designers to the source of problems during debugging.

• Logic equation reduction. The logic equation reduction capabilities on CUPL offers a choice of several minimization levels for a number of product terms. This can be from just fitting a design without minimization or reducing the product terms to an optimum, before finalizing the fuse map of the PLD.

• Design simulation. This is accomplished using the CSIM feature, which allows designers to check the workability of the design before a part is programmed.

Functional simulation can be done by the programmer when test vectors are provided.

FIG. 12 Address decoder for an Z8800-based embedded controller using a PLD/system block diagram

6. A Design Example

We take a simple example of an address decoder, as per FIG. 12. This block illustrates the address decoding and generating the control signals in a memory-mapped Z8800-embedded application.

The PLD is expected to generate the chip select and control signals for the peripherals, as listed under output in the listing as per Listing 1 (coming soon). This is based on the package CUPL. Listing 2 (coming soon) is a comprehensive description of the logical expressions. CUPL creates expanded product terms, a variables list, a fuse plot, and the chip diagram ( FIG. 13) as per Listing 3 (coming soon).

(coming soon) Listing 1 PLD Design for an Address Decoder

FIG. 13 System-created pin configuration of the PLD

7. High-Density PLDs

Even the largest PLAs and PALs can achieve integration levels equivalent to only a few hundred gates. The limitations on low-density PLDs are attributable to the rigidity of the AND-OR plane organization and its inability to perform any sequential or counter register functions at a rudimentary level.

FIG. 14 Programmable logic marketplace. (Motorola Inc.)

As the progress of semiconductor technology made higher integration levels possible, high-density PLDs such as CPLDs and FPGAs emerged. The present marketplace of PLDs can be further classified into the following families ( FIG. 14):

1. Programmable array logic (PAL).

2. Simple PLDs (SPLDs).

3. Complex PLDs (CPLDs).

4. Field programmable gate arrays (FPGAs).

CPLDs (sometimes called super PALs; Motorola Inc., Application note AN- 1615) essentially are a large collection of PAL-like structures on one chip, desirable for designs that have tight speed requirements. FPGAs, on the other hand, consist of arrays of logic blocks connected by rows and columns of programmable interconnection lines and excel at designs that require large numbers of registers.

Choosing CPLDs or FPGAs or both for a design requires understanding the strengths of each. CPLDs usually are a better choice for designs that have very tight speed requirements, simply because of their deterministic timing. This is not to say that CPLDs will be the fastest implementation of a design but simply that the final speed will be fairly predictable at the beginning of the design cycle. Creative FPGA design can result in very fast logic, but it also can require time-consuming attention to the placement and routing details of internal logic blocks. Generally, CPLDs excel at implementing large amounts of combinatorial logic, and FPGAs excel at designs that require large numbers of registers. For example, implementing control functions such as state machines depends on taking advantage of the architectural features of the device being used. If encoding is used to develop a state machine, the resulting logic tends to work best in logic devices having lots of combinatorial gates and few registers, such as CPLDs. On the other hand, if a bit-per-state mapping method is used to develop a state machine, the design will require more registers but few logic gates, which can be best implemented using FPGAs. A comprehensive description of these devices and designing with CPLDs and FPGAs are beyond the scope of the section.

If a design is dense, requiring more than 20,000 gates and high-volume production is expected, the best choice for implementation would be full-custom ASICs or standard cell-based designs (Neigh and Bishop, 1988; Napier, 1992). In full-custom ASICs, including cell-based systems and optimized arrays, there is no preprocessing of the silicon and the designer can place any structure onto the design. In cell-based designs, circuit elements such as D-types and full addresses are predesigned. The designer places these in position and forms the connections between them. This generally is done manually and requires a detailed knowledge of silicon technology.

Recently, PLDs, particularly FPGAs, have been gaining momentum over traditional ASICs as the logic device of choice for system designs with fewer than 20,000 gates. High-density PLDs are starting to break the price barrier that kept them from volume applications. Keeping in mind that mask-programmed gate arrays are faster and more capacious than FPGAs, logic designers have several product development paths they could embark on:

• Do an FPGA design, reserving the option to convert the FPGA to a mask-programmed gate array later.

• Do a multiple FPGA design, reserving the option to convert the FPGA to a single mask-programmed gate array later.

• Do an FPGA/multiple FPGA and mask-programmed gate-array design in parallel, using FPGAs for prototypes or initial production runs.

Several companies offer FPGA-to-ASIC conversion to achieve these goals.

Historically, designers have viewed PLDs as prototypes and used gate arrays for more cost-effective high-volume applications. However, high-density PLDs are making inroads on territory that traditional ASICs and gate arrays once dominated.


  1. Conner, Doug. "Design Tools Smooth FPGA Configuration." EDN (June 7, 1990), pp. 49-58.
  2. Dettmer, Roger. "User Programmable Logic--Chasing the Gate Array." IEE Review (May 1990). Hannington, Steven. "Choosing and Using Programmable Logic." Electronics and Wireless World (July 1990), pp. 619-625.
  3. Liebson, Steven. "PLD Development Software." EDN (August 1990), pp. 100-116.
  4. Maxfield, Clive. "Field Programmable Devices." EDN (October 10, 1996), pp. 201-206.
  5. Miller, Warren. "Design Efficient State Machines for PLDs or FPGAs." EDN (March 18, 1993), pp. 225- 232.
  6. Motorola Inc. "An FPGA Primer for PLD Users." Application note 1615. Motorola Inc., Phoenix, AZ, USA eoe.
  7. Napier, John C. "Bringing IC Layout In-House." EDN (September 3, 1992), pp. 108-118.
  8. Neish, P., and P. Bishop, Designing ASICs. Ellis Howard Publications, England: 1988.
  9. Pellerin, David, and Michael Holley. Practical Design Using Programmable Logic. Englewood Cliffs, NJ: Prentice-Hall, 1991.
  10. Schulze, Bill. "Avoid Pitfalls in Selecting the Right Programmable-Logic Design Tool." Electronic Design (November 7, 1991), pp. 71-81.
  11. Small, Charles S. "Programmable Logic Devices." EDN (February 5, 1987), pp. 112-127.
  12. Small, Charles S. "Programmable Logic Devices." EDN (November 10, 1988), pp. 142-156.
  13. Small, Charles S. "Programmable Gate Arrays." EDN (April 27, 1989), pp. 146-154.
  14. Small, Charles S. "FPGA Conversion." EDN (June 4, 1992), pp. 107-116.
  15. Swager, Anne Watson. "Choosing Complex." EDN (September 17, 1992), pp. 74-84.
  16. Texas Instruments. Programmable Logic Databook--1993. Texas Instruments.
Top of Page

PREV.   NEXT Related Articles HOME