8.2 • PAL Fuse Matrix and Combinational Outputs 333
The numbering system has some potential ambiguities. For example, it is not possible
to use 16 inputs and 8 outputs in a PAL16L8 device at the same time; 6 of the inputs are
actually input/output pins. Some possible configurations are as follows:
16 inputs (10 dedicated _ 6 I/O) and 2 dedicated outputs
10 dedicated inputs and 8 outputs (2 dedicated _ 6 I/O)
12 inputs (10 dedicated _ 2 I/O) and 6 outputs (2 dedicated _ 4 I/O)
Each of the outputs of the PAL16L8 is buffered by a tristate inverter, whose ENABLE
input is controlled by its own product line. When the ENABLE line of the tristate inverter is
FIGURE 8.3
Unprogrammed PAL16L8
334 C H A P T E R 8 • Introduction to Programmable Logic Architectures
HIGH, the inverter output is the same as it would normally be—a logic HIGH or LOW, determined
by the state of the corresponding OR gate output.
When the ENABLE line is LOW, the inverter output is in the high-impedance state.
The output acts as an open circuit, neither HIGH nor LOW; it is as though the output was
completely disconnected from the circuit. The inverter is permanently enabled if all fuses
on the ENABLE product line are blown, and permanently disabled if these fuses are
all intact.
Published logic diagrams of PAL devices generally do not have fuses drawn on them.
This allows us to draw fuses for any application. In practice, PLDs have become too
complex to manually draw fuse maps for most applications.
Historically, PLD programming would begin with fuses drawn on a logic diagram, and
each fuse would be selected and blown individually by someone operating a hardware device
constructed for such a purpose.
Fuse assignment is nowdone with special software such asABEL, CUPL, or PALASM.
These programs will take inputs such as Boolean equations, truth tables, or other forms and
produce the simplest SOP solution to the particular problem. (MAX_PLUS II is not configured
to generate programming data for low-density PALs, although it can generate data for
similar devices in theAltera Classic PLD series.)
The end result of such software is a JEDEC file, an industry-standard way of listing
which fuses in the PLD should remain intact and which should be blown. The JEDEC file
is stored on disk as an ASCII text file. Most PLD programmers will accept the JEDEC file
and use it as a template for blowing fuses in the target device.
Fuse locations, called cells, are specified by two numbers: the product line first cell
number, shown along the left side of the diagram, and the input line number, shown
along the top. The address of any particular fuse is the sum of its product line first cell
number and its input line number. The fuses on the PAL16L8 device are numbered from
0000 to 2047 (_ 2016 _ 31).
Figure 8.5 shows an example of a JEDEC file for a PAL16L8 application. The file
starts with an ASCII “Start Text” character (^B). Next is some information required by the
PAL programmer about the type of device (PAL16L8), number of fuses (2048), and so
forth. The fuse information starts with the line L0000, which is the first product line. The
1s and 0s which follow show the programmed state of each cell in each product line; a 1 is
a blown fuse and a 0 is an intact fuse. In other words, each 0 in the JEDEC file represents
an X in the same position on the PAL logic diagram.
The product terms for first sum-of-products output are set by the states of fuses
0000 to 0255 (eight product lines). In the file shown, all fuses are blown in the first product
I/O
FIGURE 8.4
PAL16L8 I/O Section
8.2 • PAL Fuse Matrix and Combinational Outputs 335
line, the second product line shows three intact fuses, and so forth. Since all fuses are
intact in the last three lines, they need not be shown in the JEDEC file.
Whenever some unprogrammed product lines are omitted from the fuse map, the last
fuse line shown ends with an asterisk (*). The next line with programmed fuses is indicated
by a new fuse number. For example, the second group of fuses (0256 to 0511) in Figure 8.5
begins after the line marked L0256 in the JEDEC file. The remaining fuse lines are
similarly indicated.
The JEDEC file in Figure 8.5 ends with a hexadecimal checksum (C8DCF), an errorchecking
code derived from the programming data, and an ASCII “End Text” code (^C).
FIGURE 8.5
Sample JEDEC File
336 C H A P T E R 8 • Introduction to Programmable Logic Architectures
In order to examine the general principle of fuse programming, let us develop the programmed
logic diagram for a common combinational circuit: a 4-to-1 multiplexer. (After
developing the fuse maps for several examples, we will not refer to this technique again.)
This circuit, shown in Figure 8.6a, directs one of four input logic signals, D0 to D3, to
output Y, depending on the state of two select inputs S0 and S1. The circuit works on the
enable/inhibit principle; each AND gate is enabled by a different combination of S1 S0. The
binary state of the select inputs is the same as the decimal subscript of the selected data
input. For instance, S1 S0 _ 10 selects data input D2; the AND gate corresponding to D2 is
enabled and the other three ANDs are inhibited.
The logic equation for output Y is given by:
Y _ D0 S_1 S_0 _ D1 S_1 S0 _ D2 S1 S_0 _ D3 S1 S0
Since the outputs of the PAL16L8 are active LOW, as illustrated in Figure 8.6b,
we should rewrite the equation as follows:
Y_ _ D_0 S_1 S_0 _ D_1 S_1 S0 _ D_2 S1 S_0 _ D_3 S1 S0
The D inputs must be complemented to reverse the effect of the active-LOW output.
The output is enabled when the EN input is HIGH. Figure 8.7 shows the PAL16L8A logic
diagram with fuses for the multiplexer application.
8.3 PAL Outputs With Programmable Polarity
The multiplexer application developed in the previous section uses a PAL device whose
output is always fixed at the active-LOW polarity. This fixed polarity is suitable for most
applications, but Boolean functions that would normally have active-HIGH outputs must
be implemented in DeMorgan equivalent form, which is not always very straightforward.
Some applications require both active-HIGH and active-LOW outputs. In such cases,
it is useful to have a device whose output polarity is fuse programmable.
Figure 8.8 shows the logic diagram of a PAL20P8 PAL device. This device is the same
as a PAL16L8, except that there are four more dedicated inputs, and the polarity of each
output is programmable. The Exclusive OR gate on each output is programmed to act as either
an inverter or a buffer. When its associated fuse is intact, the XOR input is grounded
and passes the output of its related SOP network in true form. When combined with the
output inverter, this produces an active-LOW output. When the polarity fuse is blown, the
fused XOR input floats to the HIGH state, inverting the SOP output; the output pin becomes
active HIGH.
FIGURE 8.6
4-to-1 Multiplexer Circuits
8.3 • PAL Outputs With Programmable Polarity 337
The polarity fuses are given numbers higher than those of the main fuse array. In this
case, the product line fuses are numbered 0000 to 2559 and the output polarity fuses are
numbered 2560 to 2567.
Figure 8.9 illustrates the selection of output polarity. Two Boolean functions, F1 and
F2, are programmed into the fuse array, with outputs at pins (17) and (15), respectively.
The equations are:
F1 _ A B _ A_ B_
F2 _ A B _ A_ B_
FIGURE 8.7
Programmed Logic Diagram for a 4-to-1 Multiplexer
FIGURE 8.8
PAL20P8 Logic Diagram
338 C H A P T E R 8 • Introduction to Programmable Logic Architectures
We could, if we chose, rewrite F2 to show the output as active LOW:
F__ 2_ A B _ A_ B_
The portion of the PAL20P8 logic diagram shown in Figure 8.9 represents the fuses
required to program F1 and F2. Pins (14) and (16) supply inputs A and B to the matrix. The
ENABLE lines of the tristate output buffers float HIGH, since all fuses are blown on the
corresponding product lines, thus permanently enabling the output buffers.
The fuses numbered 2565 and 2567 select the polarity at pins (15) and (17). Fuse
2565 is blown. The fused input to the corresponding XOR gate floats HIGH, thus making
the gate into an inverter. Combined with the tristate buffer, this makes pin (17) active
HIGH.
Fuse 2567 is intact. This grounds the input to the corresponding XOR gate, making the
gate into a noninverting buffer. Combined with the tristate output buffer, this makes pin
(15) active LOW.
8.3 • PAL Outputs With Programmable Polarity 339
❘❙❚ EXAMPLE 8.1 Show how a PAL20P8 device can be used to implement the following logic functions by
drawing fuses on the device’s logic diagram.
NOT: F1 _ A_
AND: F2 _ BC
OR: F3 _ D _ E
NAND: F4 _ F_G_
NOR: F5 _ H_____J_
XOR: F6 _ K _ L _ K_ L _ K L_
XNOR: F7 _ M_______N_ _ M_ N_ _ M N
How would the implementation of these logic functions differ if only active-LOW outputs
were available, as in a PAL16L8?
SOLUTION The PAL20P8 has 14 dedicated inputs, 2 dedicated outputs, and 6 lines that
can be used as inputs or outputs. Our functions need 13 input variables and 7 output
variables. We will use six I/O pins (pins (16) through (21)) and one dedicated output
(pin (15)) for the output variables.
FIGURE 8.9
PAL Outputs With Programmable Polarity
340 C H A P T E R 8 • Introduction to Programmable Logic Architectures
All functions must be in SOP form. Outputs for NOT, AND, OR, Exclusive OR, and
Exclusive NOR are active HIGH. Therefore, polarity fuses on the outputs for F1, F2, F3,
F6, and F7 are blown. NAND and NOR outputs are active LOW; the polarity fuses for F4
and F5 remain intact.
Figure 8.10 shows the logic diagram of the programmed PAL. If only active-LOW outputs
were available, we would need to rewrite some of the equations to make the outputs
correspond to their DeMorgan equivalent forms, as follows:
AND: F2 _ B_ _ C_
OR: F3 _ D_ E_
XOR: F6 _ K _ L _ K_ L_ _ K L
XNOR: F7 _ M_____N_ _ M_ N _ M N_
FIGURE 8.10
Programmed Logic Diagram for Seven Logic Functions
❘❙❚
8.4 • PAL Devices With Registered Outputs 341
8.4 PAL Devices With Registered Outputs
Register A digital circuit such as a flip-flop or array of flip-flops that stores one
or more bits of digital information.
Registered output An output of a programmable array logic (PAL) device having
a flip-flop (usually D-type) that stores the output state.
Flip-flops are generally found in programmable logic devices as registered outputs.
A register is one or more flip-flops used to store data. Registered outputs in programmable
array logic (PAL) devices can be used for the same functions as individual flip-flops.
Figure 8.11 shows the logic diagram of a PAL device with eight registered outputs:
a PAL16R8. The fuse matrix is identical to that of a PAL16L8 device; the differences
K E Y T E R M S
FIGURE 8.11
PAL16R8 Logic Diagram
342 C H A P T E R 8 • Introduction to Programmable Logic Architectures
FIGURE 8.12
Example 8.2
Rotation to the Right (4-bit Data)
between the two devices are the registered outputs, a dedicated clock input (pin 1), and a
pin for enabling all registered outputs (pin 11).
With Registered PAL, the number of outputs shown in the part number indicates the
number of registered outputs. For example, a PAL16R4 device has four registered outputs
and four combinational I/O pins, a PAL16R6 device has six registered outputs and two
combinational I/O pins, and a PAL16R8 has eight registered outputs.
❘❙❚ EXAMPLE 8.2 A common data operation is that of “rotation.” Figure 8.12 illustrates how a 4-bit number
can be rotated to the right by 0, 1, 2, or 3 places by a circuit called a “barrel shifter.”
To rotate the data, move all bits the required number of places to the right. As data reach
the rightmost position, move them to the beginning so that they are transferred in a
closed loop.
This operation is usually performed by serially shifting the data the required number
of places and feeding back the last output to the first input of a serial shift register.
Rotation can also be accomplished by a parallel transfer operation. We can load the
bits of the input into four D flip-flops in the order determined by two select inputs, S1 and
S0. Assume that the binary number S1 S0 is the same as the rotation number in Figure 8.12.
Table 8.1 summarizes the contents of the circuit after one clock pulse is applied.
Table 8.1 Rotation to the Right by a Selectable Number of Bits
S1 S0 QA QB QC QD Rotation
0 0 A B C D 0
0 1 D A B C 1
1 0 C D A B 2
1 1 B C D A 3
Sketch a circuit, using gates and flip-flops, that can accomplish this rotation as a
parallel transfer function. Briefly explain its operation.
Write the Boolean expression(s) for the circuit.
Show how the circuit can be implemented by a PAL16R4 device by drawing fuses on
its logic diagram.
SOLUTION Figure 8.13 shows a parallel transfer circuit (barrel shifter) that will
perform the specified rotation. The circuit works by enabling one AND gate in each group
of four for each combination of S1 and S0. For example, when S1 S0 _ 00, the rotation is
0 and the leftmost AND gate of each group is enabled, transferring the parallel data into
the flip-flops so that DA _ A, DB _ B, DC _ C, and DD _ D. After one clock pulse, QA
QB QC QD _ ABCD.
8.4 • PAL Devices With Registered Outputs 343
FIGURE 8.13
Example 8.2
Rotation by Parallel Transfer (Barrel Shifter)
Similarly, if S1 S0 _ 10, we select a rotation of 2. The third AND gate from the left is
selected in each group of four. This makes the data DA _ C, DB _ D, DC _ A, and DD _
B appear at the flip-flop inputs. After one clock pulse, QA QB QC QD _ CDAB.
The same principle governs the circuit operation for the other two select codes. The
Boolean equations for the circuit are:
QA _ S_1 S_0 A _ S_1 S0 D _ S1 S_0 C _ S1 S0 B
QB _ S_1 S_0 B _ S_1 S0 A _ S1 S_0 D _ S1 S0 C
QC _ S_1 S_0 C _ S_1 S0 B _ S1 S_0 A _ S1 S0 D
QD _ S_1 S_0 D _ S_1 S0 C _ S1 S_0 B _ S1 S0 A
344 C H A P T E R 8 • Introduction to Programmable Logic Architectures
FIGURE 8.14
Example 8.2
Programmed PLD for Selectable Bit Rotation
These equations imply that each registered output requires us to use four product lines,
one for each product term. The programmed logic diagram is shown in Figure 8.14. ❘❙❚
8.5 • Universal PAL and Generic Array Logic (GAL) 345
8.5 Universal PAL and Generic Array Logic (GAL)
One-time programmable (OTP) A property of some PLDs that allows them to
be programmed, but not erased.
Generic array logic (GAL) A type of programmable logic device whose outputs
can be configured as combinational or registered and whose programming matrix is
based on electrically erasable logic cells.
Universal PAL A PLD based on erasable cells and configurable outputs, much
like GAL, but primarily designed to emulate PAL devices, such as PAL16L8.
Output logic macrocell (OLMC) An input/output circuit that can be programmed
for a variety of input or output configurations, such as active HIGH or
active LOW, combinational or registered. Often just called a macrocell.
In-system programmability (ISP) The ability of a PLD to be programmed
through a standard four-wire interface while installed in a circuit.
JTAG port A four-wire interface specified by the Joint Test Action Group
(JTAG) used for loading test data or programming data into a PLD installed
in a circuit.
Architecture cell A programmable cell that, in combination with other architecture
cells, sets the configuration of a macrocell.
Global architecture cell An architecture cell that affects the configuration of all
macrocells in a device.
Local architecture cell An architecture cell that affects the configuration of one
macrocell only.
Global clock A clock signal in a PLD that clocks all registered outputs in
the device.
There are several limitations of standard low-density PALs. First, these devices are
one-time programmable (OTP). Since the AND matrix of a PAL is programmable by
blowing metal fuse links, programming is permanent; there is no opportunity to
correct or update a design. In development of a new design, where many modifications
must be made to the original design, this can be particularly wasteful. Second,
standard PAL outputs are permanently configured either as combinational or registered.
A given PAL has a certain number of each type of output, which may not be optimum
for the design. Third, a standard PAL cannot be programmed while it is installed in a
circuit.
A number of low-density PLDs have been developed to address these concerns.
Devices such as the PALCE16V8 Universal PAL (Vantis Corporation), and the
GAL16V8 and GAL22V10 Generic Array Logic (Lattice Semiconductor)* are based on
sum-of-products fuse matrices, just as the earlier-version PALs. However, these devices
are based on electrically erasable read only memory (EEPROM or E2PROM) cells, rather
than fuses, which allow them to be erased and reprogrammed about 10,000 times. A
programmed device will hold its data for about 20 years.
Universal PALs and GALs also have programmable input/output configurations.
An I/O pin can be configured as a registered output, a combinational output, or a
dedicated input, as required. Additionally, an output can be specified as active-HIGH or
active-LOW.
K E Y T E R M S
*Vantis has recently been acquired by Lattice, so these devices are really produced by the same
company
346 C H A P T E R 8 • Introduction to Programmable Logic Architectures
1 1
0 X
1 0
SL13
SL03
SG1
D Q
Q
1 1
0 X
1 0
1 1
1 0
0 0
0 1
1 0
1 1
0 X
SG1 SL03
15 I/O3
24 27 28 31
CLK OE
VCC
Select eighth
product term
Select output
enable term
Select registered or
combinational output
Select input or
feedback type
Select active
high or low
FIGURE 8.15
Output Logic Macrocell for a PALCE16V8 PLD
Devices such as the ispGAL22V10 or the Altera MAX7000S series can be programmed
while installed in a circuit via a standard four-wire interface called a JTAG port.
This property is known as in-system programmability (ISP).
PALCE16V8
Figure 8.15 shows one I/O pin and its associated circuitry for a PALCE16V8 Universal
PAL. (The “V” stands for “variable” or “versatile” architecture.) It consists of a programmable
SOP array with 8 product terms and an output logic macrocell (OLMC), or just
“macrocell”, which determines the I/O configuration for that pin. The various configuration
options are selected by a network of four multiplexers that are programmed by a set of
architecture cells that set the MUX select inputs HIGH or LOW.
A global architecture cell, SG1, selects configuration options for all macrocells in the
device. Two local configuration cells, SL0n and SL1n, select configurations for I/On only.
(In this case, the cells shown are SL03 and SL13 for configuration of I/O3.)
Figure 8.16 shows the different macrocell configurations for a PALCE16V8 Universal
PAL. Most of these configurations are designed to emulate an I/O of a standard PAL, so
that an old-style PAL can be replaced by a Universal PAL, and can be programmed by data
for the older PAL. The macrocells can also be configured in a pattern that does not conform
to an older device.
Figure 8.17 shows the logic diagram of a PALCE16V8 Universal PAL. The device has
eight dedicated inputs, eight macrocells, aClock pin and an Output Enable pin.The latter two
signals are shown in the macrocell diagram of Figure 8.15 as the lines labeled CLK and OE.
If there are registered outputs, the clock input (pin 1) provides a global clock function.
That is, all registered outputs are clocked simultaneously by this signal. (Some other PLDs
provide an option to clock a registered output from a product term in the AND matrix, allowing
several clock functions in one chip.) If there are no registered outputs used in the
PLD, pin 1 can be used as an input.
Share with your friends: |