## Introduction

You may have heard of Synchronous and Asynchronous Communications Protocols (such as UART - Universal Asynchronous Receiver and Transmitter), but do you know what these terms mean? If not then don't worry for we'll be discussing them in this article.

In digital communication - when we want to send data from one device to another - then we can either drive the communication data line(s) High (1) or Low (0). Those are all the options there are. Let's say we wanted to send the data 'Hello' from one device to another: Using ASCII encoding (where each letter in the alphabet is assigned a number, since computers work on numbers internally) this would be represented by the sequence of numbers

`72 101 108 108 111`

or in binary

`01001000 01100101 01101100 01101100 01101111`

If we have a single data line (as is the case with most popular communications protocols) then we could send each bit one after the other, by driving the data line high or low depending on the bit value being transmitted. The signal to transmit ‘Hello’ would then look like the below (colours added for convenience, binary data obviously doesn’t have colours) with data transmitted LSB (Least Significant Bit) first (more on that shortly).

Hello in binary (using ASCII encoding), transmitted LSB (Least Significant Bit) first.

The Least Significant Bit of a binary number is the bit with the smallest value (furthest to the right), and the Most Significant Bit is the bit with the largest value (furthest to the left). See our article on Endianness & Bit Significance for more information.

## Interpreting Data

If the data being transmitted was always an alternating sequence of 1's and 0's then it would be fairly easy to interpret:

but obviously this is almost never the case. What if we had a sequence of 4 x 1's followed by 4 x 0's (11110000)?

Without additional information, how could the receiver tell whether this signal was 10, 1100, 111000 or 11110000 (or 1111100000, and so on)? Clearly something more is needed to clarify the communication.

## Synchronous or Asynchronous

This is solved either with an additional communication line to indicate the timing of each bit on the data line, or by the receiver knowing internally how long each bit on the data line lasts for. The former option, where an additional communications line is used to indicate the timings of each bit, is called Synchronous communication. The additional line in synchronous communication is called the clock line (because clocks are used to time things). The latter option, where the receiver knows internally how long each bit on the data line lasts for, is called Asynchronous communication. With Asynchronous communication both the receiver and transmitter need an accurate internal clock to keep time. The receiver and the transmitter must also obviously be set to use the same speed/timing (baud rate) in order to communicate successfully.

Synchronous vs Asynchronous transmission therefore boils down to whether the clock is external (Synchronous) or internal (Asynchronous). Some examples of Asynchronous protocols include UART, USB, CAN and Ethernet. Some examples of Synchronous protocols include SPI, I2C and DDR.

## Pros and Cons

An advantage of Synchronous protocols is that they do not require the device to have a highly accurate internal clock (the faster the communication, the more accurate the internal clock would need to be). As such, synchronous communication protocols are often used in small low-cost peripherals such as sensors. Another advantage of Synchronous protocols is that both sides of the communication do not need to know in advance what the data rate (timing) will be. Some synchronous protocols even have variable data rates, and/or may use the clock line to indicate when they are still busy by holding it until they are ready to receive new data (this is a feature in I2C); Asynchronous protocols require an additional communication line to implement this feature (such as the CTS/RTS line in UART).

An advantage of Asynchronous protocols is that they require fewer communication lines and therefore also generate less electromagnetic noise (see our article on EMI/EMC).

Because it can be difficult with Asynchronous protocols to get the clocks on both sides exactly the same, they will usually require at least one transition on the data line every now and again in order to realign their internal clocks. This may be part of the protocol frame (such as with UART), or it may be implemented by mandating that a stuffing bit of the opposite polarity be inserted after a certain number of consecutive bits of the same polarity (the stuffing bit is discarded when the protocol is decoded, such as with the CAN protocol).

Bit Stuffing in CAN after 5 equal bits.

## Summary

That's all there is to understanding the terms Synchronous Communication and Asynchronous Communication.

• Synchronous = External Clock
• Asynchronous = Internal Clock

For more information on the details of some Synchronous and Asynchronous communications protocols – such as UART, SPI and I2C – please see our dedicated blog articles covering each protocol.

Proteus includes numerous devices available for simulation in the component libraries, covering both synchronous and asynchronous communications protocols. In addition to this, there are also Virtual Instruments available supporting the major synchronous and asynchronous communications protocols.

All content Copyright Labcenter Electronics Ltd. 2024. Please acknowledge Labcenter copyright on any translation and provide a link to the source content on www.labcenter.com with any usage.