发明内容
本发明要解决的技术问题是提供一种信号捕获方法,用于对对于具有类似CMMB系统的两个同步信号的信号进行捕获,解决现有捕获方法中复杂度高、捕获过程耗电量高等问题,以低复杂度、低功耗、捕获方式灵活地实现信号捕获,确定粗同步位置。
本发明采用的技术方案是:
一种信号捕获方法,用于在信号接收端的信号同步过程中捕获信号同步位置,包括如下步骤:
A、在一设定时间段LTIM内进行多次信号搜索,在每次搜索中从输入信号序列中抽取若干信号作为信号子序列进行自相关运算,获取本次信号搜索的自相关输出值;
B、在每次搜索中,寻找到本次搜索的自相关输出值的幅度值连续大于预先设定的幅度值门限TAMP的最宽位置序列,并记录宽度值和终点位置,若所述宽度值大于预先设定的宽度门限TWID,则表示本次搜索成功;
C、若在所述时间段LTIM内连续搜索成功次数超过设定的次数NSUC,则表示捕获成功,根据所述宽度值、终点位置及信号子序列与信号序列的间隔值得到信号序列的初始同步位置。
进一步地,所述步骤A中:
从输入信号序列中抽取信号子序列的步骤,是利用抽值因子FD来进行的,即:从信号序列的初始信号开始每个抽值因子FD个间隔抽取一个信号来组成所述信号子序列。
进一步地,所述步骤A中:
所述时间段LTIM在信号捕获过程中是周期性时间段,即每隔时间段LTIM进行一次信号捕获过程,在所述时间段LTIM内设定有该时间段内最多允许进行的连续搜索次数NSCH、每次搜索的时间长度TONE、判断捕获成功的连续成功搜索次数NSUC。
进一步地,所述步骤A中:
所述对信号子序列进行自相关运算,是通过输入信号的共轭转置值与延迟后的输入信号相乘来得到,其中:
第一次搜索相应的第一个自相关输出值acorr_out(1),通过下式获得:
acorr_out(1)=in_sig(1:FD:win_len)′*in_sig(delay+1:FD:delay+win_len);
其中,所述FD表示抽值因子,所述in_sig(1:FD:win_len)表示输入信号子序列;所述win_len表示窗口长度,用于表示为获得一个自相关输出值,对于参与运算的前后两段同步序列中的每段序列从序列的起点到序列的终点的距离,所述delay表示延时,所述右上标志“′”表示共轭转置操作;
对于第一个自相关输出值之后的自相关输出值acorr_out(k),采用如下的滑动窗方法获得:
acorr_out(k)=acorr_out(k-1)-
conj(in_sig((k-2)*FD+1))*in_sig((k-2)*FD+1+delay)+
conj(in_sig((k-2)*FD+1+win_len))*
in_sig((k-2)*FD+1+win_len+delay);
其中,acorr_out(k)表示第k个自相关输出值,acorr_out(k-1)表示第k-1个自相关输出值,conj()函数表示取共轭函数,由上式可知,对于第K个自相关输出值,由前一次的自相关输出值以及k-2次输入信号、抽值因子利用上述的滑动窗方法得到。
进一步地,所述步骤B中通过如下步骤获取所述自相关输出值的幅度值:
分别获取自相关输出值的实部与虚部的绝对值,并从所述绝对值中选择出最大值以及最小值,再将该最大值加上最小值的二分之一的和,作为自相关输出值的幅度值acorr_amp。
进一步地,若步骤A中利用抽值因子获得信号子序列,相应地所述步骤C中,根据抽值因子FD、终点位置end_idx及宽度值width确定信号序列的初始同步位置sync_idx为:
sync_idx=FD*(end_idx-floor(width/2));
其中,所述floor()表示向下取整函数。
进一步地,所述方法进一步包括:
若捕获不成功,则依照继续进行捕获过程。
进一步地,所述方法进一步包括:
根据历史搜索结果调整所述步骤A、B、C中的搜索参数,所述搜索参数包括一次搜索的时间长度TONE、进行捕获的时间段的长度LTIM、所述时间段LTIM内的最多连续搜索次数NSCH、以及连续成功搜索次数NSUC。
进一步地,所述方法进一步包括:
若在所述时间段LTIM内,最多连续搜索次数NSCH与已进行的搜索次数之差小于或等于连续成功搜索次数NSUC,则结束搜索。
进一步地,在单频干扰的信道环境下,所述步骤B中,通过直接搜索自相关输出幅度值的最大值来确定最宽的位置序列。
进一步地,所述方法进一步包括:
D、根据初始位置sync_idx、终点位置end_idx和宽度值width计算得到小数频偏。其中,计算小数频偏的步骤具体包括:
D1、判断初始位置sync_idx与本次搜索的起始位置之差是否大于所设定的每次搜索的时间长度的一半,
若是,则计算频率偏差索引foe_idx位置为:
foe_idx=end_idx-floor(width/2)+62500;
若不是,则计算频率偏差索引foe_idx位置为:
foe_idx=end_idx-floor(width/2)+125000;
D2、在确定foe_idx位置后,进一步估计小数频率偏差为:
其中,angle()表示取角度函数函数,floor()表示向下取整函数。
本发明提出的CMMB系统信号捕获方法与目前采用的其它CMMB系统信号捕获方法同样都利用了信标中的两个SYNC信号,同样都执行了自相关操作,但针对现有捕获方法复杂度高以及不节电等问题,本发明采用对部分输入信号进行自相关运算,降低了捕获功能的复杂度,同时,在搜索过程中,通过设定搜索次数以及搜索成功条件,以及进一步可动态调整捕获参数,可以避免持续搜索或搜索时间过长等浪费终端电能的弊端,具有低复杂度、低功耗的显著优点。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
本发明提出了一种低复杂度、低功耗的信号捕获方法,用于捕获信号,即实现信号的粗同步,可以应用于具有与CMMB系统类似帧结构的系统中,即在信标部分具有两个同样的同步信号。
如图3所示,给出了本发明信号捕获方法的一个实施例,信号捕获流程包括如下步骤:
步骤301、在一个设定的时间段LTIM内进行连续最多NSCH次信号搜索,每次搜索时间长度为TONE,在每次搜索中,从接收的信号序列中抽取若干信号作为信号子序列,对抽取出的信号子序列进行自相关运算,得到每次信号搜索的自相关输出值;
步骤302、每次搜索时,找到本次自相关输出幅度值连续大于幅度值门限TAMP的最宽的位置序列,并记下宽度值和终点位置,若所述宽度值大于所设定的宽度门限TWID,则表示本次搜索成功;
步骤303、若在所述时间段LTIM内连续搜索成功次数超过设定的次数NSUC,则表示捕获成功,则根据所述宽度值、终点位置及信号子序列与信号序列的间隔值得到信号序列的初始同步位置。
在上述捕获方法中,采用抽值因子FD来从信号序列中获得一个信号子序列,例如in_sig()表示输入信号序列,在FD=4时,信号子序列in_sig(1:FD:win_len)表示输入信号序列in_sig(1)、in_sig(5)、in_sig(9)......;
在判断捕获成功后,则根据抽值因子、终点位置及宽度值计算确定信号序列的初始同步位置sync_idx为:
sync_idx=FD*(end_idx-floor(width/2));
先对二分之一宽度值向下取整,再利用终点位置end_idx减去取整得到的整数值,即可得到自相关输出值幅度波形中一个波峰的峰值位置,由于本发明采用抽值自相关运算,在计算初始同步位置时,需要进行校正,即还需要对峰值位置再乘以一个抽值因子FD后,即可最终得到初始同步位置,即确定信号捕获所要的粗同步位置。
若捕获不成功,则依照捕获规则继续捕获过程。
上述步骤中所用参数需要预先设定,涉及如下参数:
设定“抽值因子”FD,由于根据抽值因子抽取部分信号进行自相关运算,减少了运算量,可以实现低复杂度处理;
设定“幅度门限”值TAMP用于根据该门限值判断幅度是否满足信号要求,即大于该门限可认为是信号幅度;
设定“宽度门限”值TWID用于在幅度波形中判断波峰宽度大于该门限时认为是一个信号峰;
一次搜索的时间长度TONE,用于表示完成一次搜索设定的时间值;
一个时间段的长度LTIM,表示进行捕获搜索的时间段长度;
一段时间内的最多(连续)搜索次数NSCH、表示例如LTIM内连续最多搜索的次数;
以及判断搜索成功时的(连续)成功搜索次数NSUC,若连续成功搜索次数超过NSUC则认为本次捕获成功。
若上述参数设计合理,则还可以达到节电的效果(低功耗)。设定上述参数后,若捕获不成功,则依照捕获规则继续捕获。必要时,可以更新上述参数来调整捕获规则的细节。由于本发明本身减小了计算量即可节省运算耗能,同时,本发明在捕获过程中还可根据历史捕获结果来动态调整上述参数,例如,若多次捕获不成功时,可以增大时间段长度,减少连续搜索次数。
同时,根据具体参数,还可以进行计算上的简化,如NSCH为4和NSUC=3时,若前2次搜索不成功,则不必进行随后2次的搜索,因为即使搜索成功也不会满足捕获成功的条件,这就减少了搜索次数,可以低功耗;若不考虑低功耗,则可以继续搜索。
在获得第一个同步(SYNC)信号的起始位置后,可以随周期(时隙)调整。
进一步地,为了使得同步位置更准确还可进行小数频偏计算进行频率校正,那么在捕获成功后,继续做一个时隙的自相关,并根据周期调整后的起始位置、抽值因子和自相关输出值计算小数频偏,然后终止捕获过程。接收机的整体状态机转移到下一个状态。
以下是本发明实施例中具体算法的详细描述。
步骤1、在信号捕获过程中,设定抽值因子FD=4,根据抽值因子FD从输入的信号序列中选择等间隔数目的信号进行自相关运算。所述抽值因子FD表示在输入信号序列中每隔FD个数目选择一个信号,对选出的信号子序列进行自相关运算。
A1、对于第一个自相关输出值,通过输入信号的共轭转置值与延迟后的输入信号进行相乘来得到。在具体实现时,第一个自相关输出值acorr_out(1)如下所示:
acorr_out(1)=in_sig(1:FD:win_len)′*in_sig(delay+1:FD:delay+win_len);
其中,in_sig()表示输入信号序列,为列向量,在FD=4时,in_sig(1:FD:win_len)表示输入信号序列in_sig(1)、in_sig(5)、in_sig(9)......;
win_len表示窗口长度,此处设win_len=2048,该窗口长度用于表示为获得一个自相关输出值,对于参与运算的前后两段同步序列中的每段序列,从序列的起点到序列的终点的距离,以出现的数据样本而非实际参与运算的数据样本的数目表示,因为可能有的数据样本不参与运算。
delay表示延迟,对于信标中的两个连续同步信号,必然存在一定的延时,此处设delay=2048;
右上标′,表示共轭转置操作。
A2、对于第一个自相关输出值之后的自相关输出值,可以采用如下的滑动窗方法获得:
acorr_out(k)=acorr_out(k-1)-
conj(in_sig((k-2)*FD+1))*in_sig((k-2)*FD+1+delay)+
conj(in_sig((k-2)*FD+1+win_len))*
in_sig((k-2)*FD+1+win_len+delay);
其中,acorr_out(k)表示第k个自相关输出值,acorr_out(k-1)表示第k-1个自相关输出值,conj()函数表示取共轭函数,由上式可知,对于第K个自相关输出值(对应第k次搜索),可以由前一次的自相关输出值以及k-2次输入信号、抽值因子利用上述的滑动窗方法得到。
也就是说我们得到第一个自相关输出值后,可以依次得到后续的若干个自相关输出值。
例如,对于上式,k=2时,acorr_out(2)=acorr_out(1)-
conj(in_sig(1))*in_sig(1+delay)+
conj(in_sig(1+win_len))*in_sig(1+win_len+delay);
例如,对于上式,k=3时,acorr_out(3)=acorr_out(2)-
conj(in_sig(FD+1))*in_sig(FD+1+delay)+
conj(in_sig(FD+1+win_len))*in_sig(FD+1+win_len+delay);
步骤2、获取自相关输出值的幅度值,并根据捕获判断规则以及所述自相关输出值的幅度值,判断是否捕获成功。
B1、对于搜索获得的各个自相关输出值acorr_out取绝对值则可得到其幅度值acorr_amp,本实施例中可以采用如下近似计算方法来确定acorr_amp:
acorr_amp=max(abs(real(acorr_out)),abs(imag(acorr_out)))+0.5*min(abs(real(acorr_out)),abs(imag(acorr_out)));
即:分别获取自相关输出值的实部与虚部的绝对值,并从中选择出最大值以及最小值,再将该最大值加上最小值的二分之一的和,作为自相关输出值的绝对值(即幅度值)acorr_amp。
B2、设定用于捕获判断的各种参数。
本发明实施例中进行捕获判断时,需要在一个时间段内进行若干次连续搜索,对与每一次搜索具有一个搜索时间长度,判断连续搜索成功次数为若干次后即可认为搜索成功。针对上述判断流程,可设定如下参数:
一个时间段长度LTIM,用于表示需要进行搜索的时间段长度,此处可以设为15个时隙(time slots);
一次搜索的时间长度TONE,用于表示每次搜索所需要花费的时间,也即该次搜索持续的时间,此处设为1.5个时隙;
一个时间段内的最多的连续搜索次数NSCH,即表示在设定的时间段LTIM内至多可进行搜索的次数,此处设为4次;
连续成功搜索次数NSUC,用于判断是否捕获成功,若在设定时间段LTIM内连续搜索成功达到NSUC次,则可判定本次搜索成功,此处设NSUC为2次。
同时,为了判断信号,还需要设定自相关输出波形的幅度门限值TAMP以及输出波形的宽度门限值TWID,该两个门限值的设定可以根据系统性能要求及信号的功率、延迟等特性进行确定,此处设置幅度门限值TAMP为127,宽度门限值TWID为63。
B3、在每次搜索中,寻找到自相关输出幅度值连续大于TAMP的最宽的位置序列,并记下宽度和终点位置。
如图4所示,显示了现有技术中对信号进行自相关运算后,得到自相关输出值的波形图。进行搜索时,在每次搜索中根据计算得到的本次自相关输出的幅度值,判断是否大于所设定的幅度值门限TAMP,若大于则表明此处为信号对应区域,若连续大于TAMP则标明此处为信号对应的波峰,此时,找到最宽的位置序列,记下波形的宽度值(即大于TAMP的终点值与起点值之差),以及终点位置。
若出现多个最宽序列,则取最后一个最宽序列。若宽度大于波形宽度值门限TWID,则表明本次搜索成功;否则表示本次搜索不成功,依据相应的参数进行下一步操作。若连续搜索成功2次,则表明捕获成功。
由于自相关输出值是基于前次搜索的自相关输出值进行的,因此,在搜索过程中可以动态调整上述设定的参数,例如,若多次判断搜索失败,一方面可以增加搜索时间段的长度,或者可以减少搜索时间段内连续搜索的次数来达到节省电能的目的。
需要指出的是,在某些信道环境下,如存在单频干扰的信道环境下,也可以直接搜索自相关输出幅度值的最大值。事实上,在这些信道环境下,最大值往往处于最宽序列里。
步骤3、在捕获成功后,根据最后获得的自相关的宽度值width和终点位置end_idx,以及抽值因子FD,可以计算出接收到的信号中的第一个同步(SYNC)信号的起始位置sync_idx,公式如下:
sync_idx=FD*(end_idx-floor(width/2));
上式中floor()表示向下取整,终点位置end_idx减去波形宽度的一半即可得到波峰的位置,再与抽值因子FD相乘,即可得到第一个同步信号的起始位置sync_idx。
由于本发明实施例中,利用抽值因子FD,对信号序列并不是全部进行自相关运算,而是从中间隔FD个信号进行自相关运算,因此,需要确定原输入信号序列中的初始位置,利用FD进行校正后即可得到相对准确的粗同步位置。
步骤4、在信号同步过程中,为了进一步优化同步结果,往往还需要进行小数频偏处理,对搜索确定的粗同步位置进行校正。
D1,判断sync_idx与本次搜索的起始位置之差是否大于所设定的每次搜索的长度的一半,此处即判断是否大于0.75个时隙长度:
若是,则根据下述公式计算频率偏差索引foe_idx位置,继续进行自相关操作至该位置,然后终止自相关操作,然后计算小数频偏,然后捕获过程终止;其中,foe_idx=end_idx-floor(width/2)+62500;
若不是,则根据下述公式计算foe_idx,继续进行自相关操作至该位置,然后终止自相关操作,然后计算小数频偏,然后捕获过程终止,其中,
foe_idx=end_idx-floor(width/2)+125000;
在上述计算foe_idx的步骤中,所述参数62500、125000仅为示例性的,根据具体情况可以选择不同数值,本示例中将一个时隙分为250000个样本点,62500/250000=0.25=1-0.75个时隙(time slot),同理,125000=0.5个时隙(time slot)。具体数值的确定也可以依照仿真验证来得到。
D2、在确定foe_idx位置后,进一步估计小数频率偏差。小数频偏的计算公式如下(单位Hz):
尽管本发明提出的CMMB系统信号捕获方法与目前采用的其它CMMB系统信号捕获方法同样都利用了信标中的两个SYNC信号,同样都执行了自相关操作,但目前采用的其它CMMB信号捕获方法表现出了较大的实现复杂度。
针对现有捕获方法复杂度高以及不节电等问题,本发明的信号捕获方法采用对部分输入信号进行自相关运算,降低了捕获功能的复杂度,同时,在搜索过程中,通过设定搜索次数以及搜索成功条件,可以避免持续搜索或搜索时间过长等浪费终端电能的弊端,具有低复杂度、低功耗的显著优点。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。