Implementation using PLAs - muneeb-mbytes/computerArchitectureCourse GitHub Wiki
What is a PLA?
A Programmable Logic Array(PLA) is a structured-logic element composed of a set of inputs and their complements followed by two stages of logic.
- The first stage uses AND gates to generate product terms.
- The second stage uses OR gates to generate sum terms.
Why use PLAs?
Sum of products are one of the two ways to form a canonical expression. Given that every logic function can be implemented using a canonical expression, PLAs can provide an implementation to virtually any design.
How to implement a PLA-based design:
Consider the following 1-bit full adder:
The truth table for the same is as shown below:
Inputs | Outputs | |||
---|---|---|---|---|
A | B | carryin | carryout | Sum |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
We know that we can derive a canonical expression in the form of sum of products from the above truth table. $sum = A\cdot B\cdot \overline{carryin}+\overline{A}\cdot B\cdot \overline{carryin}+\overline{A}\cdot\overline{B}\cdot carryin+A\cdot B\cdot carryin$ $carryout=B\cdot carryin+A\cdot carryin+A\cdot B$
This circuit can be easily implemented as shown below:
A PLA drawn using dots to indicate the components of the product terms and sum terms in the array is shown below: