# Sequential Circuit
**A circuit whose output depends on the present value of its inputs and the sequence of its past outputs.**
Sequential circuits consists of a *combinational* circuit connected to *storage elements*. A *feedback path* connects the storage elements back as an input.
![[SequentialCircuit.svg]]
Sequential circuits are either *synchronous* or *asynchronous*.
Storage elements are characterised by their number of inputs and how the inputs affect their state.
Sequential circuits are described algebraically using [[State Equation|state equations]], in tabular form using [[State Table|state tables]], and graphically using [[State Diagram#Finite state machines|state diagrams]]. Optimisation is achieved using [[state reduction]].
A sequential circuit using [[Flip-Flop|flip-flops]] can further be described by a set of [[Flip-Flop Input Equation|flip-flop input equations]].
Sequential circuits are mathematically modelled as [[Finite State Transducer|finite state machines]].
## Synchronous sequential circuits
**Sequential circuits whose outputs only change at discrete instants of time.**
Synchronous circuits are timed using a *clock generator* which outputs a periodic train of pulses. As such, synchronous circuits are sometimes called *clocked sequential circuits*.
Synchronous circuits are generally *more stable* and are *easier to design*.
![[SynchronousCircuit.svg]]
## Asynchronous sequential circuits
**Sequential circuits whose outputs change whenever the inputs change.**
Asynchronous circuits commonly use *time delay devices* as storage elements. Time delay may be introduced by propagation delay instead, and therefore asynchronous circuits can be considered as just combinational circuits with *feedback*.
## Storage elements
The two types of basic storage elements used in sequential circuits are:
- [[Latch|Latches]]
- [[Flip-Flop|Flip-flops]]