Overview

Part 1 - Introduction & Boolean Algebra

EDA322
Date: January 16, 2023
Last modified: July 10, 2025
5 min read
EDA322

In our day-to-day lives, we use digital circuits all the time, without really thinking about them.

Even most software developers do not appreciate the abstraction which digital circuits are built upon. What are digital circuits built from then? Chips! What are chips built from then? Logical gates! What are logical gates built from then? Transistor circuits! What are these circuits built from? Transistors! (duh).

As you can see it’s quite a few steps. So let’s try to understand digital circuits better.

Integrated circuits

There are two different kinds of circuits we’ll be looking at:

  • ASIC (Application Specific Integrated Circuits)
    • Full-Custom ASICs
    • Standard-cell ASICs
      • You use a kind of library to
  • Reconfigurable
    • FPGA (Field Programmable Gate Arrays)
      • FPGAs are made up by so-called configurable logic blocks, we can program these to be any kind of gate and make our own chip, with our own needs.
    • PLD (Programmable Logic Device)

The main difference is:

ASICs, once they are fabricated (in silicone for example), we can not change the hardware design. They’re also more expensive to make, since, we need to produce them in a (semiconductor-)factory.

FPGA, they’re generic and can therefore support different hardware designs.

Design Flow of Digital hardware

When creating a digital circuit, we can break it down into several layers.

For a ASIC, we can rank them as:

  • Algorithmic Level
  • Register Transfer Level
  • Logic gate Level
  • Circuit transistor Level
  • Physical Level

For an FPGA these would be:

  • High-Level Synthesis (HLS)
  • Logic gate Level

These layers are quite self-explanatory, the algorithmic level is the top level design level of the whole circuit. What’s the purpose? Register Transfer Level is about how we transfer our register between states.

Boolean logic

Now that we have seen the beginning of digital circuits, let’s dive into their core purpose, doing (boolean) math!

Let’s write down all the ‘rules’ for boolean algebra - learn by doing:

$$ X \cdot\ 0 = 0 \newline X \cdot\ 1 = 1 \newline X \cdot\ X = X \newline X \cdot\ \bar{X} = 0 \newline X + 0 = X \newline X + 1 = 1 \newline X + X = X \newline X + \bar{X} = 1 \newline \bar{\bar{X}} = X $$

These are the absolute basic let’s cover some more advanced cases as well.

Commutative Law: $$ X \cdot Y = Y \cdot X \newline X + Y = Y + X \newline $$

Associative Law: $$ X(YZ) = (XY)Z \newline X + (Y + Z) = (X + Y) + Z \newline $$

Distributive Law: $$ X(Y + Z) = XY + XZ \newline X + (YZ) = (X + Y)(X + Z)\newline (X + Y)(W + Z) = XW + XZ + YW + YZ $$

Consensus Theorem: $$ X + \bar{X}Y = X + Y \newline \bar{X} + XY = \bar{X} + Y \newline X + \bar{X}\bar{Y} = X + \bar{Y} \newline \bar{X} + X\bar{Y} = \bar{X} + \bar{Y} \newline $$

And finally (and most important) DeMorgan’s Theorem: $$ \bar{XY} = \bar{X} + \bar{Y} \newline \bar{(X + Y)} = \bar{X}\bar{Y} \newline $$

Different Forms of Logical Functions

We can write logical functions in different forms, so-called SOP (Sum Of Product) and POS (Product Of Sums)

We use these to find the so-called max and minterms. A minterm is a product term in which all the variables appear exactly once.

And the max term exactly the same but is a sum term. So, a minterm is a SOP and maxterm is a POS.

One more theorem we have to use is the so-called Shannon’s expansion theorem. $$ f(x_1, x_2, \dots, x_n) = x_1 \cdot\ f(1, x_2, \dots, x_n) + \bar{x_1} \cdot\ f(0, x_2, \dots, x_n) \newline f(x_1, x_2, \dots, x_n) = [x_1 + f(1, x_2, \dots, x_n)] [\bar{x_1} + f(0, x_2, \dots, x_n)] $$

Logical Minimization

In real-world applications we would want to make the cheapest and smallest circuits that still have the same logic.

This is when it’s useful to minimize the logical circuits. In these cases we use Karnaugh-diagrams. That’s a topic that requires you to do a few examples to understand it. So Google it and do a few examples, they’re super easy.

But let’s cover some terminology:

  • A function, f, covers another function, g, if it takes the value ‘1’ when the function g does.
  • Implicant, a product of variables of a function, f, for which f gets the value ‘1’.
  • Prime Implicant, an implicant that cannot be covered by a more general implicant.
  • Essential Prime Implicant, a prime implicant of a function, f, that includes a minterm, not included by any other prime implicant of the function.