主要内容

GPS波形生成

此示例显示如何生成全球定位系统(GPS)传统导航(LNAV)数据、民用导航(CNAV)数据和复杂基带波形。使用粗采集码(C/A码)、精密码(P码)或民用中/民用长码(L2 CM-/L2 CL码)执行数据的扩展。此示例显示了根据IS-GPS-200L标准生成的GPS波形[1].为了设计一个基于GPS的导航系统,你必须用接收到的信号测试接收器。因为你不能控制发射机和信道参数,从卫星接收的信号对测试接收器没有用处。要测试接收器,必须使用在一组受控参数下生成的波形。

介绍

通过这三个步骤生成的GPS信号。

  1. 通过使用后面描述的配置参数来生成GPS数据比特。数据位以每秒50比特(BPS)的速率生成。

  2. 使用高速率扩展码来扩展这些低速率数据位。GPS标准[1]指定三种扩频代码:C / A代码,P代码和L2 CM-/ L2 CL-Code。除了这三个代码之外,该标准还指定在操作的反欺骗模式处于活动状态时使用代码而不是P代码。p码和y代码一起称为p(y)-code。配置参数确定用于生成波形的扩展代码。

  3. 根据配置参数的设置,选择同相支路和正交支路上的码,由扩频码所扩频的比特生成GPS复基带波形。

该图显示了来自配置参数的GPS波形发生器的框图。

GPS信号结构

标准[1]描述GPS信号在两个频率上的传输:L1 (1575.42 MHz)和L2 (1227.60 MHz)。基频10.23 MHz的信号产生这两个信号。L1的信号频率为154 × 10.23 MHz = 1575.42 MHz, L2的信号频率为120 × 10.23 MHz = 1227.60 MHz。码分多址技术使您能够区分卫星,即使所有GPS卫星以相同的频率传输。

随着GPS的发展,信号结构扩展,以提高导航性能。例如,LNAV数据在L1频带从GPS的开始传输。从GPS块IIR-M起,CNAV数据在L2波段中除了两个L1和L2频带存在LNAV数据传送。该表显示了这些信号配置和GPS演变。“DC”表示CNAV数据位和“d”表示LNAV数据位。位操作, ,表示XOR操作。

使用此表选择需要在同相和正交相位分支中传输的内容。

IBranchContent =“P(Y)+D”
IBranchContent = "P(Y) + D"
QBranchContent =“C / A + d”
QBranchContent=“C/A+D”

LNAV和CNAV数据中的许多传输特性相同,但帧结构不同。LNAV数据以1500位长度的帧传输,每个帧由每个子帧中300位的五个子帧组成。由于数据速率为50 bps,因此传输每个子帧需要6秒,传输每个帧需要30秒。每个子帧由10个字组成,每个字中有30位(24个数据位和6个奇偶校验位)。GPS数据包含有关时钟和卫星位置的信息。此图显示LNAV数据的帧结构。

CNAV数据以格式连续传输消息类型.每个消息类型由300位以25 bps传输的300位组成。这些位通过速率 - 半卷积编码器,以从每个消息类型从50 bps获得600位。传输每个消息类型需要12秒钟。标准[1]按顺序定义14种消息类型:10、11、30、31、32、33、34、35、36、37、12、13、14和15。各消息类型的详细说明及传输的数据请参见IS-GPS-200L附录III[1].其中每个消息类型被发送的顺序完全是任意的,但进行测序,以提供最佳的用户体验。在这个例子中,你可以选择在这些消息类型传输顺序。此图显示了CNAV消息结构。

此图中显示的消息类型包含以下字段:

  • PRN ID:伪随机噪声(PRN)指数

  • 味精:消息

  • 拖:一周的时间

  • CRC:循环冗余校验

设置显示可视化属性使频谱和相关图可视化。设置WriteWaveformToFile属性将复杂基带波形写入文件(如果需要)。此示例启用可视化并禁用将波形写入文件。

ShowVisualizations =真正的; WriteWaveformToFile=错误的;

指定卫星PRN索引为范围[1,63]的整数。

PRNID = 1;

由于为整个导航数据生成GPS波形需要大量的时间和内存,因此本例演示了仅为导航数据的一位生成波形。您可以使用该属性控制为指定数量的数据位生成波形numnavdatabits.

%将该值设置为1,以从信号的第一位生成波形%的导航数据NavDataBitStartIndex = 1321;%设置此值以控制导航数据中的导航数据位数%产生波形NumNavDataBits=1;

