Asynchronous Explained

by: Blair Copeland (2011)

Imagine a normal residential street that is only one lane wide, so it is only one-way. A car is defined as having a front bumper, the interior and a rear bumper. When a car enters that street, it takes up the entire street because it is one lane wide. However, when there is no traffic, there is no car.

Similarly, async traffic can be one-way. Data, having some part (bits) that identifies the start of the frame, like a front-bumper identified the front of a car. The inside of the frame carrying the data like the inside of the car carries people. Finally the end of the frame is identified by some other piece (bits), like the rear bumper identified the rear of the car.

I think we can agree that only one car can exist on that street at one moment in the same place, otherwise we have a collision. Collision means the same thing when it happens to frames.

Now let us consider that this street is two-way. Cars can enter from either end. The street is still one-lane-wide so it is still one-way at-a-time. So this time before the car enters the street, it honks to make sure the cars at the other end know it is taking the street next. This is a bi-directional async channel, when data senders send frames using this method.

I think we can all agree that it is just about as expensive to pull one-wire as it is to pull one cable containing 8 wires. The real cost here is the labor, not the wire. If we have multiple wires, then we can have multiple channels. I can tell you 1000 feet of category-6 cable is about $200. To install one 300 foot section of cable is $250 minimum. So that one box installed could be as little as $750 installed and the sky is the limit on the cost depending on difficulty of the installation.

Since it is clearly VERY inefficient to send traffic both ways on one-channel, as you have to wait for all the cars going one way to leave the channel, before you signal and start new cars down the channel the other way;  if you have multiple wires (i.e. channels), it is better to build bi-directional async communication across multiple wires where each channel only goes one way. Together the two-channels make-up the bi-directional part.

So hopefully this makes async somewhat more clear. There is no clock to determine the data-layout, it depends on one-way or two-way designs and the signaling that determines direction and frame start and stop boundaries.