
A programmable logic array (PLA) is a kind ofprogrammable logic device used to implementcombinational logiccircuits. The PLA has a set of programmableAND gate planes, which link to a set of programmableOR gate planes, which can then be conditionally complemented to produce an output. It has 2N AND gates for N input variables, and for M outputs from the PLA, there should be M OR gates, each with programmable inputs from all of the AND gates. This layout allows for many logic functions to be synthesized in the sum of productscanonical forms.
PLAs differ fromprogrammable array logic devices (PALs andGALs) in that both the AND and OR gate planes are programmable. PAL has programmable AND gates but fixed OR gates[clarification needed]
In 1970,Texas Instruments developed amask-programmable IC based on theIBM read-onlyassociative memory or ROAM. This device, the TMS2000, was programmed by altering the metal layer during the production of the IC. The TMS2000 had up to 17 inputs and 18 outputs with 8JK flip-flops for memory. TI coined the termProgrammable Logic Array for this device.[1]
PLA block diagram:
| 1st block | 2nd block | 3rd block | 4TH block | 5th block |
|---|---|---|---|---|
| Input buffer | AND matrix | OR matrix | Invert/non-invert matrix | Flip-flop output buffer |
The desired outputs for each combination of inputscould be programmed into aread-only memory, with the inputs being driven by the address bus and the outputs being read out as data. However, that would require a separate memory location forevery possible combination of inputs, including combinations that are never supposed to occur, and also duplicating data for "don't care" conditions (for example, logic like "if input A is 1, then, as far as output X is concerned, we don't care what input B is": in a ROM this would have to be written out twice, once for each possible value of B, and as more "don't care" inputs are added, the duplication grows exponentially); therefore, a programmable logic array can often implement a piece of logic using fewer transistors than the equivalent in read-only memory. This is particularly valuable when it is part of a processing chip where transistors are scarce (for example, the original6502 chip contained a PLA to direct various operations of the processor[2]).
One application of a PLA is to implement the control over adatapath. It defines various states in an instruction set, and produces the next state (by conditional branching). [e.g. if the machine is in state 2, and will go to state 4 if the instruction contains an immediate field; then the PLA should define the actions of the control in state 2, will set the next state to be 4 if the instruction contains an immediate field, and will define the actions of the control in state 4]. Programmable logic arrays should correspond to astate diagram for the system.
The earliestCommodore 64 home computers released in 1982 (into early 1983) initially used a programmed Signetics 82S100 PLA, but as the demand increased, MOS Technology / Commodore Semiconductor Group began producing a mask-programmed PLA, which bore part number 906114-01.[3]