Manchester code
|
Manchester.png
Example of Manchester coding
Encoding of 11011000100 in Manchester code
In telecommunication, Manchester code is a form of data communications line code in which each bit of data is signified by at least one transition. Manchester encoding is therefore considered to be self-clocking, which means that accurate synchronisation of a data stream is possible. Each bit is transmitted over a predefined time period.
Manchester coding provides a simple way of encoding arbitrary binary sequences without ever having long periods without clock transitions, thus preventing the loss of clock synchronization, or bit errors from low-frequency drift on poorly-equalized analog links (see ones-density). If transmitted as an AC signal it ensures that the DC component of the encoded signal is zero, again preventing baseline drift of the repeated signal, making it easy to regenerate and preventing waste of energy. However, there are today many more sophisticated codes which accomplish the same aims with less bandwidth overhead, and less synchronization ambiguity in pathological cases (see below).
Manchester Encoding as Binary Phase Shift Keying
Manchester encoding is just a special case of Binary Phase Shift Keying, where the data to be transmitted controls the phase of a square wave carrier that is at the data rate in frequency. Therefore, it is extremely easy to generate such a signal digitally.
To control the consumed amount of bandwidth, a filter can be used to reduce the bandwidth to as low as 1Hz per bit/second, and still not lose any information during transmission. However, for practical reasons (and to further control bandwidth consumption, especially on crowded radio bands), most BPSK modulators choose a carrier frequency which is much higher than the data rate, thus resulting in tighter, more easily filtered bandwidths. The property of 1Hz/bit/second is preserved, however.
Conventions for representation of data
There are two opposing conventions for the representations of data.
The first of these was first published by G. E. Thomas in 1949 and is followed by numerous authors (e.g., Tanenbaum). It specifies that for a 0 bit the signal levels will be Low-High (assuming an amplitude physical encoding of the data) - with a low level in the first half of the bit period, and a high level in the second half. For a 1 bit the signal levels will be High-Low.
The second convention is also followed by numerous authors (e.g., Stallings) as well as by the IEEE 802.4 standard. It states that a logic 0 is represented by a High-Low signal sequence and a logic 1 is represented by a Low-High signal sequence.
A consequence of the transitions for each bit is that the bandwidth requirements for Manchester encoded signals is doubled compared with asynchronous communications, and the signal spectrum is considerably wider. Although Manchester encoding is a highly reliable form of communication, the bandwidth requirements are seen as a disadvantage, and most modern communication takes place with protocols with more modern line codes which achieve the same goals with better coding performance and smaller bandwidth requirements.
One consideration with Manchester encoding is synchronising the receiver with the transmitter. At first sight it might seem that a half bit period error would lead to an inverted output at the receiver end, but further consideration reveals that on typical data this will lead to code violations. The hardware used can detect these code violations, and use this information to synchronise accurately on the correct interpretation of the data.
A related technique is differential Manchester encoding.
In summary:
- data and clock signals are combined to form a single self-synchronizing data stream
- each encoded bit contains a transition at the midpoint of a bit period
- the direction of transition determines whether the bit is a "0" or a "1," and
- the first half is the true bit value and the second half is the complement of the true bit value. Contrast with non-return-to-zero.
Some source: from Federal Standard 1037C in support of MIL-STD-188de:Manchester Code fr:Codage Manchester it:Codifica Manchester sv:Manchesterkodning