Logic Arrays
Like memory (bits cells organized into an 2-D array to store data), gates can be organized into regular arrays. If the connections are made programmable, the logic arrays can be configured to perform any function without the use having to connect wires in specific ways. Most logic arrays are also reconfigurable, allowing designs to be modified without replacing the hardware. Reconfigurability is valuable during development and is also useful in the field, because a system can be upgraded by simply downloading the new configuration.
This sections introduces two types of logic arrays:
Programmable logic arrays (PLAs): the older technology, perform only combinational logic functions.
Field programmable logic arrays (FPGAs): perform both combinational and sequential logic.
Programmable Logic Array
Programmble logic arrays (PLAs) implement two-level combinational logic in sum-of-products (SOP) form. PLAs are built from and AND array followed by an OR array, as shown in Figure 5.54.

The inputs (in true and complementary form) drive an AND array, which produces implicants, which in turn are ORed together to form the outputs. An MxNxP-bit PLA has M inputs, N implicants, and P outputs.
Figure 5.55 shows the dot notation for a 3x3x2-bit PLA performing functions and . Each row in the AND array forms an implicant. Dots in each row of the AND array indicate which literals comprise the implicant. The AND array in Figure 5.55 forms three implicants: , and . Dots in the OR array indicate which implicants are part of the output function.

Figure 5.56 shows how PLAs can be built using two-level logic. An alternative implementation is given later.

Simple programmable logic devices (SPLDs) are souped-up PLAs that add registers and various other features to the basic AND/OR planes. However, SPLDs and PLAs have largely been displaced by FPGAs, which are more felxible and efficient for building large systems.
Field Programmable Gate Array
A field programmable gate array (FPGA) is an array of reconfigurable gates. FPGAs are built as an array of configurable logic elements (LEs), also referred to as configurable logic blocks (CLBs). Each LE can be configured to perform combinational or sequential functions. Figure 5.57 shows a general block diagram of an FPGA.

The LEs are surrounded by input/output elements (IOEs) for interfacing with the outside world. The IOEs connected LE inputs and outputs to pins on the chip package. LEs can connect to other LEs and IOEs through programmable routing channels.
Two of the leading FPGA manufacturers are Intel (formerly Altera Corp.) and Xilinx, Inc.. Figure 5.60 shows a single LE from Intel’s Cyclone IV FPGA, introduced in 2009. The key elements of the LE are a 4-input lookup table (LUT) and a 1-bit register. The LE also contains configurable multiplexers to route signals through the LE. The FPGA is configured by specifying the contents of the LUTs and the select signals for the multiplexers.

Each Cyclone IV LE has one 4-input LUT and one flip-flop. By loading the appropriate values into the LUT, it can be configured to perform any function of up to four variables. Configuring the FPGA also involves choosing the select signals that determine how the multiplexers route data through the LE and to neighboring LEs and IOEs. Altera groups 16 LEs together to create a logic array block (LAB) and provides local connections between LEs within the LAB.
In summary, each Cyclone IV LE can perform one combinational and/or registered function, which can involve up to four variables. Other brands of FPGAs are organized somewhat differently, but the same general principles apply. For example, Xilinx’s 7-series FPGAs use 6-input LUTs instead of 4-input LUTs.
The designer configures an FPGA by first creating a schematic or HDL description of the design. The design is then synthesized onto the FPGA. The synthesis tool determines how the LUTs, multiplexers, and routing channels should be configured to perform the specified functions. This configuration information is then downloaded to the FPGA.
Last updated

