在数字通信系统中,同步主要有三种方式,载波同步、位同步和群同步。载波同步指在相干解调时,接收机的解调器需要产生一个与调制载波同频同相的相干载波。载波同步又称为载波恢复。位同步指接收机需要产生一个与调制信号符号速率相同,相位与最佳判决时刻一致的定时脉冲序列信号,位同步又称符号定时恢复或码元同步。群同步一般表示帧同步,接收机需要产生帧头同步序列。
1、为何需要位同步
最常需求情况是当QPSK或8PSK调制时,当没有进行位同步时,接收到IQ数据的星座图如下,完全是一片数据。
当进行位同步以后,IQ数据就变得有规律,变成一个圆。再进行频率同步后,就变成我们需要的星座点。
2、位同步实现方法
位同步算法分插入导频法和直接法两个类型,具体实现方法分类如下所示:
插入导频法是在发送基带信号中加入位定时导频信号,接收端通过提取该位定时导频信号实现位同步,定时导频信号一般在发送基带信号频谱的零点插入,以使得接收端通过窄带滤波器提取该导频信号。这种方法由于插入了导频信号,增加了发送功率和频谱间的干扰,并且为了消除导频信号对判决基带信号的影响,接收端还必须对导频信号反向消除,因此,该方法目前在数字通信系统中很少采用。
直接法是在数字通信系统应用的最广泛的位同步方法,它不需要在发送端单独发送导频信号,而是直接从接收到的数字信号中提取时钟信号或通过相位比较和调整在本地产生时钟信号。直接法又可以分为比相法和滤波法两种。
滤波法是通过对接收到的频带或者基带数字信号进行变换处理,使得经过变换处理的数字信号中含有定时同步分量,再通过窄带滤波器提取该定时信号,以实现位同步。
比相法是目前数字实现接收机中应用较广泛的方法,比相法是在本地产生一个定时采样时钟信号,为保证在匹配滤波器或相关器输出信号的最佳时刻进行抽样判决,接收机必须不断地检测本地抽样时钟与最佳判决时刻的误差,同时不断的调整本地抽样时刻的频率和相位,以便于补偿在发送和接收定时振荡器之间的频偏,始终保持在最佳抽样时刻进行抽样。
根据是否改变本地采样时钟,比相法又可以分为锁相法和内插法。锁相法直接改变本地时钟的频率和相位来实现位定时的调整;内插法不改变本地时钟,而是调整采集时刻的方式实现位定时的调整;锁相法实现框图如下所示:
内插法实现框图如下所示:
衡量位同步性能的主要技术指标有:
- 相位误差:恢复的位同步相位和最佳判决时刻之间的偏差;
- 同步建立时间:位同步电路从非同步状态到达到同步状态所需的时间;
- 同步门限:位同步系统能够完成的最低信噪比;
- 同步范围:指位同步系统能正常工作所允许的最大时钟频偏。
3、基于多相滤波器的位同步
可以发现两种方法均需要定时误差检测模块,比较常用的是Gardner定时误差算法,通常用于同步的二进制基带信号或者BPSK,QPSK信号,信号有大约40%一100%的额外带宽。Gardner算法的优点是非面向判决的,定时恢复独立于载波相位。本文介绍GNU radio中的多相滤波器时钟同步。关于该方法可以详细阅读IEEE Journal on Selected Areas in Communications中的《Multirate digital filters for symbol timing synchronization in software defined radios》。
3.1 实现框图
多相滤波器时钟同步隶属于内插法,传统的内插法实现框图如下所示,首先上采样,经过插值滤波器后,找到最佳抽取点,实现时钟同步;
多相滤波器通过使用多个滤波器取代插值滤波器,完成位同步,其实现框图如下所示,不同的滤波传输函数如下所示:
3.2 误差检测
《Multirate digital filters for symbol timing synchronization in software defined radios》中介绍了三种误差检测方案,如下图所示:
a)早迟门相位误差
b)双滤波器最大似然相位误差
c)衍生匹配滤波最大似然相位误差
3.3 环路控制
GNU radio中环路控制如下所示:
具体公式如下所示:
3.4 Polyphase Clock Sync
GNU radio中介绍该模块有三个作用,第一实现时钟恢复,第二实现匹配滤波减少ISI,第三降低采样率。该模块的参数如下:
编号 | 变量 | 说明 |
1 | sps | 输入信号过采样率 |
2 | loop_bw | 环路滤波器带宽,该参数尽量小,建议值为2π/100 |
3 | taps | 匹配滤波器系数,长度为滤波器个数*单个滤波器size |
4 | filter_size | 滤波器个数 |
5 | init_phase | 初始相位 |
6 | max_rate_deviation | 最大速度偏移,默认1.5,表示最大偏差 |
7 | osps | 输出信号过采样率 |
在GNU radio中该模块效果如下所示:
当把该模块移植到matlab后,GNU radio结果如下所示:
Matlab版本时钟同步如下所示:
解决了前面提到的QPSK需要位同步后的星座图。