一种基于改进Park算法的OFDM接收符号同步方案的制作方法

文档序号:18867841发布日期:2019-10-14 18:46阅读:616来源:国知局
一种基于改进Park算法的OFDM接收符号同步方案的制作方法

本发明涉及一种基于改进park算法的ofdm接收符号同步方案。



背景技术:

同步技术一直都是无线通信系统中值得首要关注和解决的核心问题之一,而基于ofdm技术的新一代无线通信系统对同步的要求更加严格,这是因为ofdm子载波的正交性对符号的同步非常敏感的缘故。在ofdm接收信号的同步处理过程中,首先要找出最佳的符号定时位置,从而确定fft数据处理窗口,最小化子载波间干扰和符号间串扰的影响。

多年来,ofdm符号定时同步技术备受关注,国内外学者也提出了许多同步算法,这些同步算法可大致可概括为两大类别:一类是基于训练序列的数据辅助型算法,另一类则是直接基于发送符号的非数据辅助型算法。由于数据辅助型算法估计精度较高、同步性能好、计算量也较小,因此众多学者围绕该类算法提出了各种不同的训练序列。其中,park算法就是一类较为经典的数据辅助型算法,因其具有尖锐的峰值而具有良好的定时效果,但是也因其单一的峰值而易受突发脉冲噪声的干扰而造成定时误判。



技术实现要素:

针对原park算法易受突发脉冲噪声干扰的这一不足,本发明提供一种基于改进的park算法的ofdm符号精确、快速定时同步方法。本发明通过对接收到的前置训练序列进行计算,找出负脉冲以确定精确定时同步点;针对经典park算法进行改进,在保持其尖锐定时脉冲的同时还能一定程度减小突发脉冲噪声干扰的不利影响。

本发明为解决上述技术问题采用以下技术方案:

本发明提供一种基于改进park算法的ofdm接收符号同步方案,该同步方案具体为:

步骤1,park训练序列经信道传输后所得的接收训练符号序列为r(d),1≤d≤ncp+n,分别计算不带循环前缀的训练序列r(d)前半段和后半段的符号自相关值p(d)和不带循环前缀的r(d)后半段的符号自相关值r(d);

步骤2,根据差值定时同步函数m(d)=(r(d))2-|p(d)|2,计算m(d)的值;

步骤3,利用双阈值对m(d)的值进行比较,若m(d)的值小于第一阈值则认为没有接收到任何数据,否则认为开始接收数据,执行步骤4;

步骤4,若m(d)的值小于第二阈值则认为出现负脉冲,此时为定时同步点,否则认为未出现定时同步点。

作为本发明的进一步技术方案,步骤1中park训练序列包括长度为ncp的循环前缀以及长度均为n/4的序列c、序列d、序列c*、序列d*,c与d呈镜像对称,c*是c的共轭,d*是d的共轭,n为训练序列的长度。

作为本发明的进一步技术方案,步骤1中其中,d为定时同步点。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:通过双阈值判断,可以在时间上缩小精确定时同步脉冲的搜索范围,故而能在一定程度上避免突发脉冲干扰的不利影响。

附图说明

图1为park算法的训练序列构成原理图。

图2为本专利所提改进同步算法采用fpga硬件实现原理框图。

图3为(r(d))2计算模块。

图4为|p(d)|2计算模块。

图5为双阈值判决定时同步示意图。

图6为双阈值判断模块。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

本发明提供一种基于改进的park算法的ofdm符号精确、快速定时同步方法,也即先通过对接收的训练序列计算出(p(d))2(不带循环前缀的接收序列前后两半段的符号自相关值的平方)、(r(d))2(不带循环前缀的接收序列后半段的符号自相关值平方),最后利用双阈值与此二者间的差值m(d)进行比较来判断最终的定时同步点。具体而言,当m(d)大于“阈值一”时得到粗定时,认为开始接收到数据,此时再将m(d)与“阈值二”比较,当其小于“阈值二”时,认为出现负脉冲故而得到精定时同步点,至此完成定时同步。该方法通过双阈值判断可在一定程度上避免突发脉冲噪声的影响,同时又能保持尖锐的定时同步点。

图1所示即是一长度为n的park训练序列,其中cp为训练序列的循环前缀,ncp为cp的长度;此外序列c与d呈镜像对称,c*是c的共轭,d*是d的共轭,它们的长度皆为n/4(n为纯训练序列长度,其大小可人为设定)。设park训练序列经信道传输后所得的接收序列为r(d),1≤d≤ncp+n,经信号处理后得到的差值定时同步函数为:

m(d)=(r(d))2-|p(d)|2(1.1)

其中:

上述二式中,r(d)为接收的训练符号序列,d为待确定的定时同步点,m为序列中数据的索引值。

改进型同步算法fpga硬件实现原理如图2所示:将接收的数据送入(r(d))2计算模块和|p(d)|2计算模块,分别计算出(r(d))2和|p(d)|2,然后将此二者之差值m(d)送入双阈值判断模块,在此模块内若判断出精确定时同步点则输出高电平以指示得到定时同步点,否则输出低电平,表示还未得到定时同步点。

下面结合附图和实施实例对本发明做进一步的详细说明,所给出的实施实例是为了更方便地说明本发明方法的技术特点和fpga硬件具体实施方式,而不是限制本发明的范围。

