Communication Technology

 

 

 

 

Why we need Digital Encoding ?

 

First I assume that you know what Encoding is (Refer to Encoding page if you are not familiar with the concept of Encoding).

Now the question is why we need Digital Encoding. Here goes some of the reason why.

 

< Spectral Efficiency >

 

According to Fourier Transform, a Digital Pulse contains frequencies of infinite range. So theoretically we need to implement a physical medium that can transfer the signal with infinite frequency range, but it is practically impossible. So it would be good if we can have a some technique to concentrate the frequency of digital signal into a specific region as narrow as possible. Channel Coding can be a measure to achieve this goal.

 

< Removing DC Offset >

 

If we just map the digital bit 1 to +V volt and bit 0 to +0 volt (or -V volt), a certain bit pattern (all zero bit or all one bit) can create DC Offset along the communication media which may cause various problem. By applying a proper Digital Encoding technique, you can reduce (even though you may not completely remove) the DC offset.

 

< Assisting Synchronization >

 

A certain signal pattern which does not have much transition in it (e.g, long period of '+V' or long period of '-V') may make it difficult for the reciever to get synchronized. By applying a proper encoding technique, you can reduce such a period in which the signal stays at the same voltage level. It helps synchronization on reciever side.

 

< Increase immunitity against Signal Interference and Noise >

 

Some Coding Technique can shows the better performance in terms of BER vs SNR.

 

Followings are some of the digital encoding techniquest commonly used in the field.  You would often come across these words when you are reading specification sheet or technical documents about digital communication system.

 

 

 

RZ vs NRZ

 

RZ stands for 'Return to Zero' and NRZ stands for 'No Return to Zero'. As shown in the following illustration, in RZ there is a certain period in which the signal level goes to 'zero' and stays there for some time. In NRZ, the signal jump between +V and -V at the bit boundary and never stays at zero within the bit duration.

 

There a couple of different type of NRZ. In concept, you can map the bit to +V or to -V in any way. The illustration shown below shows the case where '1' maps to '+V' and '0' maps to '-V'.

 

 

In practice, special type of NRZ valled 'NRZ-L' and 'NRZ-I' are more frequency used. In NRZ-L, the bit '0' maps to electric level '+V' and the bit '1' maps to the electric level '-V' as shown below. In NRZ-I, the bit value does not map to any specific signal level, the bits are mapped to a certain transistion of signal level. '1' maps to 'transition' and '0' maps to 'no transision'. When it hits '0, the signal level stay same as the signal level of previous bit whatever it is. When it hits '1', the signal level changes to opposite value from the signal level of previous bit. (It may be a little bit confusing at the beginning, so try to understand the concept clearly)

 

 

In case of electrical signal, we can map plus(+) and minus (-) level signal to the bit '1' or '0', but in case of optical signal, we cannot do the same thing since there is no minus (-) level in optics. so one of the optical bits should be mapped to zero as shown below.

 

 

< Pros and Cons of NRZ >

 

Pros :

  • As you may recognize in the description above, it is very simple to understand and simple to implement
  • Relatively good spectral efficiency : it can achieve 2 bits/Hz spectral efficiency

 

Cons :

  • A certain bit pattern can cause DC offset. For example, '11111...' or '00000...' can cause DC offset in NRZ-L and '0000...' in NRZ-I can cause DC offset.
  • Due to the same reason as DC offset, the long duration can generate a long duration of signal without any transition and this would make the reciever to get synchronized.

 

 

 

Manchester / Differential Manchester

 

In Manchester and Differential Manchester, both 0 and 1 is mapped to a certain pattern of transition. So whatever the bit pattern, you would always see the transition. The transition pattern is defined as follows :

 

Manchester :

  • 0 => Transition from high to low in the middle of bit period
  • 1 => Transition from low to high in the middle of bit period

Differential Manchester :

  • 0 => Transition at the beginning of the bit period
  • 1 => no transition at the beginning of the bit period
  • In any case, transition happens in the middle of bit period

 

 

 

 

Bipolar AMI (Alternative Mark Inversion)

 

