**- DSP log - http://www.dsplog.com -**

Binary to Gray code conversion for PSK and PAM

Posted By __Krishna Sankar__ On May 11, 2008 @ 1:12 pm In __Modulation__ | __14 Comments__

In this post, let us try to understand Gray codes and their usage in digital communication. Quoting from Wiki entry on Gray code [Gray-Wiki ^{[1]}],

The

reflected binary code, also known asGray codeafter Frank Gray^{[2]}, is a binary numeral system^{[3]}where two successive values differ in only one digit.

In a digital communication system, if the constellation symbols are Gray encoded, then the bit pattern representing the **adjacent constellation symbols differ by only one bit**. We will show in another post that having this encoding structure gives a lesser probability of error than the ‘natural binary ordering’. However, in this post, let us try to figure out the **conversion of natural binary representation to Gray code**.

Consider a bit binary number with representing the index of the binary number. Let be the equivalent Gray code.

**1.** For ,

i.e, the most significant bit (MSB) of the Gray code is same as the MSB of original binary number.

**2.** For ,

i.e, bit of the Gray code is the exclusive-OR (XOR) of of the bit of the binary number and of the bit of the binary number.

Simple Matlab/Octave code for doing the binary to Gray code conversion

`clear;`

ip = [0:15]; % decimal equivalent of a four bit binary word

op = bitxor(ip,floor(ip/2)); % decimal equivalent of the equivalent four bit gray word

Input,decimal |
Input,binary |
Gray,decimal |
Gray,Binary |

0 | 0000 | 0 | 0000 |

1 | 0001 | 1 | 0001 |

2 | 0010 | 3 | 0011 |

3 | 0011 | 2 | 0010 |

4 | 0100 | 6 | 0110 |

5 | 0101 | 7 | 0111 |

6 | 0110 | 5 | 0101 |

7 | 0111 | 4 | 0100 |

8 | 1000 | 12 | 1100 |

9 | 1001 | 13 | 1101 |

10 | 1010 | 15 | 1111 |

11 | 1011 | 14 | 1110 |

12 | 1100 | 10 | 1010 |

13 | 1101 | 11 | 1011 |

14 | 1110 | 9 | 1001 |

15 | 1111 | 8 | 1000 |

**1.** As can be seen from the Table above, each row differs from the row above and below by only one bit. Further, just to highlight that this behavior is indeed true for 16th row *[1000]* and the 1st row *[0000]* .

**2.** The conversion shown in the Table above can be used for general modulation schemes like M-PSK (Phase Shift Keying), M-PAM (Pulse Amplitude Modulation) etc.

**3.** However, for a general M-QAM modulation the binary to Gray code conversion is bit more complicated (and I need to figure that out). We will discuss the QAM case in a future post.

Article printed from DSP log: **http://www.dsplog.com**

URL to article: **http://www.dsplog.com/2008/05/11/binary-to-gray-code-conversion-psk-pam/**

URLs in this post:

[1] Gray-Wiki: **http://en.wikipedia.org/wiki/Gray_code**

[2] Frank Gray: **http://en.wikipedia.org/wiki/Frank_Gray_%28researcher%29**

[3] binary numeral system: **http://en.wikipedia.org/wiki/Binary_numeral_system**

[4] click here to SUBSCRIBE : **http://www.feedburner.com/fb/a/emailverifySubmit?feedId=1348583&loc=en_US**

Click here to print.

Copyright © 2007-2012 dspLog.com. All rights reserved. This article may not be reused in any fashion without written permission from http://www.dspLog.com.