【同步与补偿】频率偏移
引言
做了一段时间的SDR了,但是对一些同步和补偿的名称及其起因还是不能捻熟于心。
下面将对一些同步与补偿的现象加以总结。
频率偏移的起因
发射机和接收机之间的振荡器不匹配或者存在多普勒频移,会引起发射机和接收机之间的采样时钟频率偏差(Sampling clock Frequency Offset,SFO)。
图中示意了(能够引起时钟相位偏差的) SFO随时间的变化,从图中可以看出SFO引起了ICI(inter-carrier interference 载波间干扰,区别于ISI,inter-symbol interference 符号间干扰)。
简单介绍一下多普勒效应。当声音,光和无线电波等振动源与观测者以相对速度V相对运动时,观测者所收到的振动频率与振动源所发出的频率有所不同。因为这一现象是奥地利科学家多普勒最早发现的,所以称之为多普勒效应。以下是观测者之于信号源的频率偏移与信号源的频率、相对速度之间的关系式:
f
d
=
f
c
v
c
o
s
θ
f_d=\frac{f}{c}vcos\theta
fd=cfvcosθ
其中, f d f_d fd为多普勒频移, θ \theta θ为移动台方向与入射波方向的夹角; υ \upsilon υ是移动台的速度; c c c是电磁波传播速度 c=3x10km/s; f f f为载波频率。信号源靠近观察者,连续波之间的到达时间降低,频率增加;信号源远离观察者,连续波之间的到达时间增加,频率降低;由多普勒效应所造成的频率变化叫做多普勒频移,它与相对速度 υ \upsilon υ成正比,与振动的频率成正比。
频偏估计
载波频偏估计方法可分为数据辅助和非数据辅助两种。
数据辅助的频偏估计方法需要插入导频序列,从而导致数据传输效率的降低。因此,导频序列应该尽量短,但随着导频序列长度的减小,估计精确度也会下降。
非数据辅助的频偏估计方法解决了数据辅助的上述缺点。
模型建立
首先,先建立一个接收机接收到的信号的理想模型。
一般默认发送信号已经经过调制映射,例如MPSK、16QAM、16APSK等。在加性高斯白噪声信道(AWGN)中的传输,并且假设理想符号定时同步(思考:如果没有先时间同步好会有什么影响),匹配滤波器输出的抽样信号为:
y
k
=
a
k
e
j
(
2
π
k
v
T
+
θ
0
)
+
n
k
y_k=a_ke^{j(2\pi kvT+\theta_0)}+n_k
yk=akej(2πkvT+θ0)+nk
其中
a
k
a_k
ak为发送的调制符号,
θ
0
\theta_0
θ0 为载波相位,均匀分布在
[
0
,
2
π
)
[0,2\pi )
[0,2π),
υ
\upsilon
υ 是载波频偏,
T
T
T为码元符号周期,
n
k
n_k
nk 是第
k
k
k 个抽样点上的加性高斯白噪声,均值为零,方差为
N
0
N_0
N0 。以QPSK为例,则
a
k
a_k
ak即是将原二进制信号映射到个星座点上的复数信号。如下图
所以
a
k
a_k
ak可以表示为
a
k
=
A
e
j
k
m
π
a_k=Ae^{jk_m\pi}
ak=Aejkmπ,其中
k
m
k_m
km 以QPSK为例,可以表示为
1
/
4
、
−
1
/
4
、
3
/
4
、
−
3
/
4
1/4、-1/4、3/4、-3/4
1/4、−1/4、3/4、−3/4。
数据辅助的频偏估计
数据辅助的频偏估计算法是利用已知导频估计频偏。
首先对信号预处理
z
k
=
y
k
a
k
∗
z_k=y_ka_k^*
zk=ykak∗
即将调制信号的相位消去。
以下是常用的数据辅助的 Kay、Fitz、L&R 和 M&M 载波频偏估计算法[1]:
非数据辅助的频偏估计
数据辅助的频偏估计算法可以取得很好的性能,但需要发送导频序列,从而影响了传输效率。非数据辅助的频偏估计算法的提出,解决了数据辅助的频偏估计的这个缺点,同时对于频偏的估计可以取得很好的性能。
非数据辅助的频偏估计算法,对信号进行非线性变换
z
k
=
∣
y
k
∣
e
j
[
M
a
r
g
(
y
k
)
]
z_k=|y_k|e^{j[Marg(y_k)]}
zk=∣yk∣ej[Marg(yk)]
其中
μ
\mu
μ和
M
M
M为非线性变换的参数。
对 QPSK 调制信号,M 为调制阶数,即 M = 4;而对 16APSK调制信号,M 是 16APSK星座图中内环星座点数和外环星座点数的最小公倍数,即 M = 12。不过,对于16QAM则不能简单的进行幂次来消去相位信息。
具体频偏估计,沿用上面的式子。
频率偏移的较快解决办法
之前我总是想着自己敲敲代码试试看,根据论文能敲出来,不仅能体验算法精髓,而且能提高自己的代码能力。
直到我敲了好几遍,找了好几篇关于L&R算法的论文,都依然无法恢复MQAM和MPSK时,我才意识到有集成的函数,还是蛮香的。
尤其对于刚刚入门的同学来说,还是多用用别人的代码,先实现出来,再研究是不是自己能自己来实现,这样更加不花时间,也更加现实些。
以下是从MATLAB的Communications Toolbox中的一些封装好的函数(真香)
参考文献
[1] 李彬,李智信,武楠,王华.16APSK调制载波频偏估计算法性能研究[J].