{"id":2338,"date":"2026-02-20T13:53:12","date_gmt":"2026-02-20T12:53:12","guid":{"rendered":"https:\/\/localdab.org\/?page_id=2338"},"modified":"2026-02-20T13:54:51","modified_gmt":"2026-02-20T12:54:51","slug":"gray-code-in-qpsk","status":"publish","type":"page","link":"https:\/\/localdab.org\/index.php\/glossary\/e-h\/gray-code-in-qpsk\/","title":{"rendered":"Gray Code in QPSK"},"content":{"rendered":"\n<p class=\"has-small-font-size\">Looking at the vector diagram below, we see the four QPSK symbols and their properties as summarised in the table below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"616\" height=\"129\" src=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/Gray-code-bij-PSK-tabel.png\" alt=\"\" class=\"wp-image-2339\" srcset=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/Gray-code-bij-PSK-tabel.png 616w, https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/Gray-code-bij-PSK-tabel-300x63.png 300w\" sizes=\"auto, (max-width: 616px) 100vw, 616px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size\">This table corresponds to the classic vector diagram of QPSK modulation, in which the symbols are evenly distributed over 360\u00b0 with a phase distance of 90\u00b0 between them.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"658\" height=\"617\" src=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-1.png\" alt=\"\" class=\"wp-image-2340\" srcset=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-1.png 658w, https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-1-300x281.png 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size\">In fact, the four points (clockwise, i.e. with increasing angle) lie at the corners: <strong>45\u00b0, 135\u00b0, 225\u00b0 and 315\u00b0<\/strong>.<\/p>\n\n\n\n<p class=\"has-small-font-size\">However, when explaining <strong>differential QPSK (DQPSK)<\/strong>, it is often clearer to refer to: <strong>45\u00b0, 135\u00b0, \u2212135\u00b0 and \u221245\u00b0<\/strong>, which are mathematically completely equivalent.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Note on order and coding:<\/p>\n\n\n\n<p class=\"has-small-font-size\">When we use the (mathematical) positive rotation (counterclockwise) and look at the symbols sequentially, we notice that the binary codes are <strong>not numerically ascending<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td>Codes in counter-clockwise direction<\/td><td>Decimal value<\/td><\/tr><tr><td>00<\/td><td>0<\/td><\/tr><tr><td>01<\/td><td>1<\/td><\/tr><tr><td>11<\/td><td>2<\/td><\/tr><tr><td>10<\/td><td>3<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:29px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Several important features stand out here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">The values 2 and 3 are <strong>swapped<\/strong> in relation to the classic binary sequence<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">Symbols that are <strong>diametrically opposed<\/strong> (180\u00b0 phase difference) have <strong>complementary binary codes<\/strong> :  00 \u2194 11 and 01 \u2194 10<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">In the sequence 00 \u2192 01 \u2192 11 \u2192 10 \u2192 00 \u2192 \u2026, <strong>only one bit changes per transition<\/strong><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">This property also applies <strong>to the transition from the last symbol back to the first<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"has-small-font-size\">These properties define exactly what is known as a <strong>Gray code<\/strong>. In the case of QPSK, we therefore refer to a <strong>2-bit Gray code.<\/strong><br><br>When QPSK symbols are encoded in this way, it is referred to as <strong>QPSK with Gray coding<\/strong> \u2014 and this is<strong> exactly the encoding used in DAB and DAB+<\/strong>.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Why is Gray code used in QPSK?<\/p>\n\n\n\n<p class=\"has-small-font-size\">The use of Gray code is not a coincidence, but a conscious design choice to minimise the error sensitivity of the system.<\/p>\n\n\n\n<p class=\"has-small-font-size\">Looking at the vector diagram of QPSK, we see that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">Symbols that are <strong>horizontally or vertically adjacent to each other<\/strong> are <strong>closest to each other<\/strong><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">Symbols that are <strong>diagonally opposite each other<\/strong> are <strong>much further apart<\/strong><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"658\" height=\"614\" src=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX.png\" alt=\"\" class=\"wp-image-2342\" srcset=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX.png 658w, https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-300x280.png 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size\">It follows that in the case of noise:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\"><strong>Horizontal and vertical shifts <\/strong>are most likely<\/li>\n\n\n\n<li class=\"has-small-font-size\"><strong>Diagonal shifts <\/strong>occur much less frequently<\/li>\n<\/ul>\n\n\n\n<p class=\"has-small-font-size\">By applying Gray code, the following applies:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">A horizontal or vertical error leads to a<strong> 1-bit erro<\/strong>r<\/li>\n\n\n\n<li class=\"has-small-font-size\">A diagonal error leads to a <strong>2-bit error<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"has-small-font-size\">Because the most likely errors affect only <strong>one bit<\/strong>, the probability of <strong>2-bit errors is greatly reduced by applying Gray code<\/strong>. This is particularly important because<strong> forward error correction (<\/strong>FEC) works much more efficiently with single-bit errors than with multiple-bit errors.<\/p>\n\n\n\n<p>Influence of noise on the vector diagram<\/p>\n\n\n\n<p class=\"has-small-font-size\">Wireless transmission involves both:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\"><strong>Amplitude errors<\/strong> on (change in the length of the vector)<\/li>\n\n\n\n<li class=\"has-small-font-size\"><strong>Phase errors<\/strong> (slight rotation of the vector)<\/li>\n<\/ul>\n\n\n\n<p class=\"has-small-font-size\">As a result, the received symbols no longer lie exactly on the ideal points, but form a cloud around each ideal symbol.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"683\" src=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-2.png\" alt=\"\" class=\"wp-image-2343\" srcset=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-2.png 716w, https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-2-300x286.png 300w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size\">As long as the received point remains within the <strong>same quadrant<\/strong>, the receiver can still detect the correct symbol.<\/p>\n\n\n\n<p class=\"has-small-font-size\">That is why we refer to <strong>digital or discrete modulation<\/strong>: the exact position is less important than <strong>the area (decision plane)<\/strong> in which the point falls.<\/p>\n\n\n\n<p class=\"has-small-font-size\">However, with increasing noise, the vectors may:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">First cross the <strong>horizontal or vertical decision lines<\/strong><\/li>\n\n\n\n<li class=\"has-small-font-size\">Only cross the <strong>center point (diagonal boundary)<\/strong> in the case of much larger errors<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"410\" src=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-3.png\" alt=\"\" class=\"wp-image-2344\" style=\"aspect-ratio:1.0487881864099242;width:650px;height:auto\" srcset=\"https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-3.png 430w, https:\/\/localdab.org\/wp-content\/uploads\/2026\/02\/QSPK-Vectordiagram-RX-3-300x286.png 300w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size\">Thanks to the <strong>Gray code<\/strong>, exceeding a horizontal or vertical boundary results in only one error bit. Even with significant noise, errors are therefore limited to <strong>1-bit errors<\/strong>, which significantly increases the robustness of the system.<\/p>\n\n\n\n<p><strong>In summary<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">QPSK uses four symbols with a phase spacing of 90\u00b0 between them<\/li>\n\n\n\n<li class=\"has-small-font-size\">Gray coding ensures that <strong>neighboring symbols differ by only one bit<\/strong><\/li>\n\n\n\n<li class=\"has-small-font-size\">The most likely errors therefore lead to <strong>minimal bit errors<\/strong><\/li>\n\n\n\n<li class=\"has-small-font-size\">This increases the <strong>reliability <\/strong>and <strong>efficiency of error correction<\/strong><\/li>\n\n\n\n<li class=\"has-small-font-size\">That is why QPSK with Gray code is the logical choice for <strong>DAB\/DAB+<\/strong><\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/localdab.org\/index.php\/glossary\/\" data-type=\"page\" data-id=\"15\">Back<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Looking at the vector diagram below, we see the four QPSK symbols and their properties as summarised in the table below. This table corresponds to the classic vector diagram of QPSK modulation, in which the symbols are evenly distributed over 360\u00b0 with a phase distance of 90\u00b0 between them. In fact, the four points (clockwise, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":1259,"menu_order":140,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2338","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/pages\/2338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/comments?post=2338"}],"version-history":[{"count":15,"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/pages\/2338\/revisions"}],"predecessor-version":[{"id":2359,"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/pages\/2338\/revisions\/2359"}],"up":[{"embeddable":true,"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/pages\/1259"}],"wp:attachment":[{"href":"https:\/\/localdab.org\/index.php\/wp-json\/wp\/v2\/media?parent=2338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}