上一篇文章让大家看到了扩频码在跟踪过程在滑动的现象,这个源头就是发送和接收端的时钟不一致!那么该如何改动程序来应对这个现象呢?
本文依旧采用计数器的方式(需要内插来完成本地伪码的产生,下文程序中的粉红字体)来完成扩频码的跟踪并去除滑动现象,这和之前第一篇文章中介绍的跟踪方式一致,没有计数移位的方式来的简单。计数移位方式对于地面扩频通信很适用,对导航系统来说会导致精度的降低,这方面知识会在后续文章中进行了详细讲解,还会讲解更复杂的跟踪方式,调整采样时钟的跟踪方式,这种方式的跟踪精度会更高。
一般的扩频通信接收机只需要解调后的信息,而卫星导航接收机中跟踪模块后面还有定位解算模块,该模块不仅需要解调后的信息,还需要伪码的精确相位值用于定位解算。于是有了之前程序的升级版本,一起来研究仿真程序吧!
N = 4001+250; % 计算的总数据点数
data = randi([0 1],1,N); % 发送信息(随机数)
data = 2*data-1; % Unbipolar -> Bipolar
data = [data(1:250) 1 ones(1,1000) data(250+1:N-1000)];
% 插入计算误码率时的指示位
gs1 = [];
for m = 1:length(data)
signal1(m,:)= data(m).*npnsignal1(1:255);
gs1=[gs1 signal1(m,:)];
end
fc = 4.08e6; % 中频频率
off1 = fc + 560;
freoffset = 200; % 采样偏差 时钟不一致导致
samplefre = 16320000-freoffset;
carrierphase = pi/3;
t1=[1:length(gs1)*4-100]/samplefre;
carrier1=cos(2*pi*off1.*t1+carrierphase);
m = ceil(4.08e6/samplefre.*[1:length(carrier1)]);
gpnsignal1=gs1(m);
% 码速是4.08MHz,采样频率是(16.32e6-200)Hz。
rs = gpnsignal1.*carrier1;
% 产生中频为4.08M信号,带有频偏。
% 采样频率标称值为16.32MHz,也有偏差。