Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Digital design with CPLD applications and VHDL (R. Dueck, 2000)

.pdf
Скачиваний:
259
Добавлен:
12.08.2013
Размер:
9 Mб
Скачать

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.6MAX7000S CPLD

K E Y T E R M S

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.

352 C H A P T E R 8 • Introduction to Programmable Logic Architectures

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.

INPUT/GCLK1

 

 

 

 

 

 

 

 

INPUT/OE2/GCLK2

 

 

 

 

 

 

 

 

INPUT

 

 

 

 

 

 

 

 

INPUT/GCLRn

 

 

 

 

 

 

 

 

 

6 Output Enables

 

 

6 Output Enables

 

 

6 to 16

LAB A

 

 

LAB B

6 to 16

 

 

I/O

 

Macrocells

36

36

Macrocells

 

I/O

6 to 16 I/O Pins

Control

 

1 to 16

 

 

17 to 32

 

Control

Block

6 to 16

 

 

6 to 16

Block

 

16

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

6 to 16

PIA

 

6 to 16

 

6

 

 

6 to 16

LAB C

 

 

LAB D

6 to 16

 

 

I/O

 

Macrocells

36

36

Macrocells

 

I/O

6 to 16 I/O Pins

Control

 

 

 

 

Control

 

33 to 48

 

 

49 to 64

 

Block

6 to 16

 

 

6 to 16

Block

 

16

 

 

16

 

 

 

 

 

 

 

 

6

 

6 to 16

 

 

6 to 16

 

6

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 activeLOW 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 activeHIGH 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

 

Global

Global

LAB Local Array

Clear

Clocks

 

 

2

 

 

from

 

 

Fast Input

 

I/O pin

 

 

Parrellel Logic

 

 

 

 

Expanders

Select

 

 

 

 

(from other

Programmable

 

 

 

macrocells)

 

 

 

Register

 

 

 

 

 

 

 

 

 

Register

 

 

 

 

 

Bypass

 

 

 

 

 

 

to I/O

 

 

 

PRN

Control

 

 

 

Block

 

 

 

D

Q

 

 

 

 

 

Product-

Clock/

 

 

 

 

Enable

ENA

 

 

 

Term

 

 

 

Select

CLRN

 

 

Select

 

 

 

 

 

 

 

Matrix

 

 

 

 

 

 

VCC

 

 

 

 

 

Clear

 

 

 

 

 

Select

 

 

 

 

 

Shared Logic

to PIA

 

 

 

 

 

 

36 Signals

 

Expanders

 

 

 

 

 

 

 

 

from PIA

16 Expander

 

 

 

 

 

 

 

 

 

 

Product Terms

 

 

 

 

FIGURE 8.21

MAX 7000E and MAX 7000S Device Macrocell (Courtesy of Altera)

8.7 FLEX10K CPLD

K E Y T E R M S

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-of- products 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.

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

 

 

 

 

 

 

8.7 • FLEX10K CPLD

355

LUT

A1

A0B1 AEQB

B0

a. 2-bit comparator look-up table

 

Q0

AEQB

D

Q

 

 

ADDR0

 

 

Q1

 

D

Q

 

 

ADDR1

 

Storage

 

 

Elements

Q15

 

D

Q

 

 

ADDR15

 

Address decoder

 

A1

ADDR0

 

A0

ADDR1

 

B1

 

 

B0

ADDR15

 

 

 

b. Stuctural concept of a look-up table

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

356

C H A P T E R

8

Introduction to Programmable Logic Architectures

 

 

 

 

 

 

Carry-In

Cascade-In

Register Bypass

Programmable

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Register

DATA1

 

 

 

 

 

 

 

DATA2

 

Look-Up

Carry

Cascade

 

 

to FastTrack

 

Table

 

PRN

 

 

 

 

DATA3

 

(LUT)

Chain

Chain

D

Q

Interconnect

DATA4

 

 

 

 

 

 

 

 

 

 

 

 

 

ENA

 

 

 

 

 

 

 

 

CLRN

 

LABCTRL1

 

Clear/

 

 

 

 

to LAB local

LABCTRL2

 

Preset

 

 

 

 

Interconnect

 

Logic

 

 

 

 

 

 

 

 

 

 

 

 

 

Chip-Wide

 

 

 

 

 

 

 

 

Reset

 

Clock

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Select

 

 

 

 

 

LABCTRL3

 

 

 

 

 

 

 

LABCTRL4

 

 

 

 

 

 

 

 

 

 

 

Carry-Out

Cascade-Out

 

 

 

FIGURE 8.23

FLEX10K Logic Element (Courtesy of Altera)

AND Cascade Chain

 

 

 

 

 

OR Cascade Chain

 

 

 

 

 

 

 

