Programmable Logic

There are many types of Programmable Logic Devices (PLDs), beginning with simple combinations of digital logic that are integrated on one chip. Complex Programmable Logic Devices (CPLDs) and Field Programmable Gate Arrays (FPGAs) are general-purpose semiconductor devices that can be programmed after shipping. They are very design-flexible and user-customizable hardware devices that can implement any logical function that an application-specific integrated circuit could perform, but the ability to update the functionality offers advantages for many applications.

PLDs contain programmable logic components called Logic Elements (LEs) and a hierarchy of reconfigurable interconnects that allow the LEs to be physically connected. You can configure LEs to perform complex combinational functions, or merely simple logic gates like AND and XOR. The logic blocks may also include memory elements, which may be simple flip-flops or more complete blocks of memory.

CPLDs are large-scale logic devices with up to thousands of programmable logic elements, non-volatile memory, and I/O block on one chip. Connections between the logic elements on these semiconductor chips are customized by the user with software tools. CPLD architecture has a predictable timing performance and speed, offers a range of logic capabilities, and is often employed in portable, battery-operated applications. FPGAs are denser and more complex than CPLDs and are used to implement larger or more complex designs.

A FPGA is not restricted to any predetermined hardware function. An FPGA allows you to program product features and functions, adapt to new standards, and reconfigure hardware for specific applications even after the product has been installed in the field—hence the name "field-programmable". Unlike previous generation FPGAs using Input and Output (I/O) with programmable logic and interconnects, today's FPGAs consist of various mixes of configurable embedded SRAM, high-speed transceivers, high-speed I/O, logic blocks, and routing.

PLDs have many design advantages, including rapid prototyping, shorter time to market, and the ability to re-program in the field. FPGAs have evolved from their primary use as a prototyping platform to wide use in mainstream volume production today.

Typical FPGA consists of many small logic blocks interconnected by programmable routing resources.

FPGA

The Field-Programmable Gate Array (FPGA) is a general-purpose semiconductor device containing a large number of digital logic building blocks. In terms of speed-to-market, design flexibility, and cost, FPGAs are hardware used when a traditional software-programmable processor system is not enough, but a customer Application Specific Integrated Chip (ASIC) is too much. FPGAs are denser and more complex than CPLDs.

FPGAs are advantageous for quickly bringing a complete hardware system up and operating because they are completely customizable and thus very flexible. Any number or type of peripherals can be programmed into the FPGA and the designer can create only what they need, versus buying an off-the-shelf processor with a unique blend of peripherals. Processors often include features that are not needed in a particular design, which can needlessly increase cost.

FPGAs usually come as a blank slate with a large library of building blocks that are implemented with accompanying engineering development tools and resources.

In an FPGA, a custom hardware system including peripherals must be designed, which is more complex a task than a ready-made processor or System-on-a-Chip (SoC). For FPGAs, the trade-off is design flexibility and speed-to-market, but they come with increased design complexity.

The lowest level of an FPGA is a Logic Element (LE). This building block has a lookup table and a small bit of storage. Along with these LEs, FPGAs contain clocks, Input and Output (I/O), memory and other more sophisticated blocks. Many FPGAs are integrated with a physical, embedded processor core, typically called a hard processor. A soft processor can be programmed using the FPGA’s logic, as well as memory, communication buses, peripherals, and various controllers. FPGAs are no longer just for prototyping. Both FPGAs and FPGA-based platforms are in wide use today and rival ASICs for selection in volume production.

Complex Programmable Logic Devices (CPLDs) are large-scale logic devices with hundreds or thousands of programmable logic gates, non-volatile memory, and an I/O block in one chip. CPLD architecture has a predictable timing performance and speed, and offers a range of logic capabilities. Connections between the logic gates on these semiconductor chips are customized by the user with development tools.

Implementing design changes is flexible and easy to do with a CPLD, because CPLDs can be re-programmed, and some CPLDs can be re-programmed in-circuit, which means that changes can be made at any time, including on the production line, in the field, or in finished goods. CPLDs are relatively low in power consumption and cost, so they are ideal for battery-operated portable or hand-held applications.

Development tools are essential for quickly building a design and are useful for learning, developing software and settings, and testing. Development tools are created for a specific product or series of products. A development kit can provide an excellent experience for a design engineer if it is complete and easy to use as it arrives, just out of the box. They are often used as a springboard to getting up and running before customizing and prototyping.

Development tools can include hardware boards, schematics, cables, documentation, reference designs, example software code, an Integrated Development Environment (IDE, a kind of software platform/coding tool), Gerber files for printing the development board on additional PCBs later on, and hardware accessories, modules or daughter boards.

Development tools are also a critical sales tool. An excellent product will be set aside for another if development tools are insufficient or otherwise difficult to use. Manufacturers today often provide a website with a community forum so that people can locate documentation, share experiences, advice, tips, and get or give help.