GPS数据初始化

初始化数据配置对象以生成CNAV数据。您可以从中创建一个配置对象HelperGPSNavigationConfig目的。更新配置对象属性以根据需要自定义波形。

cnavconfig = helpergpsnavigationconfig(“数据类型”“CNAV”“prnid”,prnid)
cnavConfig=HelperGPSNavigationConfig,带属性:数据类型:“CNAV”PRNID:1消息类型:[4x15双精度]序言:139 HOWTOW:0 L2相位:0 CEIDataSet:[1x1 HelperGPSCEIConfig]年龄偏移量:0历书文件名:“gpsAlmanac.txt”电离层:[1x1结构]地球方向:[1x1结构]UTC:[1x1结构]差异校正:[1x1结构]TimeOffset:[1x1 struct]TextInMessageType36:'此内容是卫星通信工具箱的一部分'TextInMessageType15:'此内容是卫星通信工具箱的一部分'只读属性:无属性。

财产,CEIDataSet,是一个类型的配置对象HelperGPSCEIConfig,其中包含时钟、星历和完整性(CEI)数据参数。

从理论上讲,所有卫星的时钟必须同步,这意味着所有GPS卫星时钟必须在给定时刻显示相同的时间。在实际应用中,存在偏差、漂移和老化的确定性卫星时钟误差特性,以及群延迟偏差和平均差分群延迟的卫星实现特性。这些误差使卫星时钟偏离GPS系统时间。

GPS卫星在椭圆轨道上围绕地球旋转,地球在椭圆的一个焦点。一组轨道参数,可在此椭圆轨道中准确地定义卫星位置星历.每个GPS卫星在LNAV数据的子帧2和3上传输它自己的星历数据,在CNAV数据的消息类型10和11上传输它自己的星历数据。这张图显示了卫星在以地球为中心的地球固定(ECEF)坐标系下的五个轨道参数。这个图并没有显示一个实际的GPS卫星,这个图只是为了说明。

  • 半长轴的长度, 一种 :卫星椭圆轨道中心到远地点或近地点的距离

  • 倾斜角度, 一世 :地球的赤道平面和卫星的轨道平面之间的角度

  • 升序节点的经度, Ω :格林威治子午线与上升节点方向之间的角度

  • 近地点角, ω :上升节点方向与近地点方向之间的角度

  • 真正的异常, υ :封口方向与卫星当前位置之间的角度

每个开普勒的行星运动第二定律,角速度(真正异常的变化率)在轨道中的不同位置不同。您可以定义平均异常,其变化率在卫星的整个轨道上是恒定的。在GPS星历参数中,不是指定真正的异常,指定了平均异常(可以找到真正的异常)。IS-GPS-200L表20-IV[1]指定关联平均异常和真实异常的算法。

椭圆的偏心率也限定轨道。偏心给出椭圆轨道的偏离圆形形状的度量。

此命令显示与CNAV数据相关的CEI数据集属性。

cnavConfig.CEIDataSet
ANS = HelperGPSCEIConfig与属性:SignalHealth:[3X1双] WeekNumber:2149 GroupDelayDifferential:0 SVClockCorrectionCoefficients:[3X1双] ReferenceTimeOfClock:0 SemiMajorAxisLength:26560个ChangeRateInSemiMajorAxis:0 MeanMotionDifference:0 RateOfMeanMotionDifference:0偏心度:0.0200 MeanAnomaly:0 ReferenceTimeOfEphemeris:0 HarmonicCorrectionTerms:[6X1双] IntegrityStatusFlag:0 ArgumentOfPerigee:-0.5200 RateOfRightAscension:0 LongitudeOfAscendingNode:-0.8400倾角:0.3000 InclinationRate:0 URAEDID:0 InterSignalCorrection:[4X1双] ReferenceTimeCEIPropagation:0 ReferenceWeekNumberCEIPropagation:101 URANEDID:[3X1双] AlertFlag:0读 -唯一性:无属性。

LNAV数据存在类似的一组属性。创建配置对象以存储LNAV数据。

lnavconfig = helpergpsnavigationconfig(“数据类型”“LNAV”“prnid”,prnid)
lnavConfig=HelperGPSNavigationConfig,带属性:数据类型:“LNAV”PRNID:1帧索引:[1 2 3 4 5 6 7 8 9 10 11 12 13 15 16…]序言:139 TLM消息:0 HOWTOW:0 AntiSpoofFlag:0 CodesOnL2:“P-code”L2PDataFlag:0 CEIDataSet:[1x1 HelperGPSCEIConfig]数据偏移量的年龄:0 NMCTAvailabilityIndicator:0 NMCTERD:[30x1 double]AlmanacFileName:“gpsAlmanac.txt”电离层:[1x1结构]UTC:[1x1结构]文本消息:“此内容是卫星通信工具箱的一部分”只读属性:无属性。

到CNAV数据类似,LNAV数据具有从该CNAV的不同CEI数据属性。此命令显示LNAV CEI数据属性。

lnavConfig.CEIDataSet
ans = HelperGPSCEIConfig属性:SVHealth: 0 IssueOfDataClock: 0 URAID: 0 WeekNumber: 2149 GroupDelayDifferential: 0 SVClockCorrectionCoefficients: x1双[3]ReferenceTimeOfClock: 0 SemiMajorAxisLength: 26560 MeanMotionDifference: 0 FitIntervalFlag: 0离心率:0.0200 MeanAnomaly: 0 ReferenceTimeOfEphemeris:0 HarmonicCorrectionTerms: [6x1 double] IssueOfDataEphemeris: 0 IntegrityStatusFlag: 0 ArgumentOfPerigee: -0.5200 RateOfRightAscension: 0 LongitudeOfAscendingNode: -0.8400倾角:0.3000 InclinationRate: 0 AlertFlag: 0 Read-only properties:无属性。

GPS信号生成

要在基带生成GPS信号,请按照下列步骤操作。

  1. 以每秒50位的速度生成导航数据位。

  2. 根据配置,生成C/A代码、P代码、L2 CM-/L2 CL代码或其组合。

  3. 传播CNAV或LNAV数据位与适当的测距码。

  4. 为同相支路和正交相位支路通过速率匹配在每个分支的代码收集数据。

  5. 将两个分支上的位映射为第0位到+1,第1位到-1。

  6. (可选)写这个基带波形文件(视WriteWaveformToFile属性值)。

根据配置,生成CNAV数据。

cnavData=HelperGPSNAVDataEncode(cnavConfig);

通过卷积编码器传递CNAV数据。

%初始化卷积编码器的网格网格= poly2trellis(7,{'1 + x + x ^ 2 + x ^ 3 + x ^ 6''1 + x ^ 2 + x ^ 3 + x ^ 5 + x ^ 6'});CENC = comm.ConvolutionalEncoder(“网格结构”格子,......“终止方法”“连续的”);encodedCNAVData = cenc (cnavData);

基于配置,生成LNAV数据。

lnavData = HelperGPSNAVDataEncode(lnavConfig);

指定波形生成所需的所有属性。

CLCodeResetIdx = 75;% cl -代码在重置前跨越超过75个数据位numBBSamplesPerDataBit = 204600;CLCodeIdx =国防部(NavDataBitStartIndex-1 CLCodeResetIdx);IQContent = [IBranchContent, QBranchContent];pgen = gpsPCode (“prnid”,prnid,“InitialTime”......lnavconfig.ceidataset.referenceTimeofephemeris,......“OutputCodeLength”,numBBSamplesPerDataBit);%预初始化基带波形以获得速度gpsBBWaveform=0(numbsamplesperdatabit*NumNavDataBits,1);

创建到其中的波形写入文件。

如果WriteWaveformToFile==1 bbWriter=comm.BasebandFileWriter('Waveform.bb',10.23e6,0);终止

独立地处理循环中的每个导航数据位。

对于iDataBit = 1:NumNavDataBits dataBitIdx = iDataBit + NavDataBitStartIndex-1;bbSamplesIndices =((iDataBit-1)* numBBSamplesPerDataBit + 1):......(idatabit * numbbsamplesperdatabit);GPSBBWAVEFORM(BBSAMPLESINDICES)= HelperGPSBASEBASEWAVEFORM(IQContent,PGEN,PRNID,......clcodeidx,lnavdata(databitidx),encodedcnavdata(databitidx));clcodeidx = mod(clcodeidx + 1,clcoderesetidx);如果writewaveformtofile == 1 bbwriter(gpsbbwaveform(bbsamplesindices));终止终止

如果打开关闭文件。

如果writewaveformtofile == 1释放(Bbwriter);终止

信号可视化

