In digital circuit theory, **combinational logic** (sometimes also referred to as **time-independent logic**^{ [1] } ) is a type of digital logic which is implemented by Boolean circuits, where the output is a pure function of the present input only. This is in contrast to sequential logic, in which the output depends not only on the present input but also on the history of the input. In other words, sequential logic has * memory * while combinational logic does not.

Combinational logic is used in computer circuits to perform Boolean algebra on input signals and on stored data. Practical computer circuits normally contain a mixture of combinational and sequential logic. For example, the part of an arithmetic logic unit, or ALU, that does mathematical calculations is constructed using combinational logic. Other circuits used in computers, such as half adders, full adders, half subtractors, full subtractors, multiplexers, demultiplexers, encoders and decoders are also made by using combinational logic.

Practical design of combinational logic systems may require consideration of the finite time required for practical logical elements to react to changes in their inputs. Where an output is the result of the combination of several different paths with differing numbers of switching elements, the output may momentarily change state before settling at the final state, as the changes propagate along different paths. ^{ [2] }

An alternate term is **combinatorial logic**. ^{ [3] }

Combinational logic is used to build circuits that produce specified outputs from certain inputs. The construction of combinational logic is generally done using one of two methods: a sum of products, or a product of sums. Consider the following truth table :

A | B | C | Result | Logical equivalent |
---|---|---|---|---|

F | F | F | F | |

F | F | T | F | |

F | T | F | F | |

F | T | T | F | |

T | F | F | T | |

T | F | T | F | |

T | T | F | F | |

T | T | T | T |

Using sum of products, all logical statements which yield true results are summed, giving the result:

Using Boolean algebra, the result simplifies to the following equivalent of the truth table:

Minimization (simplification) of combinational logic formulas is done using the following rules based on the laws of Boolean algebra:

With the use of minimization (sometimes called logic optimization), a simplified logical function or circuit may be arrived upon, and the logic combinational circuit becomes smaller, and easier to analyse, use, or build.

In logic, mathematics and linguistics, And (∧) is the truth-functional operator of **logical conjunction**; the *and* of a set of operands is true if and only if *all* of its operands are true. The logical connective that represents this operator is typically written as ∧ or ⋅ .

In electronics, a **logic gate** is an idealized or physical device implementing a Boolean function; that is, it performs a logical operation on one or more binary inputs and produces a single binary output. Depending on the context, the term may refer to an **ideal logic gate**, one that has for instance zero rise time and unlimited fan-out, or it may refer to a non-ideal physical device.

In propositional logic and boolean algebra, **De Morgan's laws** are a pair of transformation rules that are both valid rules of inference. They are named after Augustus De Morgan, a 19th-century British mathematician. The rules allow the expression of conjunctions and disjunctions purely in terms of each other via negation.

In boolean logic, a **disjunctive normal form** (**DNF**) is a canonical normal form of a logical formula consisting of a disjunction of conjunctions; it can also be described as an **OR of ANDs**, a sum of products, or a *cluster concept*. As a normal form, it is useful in automated theorem proving.

In Boolean logic, a formula is in **conjunctive normal form** (**CNF**) or **clausal normal form** if it is a conjunction of one or more clauses, where a clause is a disjunction of literals; otherwise put, it is **an AND of ORs**. As a canonical normal form, it is useful in automated theorem proving and circuit theory.

**Exclusive or** or **exclusive disjunction** is a logical operation that outputs true only when inputs differ.

**Intuitionistic logic**, sometimes more generally called **constructive logic**, refers to systems of symbolic logic that differ from the systems used for classical logic by more closely mirroring the notion of constructive proof. In particular, systems of intuitionistic logic do not include the law of the excluded middle and double negation elimination, which are fundamental inference rules in classical logic.

An **adder** is a digital circuit that performs addition of numbers. In many computers and other kinds of processors adders are used in the arithmetic logic units or **ALU**. They are also used in other parts of the processor, where they are used to calculate addresses, table indices, increment and decrement operators and similar operations.

In logic, a **truth function** is a function that accepts truth values as input and produces a truth value as output, i.e., the input and output are all truth values. The typical example is in propositional logic, wherein a compound statement is constructed by one or two statements connected by a logical connective; if the truth value of the compound statement is determined by the truth value(s) of the constituent statement(s), the compound statement is called a **truth function**, and the logical connective is said to be **truth functional**.

In Boolean algebra, any Boolean function can be put into the **canonical disjunctive normal form** (**CDNF**) or **minterm canonical form** and its dual **canonical conjunctive normal form** (**CCNF**) or **maxterm canonical form**. Other canonical forms include the complete sum of prime implicants or Blake canonical form, and the algebraic normal form.

