正交 IQ 信号的 ASK、FSK 解调实践
[toc]
背景
异常的轮胎气压可能会破坏汽车的稳定性并影响汽车的驾驶和制动,增加安全隐患,特别是在高速行驶过程中,由于轮胎气压、温度异常导致的轮胎故障是引起突发性交通事故的主要因素之一,胎压监测系统 (TPMS) 作为非常重要的主动安全部件,已经拥有越来越广阔的市场。
胎压监测系统由位于驾驶室的接收器和安装于各个轮胎端的发射器组成。胎压监测系统示意图如下,发射器对汽车各个轮胎的气压、温度适时地进行监测,并将监测数据传送给接收器。接收器接收并处理数据,当发现轮胎气压或温度异常时,告警以提醒驾驶员及时进行处理,可以有效地预防轮胎故障的发生。
当汽车轮胎损坏需要更换时,可以选择其他厂商性价比较高的替代件。由于目前国内外对 TPMS 的通信协议暂时没有统一规定,所以生产销售其它厂商替代件时需要破解其 TPMS 模块的通信协议。我实习所在的技术研发部主要使用频谱仪对 TPMS 模块的射频 RF 信息解调后进行人工分析。由于频谱仪显示屏幕较小,人工分析射频信息所需时间长并且对数据分析处理不方便,容易造成视觉疲劳。
目标和方法
在本科校外实习期间,我曾在 PC 端利用 Matlab 对频谱仪导出的 I/Q 数据进行分析,然后绘制出频谱信息,方便人工进行分析和研究。其中,ASK、FSK 解调流程如下:
- 从频谱仪中导出频谱仪 I/Q 数据;
- 在 matlab 上编程实现基于 I/Q 数据的多帧 ASK 和 FSK 解调;
- Matlab 解调结果和频谱仪基本吻合,并实现解调自动化。
导入 I/Q 数据
以某型号频谱仪为例,利用设备提供的 I/Q 解调功能采集数据,保存在后缀名为 “.mat” 的文件中进行脱机分析处理。
用 MATLAB 代码 “LOAD EXAMPLE.MAT” 将数据导入。下图是利用 RSA3303A 采集数据后存储为 “.mat” 文件的内容。
通过对频谱仪用户手册和文献资料的查阅,我了解到频谱仪导出数据的含义基本如下:
- Y 是一个复变量,包含了采样数据点的同相 I 分量和正交 Q 分量。
- InputCenter 显示了采样时的中心频率,据此可计算出实际频率分量。
- InputZoom 值为 1,表示采集数据已下变频到基带。
- XDelta 为采样周期,由此可以计算出采样率 (fs=1/XDelta)。
ASK、FSK 解调
IQ 数据简介
极坐标参量与 I/Q 直角坐标参量间的转换示意如下图。
极坐标图表示的矢量的参数是幅值和瞬时相位,一般表示为 \(A\angle \theta\) ,因为所有调制形式针对载波的改变都是幅值、相位以及可以由相位推导的频率,极坐标图是分析调制技术矢量参数的主要描述方式。
I/Q 直角坐标图表示矢量的参数不是直接的幅值和瞬时相位,而是把它们投影在 I/Q 直角坐标轴上,采用 I 轴和 Q 轴的投影分量来确定矢量。
数据分析
根据 “.mat” 文件中的每个采样时刻的 I/Q 采样数据 Y,可得到相应的 I 分量和 Q 分量,用 MATLAB 代码表示为:I=real (Y),Q=imag (Y)。采集到的数据可用幅度分析、频率分析、相位分析以及小波分析等方法进行处理。
输入信号的幅度 \(Am\) 分析: \(Am=\sqrt{I^{2}+Q^{2}}\) 。根据 I/Q 信号的每一个采样值,可以计算出对应采样时刻的幅度值。在测量时间内的所有幅度数值构成 I/Q 幅度数组,对应于 “射频功率-时间曲线”。
输入信号的相对相位 \(\Phi m\) 分析: \(\Phi m=arctan(Q/I)\) 。根据 I/Q 信号的每一个采样值,可以计算出对应采样时刻的相对相位值。在测量时间内的所有 \(\Phi m\) 数值构成 I/Q 相对相位数组 \(\Phi m\) 。
输入信号的频率 \(F m\) 计算:\(F m = \frac{d(\Phi m)}{dt}\) 。在测量时间内的所有 \(F m\) 数值构成 I/Q 频率数组 \(F m\),对应于频率曲线。
频谱计算:Spectrum = FFT (Y)。对 I/Q 数据 Y 进行傅里叶变换,即可计算出其频谱值。其中,Spectrum 为输入信号中频带宽内的频谱。
解调实例分析
FSK 解调实现
FSK 就是用数字信号去调制载波的频率,FSK 解调一般采用两种方式:非相干解调和相干解调。
相干解调需要同步信号,适用于窄带调频信号解调;
非相干解调不需要同步信号,对于窄频带调频 (NBFM) 信号和宽频带调频 (WBFM) 信号均适用。
非相干解调,即不需提取载波信息(或不需恢复出相干载波)的一种解调方法,优点是可以较少的考虑信道估计甚至略去,处理复杂度降低,实现较为简单,但相比相干解调方法性能下降,从定量角度来看,普遍的结果是非相干解调性能上比相干解调差 3dB。
我选用非相干解调方法进行解调,主要应用上述计算频率 \(F m\) 的公式,将频谱仪导入的 I/Q 数据先计算瞬时相角,再微分计算出频率。
Matlab 代码为:
1 | diff(unwrap(angle(Y))) |


ASK 解调实现
ASK 是振幅键控方式,这种调制方式是根据信号的不同,调节正弦波的幅度。这里参考上述计算幅值 \(Am\) 的公式,将频谱仪导入的 I/Q 数据计算瞬时幅值。
Matlab 代码为:
1 | magY=10*log10(real(Y).^2+imag(Y).^2)+GainOffset |


综上,Matlab 解调结果与频谱仪图形对比可以看出,Matlab 解调结果和频谱仪所示基本吻合,并且可以随意放大和缩小,方便人工查看和分析,并实现解调自动化,可以方便人工分析。
源代码
ASK 解调源代码
1 | %文件askshow.m |
FSK 解调源代码
1 | %文件 fskdemo().m |
References
- 关玉莲。正交解调在无线电信号分析中的应用。中国无线电. 2010 年第 11 期
- 《RSA3408B 8 GHz Real-Time Spectrum Analyzer User Manual》