Recent from talks
Nothing was collected or created yet.
Synchronous circuit
View on WikipediaThis article needs additional citations for verification. (December 2015) |
In digital electronics, a synchronous circuit is a digital circuit in which the changes in the state of memory elements are synchronized by a clock signal. In a sequential digital logic circuit, data is stored in memory devices called flip-flops or latches. The output of a flip-flop is constant until a pulse is applied to its "clock" input, upon which the input of the flip-flop is latched into its output. In a synchronous logic circuit, an electronic oscillator called the clock generates a string (sequence) of pulses, the "clock signal". This clock signal is applied to every storage element, so in an ideal synchronous circuit, every change in the logical levels of its storage components is simultaneous. Ideally, the input to each storage element has reached its final value before the next clock occurs, so the behaviour of the whole circuit can be predicted exactly. Practically, some delay is required for each logical operation, resulting in a maximum speed limitations at which each synchronous system can run.
To make these circuits work correctly, a great deal of care is needed in the design of the clock distribution networks. Static timing analysis is often used to determine the maximum safe operating speed.
Nearly all digital circuits, and in particular nearly all CPUs, are fully synchronous circuits with a global clock. Exceptions are often compared to fully synchronous circuits. Exceptions include self-synchronous circuits,[1][2][3][4] globally asynchronous locally synchronous circuits, and fully asynchronous circuits.
See also
[edit]References
[edit]- ^ Asada and Ikeda Laboratories. "Self-synchronous Circuit". "Self Synchronous FPGA". 2009.
- ^ "self synchronous configurable logic blocks".
- ^ Devlin, Benjamin; Ikeda, Makoto; Asada, Kunihiro. "Energy Minimum Operation with Self Synchronous Gate-Level Autonomous Power Gating and Voltage Scaling". 2012. doi:10.1587/transele.E95.C.546
- ^ Devlin, B.; Ueki, H.; Mori, S.; Miyauchi, S.; Ikeda, M.; Asada, K. "Performance and side-channel attack analysis of a self synchronous montgomery multiplier processing element for RSA in 40nm CMOS". 2012. doi:10.1109/ASSCC.2012.6570807
Synchronous circuit
View on GrokipediaOverview
Definition and Principles
A synchronous circuit, also known as a synchronous sequential circuit, is a type of digital circuit in which the state changes of memory elements occur at discrete instants of time, precisely synchronized by a common clock signal.[4] This synchronization ensures that the circuit's behavior is predictable and depends not only on the current inputs but also on previous states stored in memory.[5] Unlike combinational circuits, where outputs are determined solely by current inputs with no memory of past states, synchronous circuits incorporate feedback through storage elements, making their outputs a function of both present inputs and prior history.[4] The foundational principle of synchronous circuits revolves around the clock signal, which acts as a global synchronizer to coordinate all state transitions. Memory elements, such as flip-flops, update their outputs exclusively on the active edges of the clock—typically the rising or falling edge—ensuring that changes propagate simultaneously across the circuit.[5] This clock-driven timing prevents race conditions, where asynchronous signal propagation could lead to indeterminate states, by confining updates to predefined moments and allowing combinational logic outputs to settle before feeding into the memory elements.[5] A generic synchronous sequential circuit structure comprises primary inputs, a combinational logic block that computes next states and outputs based on current inputs and states, memory elements that hold the present state, and feedback paths from the memory to the logic. The clock signal drives the memory elements, while outputs are derived from the combinational logic. This can be visualized as follows: external inputs and present state enter the combinational circuit, producing next-state signals that update the memory on clock edges and output signals that reflect the circuit's response.[4]Comparison to Asynchronous Circuits
Synchronous circuits differ fundamentally from asynchronous circuits in their approach to timing and state transitions. In synchronous designs, a global clock signal dictates the timing of all operations, ensuring that state changes occur simultaneously across the circuit at regular intervals, based on worst-case delay assumptions. This contrasts with asynchronous circuits, which operate without a central clock, relying instead on local handshaking protocols or signal propagation delays to coordinate events, enabling data-driven or event-triggered behavior.[6][7] Synchronous circuits offer several advantages in terms of predictability and design simplicity. Their clock-based synchronization provides uniform timing, making behavior more deterministic and easier to analyze, verify, and debug using established computer-aided design (CAD) tools. This approach also minimizes metastability risks by aligning transitions to clock edges, enhancing overall reliability in large-scale systems. However, these benefits come at the cost of clock distribution overhead, which can introduce skew—variations in clock arrival times—and increase power consumption due to continuous clock toggling, sometimes accounting for up to 40% of total power in unoptimized designs.[6][7][8] Asynchronous circuits, by eliminating the clock, address some synchronous limitations but introduce others. They can achieve lower power dissipation since only active components consume energy, without the idle switching of a global clock, and may exhibit higher speeds in average-case scenarios by avoiding worst-case delay penalties. Additionally, they demonstrate greater robustness to process, voltage, and temperature variations, as well as reduced electromagnetic interference. Despite these strengths, asynchronous designs are more challenging to implement, as they require careful hazard avoidance and glitch-free operation, with fewer mature verification tools available, leading to higher design complexity and potential reliability issues from timing uncertainties.[6][8][7] Historically, synchronous circuits gained dominance in the 1960s and 1970s alongside the rise of very-large-scale integration (VLSI), as their predictable timing facilitated scalable integration and automated design flows in complex integrated circuits, overshadowing asynchronous approaches despite the latter's earlier origins in the mid-20th century. This shift was driven by the need for reliable, tool-supported methodologies in growing semiconductor technologies.[9][10]Components
Memory Elements
In synchronous circuits, the primary memory elements are flip-flops, which store binary state information and update their outputs only in response to a clock signal transition, ensuring synchronized operation across the circuit.[11] Unlike latches, which are level-sensitive devices that continuously propagate inputs to outputs while the enable signal is active, flip-flops are edge-triggered, making them essential for maintaining precise timing and avoiding race conditions in synchronous designs.[12] This edge-triggered behavior allows flip-flops to capture input values at specific clock edges, typically the rising or falling edge, providing the temporal isolation required for reliable state storage.[11] Flip-flops are classified into several types based on their input configurations, including SR (Set-Reset), JK, D (Data), and T (Toggle), each with distinct characteristic equations, truth tables, and excitation tables that define their behavior and usage in state storage.[13] The SR flip-flop uses Set (S) and Reset (R) inputs to force the output to 1 or 0, respectively, with its characteristic equation given by (where is the current state and the input combination S=1, R=1 is typically forbidden to avoid indeterminate states).[14] Its truth table is as follows:| S | R | Q_{n+1} |
|---|---|---|
| 0 | 0 | Q_n |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | Invalid |
| Q_n | Q_{n+1} | S | R |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | X | 0 |
| J | K | Q_{n+1} |
|---|---|---|
| 0 | 0 | Q_n |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | \bar{Q_n} |
| Q_n | Q_{n+1} | J | K |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | X |
| 1 | 0 | X | 1 |
| 1 | 1 | X | 0 |
| D | Q_{n+1} |
|---|---|
| 0 | 0 |
| 1 | 1 |
| Q_n | Q_{n+1} | D |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| T | Q_{n+1} |
|---|---|
| 0 | Q_n |
| 1 | \bar{Q_n} |
| Q_n | Q_{n+1} | T |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
