The OFDM reference design included in Nutaq’s Model-Based Design Kit (MBDK) is presented as a single-system RF loopback (Perseus + Radio420X FMC). While it’s a good way to see the effects of RF impairments on a received OFDM waveform, some undesirable effects are not taken into account, mainly the carrier frequency offset (CFO). CFO is the difference between the transmit carrier frequency and the actual received carrier frequency.
The deviation is mainly caused by the Doppler effect. If both the transmitter and the receiver are not moving, does that mean that there should be no CFO? Unfortunately, the answer is “no”. CFO is also created by the unavoidable difference between the generated frequencies of the transmitter and receiver oscillators in the FMC Radio420X. For more information about CFO, visit our blog on the subject.
My point here is that the OFDM reference design can still be used to create an error-free downlink between two independent systems if CFO compensation is used (QAM-64 modulation is very fickle). To better understand what needs to be done to compensate for this effect, let’s take a look at the effects of CFO in the time and frequency domains:
| Received Signal | Effect of CFO ε on the received signal |
Time-domain signal | y [n] | e^{j2πnε/N}x[n] |
Frequency-domain signal | Y[k] | X[k-ε] |
Table 1: Effect of CFO in the time and frequency domain
x[n] is the transmitted OFDM signal, meaning that, without any other noise, the CFO is equivalent to multiplying a complex exponential to the transmitted signal in the time domain. In the frequency domain, this means a loss of orthogonality between the subcarriers after the FFT block in the receiver:
Figure 1: Effect of CFO in the frequency domain
As you can see in Figure 1, the CFO ε brings inter-carrier interference (ICI), which is definitely unwanted during reception. The automatic estimation of the CFO ε is out of this blog post’s scope but its compensation is very simple: we need to multiply the received signal y[n] by the same exponential complex function of negative frequency index. Since:
y[n]=e^{j2πnε/N} x[n]
we get:
y[n]*e^{-j2πnε/N}=e^{-j2πnε/N}*e^{j2πnε/N} x[n]=e^{-j2πnε/N+j2πnε/N} x[n]=x[n]
So, assuming that we have estimated the correct CFO value, the complex exponential can be easily generated. By using direct digital synthesis (DDS) in the FPGA and a complex multiplier, each received OFDM signal can be directly compensated for in the time domain:
Figure 2: Complex exponential generation
In Figure 2, we use a manual CFO value from a custom register. The first Mux implements the absolute value function but also extracts the sign of the CFO value to inverse the polarity of the imaginary part of the created complex exponential, if needed. The CMult multiplier block converts the CFO value to the actual data format needed by a DDS by using the following constant:
The CMult value takes the relative CFO value ε and converts it to an actual frequency value useable by the DDS. In the OFDM reference design, the physical layer is clocked at 20 MHz. With a subcarrier spacing of 20 MHz and a DDS frequency precision of 1 Hz, the CMult value will be 8.344*104. The real and imaginary portion of the complex exponential will then be multiplied by the input signals received by the Radio420X:
Figure 3: Multiplication of the received OFDM signal on antenna 1 and compensation using the generated complex exponential
Here’s the setup to achieve a video transfer between two independent PicoSDR systems:
Figure 4: Video transmission between two independent PicoSDRs using the OFDM reference design
In Figure 5, we can see the actual received constellation without any CFO compensation:
Figure 5: Received constellation without any CFO compensation
Here’s the received constellation using manual CFO compensation:
Figure 6: Received constellation with manual CFO compensation
Using trial and error, a relative CFO value of 0.0013 was used to reach the results shown in Figure 6, which can be converted to 406.25 Hz (0.0013 * 312.5 kHz). From these pictures, we can conclude one thing: even if the quality of the Radio420X hardware is very good, the unavoidable difference between two distinct Radio420Xs brings a small ICI (even if both systems are static). It’s important to note, however, that the errors introduced by a CFO of 405.25 Hz can be easily corrected using the error control coding included in any well-known standard like WiFi, WiMAX, or LTE.