引言
对于码分多址的扩频通信方式而言,只有当接收端本地伪码与发端伪码处于相同相位状态时,有用的信息才能被解出。因此,扩频序列相位的捕获与跟踪是扩频通信系统的关键,而伪码序列相位的捕获尤为重要。滑动相关法是常用的方法之一。扩频通信系统要求实时性,以及较高的数据处理速度,这正是FPGA的优势。所以在扩频通信系统中,大量应用FPGA芯片作为前级处理芯片。
实现原理
原理分析
接收机端接收到的扩频信号可以表示为:
其中,P_{r}为接收信号功率,τ_{d}为传输时延,D(t)为信息码, PN(t)为伪码, n(t)为传输过程的加性噪声。扩频接收机要完成的任务就是去掉PN(T-τ_{d}) 伪码项和cos(ω_{0}t+φ) 载波项,从而得到信息数据DZ(t)。
VCO输出I、Q两路信号:
通过同相正交相乘器得到:
利用PN码的相关特性,即相位对齐时,相关结果最大。当载波和码相位都对准时,经过累加清洗(低通滤波)输出为:
经过平方相加可去掉载波对相关结果的影响,得到相关峰。
实现框图
在直接序列扩频系统中,伪码的捕获是构成码同步系统的重要结构,也是直扩系统中必不可少的部分。接收机若要把伪码扩展的信号解出,接收方就必须能产生一个与发方一样的伪码序列(保证最大相关值),而且,该本地伪码速率、相位要与接收到的伪码保持一致。对于约定好的收、发方用同一个伪码很容易办到,但是,如果要从解扩相关器得到传送的信息,仅仅保证一样的码型是远远不够的。因为即使相同的伪随机码,当相位差大于一个码片时,它们的相关峰就完全消失。在实际通信中,由于收、发信机时钟的不稳定性,接收、发射时刻的不确定性,信道传输延迟及干扰等因素的影响,收、发伪码序列的相位差是随机的。因此解扩的第一步就是要在接收信号的伪码相位中捕获到一个与本地伪码一致的相位状态。当这种状态出现时相关器就会有一个相关峰值输出,峰值与门限相比,若超出则确定相位已捕捉到,立即停止捕捉动作,转入相位跟踪状态;若小于门限则改变本地码相位,继续进行捕获。系统实现原理如图1所示。
实现方法
根据相位捕获的方法可分为:连续相位滑动相关法和在此思路上改进的不连续相位相关法。
连续相位滑动相关法
此方法是通过改变本地伪码时钟速率,与发端伪码时钟速率保持一个合适偏移量,使接收信号中伪码相位与本地伪码相位在相关器内进行相对滑动。这种方法的相位捕获是连续进行的,所以相关峰值是一个连续量。相关值一旦超过捕获门限,标志正确相位已被搜索到,接收机立即恢复本地伪码时钟速率(收、发信机都使用稳定度很高的振荡源,所以它们的码速率可以基本保持一致),停止相位滑动,启动跟踪电路,使相位差进一步缩小(意味着相关性增大),获得更高解扩信噪比,满足其后解调门限要求。此种捕获方法捕获时间和检测概率相互矛盾。例如,对于一个N=215位的PN码,两伪码之间最大相对滑动速率约为5kc/ps,遍历其所有相关状态需要的时间为6.55S。在实际通信过程中,由于干扰及其它原因造成伪码相位失锁需要重新捕捉时,这么长的捕捉时间会严重影响通信质量,因而是不可取的。由以上分析可知,这种捕捉方法相位搜索精度高但同时导致了过长的捕捉时间,在实际中很少应用,但其思路值得借鉴。不连续滑动相关法就是在此基础上的改进。
不连续相位滑动相关法
所谓连续与不连续的区别是对搜索中相位的滑动变化量而言,后一种方法是把连续的相位搜索改为跳跃式的搜索,即两个码之间的相位滑动量不再是连续地以一定的步进量产生相位滑动。不连续滑动相关法是利用一个相位搜索电路,在捕获过程中使本地伪码相位以一定的步进值跳跃变化,这样遍历整个伪码时间大大减少。与前一种方法相比,它的收、发伪码时钟速率保持一致,从而不会造成码片宽度不一致,导致相关峰值下降。本地伪码与接收伪码相位的相对改变是靠搜索电路对伪码发生器时钟的超前、滞后控制来实现的,因此相位搜索电路(如图2所示)是不同于前者的关键所在。下面重点讨论实现半码片滑动的实现方法。
捕获方法1 (滑动步进为TC/2)
时钟取反法:
如图1所示,当信号包络的平方小于门限时,输出控制信号,对图2中CLK取反,取反的结果相当于利用原CLK时钟下降沿进行触发。经过二分频后作为伪码产生器的时钟,同时把CLK作为移位寄存器的时钟,三位移位寄存器的输出相当于移动了半个码片。FPGA仿真结果如图3所示。
图中data1,data2,data3,分别为三位移位寄存器的输出,01表示+1,11表示1,clk1为码NCO的输出,clk2为它的二分频。此方法在整个系统中要多次对时钟进行取反操作,会带来比较严重的时序问题,使系统工作时序满足不了。为了解决此问题,可采用改进的方法。
捕获方法2 (滑动步进为TC/2)
时钟取反法改进:
此方法采用触发器结构,把2倍的CLK作为输入,CLK作为使能端,利用FPGA自带的IP核--锁相环使CLK相位超前,包住2倍CLK的上升沿,触发器的输出即为CLK,FPGA仿真结果如图4所示。图中,co为输入端,pn为锁相环的输出作为使能端。对使能端取反操作,通过图2的电路结构即可完成半码片的移动。但是,同时要对二分之一CLK进行锁相操作,如果实现多路,由于FPGA内部只有2个锁相环,所以,实用性受到限制。
|
捕获方法3 (滑动步进为TC/2)
加脉冲移位法:
此方法是采用一个异或门,如图5所示,使码NCO的输出CLK与一个信号异或输出,此信号平时一直为高(或低)电平,一旦收到低于门限值时,输出一个低(或高)脉冲,与CLK异或后,相当于在原CLK时钟上加了一个脉冲,通过图示的电路后,伪码产生器前进了半个相位,通过移位寄存器后,即可实现半个码相位的移动(超前半个码片)。
FPGA仿真结果如图6所示。图中CLK1为码NCO的输出,CLK2为它的二分频作为伪码产生器的时钟,pn1为伪码产生器输出,k1为信号,平常输出高电平,当门限检测结果为低时,输出一个低脉冲与CLK1异或输出,结果为CLK3。从仿真图中可以看出CLK3相对于CLK2在k1为低脉冲时,增加了一个脉冲。
下载到FPGA中,利用SIGNALTAP,测试结果如图7所示。图中CLK1为码NCO输出时钟,CLK2为异或门的输出,从图中可以看出,在门限检测为低时,CLK2比CLK1多增加了一个脉冲,测试结果与仿真结果一致。
实现结果
通过以上的分析,再结合扩频通信的有关理论,可以知道要实现信号的捕获,必须通过载波和伪码相位的二维搜索。首先,对接收的信号进行数字下变频,变为零中频I、Q两路信号,再与本地PN码进行解扩运算。结果与门限值比较,如果小于门限则按照前面分析的方法顺序移动半个码片,直到包络的平方大于门限转入跟踪状态。捕获电路如图1所示。
采用上述方法,在实际中对某一扩频信号进行捕获
信号参数
中频40MHz ;
调制样式为DS-BPSK;
伪码长度为1024;
数据率5Kb/s;
采样时钟60MHz;
各个模块功能描述
数字下变频:
载波NCO的输出与输入信号在乘法器中进行数字下变频,功能是去除输入信号载频而保留了用于基带相关的码。
数字相关器:
累加清除器的作用是对经过数字正交下变频后的I、Q两路信号与本地再生伪码相乘的结果进行积分累加。采用的是一个累加器对数字混频后输入信号与本地码相乘的每一位结果进行累加。经过一定时间(本方案为12000次)的积分累积后,得到一个数据位的相关值。此相关值与预设门限比较,进行捕获判决。如果小于门限,则认为捕获失败,清除累加结,滑动半个码片后,重新进行累加积分。累加清洗器进行一个码周期的数据累加,输出一次相关累加值。最大的捕获时间为0.4094秒(0.2mS*2047)。
载波NCO:
载波NCO是载波跟踪环的重要组成部分,它的主要功能是产生本地复制载波信号。载波NCO模块设置有频率控制字输入接口,模块内部通过32位相位累加其对输入控制字进行累加,获得相位值的映射地址,通过查表获得正余弦两路信号。载波环路通过不断调整载波NCO的频率字来保持对接收信号载波频率和相位的跟踪。
码NCO:
码NCO是码跟踪环的核心。它的主要功能是为再生伪码发生器提供精确的时钟信号,保证实现对接收信号的码捕获和跟踪。码NCO设置有频率控制字,频率控制字负责码率的调整和码相位延时。
实现结果
A/D采用AD9288-100,是8位的转换结果,最高工作频率可达到100M,数字下变频和捕获电路在EP1C12Q240C8(Cyclong)中实现,运算的中间测试结果如图8所示,图中pn2_clk为NCO输出时钟,x_pn为伪码,c1_data和s1_data为载波NCO产生的用于下变频的I、Q路载波信号。pn_e、pn_p、pn_l分别为移位寄存器输出的超前、即时和滞后码,它们相差半个码片。
最后的捕获结果如图9所示。图中ad_data为接收的数字中频信号,last_data为最后捕获的结果。
保存数据,在Matlab中的相关结果如图10所示。
结束语
加脉冲法可以使本地码相位超前半个码片相位,实现非连续相位滑动相关,电路结构简单,在FPGA中容易实现,是一种简单实用的方法,在实际系统设计中已被采用并获得了理想的结果。