<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Boolean Foundations on Digital Logic Notebook</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/</link><description>Recent content in Boolean Foundations on Digital Logic Notebook</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/index.xml" rel="self" type="application/rss+xml"/><item><title>Truth Tables</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/</guid><description>&lt;h1 id="truth-tables"&gt;Truth Tables&lt;a class="anchor" href="#truth-tables"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A truth table is the complete, unambiguous specification of a combinational function: every possible input combination on the left, the output it must produce on the right. It says &lt;em&gt;what&lt;/em&gt; a function does without saying anything about &lt;em&gt;how&lt;/em&gt; it is built, which makes it the natural starting point for every design and the common ground between a specification and a circuit.&lt;/p&gt;
&lt;h2 id="complete-but-it-scales-badly"&gt;Complete, but It Scales Badly&lt;a class="anchor" href="#complete-but-it-scales-badly"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For &lt;em&gt;n&lt;/em&gt; inputs there are 2ⁿ combinations, so a truth table has 2ⁿ rows. That is fine for the two- and three-input &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/gates/"&gt;gates&lt;/a&gt; whose behavior &lt;em&gt;is&lt;/em&gt; a small truth table, but it grows explosively: four inputs give 16 rows, eight give 256, and twenty give over a million. Completeness is the strength and the weakness — nothing is left unspecified, but the table is unusable as a design tool much past a handful of variables. That is exactly why the rest of this subsection exists: &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/boolean-algebra/"&gt;Boolean algebra&lt;/a&gt; and &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/canonical-forms/"&gt;canonical forms&lt;/a&gt; compress the table into an expression, and &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/karnaugh-maps/"&gt;Karnaugh maps&lt;/a&gt; reorganize it to be simplified by eye.&lt;/p&gt;</description></item><item><title>Boolean Algebra</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/boolean-algebra/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/boolean-algebra/</guid><description>&lt;h1 id="boolean-algebra"&gt;Boolean Algebra&lt;a class="anchor" href="#boolean-algebra"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Boolean algebra is the algebra of two-valued logic: variables that are only ever 0 or 1, combined with three operations — AND (·), OR (+), and NOT (′). It is the lever between a &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/"&gt;truth table&lt;/a&gt; and a circuit, because it lets a logic expression be manipulated and &lt;em&gt;simplified&lt;/em&gt; on paper before a single &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/gates/"&gt;gate&lt;/a&gt; is committed. Fewer terms mean fewer gates, fewer levels of logic, less delay, and less power.&lt;/p&gt;</description></item><item><title>De Morgan's Theorems</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/demorgans-theorems/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/demorgans-theorems/</guid><description>&lt;h1 id="de-morgans-theorems"&gt;De Morgan&amp;rsquo;s Theorems&lt;a class="anchor" href="#de-morgans-theorems"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;De Morgan&amp;rsquo;s theorems are the two most-used identities in all of digital logic. They describe what happens when the output of an AND or an OR is inverted:&lt;/p&gt;
&lt;p&gt;$$ (A \cdot B)&amp;rsquo; = A&amp;rsquo; + B&amp;rsquo; $$&lt;/p&gt;
&lt;p&gt;$$ (A + B)&amp;rsquo; = A&amp;rsquo; \cdot B&amp;rsquo; $$&lt;/p&gt;
&lt;p&gt;In words: inverting the output of a gate is the same as &lt;strong&gt;swapping the gate type (AND ↔ OR) and inverting every input&lt;/strong&gt;. The theorems extend to any number of inputs — the complement of a whole product is the sum of the complemented terms, and vice versa.&lt;/p&gt;</description></item><item><title>Canonical Forms (SOP &amp; POS)</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/canonical-forms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/canonical-forms/</guid><description>&lt;h1 id="canonical-forms-sop--pos"&gt;Canonical Forms (SOP &amp;amp; POS)&lt;a class="anchor" href="#canonical-forms-sop--pos"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A canonical form is a systematic, mechanical way to write down a function straight from its &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/"&gt;truth table&lt;/a&gt; — no cleverness required. There are two, and they are duals of each other: sum of products, built from the rows where the output is 1, and product of sums, built from the rows where it is 0.&lt;/p&gt;
&lt;h2 id="sum-of-products-from-the-1s"&gt;Sum of Products (from the 1s)&lt;a class="anchor" href="#sum-of-products-from-the-1s"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For each row where the output is &lt;strong&gt;1&lt;/strong&gt;, write a &lt;strong&gt;minterm&lt;/strong&gt;: the &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/gates/and/"&gt;AND&lt;/a&gt; of every input variable, taken true where the variable is 1 and complemented where it is 0. OR all those minterms together and the result is the &lt;strong&gt;sum-of-products (SOP)&lt;/strong&gt; form — it is 1 for exactly the input combinations that should give 1, and nothing else. For a function that is 1 on rows 3 and 5 of three variables, F = A′BC + AB′C, often written compactly as Σm(3, 5).&lt;/p&gt;</description></item><item><title>Karnaugh Maps</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/karnaugh-maps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/karnaugh-maps/</guid><description>&lt;h1 id="karnaugh-maps"&gt;Karnaugh Maps&lt;a class="anchor" href="#karnaugh-maps"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A Karnaugh map is a &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/"&gt;truth table&lt;/a&gt; rearranged so that simplification becomes something the eye can do. The rows and columns are ordered in &lt;strong&gt;Gray code&lt;/strong&gt; — each cell differs from its neighbors by exactly one variable — so that physically adjacent 1s can always be combined into a simpler term. It turns the algebra of &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/boolean-algebra/"&gt;minimization&lt;/a&gt; into pattern-spotting.&lt;/p&gt;
&lt;h2 id="reading-the-grid"&gt;Reading the Grid&lt;a class="anchor" href="#reading-the-grid"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is a three-variable function, F(A, B, C), with the columns in Gray order (00, 01, 11, 10):&lt;/p&gt;</description></item><item><title>Hazards &amp; Glitches</title><link>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/hazards-and-glitches/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/hazards-and-glitches/</guid><description>&lt;h1 id="hazards--glitches"&gt;Hazards &amp;amp; Glitches&lt;a class="anchor" href="#hazards--glitches"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A &lt;a href="https://applied-ee.github.io/digital-logic-notebook/docs/building-blocks/boolean-foundations/truth-tables/"&gt;truth table&lt;/a&gt; describes what a function settles to, not the momentary values it passes through on the way. Real gates take time to switch, and different signal paths through a circuit take &lt;em&gt;different&lt;/em&gt; amounts of time — so when an input changes, the output can briefly show a wrong value before settling to the right one. That transient is a &lt;strong&gt;glitch&lt;/strong&gt;, and the circuit property that permits it is a &lt;strong&gt;hazard&lt;/strong&gt;. The logic is correct; the timing is not.&lt;/p&gt;</description></item></channel></rss>