I'm finding it hard to understand. What is the difference between PLA and ROM? Can somebody please provide a link or explanation?

  • \$\begingroup\$ No one uses either any more. ROMs have been replaced by EEPROM or Flash. \$\endgroup\$ Jun 21, 2011 at 3:26
  • 1
    \$\begingroup\$ @Brian Carlton: True, but mask or fuse-based PLA's have been replaced by rewritable PLD's as well. In general, the distinctions between ROMs and PLA's are equally applicable to their flash-based cousins, except that: (1) programmable logic devices generally include more goodies than in years past, (2) some flash chips may latch the address when selected, and (3) the relative difference in speeds between modern flash chips and modern PLD's is greater than between older PLA's and older ROMs. \$\endgroup\$
    – supercat
    Jun 21, 2011 at 17:04
  • 1
    \$\begingroup\$ @BrianCarlton amazing... I'll have to release an all points bulletin to the semiconductor industry letting them know that they don't use ROM anymore. They will be thrilled to know how much money they can save with EEPROM! \$\endgroup\$
    – Cuadue
    Oct 6, 2017 at 16:59

4 Answers 4


They are quite different devices.

PLA = Programmable Logic Array.

A PLA or PAL (programmable array logic) device is like a baby FPGA which can be programmed to perform basic logic functions. Tens to hundreds of gates on a PAL can be connected to perform simple logic functions. A PAL is often read only, in that after programming you have to perform a complete erase to update it.

ROM = Read Only Memory.

A ROM does not perform logic functions, but stores data. A type of ROM might be EPROM, eraseable programmable read only memory.

You can use a ROM as a logic device, by implementing a simple logic table lookup. Like a truth table. However, it is somewhat wasteful and expensive to do this compared to actually using a PAL or even a CPLD/FPGA.

  • 2
    \$\begingroup\$ ROM actually is performing logic functions, it is a complicated look-up table. It used to be more common, but if you need a large size ROM and could be sure of what it would need for a long time you would implement it with fabricated logic. This means for each address it has the logic to generate the output with and/or/not gates. This type of function is also very fast. \$\endgroup\$
    – Kortuk
    Oct 29, 2010 at 14:43
  • \$\begingroup\$ I added that to my answer. \$\endgroup\$
    – Thomas O
    Oct 29, 2010 at 14:44
  • \$\begingroup\$ @Thomas O: can I say that ROM is a fixed PLA? \$\endgroup\$
    – hello
    Oct 29, 2010 at 14:47
  • 1
    \$\begingroup\$ Well, somewhat, but a ROM can be reprogrammed usually, you just have to erase it electronically (EEPROM) or using UV light (EPROM.) A PAL is not a ROM, but a ROM can act as a PAL. \$\endgroup\$
    – Thomas O
    Oct 29, 2010 at 14:50
  • \$\begingroup\$ @Thomas O: anyway a little bit difficult understand implementation of: EEPROM, EPROM, do You have some links with basics about ROM and it types, PLA and it types etc.? \$\endgroup\$
    – hello
    Oct 29, 2010 at 14:55

A read-only memory (ROM) is a logic circuit that can generate all of the possible minterms of its inputs.

Eight-word by one-bit read-only memory

So, these are the characteristics of the ROM:

Input products are hard-wired and include all possible minterms. Output summation circuitry is programmable.

A field programmable logic array (FPLA) only those minterms that are needed are generated. Also, each is generated only once, even though it may appear multiple times in the output expressions.

FPLA implementation of logical functions

So, these are the characteristics of the FPLA:

Input product circuitry is programmable. Output summation circuitry is programmable.

A programmable array logic (PAL) has the input circuitry similar to that of the FPLA. However, the output circuitry includes hardwired OR logic and is not programmable.

PAL implementation of logic functions

So, these are the characteristics of the PAL:

Input product circuitry is programmable. Output summation circuitry is hardwired.


For the sake of example, suppose you have a PLA device and a ROM, both with 12 inputs and 8 outputs.

The ROM will have 8 bit cells for each of 2^12 = 4096 addresses. This ROM would therefore have 32768 individual bit cells. The logic on the chip would (in larger parts at least) include a demultiplexer for the high order input bits, which would select a bank of, for example, 1024 cells, and a multiplexor for the low order inputs to select the 8 actual output bits from the bank. This would give on the order of four gate delays for the muxing, plus whatever the technology for the bit cells required. Old UV EPROMs might take 120ns to cough up a result, but there were (are there still?) one-time-programmable ROMS that could do the same job in a few tens of nanoseconds.

A PLA on the other hand, will have an array of programmable 'fuses', usually much smaller than the 32768 bit cells in the equivalent ROM. Internally a PLA provides a bank of AND gates, followed by a bank of OR gates, and optionally a flip-flop per output. A PLA of this size might have 16 AND gates, each with anywhere from 8 to 16 inputs. In the erased state, the 'fuses' are short-circuits, so each input of each AND is connectable to (usually) any of the chip inputs or outputs, or their inversions. When you program the PLA, the programmer blows the fuses to leave only the connections you want. Then, the OR array similarly can be programmed to OR together various combinations of the AND outputs. The fuse technology incurs minimal delay, so propagation delay from input pin to output pin can be as small as two gate delays or up to four, depending on how many inverted signals are needed, which automatically beats the usual ROM topology for speed.

With the same numbers of inputs and outputs, a ROM is capable of more general logic, in that you can burn any truth table you like into the ROM. However, as a logic device, the ROM is not optimal. If you attempt to burn several independent little functions into a ROM, you'll find you have a lot of 'don't care' cases that must nonetheless be programmed into the ROM to get the desired output. The PLA is better for logic because you don't have to deal with the don't-cares, but the trade-off is that you can't program completely arbitrary functions of the bits. However, they are nonetheless sufficiently flexible to be useful for many common 'glue-logic' tasks, and they are generally faster at producing output.

  • 2
    \$\begingroup\$ Another distinction between a PLA and a ROM: if e.g. a 16x1 ROM with a 50ns access time has a "1" at addresses 1100 and 1101, then it will output high within 50ns of either of those patterns appearing, but if address 1100 is selected and the LSB of the address goes high, then for the next 50ns the output may go low and high in any arbitrary pattern (it must end up high). By contrast, a PLA which is configured to output a high whenever the first three inputs are 110 will not have any glitches induced on the output when the fourth input changes. \$\endgroup\$
    – supercat
    Feb 24, 2011 at 17:35

We can think of a simple programmable logic device as an array of AND gates followed by an array of OR gates (in reality it may actually be implemented as two arrays of NAND gates).

In a PROM the "AND array" is fixed and the "OR array" is programmable. Every combination of inputs generates exactly one output from the AND array. The "OR array" is then programmed to define the logic function. This allows every output to implement any logic function of the inputs.

Being able to implement arbitrary logic functions sounds attractive but there are two practical problems to using PROMs for logic. Firstly, it doesn't scale well, each extra input you add doubles the required size of the and array. Secondly, it is very prone to output glitches because the product terms used each cover exactly one input combination.

In a PAL the "OR array" is fixed and the "AND array" is programmable. Each output must be formed from a restricted number of product terms but those product terms can each cover multiple input combinations.

In a PLA both arrays are programmable. This gives you more flexibility if some outputs need more product terms than others or if several outputs have product terms in common.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.