现代的卫星通信、5G移动通信、无线局域网的通信带宽都非常宽,可能超过500MHz甚至达到2GHz左右。对于这么宽带的信号来说,传统频谱仪虽然可以看到信号频谱,但受限于实时分析带宽,已经很难再对信号的调制质量进行有效的解调分析,这时就可以使用宽带示波器配合矢量解调软件来做信号解调分析。为了简化问题的分析,在后面的章节中我们以一个载波频率为5.2GHz,数据速率为50MBaud的QPSK调制信号为例,来介绍如何用示波器进行射频、微波信号的解调分析。

首先,我们在示波器上可以直接观察被测信号的时域波形,信号的包络形状与发射端成型滤波器的类型和滚降因子有关,有经验的工程师通过信号的包络形状可以大概估算出信号的功率、调制速率以及调制方式,但除此以外,对于信号调制质量的好坏则很难进行定量的评估。      

IQ解调 python iq解调算信号强度_时域

为了对这个信号进行进一步的解调和调制质量分析,我们可以借助于相应的VSA(VectorSignal Analyzer: 矢量信号分析)软件。这个软件可以安装在示波器上,也可以安装在一台外部PC上并通过网线或USB线对示波器进行控制。在和示波器的地址设置连接完成后,VSA软件可以把示波器控制起来,并把示波器采集到的波形数据送到软件里进行重采样和信号分析,其主要的工作原理如下图所示。可以看到,VSA软件主要是借助于高带宽示波器把射频甚至微波频段的信号直接采样下来,并按照和信号调制完全相反的流程对信号进行解调,然后从时域(解调后的时域波形)、频域(信号频谱)、码域(解调后的数据)、调制域(调制质量)等各个角度对信号进行分析。

IQ解调 python iq解调算信号强度_接收端_02

一般情况下,通过设置中心频点、扫频带宽、参考功率电平等可以大概看到信号的频谱以及重采样后的时域波形。通过这步设置也可以确认在要分析的频段内是否有足够强的信号成分存在,比如在下图中我们把频谱的中心频点设置为5.2GHz,Span设置为100MHz,参考电平设置为0dbm后,可以看到频谱中间有明显隆起,整个占用带宽在60~70MHz左右,因此可以确认频点等信息设置正确,而且信号已经正常发出。

IQ解调 python iq解调算信号强度_时域_03

在图中,频谱跨度Span=100MHz,分辨率带宽ResBW=1MHz,采样的时间长度为3.8us左右。为了更好观察频谱的细节,通常我们会对分辨率带宽ResBW进行调整,或者需要采集更长的时间长度进行信号分析。我们可以通增加参与频谱分析的点数,来减小能够设置的最小分辨率带宽ResBW。而由于时域的采集长度又和ResBW成反比关系,所以通过调整频谱点数及ResBW的设置就可以间接控制时间采集的长度。在调整过程中,需要注意的是,当FFT过程中采用不同的加窗类型时,由于窗口系数不同,相同的ResBW下对应的采集时间长度可能是不一样的。采样时间长度和窗口类型、ResBW、频谱点数间的关系如下图所示。

IQ解调 python iq解调算信号强度_时域_04

下图是增加频谱分析点数,并减小分辨率带宽后看到频谱和时域波形。可以看到,由于分辨率带宽ResBW减小到30kHz,所以频谱的分辨率和细节更加清楚,同时采样到的时域波形的长度也更长。

IQ解调 python iq解调算信号强度_IQ解调 python_05

如果信号的频谱和时域波形都没有问题,就可以打开数字调制功能对信号进行矢量解调分析,矢量解调分析的信号处理流程如下图所示。

IQ解调 python iq解调算信号强度_数据_06

关于各个关键步骤的功能和作用描述如下:

· 频差补偿:在进行矢量信号解调的过程中,对于ADC采样到的信号,首先通过数字滤波器把关心频段内的信号滤除出来,然后根据设置的中心频点和符号速率进行载波和符号的锁定,并对发端和收端的频率误差进行测量和补偿。收发端的频差可能造成持续的相位偏差,从而在解调的结果上表示为星座图的旋转(如下图所示)。

IQ解调 python iq解调算信号强度_数据_07