d[3..0]

 

 

 

 

 

 

 

 

d[3..0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LUT

 

LE1

 

 

 

LUT

 

 

 

LE1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d[7..4]

LUT

d[7..4]

LUT

 

LE2

 

LE2

d[(4n-1)..(4n-4)]

 

 

 

 

 

 

 

 

 

 

 

d[(4n-1)..(4n-4)]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LUT

 

 

 

 

 

 

 

 

 

 

LUT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LEn

 

 

 

 

 

 

 

 

 

LEn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FIGURE 8.24

Cascade Chain Operation (Courtesy of Altera)

FIGURE 8.25

Carry Chain Operation

(n-bit Full Adder)

(Courtesy of Altera)

8.7 • FLEX10K CPLD

357

Carry-In

a1

LUT

Register

s1

b1

 

 

 

 

Carry

 

 

 

Chain

 

 

 

 

LE1

 

a2

LUT

Register

s2

b2

 

 

 

 

Carry

 

 

 

Chain

 

 

 

 

LE2

 

an

LUT

Register

sn

bn

 

 

 

 

Carry

 

 

 

Chain

 

 

 

 

LEn

 

 

LUT

Register

Carry-Out

 

Carry

 

 

 

Chain

 

 

 

 

LEn + 1

 

cascade chain can be ANDor 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

Dedicated Inputs and

 

Global Signals

Row Interconnect

 

 

6

 

16

4

 

 

 

 

LAB Local

4

 

Carry-In and

 

 

Interconnect

 

 

 

 

 

Cascade-In

 

 

 

 

 

 

 

 

 

 

2

8

24

 

 

 

 

 

 

 

4

 

 

 

LAB Control

4

 

LE1

 

 

Signals

 

 

 

 

 

 

4

 

LE2

 

 

 

4

 

LE3

 

16

 

 

 

 

 

 

 

 

 

8

 

 

4

 

LE4

 

 

 

4

 

LE5

 

 

 

4

 

LE6

 

 

 

4

 

LE7

 

 

 

4

 

LE8

 

 

8

2

Carry-Out and

 

 

 

 

Cascade-Out

FIGURE 8.26

FLEX10K LAB (Courtesy of Altera)

Column-to-Row

Interconnect

Column

Interconnect

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 se-

 

 

 

 

 

Embedded Array Block (EAB)

 

I/O Element

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

IOE

(IOE)

 

 

 

 

 

 

 

 

 

 

IOE

 

 

 

 

 

 

 

 

 

 

IOE

 

 

 

 

 

 

 

 

 

 

Column

 

Interconnect

EAB

IOE

IOE

Row

EAB

Interconnect

Logic

Array

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IOE

 

 

IOE

 

IOE

 

 

IOE

 

IOE

 

 

IOE

 

 

IOE

 

 

IOE

 

IOE

 

 

IOE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Embedded Array

FIGURE 8.27

FLEX10K Device Block Diagram (Courtesy of Altera)

Summary 359

IOE

IOE

Logic Array

Logic Array

Block (LAB)

IOE

IOE

Logic Element (LE)

Local Interconnect

S U M M A R Y

ries of programmable AND/OR circuits, and look-up table (LUT), that stores the truth table of a Boolean function in a small memory.

2.Programmable array logic (PAL) is an SOP-type architecture in which there are a series of programmable AND gates that have a fixed connection to an OR-gate output.

3.Connections from PLD inputs to PAL AND arrays were historically made by leaving intact selected fuses in a crosspoint fuse array. In modern PLDs, these connections are made by programming EEPROM (electrically erasable programmable read only memory) cells.

4.An AND-gate input in a PAL array is called a product line.

5.A PAL16L8 PLD is an SOP device with up to 16 inputs and up to 8 outputs. There are 10 dedicated inputs, 2 dedicated outputs, and 6 pins that can be configured as input or output. All outputs in the PAL16L8 are active-LOW.

6.A PAL is programmed by a computer and programming hardware that uses a JEDEC file as a template for determin-

ing which fuses to blow and which to leave intact.

7.Some PAL devices have programmable-polarity outputs. This is achieved with an XOR gate that has a programmable cell or fuse on one input to switch the output between inverting and noninverting levels.

8.A registered PLD output consists of a flip-flop (usually D-type) on the output of an SOP matrix.

9.A PAL part number indicates the number of registered outputs (e.g., a PAL16R8 has eight registered outputs).

10.Early-version standard PALs are limited in that they are one-time programmable (OTP), their outputs are permanently configured as combinational or registered, and they cannot be programmed in-system. Later-version PALs (e.g., PAL16CE16V8 Universal PAL) and GALs (generic array logic such as GAL22V10) overcome these limitations.

11.PALs and GALs with configurable architecture have outputs that can be combinational or registered, with various input or