绘制C/A代码的自相关图,并可视化GPS信号的频谱。

如果显示可视化

除零延迟外,测距代码序列的自相关,除零延迟外,两个不同序列的横相关是接近零。因为C / A码是周期性的,其周期为1023位,所以自相关的是每1023位延迟的峰值。计算并绘制GPS扩散代码的自相关。

%因为P代码比C/A代码或L2 CM-/L2 CL代码快10倍,%初始化抽样因子为10Downsamplefactor = 10;IBranchData = Real(GPSBBWAVEFORM);qbranchdata = imag(gpsbbwaveform(1:downsamfactor:结束));LAGS =(-1023:1023)。';绘图(滞后,Xcorr(Qbranchdata(1:1023)),1023))网格在…上包含(“延迟的样本数”) ylabel (“自相关值”) 标题(“GPS扩频码的自相关”

比较同相支路和正交支路信号的功率谱密度。该光谱曲线图表明P码是较宽当使用P码。

repeatFactor = 40;%重复生成的C/A码BPSK信号,查看相邻频带频谱qbranchupsampled = repmat(qbranchdata(:)',Repoimfactor,1);qbranchupsampled = qbranchupmpled(:);%重复生成的同相分量BPSK信号,查看%相邻谱带。将同相分支样本重复10次%,如在正交分支的每个样本对应于10个样本在同相分支IBranchUpsampled = repmat(IBranchData(:)',repeatFactor / 10,1)。IBranchUpsampled =实际(IBranchUpsampled(:));iqScope = dsp.SpectrumAnalyzer(“采样器”,1.023e6*重复系数,......“PlotAsTwoSidedSpectrum”,真的,......'spectrumtype'的功率密度......'allagesmethod'“指数型”......“频谱单位”'DBW'......“YLimits”,[ -  130,-50],“标题”......“GPS基带I和Q信号的功率谱密度比较”......“ShowLegend”,真的,“ChannelNames”......{['Q-Branch Spectrum,内容:'char(QBranchContent)],......[“带有内容的i -分支频谱”char (IBranchContent)]});iqScope ([QBranchUpsampled IBranchUpsampled]);

在基带处绘制信号功率谱密度。要观察GPS信号的相邻带频谱,请在基带处重复信号。

重复离子= 4;%重复生成的BPSK信号以查看相邻的频带频谱UPDATA = repmat(gpsBBWaveform(:)',repeatFactor,1);UPDATA = UPDATA(:);bbscope = dsp.SpectrumAnalyzer(“采样器”,10*1.023e6*重复因子,......“PlotAsTwoSidedSpectrum”,真的,......'spectrumtype'的功率密度......'allagesmethod'“指数型”......“频谱单位”'DBW'......“YLimits”,[ -  120,-50],......“标题”'复杂基带GPS信号的功率谱密度'); bbscope(updatea);终止

图包含轴对象。具有GPS扩展代码的标题自相关的轴对象包含类型线的对象。

图频谱分析仪包含一个轴对象和类型uiflowcontainer,uimenu,uitoolbar的其他对象。轴与GPS基带I的功率谱密度的标题比较对象信号和Q信号中包含的线路类型2个对象。这些对象表示Q分支光谱与内容:C / A + d,与内容I分支频谱:P(Y)+ D.

Figure频谱分析仪包含一个轴对象和uiflowcontainer、uimenu、uitoolbar类型的其他对象。标题为“复基带GPS信号功率谱密度”的轴对象包含线型对象。此对象表示通道1。

进一步探索

此示例使用配置对象生成基带中的GPS数据位和导航信号。可以替换此配置对象中的特性值,并观察GPS数据的生成方式。您还可以使用现有的实际数据集更改星历参数,并将这些参数传递到CEI数据集中。此外,您可以指定自己的年历文件。如果您使用自己的年鉴文件,则年鉴文件中的周数和配置对象中的周数必须匹配。

此外,本示例还演示了如何生成GPS基带波形,通过将同相分支上的余弦信号与正交分支上的正弦信号相乘,可以将基带波形扩展为中频(IF)波形。

此外,本示例还演示了如何从一颗卫星生成GPS波形,该波形可以与多个卫星PRN代码组合,以获得综合信号。

附录

此示例使用以下数据和帮助文件:

参考书目

[1] IS-GPS-200,修订版:L.NAVSTAR GPS空间段/导航用户段接口.5月14日,2020年;代码标识:66RP1。