· I/Q滤波:经过频差补偿,已经可以得到初步的I路和Q路的时域波形。把I路和Q路波形经衰减和偏置补偿后,通过相应的测量滤波器,可以得到最终的I路和Q路波形(在解调软件里称为IQMeasure Time)。这个测量滤波器用来模拟接收端的成型滤波器的形状,当发射端采用根升余弦滤波器时,这个测量滤波器也使用根升余弦滤波器。

· 符号解调:得到I/Q的时域波形后,就可以根据符号速率在相应的时间点对I/Q波形进行采样,从而得到I路和Q路的电压值。根据相应的电压值再对应I/Q符号编码表进行解码,就可以恢复出传输的符号数据信息,从而完成了数据的解调过程。

· 生成参考波形:获得传输的符号数据并不是最终目的,因为调制质量只要不是特别差,应该都是可以获得正确的数据的,所以仅仅获得解调数据还不够,还需要对其调制质量进行量化分析。为了对实际的调制质量进行分析,VSA软件会以解调到的数据为基准,在数学上再模拟出这些数据经过一个理想的无失真发射机和理想的接收机后的时域波形。需要注意的是,在这步重建时域波形时使用的成型滤波器通常称为参考滤波器,和第2步中使用的测量滤波器不太一样。测量滤波器只是模拟了接收端的滤波器,而这个参考滤波器则包含了发送端滤波器和接收端滤波器共同的影响。因此,如果发送端和接收端都是使用根升余弦滤波器,则测量滤波器为根升余弦滤波器,而参考滤波器则就是一个升余弦滤波器。

· 误差计算:当得到实际测量到的I/Q信号波形,以及基于相同数据用理想发射机和接收机生成的参考波形后,就可以对两个波形进行比较并计算误差。比如可以得到误差的时域波形,也可以把误差分解为幅度误差和相位误差,还可以对误差的时域波形再进行频谱分析等。

在测量结果的误差分析方法中,最直观的是EVM(ErrorVector Magnitude:误差矢量幅度)指标。EVM定义如下图所示,是把参考信号在星座图上的位置做为参考点,把实际测量到I/Q信号在星座图上相对于参考点的距离做为误差矢量,然后把这个误差矢量与最大符号幅度的比值的百分比称为EVM。每个符号都有对应的EVM结果,通常会对多个符号EVM的结果取方差,用其均方根值作为当前调制信号的EVM测量结果。

IQ解调 python iq解调算信号强度_IQ解调 python_08

因此,在对信号解调过程中,除了设置正确的中心频点、频谱跨度、参考功率电平以外,最重要的是调制方式、符号速率、测量滤波器类型、参考滤波器类型以及滤波器滚降因子的设置。通过前面的介绍,应该可以很容易理解并进行这些参数的设置(如下图所示)。

IQ解调 python iq解调算信号强度_数据_09

通过设置解调参数,并对解调结果的窗口略作调整后,可以看到如下图的信号解调分析结果。从中可以显示原始信号的频谱、I/Q信号矢量形成的星座图、误差矢量结果、误差矢量的统计分析、解调出的原始数据信息、以及I路和Q路的信号眼图等信息。

IQ解调 python iq解调算信号强度_接收端_10

在上面的解调结果中,可以从不同角度对信号的调制质量进行分析。比如从EVM测量结果来看,EVM值约为4%左右,算是比较正常的一个发射机的指标;从信号频谱上看,信号的主要功率集中在中心频点附近70MHz左右的范围内,这主要是基带成形滤波器的效果;从I/Q矢量图上看,在QPSK的四个星座点上,采样时刻矢量点的聚集还比较密集,这和EVM的测量结果是相对应的;从I路和Q路的眼图看,在中间采样时刻两路信号的高低电平区分也比较明显,说明采样时刻的码间干扰很小,但同时在眼图的其它位置幅度的上下波动很大,这是由Nyquist滤波器的特性所决定的。

更进一步的,还可以打开光标,对各个显示窗口的结果进行测量,并且把各个窗口的光标耦合在一起实现联动。这种时域、频域、符号域、调制域的联动功能,可以大大提高分析调制信号时对于问题的洞察能力。