Bus encoding

Bus encoding refers to converting/encoding a piece of data to another form before launching on the bus. While bus encoding can be used to serve various purposes like reducing the number of pins, compressing the data to be transmitted, reducing cross-talk between bit lines, etc., it is one of the popular techniques used in system design to reduce dynamic power consumed by the system bus. Bus encoding aims to reduce the Hamming distance between 2 consecutive values on the bus. Since the activity is directly proportional to the Hamming distance, bus encoding proves to be effective in reducing the overall activity factor thereby reducing the dynamic power consumption in the system.
In the context of this article, a system can refer to anything where data is transferred from one element to another over bus (viz. System on a Chip (SoC), a computer system, an embedded system on board, etc.).
Motivation.
Power consumption in electronic systems is a matter of concern today for the below reasons:
The dynamic power dissipated by an electronic circuit is directly proportional to the activity factor and the load capacitance as seen by the output of the logic gate. In case of a bus, the load capacitance is usually high since bus needs to be connected to multiple modules and routed longer and the activity factor is also high. Due to higher value of load capacitance and activity factor, in a typical system, bus power consumption can contribute up to 50% of the total power consumption. Bus encoding aims to reduce this power by reducing the amount of activity (number of toggles) in the bus lines. While the kind of bus encoding to be used for a particular system can be best determined when the target application and environmental constraints about the system are known apriori, described below are some bus encoding techniques which can help reduce bus power for most systems.
Hence bus encoding is important for any electronic system design.
Examples of bus encoding to achieve low power.
Following are some of the implementations to use bus encoding for reducing dynamic power consumption in different scenarios:
Other examples of bus encoding.
Many other types of bus encoding have been developed for a variety of reasons:
Implementation method.
In case of SoC designs, bus encoding schemes can be best implemented in RTL by instantiating dedicated encoders and decoders over the bus. Another way it could be implemented is by passing hint to the synthesis tool either as a trace of the simulation or by using synthesis pragma to define the type of encoding needed.
On board, a small low power IC can be deployed in between the master and slave modules on the bus to implement the encoding and decoding functions.
Properties of the encoding function.
The bus encoding/decoding function must be a bijection. This essentially requires encoding function to possess below behavior: