IQ不平衡数字域校准分析
射频接收机技术是无线通信系统中的重要组成部分,但因为噪声的影响,在一定程度上放大了射频接收机的信号,影响对信号的甄别,同时也影响了接收机的灵敏度。零中频接收机是一种新型的接收机架构,其电路结构简单、功耗低,但在使用过程中不可避免地存在 iq 不平衡的问题,对接收机的性能产生不良影响。同时,iq 不平衡加剧了接收端的镜像干扰,解决上述问题的方式主要有优化电路设计、数字域补偿校准两种。
零中频接收机又称为直接变频接收机,指的是通过把射频信号的中心频率更改为零频。在零频接收机中,本振频率
与信号载波频率保持一致,通过正交混频,在低噪放的情况下,把其转变成两路零中频基带信号,也就是 I 路和 Q 路,
所以并没有使用到镜频信号,并不使用高 Q 值的镜像抑制滤波器,同时还能使用单片集成低通滤波器,替换中频信号,
这在一定程度上提高了电路的集成度。零中频接收机主要有以下优点:
第一,电路简单、功耗低,电路简化,器件少。
第二,方便集成。因为并不适用片外高 Q 值滤波器,这提高了系统集成度,但相较于超外差接收机,其存在很多缺点,主要体现在以下方面:一是本振存在严重泄漏情况,受到器件隔离度的影响,有些信号会泄漏到 RF 端口,基于天线辐射的影响,对邻近信号道有不同程度的影响。
第三,直流偏置,主要是因为零中频,并没有把直流偏置从有用信号中分离出来,且直流偏置过大会造成后端过于饱和。
第四,出现 iq 不平衡,受到器件工艺因素的影响,很难确保同相和正交两路信号的幅度相同。
二、零中频接收机 iq 不平衡分析通常情况下,零中频接收机主要使用莹正交下变频结构,因此在接收机的设计方面,有以下要求:本振效率相同的两路正交本振信号;放大器、混频器、LPF 对信号的传输环境要相同。但在具体的硬件电路中,通过电路设计 PCB 布局的误差,会影响 I 路、Q 路信号的相位误差,这会干扰镜像信号。因为宽带零中频接收机中,LPF、ADC、混频器和放大器,直接影响到 I、Q 两路信号与频率,也就是不同评率下信号的相位误差存在差异,增加了电路设计的难度,同时更会影响其性能。为了对零中频接收机中的 iq 不平衡情况进行深入的分析,构造如图 1 所示,把 LO 的不平衡当作频率独立不平衡,把 LPF、ADC、混频器和放大器等对信号的影响当作一个滤波器,I 路频率响应为 H1(f),Q 路频率响应为 Hq(f)。
r(t)为接收的射频信号,载波频率为 ωc,r(t)可写成下列形式:
MATLAB仿真程序:
clc
clear
close all
%% 产生IQ不平衡的调制数据
data = randi([0 3],1e7,1);
txSig = pskmod(data,4,pi/4,‘gray’);
ampImb = 5; % dB
phImb = 15; % deg
gainI = 10.^(0.5ampImb/20);
gainQ = 10.^(-0.5ampImb/20);
imbI = real(txSig)gainIexp(-0.5iphImbpi/180);
imbQ = imag(txSig)gainQexp(1i*(pi/2 + 0.5phImbpi/180));
rxSig = imbI + imbQ;
constDiagram = comm.ConstellationDiagram(…
‘SymbolsToDisplaySource’,‘Property’, …
‘SymbolsToDisplay’,100);
constDiagram(rxSig)
%% IQ不平衡补偿
iqImbComp = comm.IQImbalanceCompensator;
compSig = iqImbComp(rxSig);
constDiagram(compSig)
%% IQ不平衡估计
signal = rxSig;
hIQComp = comm.IQImbalanceCompensator(‘CoefficientOutputPort’, true);
% Normalize the power of the signal
normalized_signal = signal./std(signal);
% step processes the input data, normalized_signal, to produce the output for System object, hIQComp.
[compSig,coef] = step(hIQComp,normalized_signal);
% iqcoef2imbal Computes the amplitude imbalance and phase imbalance that a given compensator coefficient will correct.
[ampImbEst,phImbEst] = iqcoef2imbal(coef(end));
release(hIQComp);