WikiMili The Free Encyclopedia

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.

In computational complexity theory and circuit complexity, a **Boolean circuit** is a mathematical model for digital logic circuits. A formal language can be decided by a family of Boolean circuits, one circuit for each possible input length. Boolean circuits are also used as a formal model for combinational logic in digital electronics.

In computer programming, a **pure function** is a function that has the following properties:

- Its return value is the same for the same arguments.
- Its evaluation has no side effects.

In digital circuit theory, **sequential logic** is a type of logic circuit whose output depends not only on the present value of its input signals but on the sequence of past inputs, the input history as well. This is in contrast to *combinational logic*, whose output is a function of only the present input. That is, sequential logic has *state* (*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.

A **computer** is a machine that can be instructed to carry out sequences of arithmetic or logical operations automatically via computer programming. Modern computers have the ability to follow generalized sets of operations, called *programs.* These programs enable computers to perform an extremely wide range of tasks. A "complete" computer including the hardware, the operating system, and peripheral equipment required and used for "full" operation can be referred to as a **computer system**. This term may as well be used for a group of computers that are connected and work together, in particular a computer network or computer cluster.

An **arithmetic logic unit** (**ALU**) is a combinational digital electronic circuit that performs arithmetic and bitwise operations on integer binary numbers. This is in contrast to a floating-point unit (FPU), which operates on floating point numbers. An ALU is a fundamental building block of many types of computing circuits, including the central processing unit (CPU) of computers, FPUs, and graphics processing units (GPUs). A single CPU, FPU or GPU may contain multiple ALUs.

In electronics, a **multiplexer** is a device that selects between several analog or digital input signals and forwards it to a single output line. A multiplexer of inputs has select lines, which are used to select which input line to send to the output. Multiplexers are mainly used to increase the amount of data that can be sent over the network within a certain amount of time and bandwidth. A multiplexer is also called a **data selector**. Multiplexers can also be used to implement Boolean functions of multiple variables.

An alternate term is **combinatorial logic**,^{ [2] } though this usage may be considered controversial.^{ [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 (input is considered to be truthful):

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.

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 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 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 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.

The **AND gate** is a basic digital logic gate that implements logical conjunction - it behaves according to the truth table to the right. A HIGH output (1) results only if all the inputs to the AND gate are HIGH (1). If none or not all inputs to the AND gate are HIGH, a LOW output results. The function can be extended to any number of inputs.

In mathematics and abstract algebra, the **two-element Boolean algebra** is the Boolean algebra whose *underlying set**B* is the Boolean domain. The elements of the Boolean domain are 1 and 0 by convention, so that *B* = {0, 1}. Paul Halmos's name for this algebra "**2**" has some following in the literature, and will be employed here.

In digital electronics, a **NAND gate** (**NOT-AND**) is a logic gate which produces an output which is false only if all its inputs are true; thus its output is complement to that of an AND gate. A LOW (0) output results only if all the inputs to the gate are HIGH (1); if any input is LOW (0), a HIGH (1) output results. A NAND gate is made using transistors and junction diodes. By De Morgan's theorem, a two-input NAND gate's logic may be expressed as AB=A+B, making a NAND gate equivalent to inverters followed by an OR gate.

A **carry-lookahead adder** (**CLA**) or **fast adder** is a type of 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 "one or the other but not both".

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**.

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 relations in the same way that elementary algebra describes numeric relations.

- ↑ C.J. Savant, Jr.; Martin Roden; Gordon Carpenter. "Electronic Design: Circuits and Systems". 1991. ISBN 0-8053-0285-9 p. 682
- ↑ Clive Maxfield. "FPGAs: World Class Designs". p. 70. 2009. ISBN 1856176215
- ↑ Cliff Cummings. "Common Mistakes In Technical Texts". 2009.

- 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.