# Asynchronous Logic

Updated 2018-03-26

- Asynchronous FSM
- Design
- Fundamental Difference
- Asynchronous Stability
- Glitches
- State Encoding Assignment

What if we take out the clock? The clock synchronize all the signals, this makes digital logic easy. Why would we want to do this?

- In synchronous design, clock period is dictated by the longest path
- Instantaneous power is a problem because everything is synchronized
- Excessive noise at the frequency of the clock
- In large chips, clock distribution is difficult

## Asynchronous FSM

Consider `page 6`

asynchronous finite state machine, rather than having the transition timing based on the clock edge, the transition occurs as soon as possible.

In fact, inside the flip flops are just combinational feedback with asynchronous logic.

### Combinational Loop

Two inverters fed into each other is combinational loop and can be used for storage (`page 8`

). Adding external signals that over powers the signal makes the inverters essential NOR gates. Thus we get an SR latch. (SRAM is built this way). The SR latch **is** a state machine.

The state transition table can be made:

S | R | Q_next |
---|---|---|

0 | 0 | Q |

0 | 1 | 0 |

1 | 0 | 1 |

1 | 1 | :( |

`page 13 state bubble diagram`

**When does Q takes the value of next Q?**

This happens almost instantly whenever `S`

is set.

## Design

- Start with state diagram
- assigne ncodring to states
- state transition table
- Kmap from table
- boolena equations for next state

Two concerns:

- Glitches
- state encoding

We are not used to these problems because they don’t exist in synchronous designs.

### Example: Muller C Experiment

`page 17`

Here is the truth table:

A | B | Y |
---|---|---|

0 | 0 | 0 |

0 | 1 | Y |

1 | 0 | Y |

1 | 1 | 1 |

**State assignmnet**

we have two states, so we just use 1 bit. Let state 0 be 0 and let state 1 be 1. The transition table is `page 19`

WIP ;_;

## Fundamental Difference

Asynchronous FSM immediately changes state. There will be glitches but as long as we sample it at the right time, we are good. Another way of thinking is is that there is an imaginary clock with its frequency determined by the propagation delay.

## Asynchronous Stability

Consider the Muller C Experiment implementation again, it is stable if the input causes the state to fix on it self. The circuit is **unstable** if `Q_next=!Q`

.

`page 27`

## Glitches

Due to glitches, the system might be transitioned into undesired states. Thus, the golden rule is: **next state and output logic must be glitch free**.

Recall the the glitch is just a temporary spike in the output signals. A **hazard** is a possibility of glitching due to circuit structure. **Static hazard** occurs when the potential for glitching to occur when the signal values should not change (transitions when there isn’t suppose to be any). **Dynamic hazard** are potential for glitching to occur when the signal value should be changed, but multiple transitions are observed.

### Static Glitch

`page 31`

The solution is to mask the glitch.

## State Encoding Assignment

Between any two adjacent states, the change is only 1 bit. In other words, the **Hamming Distance** / Manhattan distance in binary must be only 1. This is so that only one bit changes at one time.

If more than 1 bit is trying to change at one time, then there exists a race condition. Which bit will change first? This can lead to glitches as we don’t have a clock to synchronize timing.