主要内容

GPS波形生成

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

介绍

使用这三个步骤生成GPS信号。

  1. 使用后面章节中描述的配置参数生成GPS数据位。数据位的生成速率为50比特/秒。

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

  3. 通过根据配置参数集选择同相分支和正交相位分支上的代码,从扩频码扩频的比特生成GPS复基带波形。

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

GPS信号结构

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

随着GPS的演变,扩展了信号结构以提高导航性能。例如,LNAV数据在来自GPS的初始上的L1波段上传输。从GPS块IIR-M开始,除了在L1和L2带上存在的LNAV数据之外,还在L2波段上传输CNAV数据。此表显示了这些信号配置和GPS演化。“DC”表示CNAV数据比特,“D”表示LNAV数据位。位运算符, ,表示异或操作。

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

IBRANCHCONTENT =“P(Y)+D”
IBranchContent=“P(Y)+D”
分支内容=“c / a + d”
QBranchContent=“C/A+D”

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

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

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

  • PRN ID:伪随机噪声(PRN)索引

  • 消息:消息

  • 拖:一周的时间

  • 循环冗余校验

设定显示可视化属性以启用频谱和相关绘图可视化。设定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星历参数中,不指定真异常,而是指定平均异常(从中可以找到真异常)。gps - 200 l表20-IV吗[1]指定关联平均异常和真实异常的算法。

椭圆的偏心率也定义了轨道。偏心率给出了椭圆轨道从圆形形状的偏差的度量。

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

CNAVCONFIG.CEIDATASET.
ANS = HelperGPSceIconfig具有属性:信号养:[3x1 DOUPLE] WeekNumber:2149 GroupDelayDifference:0 SvclockcorrectionCofiers:0 SemimaJoraxisLength:0 SemimaJoraxisLength:26560 ChangerySemimajoraxis:0 MeanMotionDifferaffer:0 RateofmeanMotionDifference:0偏心率:0.0200惯用[6x1 double] IntegrityStatusFlag:0 ArgumentOfPreigee:-0.5200 RateofRightsCoily:0 onditudeofascendingNode:0.8400倾斜:0.3000 inderningrate:0 URAEDID:0 INTERSIGNALCORCTION:[4x1 DOUBLE]参考仪器:0参考WEEKNUMBERCOIPAGAGAGAGAGAGAG:101 URANEDID:[3x1 DOUBLE] 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数据具有CEI数据属性,其与CNAV不同。此命令显示LNAV CEI数据属性。

lnavconfig.ceidataset.
ans=HelperGPSCEIConfig,属性为:SVHealth:0 IssueOfDataClock:0 URAID:0 WeekNumber:2149 GroupDelayDifferential:0 SVClockCorrection系数:[3x1 double]参考时钟时钟:0半主轴长度:26560平均运动差:0 FitIntervalFlag:0偏心率:0.0200平均异常:0参考时钟频率:0 HarmonicCorrectionTerms:[6x1双精度]IssueOfData星历:0 IntegrityStatusFlag:0 ArgumentOfPerigee:-0.5200 RightAscension:0 LongitudeOfAscendingNode:-0.8400倾斜度:0.3000倾斜度比率:0 AlertFlag:0只读属性:无属性。

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=mod(NavDataBitStartIndex-1,CLCodeResetIdx);IQContent=[IBranchContent,QBranchContent];pgen=gpsPCode(“PRNID”PRNID,“初始时间”......lnavConfig.CEIDataSet.ReferenceTimeOfEphemeris,......“outputCodelength”,numbbsamplesperdatabit);%为速度预先初始化基带波形gpsBBWaveform=0(numbsamplesperdatabit*NumNavDataBits,1);

创建写入波形的文件。

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

在一个循环中独立处理每个导航数据位。