假设park训练序列的长度n为32,那么:

观察以上二式可以看出,每采样一个数据,p(d)和r(d)都要进行16次乘法运算;显然,训练序列越长,乘法运算次数越多,但是观察r(d)有如下迭代计算公式:

由上式可得,r(d+1)可由r(d)移位求和方式得到。具体的,如图3所示,将接收的数据线经一次延迟(以符合d表示),以保证(r(d))2和|p(d)|2是相对于同一接收数据同步更新,然后在一个5mhz的时钟周期(clk5)完成对此复数数据的求模、求平方操作,然后在5mhz时钟的上升沿,将长度为15的移位寄存器中的数据右移一位,其中最右边的数据,即式(1.6)中的r(d+0)移出,而r(d+16)移入移位寄存器的同时与移位寄存器中的15个数据进行累加求和运算,至此完成由r(d)到r(d+1)的移位求和。

以下为park算法verilog实现之计算(r(d))2

1:将采样得到的复数数据实部和虚部分别移入对应移位寄存器中:

shift_32_pr[0]<=re_part;

shift_32_pi[0]<=im_part;

2:求模、求平方,求模程序如下:

aer<=shift_32_pr[0];

aei<=shift_32_pi[0];

3:平方值移入求和移位寄存器,同时参与累加求和运算:

modulus_2r[0]<=per;

sum_ed<=({4'b0000,per}+{4'b0000,modulus_2r[14]}+…+{4'b0000,modulus_2r[0]})。

其中,per为求得的平方值,将per移入移位寄存器modulus_2r同时与移位寄存器中数据累加求和得到sum_ed。紧接着将求和结果直接送入乘法器ip核进行求平方运算。

对于|p(d)|2,为了在采样下一个数据前完成16次乘法运算,通过16倍倍频,完成数据的依次对应相乘。如图4所示,在80mhz时钟(clk80)的一下降沿将由同种类型虚线连接到乘法器的x0和x31进行乘法运算,然后在该时钟的下一下降沿将由另一同种类型虚线连接到乘法器的x1和x30进行乘法运算,依次类推,直至执行完x14·x15,从而完成一个周期内的乘法运算。在80mhz时钟下降沿执行乘法运算后,再在其上升沿将乘积结果送入长度为15的移位寄存器的同时与移位寄存器中数据进行累加求和运算。

以下为park算法verilog实现之计算|p(d)|2

1:将采样得到的复数数据实部和虚部分别移入对应移位寄存器中:

shift_32_pr[0]<=re_part;

shift_32_pi[0]<=im_part;

2:在80mhz时钟下降沿执行乘法操作,上升沿执行乘积移位操作,部分程序如下,其中m计数周期为16:

ar<=shift_32_pr[15-m];

ai<=shift_32_pi[15-m];

br<=shift_32_pr[16+m];

bi<=shift_32_pi[16+m];

3:求和、求模、求平方,部分程序如下:

multi_16_pr[0]<=pr;

multi_16_pi[0]<=pi;

p_ar<=({{4{pr[10]}},pr}+{{4{multi_16_pr[14][10]}},multi_16_pr[14]}

+…+{{4{multi_16_pr[0][10]}},multi_16_pr[0]});

p_ai<=({{4{pi[10]}},pi}+{{4{multi_16_pi[14][10]}},multi_16_pi[14]}

+…+{{4{multi_16_pi[0][10]}},multi_16_pi[0]})。

其中m为长度为32的移位寄存器中参与乘法运算的数据索引,其计数周期为16(0-15),通过m依次执行x0·x31、x1·x30、…x14·x15。图2中虚线矩形框表示框内操作是在一个5mhz的时钟周期内完成,另外图中求模、求平方皆利用ip核完成。

最后将求得的(r(d))2与|p(d)|2在5mhz时钟上升沿进行减法运算求得最终的m(d),然后将m(d)送入如图6所示的双阈值判断模块中以判断定时同步点是否找到。在此之前可先观察图5所示的m(d)仿真曲线。

图5中实线代表差值m(d),虚线为两个预设的阈值,其具体大小可根据实际工作或应用环境灵活决定;m_max表示m(d)的最大值。为了确定定时同步点,先将m(d)与“阈值一”比较,当小于“阈值一”时,认为还没有接收到任何数据,当大于“阈值一”时,认为开始接收到训练序列,此刻为粗定时,然后再将m(d)与“阈值二”比较,当大于“阈值二”,表示还未找到精确的定时同步点,而当小于“阈值二”时,判断为得到了尖锐负脉冲,此时为精确定时同步点。具体的fpga设计如图6所示。

先将输入的m(d)与“阈值一”比较,若m(d)大于“阈值一”,复选器mux_1选择m(d)进行输出,否则选择m_max进行输出。接着在将mux_1的输出与“阈值二”比较,若小于“阈值二”,则复选器mux_2输出高电平“1”,指示得到定时同步点,否则输出低电平“0”表示未得到定时同步点。因为m_max为m(d)的最大值,从图5可知,m_max远大于“阈值二”,因此m(d)小于“阈值一”,mux_1输出m_max时,mux_2会一直输出低电平“0”。因为代表着精确定时点的负脉冲是在m(d)与“阈值一”的比较之后,这在时间上减小了负脉冲的搜索范围,也就有效减小了突发噪声干扰的概率,提升了定时同步的精度。

以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1