Pulse stuffing, often referred to as bit stuffing, is the practice of adding non-data bits to a binary signal before that signal is transmitted over a network. Pulse stuffing is often used as a means of controlling synchronization in systems that require both transmitter and receiver to transmit at the same bit rate. Alternatively, pulse stuffing can be used to make sure that the frames transmitted over a network conform to a standard size.

How Pulse Stuffing Works

At their most basic level, network signals are transmitted as a string of zeros and ones. When a recipient receives this string, it interprets the zeros and ones as usable data. Pulse stuffing involves adding zeros or ones that are not part of the data being transmitted to this string. It is important that the receiving device knows what type of pulse stuffing is taking place before the signal is received, as receivers must strip out the stuffed bits in order to interpret the binary string correctly.

Maintaining Synchronization

Pulse stuffing is used in some systems to maintain synchronization. For example, T-carrier systems -- such as T-1 lines -- require devices and repeaters to maintain the same bit rate at all times. This is usually achieved by re-syncing the devices after every “one" bit received. However, this method of re-syncing poses a problem when a long string of zeros is sent. As such, T-carrier systems are designed to “stuff” the signal with a special re-synchronization pattern after around 15 consecutive zeros are sent.

Avoiding HDLC Errors

High-Level Data Link Control packets use a specific code to denote the beginning and end of each packet: 01111110. It is important that systems do not transmit this code inadvertently, as doing so could cause transmission errors. To avoid this, HDLC systems are designed to stuff a “zero” bit after every sequence of five “ones,” except when transmitting the code. This safeguard ensures that the HDLC packet code can only be transmitted at the appropriate time.

Bit Padding

Bit padding is a form of pulse stuffing whereby bits are added to a data packet to ensure that the packet is of a certain size. These bits are usually added to the end of the packet's useful data as a string of zeros or ones. Bit padding is used in protocols where packets have a fixed beginning and end, allowing systems to see where one packet starts and the next one ends.