目录
- 4.分组检测常用算法
- 4.1 接收信号能量检测
- 4.2 双滑动窗口分组检测
- 4.3 采用前导结构进行分组检测
- 总结
微信公众号获取更多FPGA相关源码:
4.分组检测常用算法
常用的分组检测算法包括能量检测算法、双滑动窗口能量检测算法、以及利用训练序列的同步算法等。
- 能量检测算法:基于接收信号能量值的变化来实现分组检测,当有用数据分组信号到达时,检测到的能量会有明显的跳变。
- 双滑动窗口能量检测算法:采用两个滑动窗口来比较接收信号能量的变化,通过比较两个窗口内的能量差异来判断数据分组的起始点。
- 利用训练序列的同步算法:利用训练序列的周期性与相关性,通过计算当前数据与延时数据的相关性来判断是否有数据到达。IEEE802.11a通信协议中使用的Schmidl&Cox算法就是基于训练序列的同步算法。
4.1 接收信号能量检测
测量接收信号的能量是一种最简单的分组检测算法。当没有数据分组到来时,接收信号 r n r_n rn中只有噪声,即 r n = w n r_n=w_n rn=wn;而当数据分组到来时,接收信号 r n r_n rn中加入了信号的成分,即 r n = s n + w n r_n=s_n+w_n rn=sn+wn。
因此,可以根据接收信号能量值的变化进行分组检测。为了避免突发大噪声的影响,判决变量
m
n
m_n
mn,选为接收信号能量在窗口长度L下的累积和,其可表示为
m
n
=
∑
k
=
0
L
−
1
r
n
−
k
r
∗
n
−
k
=
∑
k
=
0
L
−
1
∣
r
n
−
k
∣
2
m_n=\sum_{k=0}^{L-1}r_{n-k}r{^*}_{n-k}=\sum_{k=0}^{L-1}|r_{n-k}|^2
mn=k=0∑L−1rn−kr∗n−k=k=0∑L−1∣rn−k∣2
其实,
m
n
m_n
mn是接收信号能量的移动求和,该类型求和也叫滑动窗口,其基本原理是在每一个时刻n,求和会加入一个新的数值同时丢弃一个旧的数值。下式即为这种移动递归求和的计算:
m
n
+
1
=
m
n
+
∣
r
n
+
1
∣
2
−
∣
r
n
−
L
+
1
∣
2
m_{n+1}=m_n+|r_{n+1}|^2-|r_{n-L+1}|^2
mn+1=mn+∣rn+1∣2−∣rn−L+1∣2
如下图所示是IEEE 802. 11a数据分组在信噪比为15dB、滑动窗口长度L=32下的判决变量
m
n
m_n
mn值的变化情况。使用Matlab仿真时,开始一段时间假设只有噪声,在n=500的时刻发射机开始发送数据分组。可以看出,使用滑动窗口能量检测的方法,在有数据分组到达时,接收能量信号将发生明显的跳变。为了进行是否有分组达到的判断,接收机中进行能量判决的阈值可以设定在10到20之间。
这部分的实现可以参考前面的文章,基于FPGA的任意点滑动平均(滑动窗长度和数据位宽参数化,例化时参数可设置)实现思路都是一样的,不过是这里只用求和,而不必求平均,稍微修改一下即可。
这种滑动窗口能量检测的方法虽然比较简单,但它有一个重大缺陷,即判断阈值需要由接收信号的能量而定。当接收机搜索数据分组时,接收信号中只有噪声,而噪声的功率值一般是不可知的,并且当接收机调整射频放大器设置或者在所需系统内出现同频干扰的波动,都会使其发生变化。当接收数据分组到来时,接收信号的强度依赖于发射机的功率设置以及发射机和接收机之间的传播损耗。如此种种的不确定因素是很难固定–个用来确定数据分组起始点的判断阈值的。事实上,凡是要使用阈值进行判断的地方,阈值的选取都是一个较为困难的问题。
4.2 双滑动窗口分组检测
双滑动窗口分组检测算法,基本原则是通过计算两个连续滑动窗口的接收能量的比值作
为判决变量
m
n
m_n
mn。下图说明了窗口A、B和接收数据分组判决变量
m
n
m_n
mn的情况。
图中,窗口A和窗口B在向右滑动的过程中是相对静止的。当没有数据分组到来时,两个窗口中都只包含了噪声,由于在理想情况下噪声的能量是相等的,因此得到的响应是平坦的。当数据分组边沿到达窗口A时,A中的能量将一直增加到整个窗口都包含进数据分组。相应的,判决变量
m
n
m_n
mn,也将跟着增加并达到一个峰值(峰值点对应窗口A中刚好全部有数据而窗口B中尚未有数据的时刻)。过了这一时刻,窗口B开始包含信号能量,判决变量
m
n
m_n
mn开始减小,当B也全部有数据分组通过时,判决变量
m
n
m_n
mn,又恢复平坦。事实上,判决变量
m
n
m_n
mn,可以看成是微分器,当输人信号能量变化剧烈时它的值会比较大。可以根据判决变量
m
n
m_n
mn的变
化进行是否有分组到达的判断,当
m
n
m_n
mn超过某个阈值时,即可判断有新分组到达。
窗口A与窗口B数值的计算方法如下:
a
n
=
∑
m
=
0
M
−
1
r
n
−
m
r
∗
n
−
m
=
∑
m
=
0
M
−
1
∣
r
n
−
m
∣
2
a_n=\sum_{m=0}^{M-1}r_{n-m}r{^*}_{n-m}=\sum_{m=0}^{M-1}|r_{n-m}|^2
an=m=0∑M−1rn−mr∗n−m=m=0∑M−1∣rn−m∣2
b
n
=
∑
l
=
0
L
r
n
+
l
r
∗
n
+
l
=
∑
l
=
0
L
∣
r
n
+
l
∣
2
b_n=\sum_{l=0}^{L}r_{n+l}r{^*}_{n+l}=\sum_{l=0}^{L}|r_{n+l}|^2
bn=l=0∑Lrn+lr∗n+l=l=0∑L∣rn+l∣2
式中:
a
n
、
b
n
a_n、b_n
an、bn,实际上表示的都是滑动窗口内的能量,因而可以采用与能量检测窗口相同的递归
方式进行计算简化,然后将
a
n
、
b
n
a_n、b_n
an、bn相除得到判决变量:
m
n
=
a
n
b
n
m_n= {{a_n} \over {b_n}}
mn=bnan
下图所示是IEEE 802. 11a数据分组在信噪比15dB、滑动窗口长度L=32下,利用双滑动窗口检测算法的 m n m_n mn值变化情况。可以发现 m n m_n mn的值是独立于接收总功率的;峰值过后,虽然接收能量的值增加了,但是响应将回复到峰值前的水平。进一步考虑,在数据分组没有到达时,两个滑动窗口中都是噪声,理想情况下 m n m_n mn取值为1;而在数据分组充满两个窗口后 m n m_n mn取值也近似为1。
4.3 采用前导结构进行分组检测
一般通信系统的工程原则是接收机要充分利用所有可以利用的信息,这就意味着已知的前导结构要并入算法中考虑。对于IEEE 802.1la系统,其前导结构正是为了帮助同步而设计的,而且标准上还给出了向导指南,如图所示。
T1到T10为长度为16的短训练序列,这16个短训练序列是一样的(即训练序列是周期结构的),可完成分组检测、自动增益控制(AGC)、分集选择、粗频偏估计和符号同步等功能。图中,LTS1和LTS2同为长度为64的长训练序列符号,可用于信道估计和细频偏估计等。短训练符号和长训练符号之间的GI2是长度32取样的循环前缀(CP),是为了保证长训练符号不受短训练符号码间干扰(ISI)的影响。
前导结构实现了接收机采用一种非常简单有效的分组检测算法,该算法利用了前导中短训练符号的周期性,称为延时相关算法。其信号流程如下图所示。
窗口C为接收信号与其延时D个时刻的相关系数,称为延时相关;延时 z − D z^{-D} z−D等于前导起始的周期,对于IEEE802.11a,D=16,即短训练符号的周期;窗口P计算相关系数窗口期间内接收信号的能量,用于判决统计的归一化处理,使得判决变量 m n m_n mn,独立于接收功率。
延时相关
C
n
C_n
Cn的值如下:
C
n
=
∑
k
=
0
L
−
1
r
n
−
k
r
∗
n
−
k
−
D
C_n=\sum_{k=0}^{L-1}r_{n-k}r{^*}_{n-k-D}
Cn=k=0∑L−1rn−kr∗n−k−D
上式为当前接收到的L个数据与D个时刻前收到的L个数据进行的互相关。
接收信号能量
P
n
P_n
Pn的值可表示为:
P
n
=
∑
k
=
0
L
−
1
r
n
−
k
−
D
r
∗
n
−
k
−
D
=
∑
k
=
0
L
−
1
∣
r
n
−
k
−
D
∣
2
P_n=\sum_{k=0}^{L-1}r_{n-k-D}r{^*}_{n-k-D}=\sum_{k=0}^{L-1}|r_{n-k-D}|^2
Pn=k=0∑L−1rn−k−Dr∗n−k−D=k=0∑L−1∣rn−k−D∣2
则延时相关算法的判决变量
m
n
m_n
mn为:
m
n
=
∣
C
n
∣
P
n
=
∑
k
=
0
L
−
1
r
n
−
k
r
∗
n
−
k
−
D
∑
k
=
0
L
−
1
∣
r
n
−
k
−
D
∣
2
m_n={|C_n| \over P_n}={\sum_{k=0}^{L-1}r_{n-k}r{^*}_{n-k-D} \over \sum_{k=0}^{L-1}|r_{n-k-D}|^2}
mn=Pn∣Cn∣=∑k=0L−1∣rn−k−D∣2∑k=0L−1rn−kr∗n−k−D
下图所示为IEEE802.11a数据分组在15dB信噪比条件下,采用延时相关算法进行分组检测时,判决变量 m n m_n mn的变化情况。当接收的信号只有噪声时,理想情况下输出的延时相关值 C n C_n Cn为0,因为噪声取样值的互相关系数为0,因此在数据分组开始前 m n m_n mn值很小;当接收到第2个短训练符号时, C n C_n Cn为相同短训练符号的互相关系数 m n m_n mn开始明显增加,并且出现一个持续9个短训练符号长度的相关平坦。
虽然延时相关算法可以较好的实现分组检测,但是在低信噪比条件下,判决变量 m n m_n mn可能由于受到信道中较大随机噪声的影响而超过预先设定的门限值,从而错误的判断有分组到来。因此,为了降低这种低信噪比条件下的高差错虛警概率 P F A PFA PFA,提高分组检测算法的可靠性,可以在延时相关算法的基础上增加保持长度的要求,即判决变量要在预设门限值之上保持一定的采样周期数才判决有分组的到来,从而避免了较大随机噪声的影响。
下图所示为采用延时相关算法及延时相关加长度保持算法在AWGN信道和多径信道下的正确检测概率的仿真图。可以明显发现,采用延时相关加长度保持的算法较大程度上提高分组检测的可靠性。
总结
对上述几种分组检测算法进行一个简单的总结:能量检测算法虽然简单但是计算出的能量值容易受到发射、信道、噪声等外界因素影响,阈值不好确定,估计误差较大;双滑动窗口算法通过计算出两个窗口的能量而产生一个三角形响应.该算法不需要人T确定阈值(只需取三角形的最大值),其性能要好于能量检测算法;延时相关分组检测算法是利用发射信号中前导结构中短训练符号的周期性而产生的相关,同上面两种算法比较,这种相关性不易受外界因素如发射功率、信道、噪声等影响,具有更好的性能,而延时相关加长度保持算法具有更高的可靠性。因此,在设计中可以选择延时相关加长度保持的算法。
微信公众号获取更多FPGA相关源码: