8.5 • Universal PAL and Generic Array Logic (GAL) 347
Pin 11 provides an active-LOW Output Enable function. This is selected by local
architecture cells to provide control of the output tristate buffer, either from theO__Epin or from
a product term in theANDmatrix. If theO__Efunction is unused, the pin can be used as an input.
GAL22V10
Figure 8.18 shows the logic diagram of a GAL22V10 generic array logic device.
This industry-standard device has a number of features that make it superior to the
PALCE16V8.
FIGURE 8.16
Macrocell Configurations for a PALCE16V8 PLD (Courtesy of Lattice Semiconductor Corporation)
D Q D Q
OE OE
a. Registered active low b. Registered active high
c. Combinatorial I/O active low d. Combinatorial I/O active high
e. Combinatorial output active low f. Combinatorial output active high
g. Dedicated input
CLK CLK
VCC VCC
Note 1 Note 1
Note 2
Notes: Adjacent I/O pin
1. Feedback is not available on pins 15 and 16 in
the combinatorial output mode.
2. This configuration is not available on pins 15 and 16.
Q Q
348 C H A P T E R 8 • Introduction to Programmable Logic Architectures
1 1
0 X
1 0
SL14
SL04
SG1
D Q
1 0
0 X
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL04
I/O4 16
I/O5 17
I/O6 18
I/O7 19
20
0 3 2324
24
31
16
23
8
15
0
7
4 7 8 1112 15 16 19 20 27 28 31
VCC
1 1
0 X
1 0
SL16
SL06
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL06
VCC
1 1
0 X
1 0
SL17
SL07
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG0 SL07
CLK OE
VCC
VCC
1 1
0 X
1 0
SL15
SL05
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL05
VCC
0 34 7 8 1112 15 16 19 20 2324 27 28 31
CLK/I0 1
I1 2
I2 3
I3 4
I4 5
1 0
Q
Q
Q
Q
FIGURE 8.17 (a)
PALCE16V8 Logic Diagram (Courtesy of Lattice Semiconductor Corporation)
8.5 • Universal PAL and Generic Array Logic (GAL) 349
1 1
0 X
1 0
SL10
SL00
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
0 3 2324 SG0 SL00
56
63
48
55
40
47
32
39
4 7 8 1112 15 16 19 20 27 28 31
VCC
1 1
0 X
1 0
SL12
SL02
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL02
VCC
1 1
0 X
1 0
SL13
SL03
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SL03 SG1
I/O3 15
I/O2 14
I/O1 13
CLK OE
VCC
GND
1 1
0 X
1 0
SL11
SL01
SG1
D Q
1 0
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL01
VCC
OE/19
0 34 7 8 1112 15 16 19 20 2324 27 28 31
I8
I/O0 12
13
10
9
I7 8
I6 7
I5 6
Q
Q
Q
Q
FIGURE 8.17 (b)
(PALCE16V8 Logic Diagram
350 C H A P T E R 8 • Introduction to Programmable Logic Architectures
FIGURE 8.18
GAL22V10 Logic Diagram
1. There are more outputs (10 as opposed to 8 for the 16V8).
2. There are more inputs (11 dedicated inputs, plus any I/O lines used as inputs).
3. The output logic macrocells are of different sizes, allowing expressions with larger
numbers of product terms in some OLMCs than others. There are two OLMCs with
each of the following numbers of product lines: 8, 10, 12, 14, and 16. This allows more
flexibility in design, while minimizing the number of product lines.
8.6 • MAX7000S CPLD 351
FIGURE 8.19
GAL22V10 OLMC Configurations
4. OLMC configuration is much simpler than that of a PALCE16V8. Two architecture
cells per macrocell, S0 and S1, select the output type, as shown in Figure 8.19.
5. There are product lines for Synchronous Preset (SP) and Asynchronous Reset (AR). The
SP line sets all flip-flops HIGH on the first clock pulse after it becomes active. The AR
line sets all flip-flops LOW as soon as it activates, without waiting for the clock pulse.
(Note that these lines set or reset the Q output of each flip-flop. An active-LOW registered
output inverts this state at the output pin.)
8.6 MAX7000S CPLD
CPLD Complex programmable logic device. A programmable logic device consisting
of several interconnected programmable blocks.
Logic Array Block (LAB) A group of macrocells that share common resources
in a CPLD.
Programmable Interconnect Array (PIA) An internal bus with programmable
connections that link together the Logic Array Blocks of a CPLD.
K E Y T E R M S
Buried logic Logic circuitry in a PLD that has no connection to the input or output
pins of the PLD, but is used solely as internal logic.
I/O Control Block A circuit in an Altera CPLD that controls the type of tristate
switching used in a macrocell output.
Parallel logic expanders Product terms that are borrowed from neighboring
macrocells in the same LAB.
Shared logic expanders Product terms that are inverted and fed back into the
programmable AND matrix of an LAB for use by any other macrocell in the LAB.
Figure 8.20 shows the block diagram of an Altera MAX7000S Complex PLD (CPLD).
A device of this type—the EPM7128SLC84—is one of the two devices installed on the
Altera UP-1 University Program board, so we will use it as a specific example of the
MAX7000S family of devices.
352 C H A P T E R 8 • Introduction to Programmable Logic Architectures
INPUT/GCLK1
INPUT/GCLRn
INPUT/OE2/GCLK2
INPUT
Macrocells
1 to 16
PIA
Macrocells
17 to 32
Macrocells
33 to 48
Macrocells
49 to 64
I/O
Control
Block
I/O
Control
Block
I/O
Control
Block
I/O
Control
Block
6 to 16
6 to 16 16
36
6 to 16
6
6 to 16 I/O Pins
6 to 16 6 to 16
6 to 16 16 16
36 36
6 6
6
6 to 16
6 to 16
6 Output Enables
LAB A
LAB C
LAB B
LAB D
6 Output Enables
6 to 16
6 to 16
16
36
6 to 16
6 to 16
6 to 16 I/O Pins
6 to 16 I/O Pins
6 to 16 I/O Pins
FIGURE 8.20
MAX 7000E and MAX 7000S Device Block Diagram (Courtesy of Altera)
The part number breaks up as follows:
EPM7 MAX7000 family
128 number of macrocells
S in-system programmable
LC84 84-pin PLCC package
8.6 • MAX7000S CPLD 353
The main structure of the MAX7000S is a series of Logic Array Blocks (LABs),
linked by a Programmable Interconnect Array (PIA). Each LAB is a group of
16 macrocells that can share common product terms and lend or borrow unused product
terms among each other. A single LAB has similar I/O and programming capability to a
low-density PLD, so a CPLD like the MAX7000S can be thought of as an array of interconnected
PALs or GALs on a single chip.
An EPM7128S has 8 LABs, for a total of 8 _ 16 _ 128 macrocells. However, these
are not all available to the user as I/Os; the number of available I/O pins depends on the device
package. Figure 8.20 indicates that each LAB in a MAX7000S device has from 6 to
16 I/O pins. For an EPM7128S in a 160-pin PQFP package, there are 12 I/Os per LAB, for
a total of 96 available pins. For the same device in an 84-pin PLCC package, there are only
8 I/Os per LAB, for a total of 64 pins.
In practice, if an EPM7128SLC84 is to be programmed in-circuit (i.e., while installed
on a circuit board), there are only 60 I/Os available, as four pins are required for the programming
interface. The macrocells that are not connected to user I/O pins can only be
used for buried logic, or logic that is internal to the chip only.
As implied in Figure 8.20, all I/O pins connect to and from their associated LAB via
an I/O Control Block (a circuit that controls the tristate switching of signals at an I/O pin).
The I/O pin signals also connect directly to the PIA, where they are available for use in
other LABs. Sixteen lines connect the macrocell outputs of each LAB to the PIA, again for
use throughout the device. The PIA communicates to each LAB via 36 product lines to
provide connections from other LABs.
The MAX7000S family has four pins that can be configured as control signals or
inputs. GCLK1 is a global clock that is common to all macrocells in the device and can
be used to synchronously clock all registers. OE1 is an output enable that can globally
activate or disable the tristate outputs of the device macrocells. GCLRn is an active-
LOW global clear function. The fourth control pin can be configured as an input, as can
the other three pins, or as a second global clock (GCLK2) or output enable (OE2). If
the control functions are not used, these pins add four inputs to the available total.
These assignments can be made by the MAX_PLUS II software during the design
process.
Figure 8.21 shows a macrocell from a MAX7000S device. The macrocell is similar to
that of a GAL or Universal PAL in that it provides a sum-of-products function with active-
HIGH or -LOW options and the choice of registered or combinational output. Registered outputs
can be clocked with one of two global clocks or by a product term from the AND matrix.
The register can be cleared globally or by a product term and preset with a product term.
The macrocell has five dedicated product terms, which is fewer than found in the PAL
and GAL matrices we examined earlier. This is generally sufficient to implement most
logic functions. If more terms are required, they can be supplied by a set of shared logic
expanders or parallel logic expanders.
Shared logic expanders do not add more product terms to a given macrocell. They
do make the programming of the entire LAB more efficient by allowing a product term
to be programmed once and used in several macrocells of the same LAB. One product
term per macrocell is inverted and fed back into the shared expander pool of product
terms. Since there are 16 macrocells per LAB, the shared logic expander pool has up to
16 product terms.
Parallel logic expanders allow a macrocell to borrow up to 15 product terms from its
three lower-numbered neighbors (5 product terms per neighboring macrocell). For example,
macrocell 4 can borrow up to 5 terms each from macrocells 3, 2, and 1. By using its 5
dedicated product terms and the maximum number of parallel expanders, a macrocell can
have up to 20 product terms at its disposal. These borrowed terms are not usable by the
macrocell from which they were borrowed. The parallel expanders are set up so that a
lower-number cell lends product terms to a higher-number cell, so the number of available
terms depends on how close to the end of a chain a macrocell is. Expander assignments are
done automatically by MAX_PLUS II at compile time.
354 C H A P T E R 8 • Introduction to Programmable Logic Architectures
8.7 FLEX10K CPLD
Look-up table (LUT) A circuit that implements a combinational logic function
by storing a list of output values that correspond to all possible input combinations.
Logic element (LE) A circuit internal to a CPLD used to implement a logic function
as a look-up table.
Cascade chain A circuit in a CPLD that allows the input width of a Boolean
function to expand beyond the width of one logic element.
Carry chain A circuit in a CPLD that is optimized for efficient operation of carry
functions between logic elements.
Embedded array block (EAB) A relatively large block of storage elements in a
CPLD (2048 bits in a FLEX10K device), used for implementing complex logic
functions in look-up table format.
All programmable logic devices we have seen until now have been based on sum-ofproducts
arrays. Another major type of PLD is based on look-up table (LUT) architecture.
In this architecture, a number of storage elements are used to synthesize logic functions by
storing each function as a truth table. To illustrate the look-up table concept, let us use the
truth table of a 2-bit equality comparator, shown in Table 8.2.
The comparator examines inputs A1A0 and B1B0 and makes output AEQB equal to
logic 1 if A1A0 _ B1B0. If we were to implement the circuit as an SOP array, we would first
find the Boolean expression by combining the four product terms from the truth table and
then program the appropriate cells in a CPLD AND matrix. The look-up table implementation
of this function is based on a totally different concept.
K E Y T E R M S
Product-
Term
Select
Matrix
16 Expander
Product Terms
36 Signals
from PIA
Clear
Select
Clock/
Enable
Select
Register
Bypass
to I/O
Control
Block
to PIA
from
I/O pin
Global
Clear
Global
LAB Local Array Clocks
Parrellel Logic
Expanders
(from other
macrocells)
Shared Logic
Expanders
Programmable
Register
Fast Input
Select
VCC
PRN
CLRN
D Q
ENA
2
FIGURE 8.21
MAX 7000E and MAX 7000S Device Macrocell (Courtesy of Altera)
8.7 • FLEX10K CPLD 355
A1
A0
B1
B0
AEQB
AEQB
LUT
a. 2-bit comparator look-up table
b. Stuctural concept of a look-up table
Storage
Elements
D Q
Q0
D Q
Q1
D Q
Q15
ADDR0
ADDR1
ADDR15
ADDR0
ADDR1
ADDR15
Address decoder
A1
A0
B1
B0
FIGURE 8.22
Look-up Table
Figure 8.22 shows the structural concept of a 4-bit look-up table circuit. An array of 16
flip-flops (Q0 through Q15) contain data for all possible combinations of A1A0B1B0, one
flip-flop per combination. The LUT inputs A1A0B1B0 are decoded by an internal address
decoder. Each decoder output activates a tristate buffer that passes or blocks the output of
one flip-flop. The active buffer passes the contents of the flip-flop to AEQB; all other
buffers are in the high-impedance state, blocking the data from the other flip-flops.
The contents of the flip-flops are loaded when the look-up table is configured (programmed)
with the required function. After that the flip-flops retain their information until
they are reconfigured. For our comparator example, flip-flops 0, 5, 10, and 15 are all set
(Q_1).All other flip-flops are reset (Q_0). Examine Table 8.2 to confirm that this is true.
The 16-bit storage element in Figure 8.22, combined with switching to choose a combinational
or registered output and to interconnect with other parts of the chip, is called a
logic element (LE). A logic element performs a function similar to that of a macrocell in
SOP-type PLDs.
Figure 8.23 shows the structure of a logic element in an Altera FLEX10K CPLD. In
addition to the LUT, the LE has circuitry to select various control functions, such as clock
and reset, a flip-flop for registered output, some expansion circuitry (cascade and carry),
and interconnections to local and global busses.
The cascade chain circuit, shown in Figure 8.24 allows the user to program
Boolean functions with more than four inputs, thus requiring more than one LUT. The
Table 8.2 Truth Table for a 2-bit Equality
Comparator
A1 A0 B1 B0 Decimal AEQB
0 0 0 0 0 1
0 0 0 1 1 0
0 0 1 0 2 0
0 0 1 1 3 0
0 1 0 0 4 0
0 1 0 1 5 1
0 1 1 0 6 0
0 1 1 1 7 0
1 0 0 0 8 0
1 0 0 1 9 0
1 0 1 0 10 1
1 0 1 1 11 0
1 1 0 0 12 0
1 1 0 1 13 0
1 1 1 0 14 0
1 1 1 1 15 1
356 C H A P T E R 8 • Introduction to Programmable Logic Architectures
d[3..0] LUT
OR Cascade Chain
LE1
d[7..4] LUT
LE2
d[(4n-1)..(4n-4)] LUT
LEn
d[3..0] LUT
AND Cascade Chain
LE1
d[7..4] LUT
LE2
d[(4n-1)..(4n-4)] LUT
LEn
FIGURE 8.24
Cascade Chain Operation (Courtesy of Altera)
FIGURE 8.23
FLEX10K Logic Element (Courtesy of Altera)
DATA3
DATA2
DATA1
DATA4
LABCTRL1
LABCTRL2
Chip-Wide
Reset
LABCTRL3
LABCTRL4
Carry-Out
Clock
Select
Cascade-Out
Clear/
Preset
Logic
to FastTrack
Interconnect
to LAB local
Interconnect
Look-Up
Table
(LUT)
Carry
Chain
Cascade
Chain
Carry-In Cascade-In
ENA
CLRN
D Q
PRN
Register Bypass Programmable
Register
8.7 • FLEX10K CPLD 357
a1 s1
b1
LUT
Carry
Chain
Register
Carry-In
a2 s2
b2
LUT
Carry
Chain
Register
LE1
LE2
an sn
bn
LUT
Carry
Chain
Register
LUT Carry-Out
Carry
Chain
Register
LEn
LEn + 1
FIGURE 8.25
Carry Chain Operation
(n-bit Full Adder)
(Courtesy of Altera)
cascade chain can be AND- or OR-type, depending on what DeMorgan equivalent form is
most appropriate.
The carry chain, shown in Figure 8.25 allows for efficient fast-carry implementation
of adders, comparators, and other circuits that depend on the combination of low-order
bits to define high-order functions (i.e., circuits whose inputs become wider with higherorder
bits). Figure 8.25 shows the carry chain as implemented by an n-bit adder.
A Logic Array Block (LAB), shown in Figure 8.26, consists of eight logic elements
and a local interconnect. The LAB is connected to the rest of the device by a series of row
and column interconnects, which Altera calls a FastTrack Interconnect. Figure 8.27 shows
the overall structure of a FLEX10K device, with several LABs and a number of
358 C H A P T E R 8 • Introduction to Programmable Logic Architectures
Carry-In and
Cascade-In
Carry-Out and
Cascade-Out
LE1
LE2
LE3
LE4
LE5
LE6
LE7
LE8
Dedicated Inputs and
Global Signals
2 8 24
6
LAB Local
Interconnect
LAB Control
Signals
Column-to-Row
Interconnect
Column
Interconnect
Row Interconnect
4
4
4
4
4
4
4
4
4
4
8 2
16 4
16
8
FIGURE 8.26
FLEX10K LAB (Courtesy of Altera)
Embedded Array Blocks (EABs). An EAB is an array of 2048 storage elements that can
be used to efficiently implement complex logic functions.
The FLEX10K device found on the Altera UP-1 board—the EPF10K20RC240-4—
has an array of 6 rows by 24 columns of LABs, which gives a total of 144 LABs
(_ 8 _ 144 _ 1152 logic elements). The device also has 6 EABs (6 _ 2048 _ 12288 bits
of EAB storage). Note that one EAB has significantly more storage capacity than all
LABs combined.
The FLEX10K series of CPLDs (and LUT-based devices generally) are based on
static random access memory (SRAM) technology. The advantage of this configuration
is that it can be manufactured with a very high density of storage cells and it programs
quickly compared to an EEPROM-based SOP device. The disadvantage is that
SRAM cells are volatile; that is, they do not retain their data when power is removed
from the circuit. An SRAM-based device must be reconfigured every time it is powered
up.
1. Programmable logic devices (PLDs) are configured in two basic architectures: sum-of-products (SOP), which usually consist of a seSummary
Share with your friends: |