对于idatabit = 1:numnavdatabits datamitidx = idatabit + navdatabitstartindex-1;bbsamplesindices =((idatabit-1)* numbbsamplesperdatabit + 1):......(iDataBit * numBBSamplesPerDataBit);gpsBBWaveform (bbSamplesIndices) = HelperGPSBasebandWaveform (IQContent、pgen PRNID,......CLCodeIdx lnavData (dataBitIdx), encodedCNAVData (dataBitIdx));CLCodeIdx =国防部(CLCodeIdx + 1, CLCodeResetIdx);如果WriteWaveformToFile == 1 bbWriter(gpsbb波形(bbSamplesIndices));终止终止

如果打开,请关闭文件。

如果WriteWaveformToFile == 1 release(bbWriter);终止

信号可视化

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

如果显示可视化

除零延迟外,测距码序列的自相关接近于零,两种不同序列的互相关接近于零。因为C/ a代码的周期为1023位,所以自相关在每1023位的延迟上有一个峰值。计算并绘制GPS扩频码的自相关图。

%因为p码比C/ a码或L2 CM-/L2 cl -码快10倍,%将采样系数初始化为10downsampleFactor = 10;IBranchData =实际(gpsBBWaveform);QBranchData =图像放大(gpsBBWaveform (1: downsampleFactor:结束));滞后=(1023:1023)。';情节(滞后,xcorr(真实(QBranchData(1:1023)), 1023))网格xlabel(“延迟的样本数量”)伊拉贝尔(的自相关值)标题(“GPS扩频码的自相关”

比较同相分支和正交分支信号的功率谱密度。该频谱图显示,当使用P代码时,P码更宽。

重复因子=40;%重复生成的C/ a编码BPSK信号,查看相邻频带频谱QBranchUpsampled = repmat (QBranchData(:)。”、repeatFactor 1);QBranchUpsampled = QBranchUpsampled (:);%重复生成的同相分量BPSK信号,查看%相邻谱带。将同相分支样本重复10次正常分支中的每个样本对应于同相分支中的10个样本iBranchSampled = Repmat(IbranchData(:)',Repoimfactor / 10,1);ibranchsampled =真实(ibranchpsampled(:));iqcope = dsp.spectrumanalyzer(“采样器”,1.023e6*重复系数,......“绘制双侧面光谱”,真的,......“SpectrumType”“功率密度”......“AveragingMethod”“指数型”......“频谱单位”'dbw'......“YLimits”(-130、-50),“头衔”......GPS基带I和Q信号功率谱密度的比较......“ShowLegend”,真的,“频道名称”......{(q -分支谱,内容:char(QBranchContent)],......['带内容的I分支光谱:'字符(IBranchContent)});iqScope([QBranchUpsampled,IBranchUpsampled]);

绘制信号在基带的功率谱密度。为了观察GPS信号的相邻频带频谱,在基带重复该信号。

repeatFactor = 4;%重复生成的BPSK信号,查看相邻频带频谱Updata = Repmat(GPSBBWaveForm(:)。',Repoimfactor,1);Updata = Updata(:);bbscope = dsp.spectrumanalyzer(“采样器”, 10 * 1.023 * repeatFactor e6,......“绘制双侧面光谱”,真的,......“SpectrumType”“功率密度”......“AveragingMethod”“指数型”......“频谱单位”'dbw'......“YLimits”,[ -  120,-50],......“头衔”“复杂基带GPS信号的功率谱密度”); bbscope(updatea);终止

图中包含一个轴对象。标题为“GPS散布码自相关”的轴对象包含一个类型为line的对象。

图谱分析仪包含一个轴对象和yiflowContainer,Uimenu,UIToolbar的其他对象。具有GPS基带I和Q信号的功率谱密度的标题比较的轴对象包含2个类型线的物体。这些对象代表Q-Branch光谱,内容:C / A + D,I-Branch光谱,内容:P(Y)+ D.

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

进一步的探索

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

此外,该示例示出如何生成GPS基带波形,该基带波形可以通过将同相分支上的余弦信号和正交分支上的正弦信号相乘来扩展以从基带波形生成中频(IF)波形。

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

附录

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

参考书目

[1]是-GPS-200,Rev:L.NAVSTAR GPS空间段/导航用户段界面.2020年5月14日;识别代码:66一国。