⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysglgen.m

📁 Galileo BOC 码产生捕获相关仿真结果
💻 M
字号:
%   生成AD采样量化后的中频数字信号,纯信号,用二进制存储
%clear,clc
function ADdata=MySglGen(Svnum,Dopplerfreq)
% Doppler = input('Please input doppler freq(KHz)');
% if(length(Doppler) ==0) Doppler =0; end;
% Svnum   = input('Please input satlite number');
% if(length(Svnum) ==0) Svnum =1; end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%参数配置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fs=4.8e+6;                           	%   采样频率Hz
Doppler = Dopplerfreq;
fIF=3.78e+6 + Doppler;                  %   中频频率3.78MHz
% fIF=0+Doppler;    & test mode without the carrier

%   采样点的伪码和相位初相设置为0
codeindexstart=eps;                     %   关于码片归一化
carrierindexstart=0;                    %   关于2pi归一化

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Svnum=1;
nst = 2;        % the amplitude of noise
% Amplitue=sqrt(2) * (10^(-19/20)) * nst;                             %   信号幅度
Amplitue=2;

ChipsPerCycle=1023;                     %   扩频码一个周期的码片数
ChipsPerBit=ChipsPerCycle*20;           %   一个导航电文内包含的码片数


Rc=1.023e+6;                            %   扩频码的码率

Bit_Num=1;                              %   共生成Bit_Num个导航电文的长度,每个电文20ms
PN_Index=Svnum;                             %   卫星PN编号,用来选择不同的伪码,按照GPS协议定义

%   数据存放在该文件中
%   文件格式,1个字节表示一个采用点的数据
% fid=fopen('ADdata.bin','w');            

%   生成一个周期的扩频码存放到GoldCode以备调用
GoldCode=CACodeGen(PN_Index);

for k=1:Bit_Num
%     SamplesPerBit=ceil((ChipsPerBit-codeindexstart)/(Rc/fs));   %	计算1个bit内的采样点数目
    SamplesPerBit=20e-3*fs;     % T(one bit)=20ms, n=T*fs:the total sample points in one bit.
%    index=floor(mod(codeindexstart+[0:SamplesPerBit-1]*Rc/fs,ChipsPerCycle))+1;%    计算每个采样点的伪码编号
    index=mod(floor([0:SamplesPerBit-1]*Rc/fs+codeindexstart),ChipsPerCycle)+1;
    LocalCode=GoldCode(index);              %   获得1bit内采样的本地伪码
    LocalCode=LocalCode*(1-2*(rand>0.5));   %   调制一个随机的导航电文
%    codeindexstart=mod(codeindexstart+SamplesPerBit*Rc/fs,ChipsPerCycle);   %   重新计算下一个bit的初相
    codeindexstart=mod(SamplesPerBit*Rc/fs+codeindexstart,1023);
   
    
    index=mod(carrierindexstart+[0:SamplesPerBit-1]*fIF/fs,1);  %   计算各采样点的载波相位,关于2pi归一化
    carrierindexstart=mod(carrierindexstart+SamplesPerBit*fIF/fs,1);    %   计算下一个bit的初相
    
    data=Amplitue*LocalCode.*cos(2*pi*index);      %   生成扩频信号
    
%     noisedata=nst*randn(1,SamplesPerBit);
%     data=data+noisedata;
    
%     partition=linspace(-3,3,6);   %   7电平量化
%     codebook=[-3:3];                            %   分别对应-3,-2,-1,0,+1,+2,+3
    
%     [index,data]=quantiz(data,partition,codebook);    % 

    
%     fprintf(fid,'%3.0f\n',data);
%    fwrite(fid,data,'bit8');                   %   数据写入文件
    ADdata = data;
end

% fclose(fid);

% % *********** generate the PRN=6 signal ********************************
% GoldCode=CACodeGen(6);
%  
% SamplesPerBit=20e-3*fs;
%  codeindexstart=floor(1023*rand)+eps;
%  index=mod(floor([0:SamplesPerBit-1]*Rc/fs+codeindexstart),ChipsPerCycle)+1;
% LocalCode=GoldCode(index);
% LocalCode=LocalCode*(1-2*(rand>0.5));
% codeindexstart=mod(SamplesPerBit*Rc/fs+codeindexstart,1023);
% 
% index=mod(carrierindexstart+[0:SamplesPerBit-1]*fIF/fs,1);
% carrierindexstart=mod(carrierindexstart+SamplesPerBit*fIF/fs,1);
% 
% data=Amplitue*LocalCode.*cos(2*pi*index);
%  ADdata = ADdata+data;
%  % ************************************************************************
%  
%  % ********** generate the PRN=19 signal ***************************
%  GoldCode=CACodeGen(19);
%  
% SamplesPerBit=20e-3*fs;
%  codeindexstart=floor(1023*rand)+eps;
%  index=mod(floor([0:SamplesPerBit-1]*Rc/fs+codeindexstart),ChipsPerCycle)+1;
% LocalCode=GoldCode(index);
% LocalCode=LocalCode*(1-2*(rand>0.5));
% codeindexstart=mod(SamplesPerBit*Rc/fs+codeindexstart,1023);
% 
% index=mod(carrierindexstart+[0:SamplesPerBit-1]*fIF/fs,1);
% carrierindexstart=mod(carrierindexstart+SamplesPerBit*fIF/fs,1);
% 
% data=Amplitue*LocalCode.*cos(2*pi*index);
%  ADdata = ADdata+data;
%  % ************************************************************************
%  
%  % **************** generate the noise ******************************
%noisedata=nst*randn(1,SamplesPerBit);
%ADdata=ADdata+noisedata;
%data=ADdata; 
  partition=linspace(-3,3,6);
   codebook=[-3:3];
   [index,data]=quantiz(data,partition,codebook);
   
   [index,ADdata]=quantiz(ADdata,partition,codebook);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -