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.

  1. The first stage uses AND gates to generate product terms.
  2. The second stage uses OR gates to generate sum terms. Pasted image 20240314124642

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: Full_Adder_PLA

A PLA drawn using dots to indicate the components of the product terms and sum terms in the array is shown below: