Digital circuit

Digital circuits are electric circuits based on a number of discrete voltage levels. In most cases there are two voltage levels: one near to zero volts and one at a higher level depending on the supply voltage in use. These two levels are often represented as L and H.
To most engineers, the terms "digital circuit", "digital system" and "logic" are interchangeable in the context of digital circuits.
Digital circuits are distinct from analog circuits. In analog circuits, quantities are represented by continuously varying voltages, currents, or frequencies.
The usual advantage of digital circuits when compared to analog circuits is that they can be regenerated to achieve lossless data transmission. Digital operation can be programmed. Digital circuits are less affected by noise. More digital circuitry can be fabricated on IC chips. Information storage is much easier than using analog methods.
The usual disadvantages include:
 Digital circuits are more complex, and therefore more likely to include human error. Much of the modern art of designing digital systems consists of analyzing them into smaller parts that can be perfectly solved with some form of automated design system.
 Digital systems can be fragile, in that if a single piece of digital data is lost or misinterpreted, the meaning of large blocks of related data can completely change. This problem can be mitigated by designing the digital system for robustness. An important issue is to remove unused logic signals to minimize the numbers of states.
 There are quantization errors as the analog signals from the real world are translated into a storable, regenerable digital form. This problem can usually be mitigated by storing more digital data.
 Digital systems can use such subtle features to store digital states that digital systems errors can be hard to correctly regenerate. In most digital circuits, these problems show up as "glitches", vanishinglyfast pulses that may trigger some logic but not others, "runt pulses" that do not reach valid switching (threshold) voltages, or unexpected ("undecoded") combinations of logic states.
 Digital circuits are slower to perform calculations than analog circuits using similar components.
 Digital circuits are sometimes more expensive, especially in small quantities.
For example, a digital music playback system, such as a CD player, stores the music as a long string of numbers, each representing speakercone positions. An analog music playback system, such as an LP record, stores the music as a continuously varying quantity. In LP records, this is the position of the sides of a Vshaped groove.
Contents 
Levels
The two levels are used to represent the binary integers or logic levels of 0 and 1. In activehigh logic, L represents binary 0 and H represents binary 1. Activelow logic uses the reverse representation. It is usual to allow some tolerance in the voltage levels used; for example, 0 to 2 volts might represent logic 0, and 3 to 5 volts logic 1. A voltage of 2 to 3 volts would be invalid and would occur only in a fault condition or during a logic level transition, as most circuits are not purely resistive, and therefore cannot instantly change voltage levels. However, few logic circuits can detect such a fault, and most will just choose to interpret the signal randomly as either a 0 or a 1.
Examples of binary logic levels:
Technology  L voltage  H voltage  Notes 

CMOS  0V to VCC/2  VCC/2 to VCC  VCC = supply voltage 
TTL  0V to 0.8V  2V to VCC  VCC is 4.75V to 5.25V 
Construction
A digital circuit is often constructed from small electronic circuits called logic gates. Each logic gate represents a function of boolean logic. A logic gate is an arrangement of electrically controlled switches. The output is an electrical flow or voltage, that can, in turn, control more logic gates. Logic gates often use the fewest number of transistors in order to reduce their sive, power consumption and cost, and increase their reliability. Manufactured as integrated circuits, they are the least expensive implementation when made in large volumes. They are usually designed by engineers using electronic design automation software (See below for more information).
Another form of digital circuit is constructed from lookup tables, usually described as "programmable logic devices". These can perform all the same functions as machines based on logic gates, but lookup tables can be easily reprogrammed without changing the wiring. This means that a designer can often repair errors without changing the arrangement of wires. Therefore, in small volume products, programmable logic devices are often the preferred solution. They are usually designed by engineers using electronic design automation software (See below for more information).
When the volumes are medium to large, and the logic can be slow, or involves complex algorithms or sequences, often a small microcontroller is programmed to make an embedded system. These are usually programmed by software engineers.
When only one digital circuit is needed, and its design is totally customized, as for a factory production line controller, the conventional solution is a programmable logic controller, or PLC. These are usually programmed by electricians, using ladder logic.
Structure of digital systems
Engineers use many methods to minimize logic functions, in order to reduce the complexity, and thus the number of errors and the expense of digital circuits. The most widely used methods include Truth tables, Karnaugh Maps, and Boolean Algebra.
Representations are crucial to an engineer's design of digital circuits. Some analysis methods only work with particular representations.
The classical way to represent a digital circuit is with an equivalent set of logic gates. Another way, often with the least electronics, is to construct an equivalent system of electronic switches (usually transistors). One of the easiest ways is to simply have a memory containing a Truth table. The inputs are fed into the address of the memory, and the data outputs of the memory become the outputs.
For automated analysis, these representations have digital file formats that can be processed by computer programs. Most digital engineers are very careful to select computer programs ("tools") with compatible file formats.
To choose representations, engineers consider types of digital systems. Most digital systems divide into "combinatorial systems" and "sequential systems". A combinatorial system always presents the same output when given the same inputs. It is basically a representation of a set of logic functions, as already discussed.
A sequential system is a combinatorial system with some of the outputs fed back as inputs. This makes the digital machine perform a "sequence" of operations. The simplest sequential system is probably a flip flop, a mechanism that represents a binary digit or "bit".
Sequential systems are often designed as state machines. In this way, engineers can design a system's gross behavior, and even test it in a simulation, without considering all the details of the logic functions.
Sequential systems divide into two further subcategories. "Synchronous" sequential systems change state all at once, when a "clock" signal changes state. "Asynchronous" sequential systems propagate changes whenever inputs change. Synchronous sequential systems are made of wellcharacterized asynchronous circuits such as flipflops, that change only when the clock changes, and which have carefully designed timing margins.
The usual way to implement a synchronous sequential state machine is divide it into a piece of combinatorial logic and a set of flip flops called a "state register." Each time a clock signal ticks, the state register captures the feedback generated from the previous state of the combinatorial logic, and feeds it back as an unchanging input to the combinatorial part of the state machine. The fastest rate of the clock is set by the most timeconsuming logic calculation in the combinatorial logic.
The state register is just a representation of a binary number. If the states in the state machine are numbered (easy to arrange), the logic function is just some logic that produces the number of the next state.
In comparison, asynchronous systems are very hard to design because all possible states, in all possible timings must be considered. The usual method is to construct a table of the minimum and maximum time that each such state can exist, and then adjust the circuit to minimize the number of such states, and force the circuit to periodically wait for all of its parts to enter a compatible state. (This is called "selfresynchronization.") Without such careful design, it is easy to accidentally produce asynchronous logic that is "unstable", that is, real electronics will have unpredictable results because of the cumulative delays caused by small variations in the values of the electronic components.
As of now (2005), almost all digital machines are synchronous designs because it is much easier to create and verify a synchronous design. However, asynchronous logic is thought to be superior, if it can be made to work, because its speed is not constrained by an arbitrary clock; instead, it simply runs at the maximum speed permitted by the propagation rates of the logic gates from which it is constructed. Building an asynchronous circuit using faster parts implicitly makes the circuit "go" fast./er. Certain circuits (such as the synchronizer flipflops, switch debouncers, and the like which allow external unsynchronized signals to enter synchronous logic circuits) are inherently asynchronous in their design and must be analyzed as such.
More generally, many digital systems are data flow machines. These are usually designed using synchronous register transfer logic, using specialized programming languages such as VHDL or Verilog.
In register transfer logic, binary numbers are stored in groups of flip flops called registers. The outputs of each register are a bundle of wires called a "bus" that carries that number to other calculations. A calculation is simply a piece of combinatorial logic. Each calculation also has an output bus, and these may be connected to the inputs of several registers. Sometimes a register will have a multiplexer on its input, so that it can store a number from any one of several buses. Alternatively, the outputs of several items may be connected to a bus through buffers that can turn off the output of all of the devices except one. A sequential state machine controls when each register accepts new data from its input.
In the 1980s, some researchers discovered that almost all synchronous registertransfer machines could be converted to asynchronous designs by using firstinfirstout synchronization logic. In this scheme, the digital machine is characterized as a set of data flows. In each step of the flow, an asynchronous "synchronization circuit" determines when the outputs of that step are valid, and presents a signal that says, "grab the data" to the stages that use that stage's inputs. It turns out that just a few relatively simple synchronization circuits are needed.
The most generalpurpose registertransfer logic machine is a computer. This is basically an automatic binary abacus. The control unit of a computer is usually designed as a microprogram run by a microsequencer. A microprogram is much like a playerpiano roll. Each table entry or "word" of the microprogram commands the state of every bit that controls the computer. The sequencer then counts, and the count addresses the memory or combinatorial logic machine that contains the microprogram. The bits from the microprogram control the arithmetic logic unit, memory and other parts of the computer, including the microsequencer itself.
In this way, the complex task of designing the controls of a computer is reduced to a simpler task of programming a relatively independent collection of much simpler logic machines.
Computer architecture is a specialized engineering activity that tries to arrange the registers, calculation logic, buses and other parts of the computer in the best way for some purpose. Computer architects have applied large amounts of ingenuity to computer design to reduce the cost and increase the speed and immunity to programming errors of computers. An increasingly common goal is to reduce the power used in a batterypowered computer system, such as a cellphone. Many computer architects serve an extended apprenticeship as microprogrammers.
"Specialized computers" are usually a conventional computer with a specialpurpose microprogram.
Automated design tools
To save costly engineering effort, much of the effort of designing large logic machines has been automated. The computer programs are called "electronic design automation tools" or EDA tools.
Simple truth tablestyle descriptions of logic are often optimized with EDA that automatically produces reduced systems of logic gates or smaller lookup tables that still produce the desired outputs.
Most practical algorithms for optimizing large logic systems use algebraic manipulations or binary decision diagrams, and there are promising experiments with genetic algorithms and annealing optimizations.
To automate costly engineering effort, some EDA can take state tables that describe state machines and automatically produce a truth table for the combinatorial part of a state machine. The state table is a piece of text that lists each state, and the conditions that can exit that state.
It is common for the truth tables of such computergenerated statemachines to be optimized with logicminimization software. This is a simple example of how complex logic machines are broken into simpler parts. Often, real logic systems are designed as a series of subprojects, which are combined using a "tool flow". The tool flow is usually a "script", a simplified computer language that can invoke the software design tools in the right order.
Tool flows for large logic systems such as microprocessors can be thousands of commands long, and combine the work of hundreds of engineers.
Writing and debugging tool flows is an established engineering specialty in companies that produce complex logic machines. The tool flow usually terminates in a detailed computer file or set of files that describe how to physically construct the logic machine. Often it consists of instructions to draw the transistors and wires on an integrated circuit or a printed circuit board.
Parts of tool flows are "debugged" by testing the outputs of simulated logic machines against expected inputs. The test tools take computer files with sets of inputs and outputs, and highlight discrepancies between the simulated behavior and the expected behavior.
This test data is usually called "test vectors." Often, the test vectors are preserved and used in the factory to test that newly constructed logic machines work correctly.
Design for test
A large logic machine (say, with more than a hundred logical variables) can have an astronomical number of possible states. Obviously, in the factory, testing every state is impractical if testing each state takes a microsecond, and there are more states than the number of microseconds since the universe began. Unfortunately, this ridiculoussounding case is the typical case.
Fortunately, large logic machines are almost always designed as assemblies of smaller logic machines. To save time, the smaller submachines are isolated by permanentlyinstalled "design for test" circuitry, and tested independently.
One usual test scheme moves test bits in a serial fashion (one after another) on a single wire from external test equipment, and then presents the test data to the circuits all at once. The output of the circuit is captured in a similar way. Such serial to parallel testing has been formalized with a standard called "JTAG" (named after the "Joint Testing Group" that proposed it).
Another common testing scheme is provide a test mode that forces the logic machine or a part thereor to enter a "test cycle." The test cycle usually exercises large independent parts of the machine.
Trade offs
Several numbers determine the practicality of a system of digital logic. Engineers explored numerous electronic devices to get an ideal combination of speed, low cost and reliability.
The cost of a logic gate is crucial. In the 1930s, the earliest digital logic systems were constructed from telephone relays because these were inexpensive and relatively reliable. After that, engineers always used the cheapest available electronic switches that could still fulfill the requirements. The earliest integrated circuits were a happy accident. They were constructed not to save money, but to save weight, and permit a computer to fly a spacecraft. The first integrated circuit logic gates cost nearly $50 (in 1960 dollars, when an engineer earned $10,000/year). To everyone's surprise, by the time the circuits were massproduced, they had become the leastexpensive method of constructing digital logic. Improvements in this technology have driven all subsequent improvements in cost.
With the rise of integrated circuits, reducing the absolute number of chips used represented another way to save costs. NAND gates are the simplest digital gate to build and find many uses because all other logical operations can be reduced to some set of interconnected NAND gates. If a circuit already required a single NAND gate, and a single chip normally carried four NAND gates, then the remaining gates could be used to perform other logical operations like logical and, quite possibly eliminating the need for a separate chip of those gates. The goal of a designer is not just to make the simplest circuit, but to keep the component count down. Sometimes this results in slightly more complicated designs with respect to the underlying digital logic that nevertheless reduces the number of components, board size, and even power consumption.
The "reliability" of a logic gate describes its mean time between failure (MTBF). Digital machines often need thousands, sometimes millions of logic gates. Also, most digital machines are "optimized" to reduce their cost. The result is that often, the failure of a single logic gate will cause a digital machine to stop working. Digital machines first became useful when the MTBF for a switch got above a few hundred hours. Even so, many of these machines had complex, wellrehearsed repair procedures, and would be nonfunctional for hours because a tube burnedout, or a moth got stuck in a relay. Modern transistorized integrated circuit logic gates have MTBFs of nearly a trillion (1x10^12) hours, and need them because they have so many logic gates.
The "fan out" describes how many logic inputs can be controlled by a single logic output. The minimum practical fan out is about five. Modern electronic logic using CMOS transistors for switches have fanouts near fifty, and can sometimes go much higher.
The "switching speed" describes how many times per second an inverter (an electronic representation of a "logical not" function) can change from true to fall and back. Faster logic can accomplish more operations in less time. Digital logic first became useful when switching speeds got above fifty Hertz, because that was faster than a team of humans operating mechanical calculators. Modern electronic digital logic routinely switches at five billion (5x10^9) Hertz, and some laboratory systems switch at more than a trillion (1x10^12) Hertz.
Nonelectronic logic
It is possible to construct nonelectronic digital mechanisms. In principle, any technology capable of representing discrete states and representing logic operations could be used to build mechanical logic.
Hydraulic, pneumatic and mechanical versions of logic gates exist and are used in situations where electricity cannot be used. The first two types are considered under the heading of fluidics. One application of fluidic logic is in military hardware that is likely to be exposed to a nuclear electromagnetic pulse (nuclear EMP, or NEMP) that would destroy any electrical circuits.
Mechanical logic is frequently used in inexpensive controllers, such as those in washing machines. Famously, the first computer design, by Charles Babbage, was designed to use mechanical logic. Mechanical logic might also be used in very small computers that could be built by nanotechnology.
Logic systems
Logic systems can be constructed from diverse systems including optical, magnetic, chemical, biochemical and quantum systems. In each case, the desired logic function can be found in the interactions of the physical components. For example if two particular enzymes are required to prevent the construction of a particular protein, this is the equivalent of a biological "NAND" gate. They can even be constructed in computer games. David Deutsch (Q3A Electronics (http://www.skore.de)) constructed logic circuits for use in the game Quake 3 Arena. Although not present in the game, as a level designer, he found a way of doing it, thus allowing complex triggering of game events.
Digital circuits are the most common hardware realisation of Boolean algebra and are the basis of all digital computers. (See also logic gate.)
They can also be used to process digital information without being connected up as a computer. Such circuits are referred to as "random logic".
Recent developments
The discovery of superconductivity has enabled the development of Rapid Single Flux Quantum (RSFQ) circuit technology, which uses Josephson junctions instead of transistors. Most recently, attempts are being made to construct purely optical computing systems capable of processing digital information using nonlinear optical elements.
See also
Analog circuit  Boolean algebra  Circuit  CMOS  Combinatorial logic  Data strobe encoding  De Morgan's laws  Digital  Electrical network  Electronics  Field effect transistor  Finite state machine  Formal verification  Glitch Ringing  Hardware description language  Instruction pipelining  Integrated circuit  Sequential logic  Logic analyzer  Logic gate  Microelectronics  Multiplexer  Multiplication ALU  Multivibrator  NMOS  Programmable logic device  Reconfigurable system  Register  Transistor  Transistortransistor logic  Transparent latch  Ternary logic  Runt pulse  Transmission line  VHSIC
 Claude E. Shannon : used Boolean algebra for building digital circuits.
 List of electrical Input/Output standardsca:Circuit digital
da:Digital elektronik it:Circuito digitale ja:デジタル回路 zh:数字电路