This encoding method is using 3 signal levels (+V, 0, -V). and mapping goes as follows :

  • 0 => No signal. Signal level Zero
  • 1 => maps the +V or -V depending on previous '1' signal. If previous '1' level is '-V', the current '1' maps to '+V', If previous '1' level is '+V', the current '1' maps to '-V'

 

 

Pros :

  • Good condition for Sync in case of long string of '1's since it always make transision.
  • Zero DC offset whatever the bit string is
  • Bandwidth efficiency (Majority of power concentrates in less bandwith than in NRZ case)
  • Possible Error Detection (If you see the same non-zero signal level more than 1 consecutive bit period, it implies there is error)

Cons :

  • Possible Synchronization issue with long string of '0' since there is no transition and signal level stays always at '0'
  • A little bit of redundancy because 3 levels are used to implement one bit.
  • 3dB SNR loss in terms of BER vs SNR comparing to NRZ case.

 

 

 

B8ZS

 

 

 

 

3B/4B Encoding

 

3B/4B Encoding is a method to replace '3 bit' original data (input) with '4 bit' data (output). The input and output mapping of this encoding is based on following table. (Auctually this table just shows the result of the encoding, but in many case real implementation is done by statemachine running a predefined rule).

 

3B Input (Decimal)

3B Input (Binary)

4B Output (Binary)

0

000

0100 or 1011

1

001

1001

2

010

0101

3

011

0011 or 1100

4

100

0010 or 1101

5

101

1010

6

110

0110

7

111

0001 or 1100 or 1000 or 0111

 

 

 

 

5B/6B Encoding

 

5B/6B Encoding is a method to replace '5 bit' original data (input) with '6 bit' data (output). The input and output mapping of this encoding is based on following table. (Auctually this table just shows the result of the encoding, but in many case real implementation is done by statemachine running a predefined rule).

 

5B Input (Decimal)

5B Input (Binary)

6B Output (Binary)

0

00000

100111 or 011000

1

00001

011101 or 100010

2

00010

101101 or 010010

3

00011

110001

4

00100

110101 or 001010

5

00101

101001

6

00110

011001

7

00111

111000 or 000111

8

01000

111001 or 000110

9

01001

100101

10

01010

010101

11

01011

110100

12

01100

001101

13

01101

101100

14

01110

011100

15

01111

010111 or 101000

16

10000

011011 or 100100

17

10001

100011

18

10010

010011

19

10011

110010

20

10100

001011

21

10101

101010

22

10110

011010

23

10111

111010 or 000101

24

11000

110011 or 001100

25

11001

100110

26

11010

010110

27

11011

110110 or 001001

28

11100

001110

29

11101

101110 or 010001

30

11110

011110 or 100001

31

11111

101011 or 010100

 

 

 

8B/10B Encoding

 

8B/10B Encoding is a method to replace '8 bit' original data (input) with '10 bit' data (output). This encoding is implemented by combining two simpler encoding method 3B/4B and 5B/6B as illustrated below.

 

 

Describing this in written form, it goes as follows.

    i) Take the Input Data Bits: HGFEDCBA

    ii) Split the Data into two blocks: HGF EDCBA

    iii) Swap the position of the two blocks/shuffle the bits in each block : abcdei fghj

 

8B/10B is a kind of encoding scheme and it is not the predefined encoding table. The output of 8B/10B would vary depending on how the shuffling statemachine is defined. So you would need to refer to the specification of each application if you want to know exact mapping table for any specific application.

 

 

 

64B/66B Encoding

 

64B/66B encoding convert a 64 bit input block into 66 output block using a complicated scrambling algorithm (not a fixed mapping table). The structure of the output block varies in many different structure and the type of the structure is indicated by the two sync bits at the beginning of the output block as shown below. This econding method is mainly used for 10 Gbit Ethernet (if you are interested in further details, refer to the documents in Reference section).

 

 

 

 

References :

 

[1] 8B/10B Coding,64B/66B Coding  

[2] 64b/66b line code

[3] Introduction to 10 Gigabit 64b/66b (Clause 49)

[4] 10G ETHERNET 64B/66B ENCODING