Programmable Logic Devices (PLD) Information
Last revised: October 6, 2024
Reviewed by: Scott Orlosky, consulting engineer
Programmable logic devices (PLDs) are designed with configurable logic and flip-flops linked together with programmable inter-connections.
PLDs provide specific functions, including device-to-device interfacing, data communication, signal processing, data display, timing and control operations, and almost every other function a computer or other “smart” system must perform. Memory cells define and control the functions that the logic performs and how the various logic functions are interconnected.
FPGAs (Field Programmable Gate Arrays) are used in a wide variety of applications ranging from data processing and storage, to instrumentation, telecommunications, and digital signal processing. CPLDs (Complex Programmable Logic Devices), by contrast, offer much smaller amounts of logic up to about 100,000 gates. But CPLDs offer very predictable timing characteristics and are therefore ideal for critical control applications.
Some CPLDs require extremely low amounts of power and are very inexpensive, making them ideal for cost-sensitive, battery-operated, portable applications such as mobile phones and digital handheld assistants.
Categories
Logic devices can be classified into two broad categories — fixed and programmable.
Fixed Logic Devices
As the name suggests, the circuits in a fixed logic device are permanent, they perform one function or set of functions — once manufactured, they cannot be changed.
With fixed logic devices, the time required to go from design, to prototypes, to a final manufacturing run can take from several months to more than a year, depending on the complexity of the device. And, if the device does not work properly, or if the requirements change, a new design must be developed.
Programmable Logic Devices
On the other hand, programmable logic devices (PLDs) are standard, off-the-shelf parts that offer customers a wide range of logic capacity, features, speed, and voltage characteristics — and these devices can be changed at any time to perform any number of functions.
With PLDs, designers use inexpensive software tools to quickly develop, simulate, and test their designs. Then, a design can be quickly programmed into a device, and immediately tested in a live circuit. The PLD that is used for this prototyping is the exact same PLD that will be used in the final production of a piece of end equipment, such as a network router, a DSL modem, a DVD player, or an automotive navigation system. There are no NRE (Non-Recurring Engineering) costs and the final design is completed much faster than that of a custom, fixed logic device.
Another key benefit of using PLDs is that during the design phase customers can change the circuitry as often as they want until the design operates to their satisfaction. That's because PLDs are based on re-writeable memory technology — to change the design, simply reprogram the device. Once the design is final, customers can go into immediate production by simply programming as many PLDs as they need with the final software design file.
Types
Generally, programmable logic devices can be described as being one of three different types:
- Simple programmable logic devices (SPLD)
- Complex programmable logic devices (CPLD)
- Field programmable logic devices (FPGA)
Architecture
There are several manufacturers with many different families of PLD devices, so there are many variations in architecture. The two major types of programmable logic devices are:
The distinction between the two is often a little fuzzy, with manufacturers designing new, improved architectures, and frequently muddying the waters for marketing purposes. Together, CPLDs and FPGAs are often referred to as high-capacity programmable logic devices (HCPLD).
Programming Technology
The programming technologies for PLDs are based on the various types of semiconductor memory. As new types of memories have been developed, the same technology has been applied to the creation of new types of PLDs.
The amount of logic resources available is the major distinguishing feature between SPLDs and HCPLDs. Today, SPLDs typically contain the equivalent of 600 or fewer gates, while HCPLDs have hundreds of thousands, up to a million gates available.
Of the two types of HCPLDs, FPGAs offer the highest amount of logic density, the most features, and the highest performance.
Standards
BS IEC 60748-2-12 — Semiconductor devices — Blank detail specification for programmable logic devices (PLDs)
SMD 5962-88549 — Microcircuits, memory, digital, CMOS, UV erasable, programmable logic device
Programmable Logic Devices FAQs
What are the advantages of using PLDs?
PLDs offer several advantages. They can be reprogrammed to perform different functions. They reduce the need for multiple chips, saving board space, power, and wiring. They also allow for rapid prototyping and design changes without the need for rewiring.
What is the difference between SPLDs, CPLDs, and FPGAs?
SPLDs are the simplest form of PLDs and include devices like PALs and PLAs. They are used for basic logic functions.
CPLD are more complex than SPLDs and consist of multiple SPLD-like blocks interconnected by a programmable interconnect matrix.
Meanwhile, FPGAs are the most complex PLDs, capable of implementing very large and complex logic functions. They are highly flexible and suitable for rapid prototyping and design.
What is the difference between PAL and PLA?
Programmable array logic (PAL) has a fixed OR plane and a programmable AND plane, making it simpler and faster but less flexible.
Programmable logic arrays (PLAs) have both programmable AND and OR planes, offering more flexibility but at a higher complexity and cost.
What are the advantages of FPGAs over other types of PLDs?
FPGAs offer several advantages over other types of PLDs:
- High gate/flip-flop density
- Wide range of I/O standards
- Large number of I/O pins
- Easy in-system programming (ISP)
- High speed and decreasing cost
How do PLDs contribute to rapid prototyping?
PLDs allow designers to quickly develop, simulate, and test their designs using inexpensive software tools. The same PLD used for prototyping can be used in the final production, eliminating non-recurring engineering (NRE) costs and speeding up the design process.
What are the programming technologies used in SPLDs?
Most SPLDs use either fuses or non-volatile memory cells (EPROM, EEPROM, FLASH) to define their functionality.
What are some key differences among ROM, PROM, EPROM, and EEPROM?
Read-Only Memory (ROM) is non-programmable and fixed during manufacturing. Programmable ROM (PROM) can be programmed once. Erasable PROM (EPROM) can be erased and reprogrammed using UV light. Electrically Erasable PROM (EEPROM) can be erased and reprogrammed electrically.
How do you program a PLD?
Programming a PLD involves several steps, which can vary depending on the type of PLD (such as SPLDs, CPLDs, or FPGAs).
Most modern PLDs are programmed using hardware description languages (HDLs) like VHDL or Verilog. These languages allow you to describe the logic and behavior of the circuit.
Some tools also allow for graphical schematic entry, where users can draw the logic gates and connections.
Before programming the PLD, users simulate the design to verify its functionality. This step ensures that the logic behaves as expected.
This simulation checks the timing characteristics of the design to ensure it meets the required performance criteria.
The HDL code or schematic is converted into a netlist, which is a representation of the logic gates and their interconnections. This step is performed by synthesis tools.
The netlist is mapped to the specific resources available in the PLD, such as logic blocks, flip-flops, and I/O pins.
The mapped design is then placed and routed within the PLD. This step determines the physical layout of the logic within the device.
The final step in the design process is to generate a programming file, which contains the configuration data for the PLD.
Popular programming languages include: Python, Java, JavaScript, C, C#, PHP, Swift, and Ruby. The programming file is then loaded into the PLD using a programmer or a development board. This can be done via various methods such as JTAG, ISP (In-System Programming), or other proprietary interfaces.
After programming, the PLD is tested in the actual circuit to ensure it performs as expected. This may involve functional tests, timing tests, and other verification procedures.
Various software tools are used throughout this process, including design entry tools, simulation tools, synthesis tools, and programming tools. Examples include Xilinx ISE, Altera Quartus, and Lattice Diamond.
PLDs can be programmed using different technologies such as PROM, PLA, PAL, EPROM, and EEPROM.
Programming a PLD involves design entry, simulation, synthesis, implementation, programming, and verification. Each step ensures that the final design meets the required specifications and performs correctly in the intended application.
Programmable Logic Devices Media Gallery
References
GlobalSpec—Simple Programmable Logic Devices (SPLD)
GlobalSpec—Digital Principles & Logic Design
GlobalSpec—Rapid System Prototyping with FPGAs
Image credits: