As shown in the previous section, in an FMComms system, the complex modulation/demodulation scheme is used. In theory, the two baseband signals (in-phase and quadrature) should be orthogonal to each other with the same amplitude. However, due to the different channel environments and component properties 1) , there is usually offset on the phase and the amplitude, which sets the context of I/Q correction.
The I/Q imbalance is commonly seen in any RF front-end that exploits analog quadrature down-mixing. With an imbalanced I/Q, there will be several problems.
In contrast to an ideal down-converter that performs simple frequency shifting, a down-converter with I/Q imbalance not only down-converts the desired signal, but also introduces its image interference. Such image interference, if left uncorrected, presents an error floor which limits the demodulation performance. Moreover, although the I/Q imbalance introduced by the LO may be assumed constant over the signal bandwidth, the mismatches in the subsequent baseband I/Q amplifiers and filters tend to vary with frequencies. Such frequency dependent I/Q imbalance is particularly severe in a wideband direct-conversion receiver and the corresponding estimation and compensation process becomes more challenging. 2)
In order to overcome these problems and to realize a successful communication, it is necessary to implement the I/Q correction in the FMComms system.
We will use the algorithm introduced in S.W. Ellingson's paper Correcting I-Q Imbalance in Direct Conversion Receivers 3) to conduct the I/Q correction.
Given a single tone that converts the signal from RF to baseband, ideally, the two baseband signals (in-phase and quadrature) should be orthogonal to each other with the same amplitude. Without loss of generality, we normalize the magnitude and the phase, then the two signals can be expressed as:
where is the baseband frequency of the tone.
However, due to the different channel environments and component properties, there is usually DC bias, as well as the offset on the phase and the amplitude, which makes the two signals as following:
where and are DC biases on two channels, stands for the amplitude offset, and stands for the phase offset.
Since the DC biases can be easily found out by calculating the mean value of the signals, the main challenge is to correct the following two signals:
and recover them back to and . Using Trigonometric Identities, these two equations can be rewritten in the matrix format:
Then according to the linear algebra, and can be obtained by doing a matrix inverse:
where and are observed signals, and are correction matrix parameters.
Please refer to the S.W. Ellingson's paper4) for the detailed procedures of finding out the correction matrix parameters.
Based on the theory introduced in the previous section, the implementation of I/Q correction is conducted in two steps, namely the correction matrix calculation and the matrix multiplication. Specifically, in the first step, we use some software, such as MATLAB or Simulink, to calculate the parameters of the correction matrix. Then in the second step, we use hardware to implement the matrix multiplication and obtain the corrected I and Q.
A Simulink model is created to calculate the parameters of the correction matrix. The top level of the model is shown in the figure below:
In this model, the amplitude, phase and DC offset of the I and Q signals are specified by the users. These two signals are and in the previous section, which serve as the input to the IQcorrect subsystem. In real-world application, these two inputs can be captured data from users' systems. For example, the output data from ADC on the receiver side. The output of the IQcorrect subsystem are the parameters of the correction matrix (A, C, D). The structure of this subsystem is shown below:
Basically, this subsystem executes Step 2 through Step 7 of the algorithm in S.W. Ellingson's paper. In order to facilitate the real-world application, this model supports fixed point data type and sample-based processing. It is noted that all the averaging operations are implemented by FIR filter.
You can download the Simulink model from below:
Pay attention to the output data type of each block. It should be defined according to the range of the data value of your system. Otherwise, you will not get the correct result.
In order to run this model, your MATLAB license needs to include the following components:
If you want to generate HDL code from this model, the following component is also required:
The HDL is implemented for matrix multiplication on FPGA. It takes the correction matrix parameters as input, and multiplies them with the observed I and Q signals to get the corrected signals.
In this section, the time-domain and scatter plots of I and Q signals from the Simulink model are shown before and after I/Q correction. Comparing the figures, it is easy to find the impact of I/Q correction.
Before the I/Q correction, it is obvious that the amplitude of the I and Q signals is very different, and their phase difference is not 90 degrees. The scatter plot shows an ellipse, which also reflects the imbalance of I and Q.
After the I/Q correction, the amplitude of the I and Q signals is identical, and they are orthogonal to each other. Therefore, the scatter plot shows a perfect circle centering in the origin.