A carry-lookahead adder (CLA) or fast adder is a type of adder electronics adder used in digital logic. A carry-look ahead adder improves speed by reducing the amount of time required to determine carry bits. It can be contrasted with the simpler, but usually slower, ripple-carry adder (RCA), for which the carry bit is calculated alongside the sum bit, and each stage must wait until the previous carry bit has been calculated to begin calculating its own sum bit and carry bit. The carry-lookahead adder calculates one or more carry bits before the sum, which reduces the wait time to calculate the result of the larger-value bits of the adder. The Kogge–Stone adder (KSA) and Brent–Kung adder (BKA) are examples of this type of adder.

**Logical equality** is a logical operator that corresponds to equality in Boolean algebra and to the logical biconditional in propositional calculus. It gives the functional value *true* if both functional arguments have the same logical value, and *false* if they are different.

**XOR gate** is a digital logic gate that gives a true output when the number of true inputs is odd. An XOR gate implements an exclusive or; that is, a true output results if one, and only one, of the inputs to the gate is true. If both inputs are false (0/LOW) or both are true, a false output results. XOR represents the inequality function, i.e., the output is true if the inputs are not alike otherwise the output is false. A way to remember XOR is "must have one or the other but not both".

The NAND Boolean function has the property of functional completeness. This means, any Boolean expression can be re-expressed by an equivalent expression utilizing *only* NAND operations. For example, the function NOT(x) may be equivalently expressed as NAND(x,x). In the field of digital electronic circuits, this implies that we can implement any Boolean function using just NAND gates.

In logic, a **functionally complete** set of logical connectives or Boolean operators is one which can be used to express all possible truth tables by combining members of the set into a Boolean expression. A well-known complete set of connectives is { AND, NOT }, consisting of binary conjunction and negation. Each of the singleton sets { NAND } and { NOR } is functionally complete.

In electronics, a **subtractor** can be designed using the same approach as that of an adder. The binary subtraction process is summarized below. As with an adder, in the general case of calculations on multi-bit numbers, three bits are involved in performing the subtraction for each bit of the difference: the minuend, subtrahend, and a borrow in from the previous bit order position. The outputs are the difference bit and borrow bit . The subtractor is best understood by considering that the subtrahend and both borrow bits have negative weights, whereas the X and D bits are positive. The operation performed by the subtractor is to rewrite as the sum .

The **Karnaugh map** is a method of simplifying Boolean algebra expressions. Maurice Karnaugh introduced it in 1953 as a refinement of Edward Veitch's 1952 **Veitch chart**, which actually was a rediscovery of Allan Marquand's 1881 *logical diagram* aka **Marquand diagram** but with a focus now set on its utility for switching circuits. Veitch charts are therefore also known as **Marquand–Veitch diagrams**, and Karnaugh maps as **Karnaugh–Veitch maps**.

A **truth table** is a mathematical table used in logic—specifically in connection with Boolean algebra, boolean functions, and propositional calculus—which sets out the functional values of logical expressions on each of their functional arguments, that is, for each combination of values taken by their logical variables. In particular, truth tables can be used to show whether a propositional expression is true for all legitimate input values, that is, logically valid.

The **Tseytin transformation**, alternatively written **Tseitin transformation**, takes as input an arbitrary combinatorial logic circuit and produces a boolean formula in conjunctive normal form (CNF), which can be solved by a CNF-SAT solver. The length of the formula is linear in the size of the circuit. Input vectors that make the circuit output "true" are in 1-to-1 correspondence with assignments that satisfy the formula. This reduces the problem of circuit satisfiability on any circuit to the satisfiability problem on 3-CNF formulas.

In mathematics and mathematical logic, **Boolean algebra** is the branch of algebra in which the values of the variables are the truth values *true* and *false*, usually denoted 1 and 0 respectively. Instead of elementary algebra where the values of the variables are numbers, and the prime operations are addition and multiplication, the main operations of Boolean algebra are the conjunction (*and)* denoted as ∧, the disjunction (*or)* denoted as ∨, and the negation (*not)* denoted as ¬. It is thus a formalism for describing logical operations in the same way that elementary algebra describes numerical operations.

- ↑ C.J. Savant, Jr.; Martin Roden; Gordon Carpenter. "Electronic Design: Circuits and Systems". 1991. ISBN 0-8053-0285-9 p. 682
- ↑ Douglas Lewin,
*Logical Design of Switching Circuits, Second Edition*, Thomas Nelson and Sons, 1974, ISBN 017 771044 6, pp.162-163 - ↑ Clive Maxfield. "FPGAs: World Class Designs". p. 70. 2009. ISBN 1856176215

- Michael Predko and Myke Predko,
*Digital electronics demystified*, McGraw-Hill, 2004. ISBN 0-07-144141-7

- Combinational Logic & Systems Tutorial Guide by D. Belton, R. Bigwood.

This page is based on this Wikipedia article

Text is available under the CC BY-SA 4.0 license; additional terms may apply.

Images, videos and audio are available under their respective licenses.

Text is available under the CC BY-SA 4.0 license; additional terms may apply.

Images, videos and audio are available under their respective licenses.