In Part 1, we learned that QAM works by basically summing two sinusoid waves of the same frequency that are in quadrature. These two sinusoids are called the I, or In-Phase component, and the Q, or Quadrature component.
We also learned that as long as we keep the amplitudes of both waves the same, we can create four distinct phase shifts by inverting one, none, or both of the signals. These four possible combinations are the basis of QPSK, which as I mentioned in Part 1, is effectively the same as 4-QAM.
With all that out of the way, let’s take a closer look at QPSK.
What Is It?
QPSK, or Quadrature Phase Shift Keying, is a modulation method that can encode two bits per symbol. Each of the four resultant phase shifts previously mentioned—45°, 135°, 225°, and 315°—is mapped to a 2-bit value.
To better illustrate this, below is a QPSK constellation diagram taken from Figure 17-10 in the IEEE 802.11-2020 standard.
A constellation diagram displays the symbol set for a given modulation type. The symbols are presented as dots, or constellation points, whose positions are plotted on the diagram based on particular amplitude values of the I and Q components. The amplitudes of each component wave, or carrier, are depicted as either positive or negative numbers along the horizontal and vertical axes. The horizontal axis represents the I carrier, and the vertical axis represents the Q carrier. Negative amplitude values indicate that the wave is inverted.
The angle, or phase, of each constellation point is measured counter-clockwise from the horizontal axis. So, referring to the diagram above, the symbol mapped to “11” would have a phase of 45°, and “10” would have a phase of 315°.
The amplitude of each symbol is measured as the distance from each constellation point to the origin of the chart where the two axes intersect. In QPSK, all constellation points will have equal amplitudes.
Finally, did you notice the “B0B1” in the top right-hand corner of the diagram? This just tells us how the displayed symbols are formatted. For example, if we look at the symbol “10,” B0 will be “1,” and B1 will be “0.” I’ll explain what that means below.
How It Works
As previously stated, QPSK can encode two bits per symbol. So, as new bits arrive to be modulated and transmitted, the input data stream is first divided into groups of two bits. These bits are numbered in the order they arrive, so the first bit is B0, and the second bit is B1.
These bits are sent through a serial-to-parallel converter, which allows these two serial, or consecutive, bits to be processed in parallel instead of one at a time.
They will then be mapped to one of the constellation points using the following QPSK encoding table from Figure 17-13 in the IEEE 802.11-2020 standard, where B0 will dictate the value of the I component, and B1 will dictate the value of the Q component.
Each bit is communicated as a pulse, the voltage of which is determined by the table above. Here, we can see that a voltage of -1 will designate a bit value of 0, and a voltage of +1 will designate a bit value of 1.*
*Actual voltage levels may differ in practice, depending upon the implementation.
These low-frequency pulses, or baseband signals, modulate higher-frequency carrier signals generated by a Local Oscillator (LO) to create the I and Q components. Here’s how this is done:
- The LO produces a high-frequency cosine signal (i.e., the carrier wave) that is multiplied by, or mixed with, the low-frequency baseband signal of B0. If the baseband signal carries a negative voltage, the carrier will invert, or shift in phase 180°. The resulting pulse amplitude modulated signal is the In-Phase, or I component.
- A 90° phase shift is applied to the LO signal, creating the sine carrier. This is multiplied by the B1 baseband signal, resulting in the Quadrature, or Q component.
The I and the Q carriers are then summed together to form the QPSK symbol.
To visualize the entire process at a high level, here is a basic block diagram of the operation:
Putting It All Together
Let’s say we need to transmit the following eight bits, with the rightmost bit arriving first:
Since QPSK can only encode two bits per symbol, and therefore only operates on two bits at once, it takes the first two-bit grouping of input data it sees, which is “01,” and begins processing.
Since the “1” is seen first, it becomes B0, and “0” will become B1. This is represented in the above block diagram. Following the B0B1 symbol format from the constellation diagram, we see that we will be encoding the symbol “10.”
These serial bits will be converted to parallel bits, enabling each bit to be processed simultaneously. Each bit will then be mapped to their correct voltage using the QPSK encoding table. Using the table, we can see that B0 will be assigned a voltage +1, and B1 a voltage of -1.
B0 will mixed with the cosine generated by the LO, forming the I carrier. B1 will be mixed with the sine signal, creating the Q carrier. The Q carrier will be inverted due to the negative voltage of B1.
The I carrier and the Q carrier will be summed together, with the resultant signal having a phase of 315°.
This is shown in the image below, and aligns with what we see in the constellation diagram.
In order to send all 8 bits, this whole process will repeat three more times. The next symbol to be encoded will be “11,” followed by “10,” and finally “01.”
That’s it for now! In Part 3, we’ll discover how we can create more than just four possible symbols when we discuss 16-QAM.
Wave image created with EMANIM:
Szilágyi, András (2019): “EMANIM: Interactive visualization of electromagnetic waves”. Web application available at URL https://emanim.szialab.org