主要内容

全球定位系统(GPS)波形的一代

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

简介

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

  1. 使用后面章节中描述的配置参数生成GPS数据位。数据位以每秒50位(bps)的速率生成。

  2. 通过使用高速率传播码来传播这些低速率数据位。GPS标准[1]三种扩频码:C/A-code、P-code和L2 CM-/L2 CL-code。除了这三个代码外,本标准还规定了在反欺骗操作模式激活时使用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 × 10.23 MHz = 1575.42 MHz, L2的信号频率为120 × 10.23 MHz = 1227.60 MHz。分码多址技术使您能够区分卫星,即使所有GPS卫星都以相同的频率传输。

随着GPS技术的发展,信号结构不断扩展,以提高导航性能。例如,LNAV的数据从GPS开始就在l1波段上传输。从GPS块IIR-M开始,除了L1和L2波段存在的LNAV数据外,CNAV数据在L2波段传输。这个表格显示了这些信号配置和GPS的演变。Dc表示CNAV数据位,D表示LNAV数据位。一些运营商, ,表示异或操作。

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

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

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

CNAV数据以。的形式连续传输消息类型.每种消息类型由300位组成,以25 bps的速度传输。这些比特通过速率-半卷积编码器以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:伪随机噪声索引

  • 味精:消息

  • 拖:每周的时间

  • CRC:循环冗余校验

设置ShowVisualizations属性以启用频谱和相关绘图可视化。设置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 with properties: DataType: "CNAV" PRNID: 1 MessageTypes: [4x15 double] Preamble: 139 HOWTOW: 1 L2CPhasing: 0 CEIDataSet: [1x1 HelperGPSCEIConfig] AgeOfDataOffset: 0 AlmanacFileName: "gpsAlmanac.txt"电离层:[1x1 struct] EarthOrientation: [1x1 struct] UTC: [1x1 struct] DifferentialCorrection: [1x1 struct] TimeOffset: [1x1 struct] TextInMessageType36: '此内容是卫星通信Toolbox的一部分' 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属性:SignalHealth: x1双[3]WeekNumber: 2149 GroupDelayDifferential: 0 SVClockCorrectionCoefficients: x1双[3]ReferenceTimeOfClock: 0 SemiMajorAxisLength: 26560 ChangeRateInSemiMajorAxis: 0 MeanMotionDifference: 0 RateOfMeanMotionDifference: 0离心率:0.0200 MeanAnomaly: 0 ReferenceTimeOfEphemeris: 0 HarmonicCorrectionTerms: x1双[6]IntegrityStatusFlag: 0 ArgumentOfPerigee: -0.5200 RateOfRightAscension: 0 LongitudeOfAscendingNode:-0.8400 inclined: 0.3000 InclinationRate: 0 URAEDID: 0 InterSignalCorrection: [4x1 double] ReferenceTimeCEIPropagation: 0 ReferenceWeekNumberCEIPropagation: 101 URANEDID: [3x1 double] AlertFlag: 0

LNAV数据也有一组类似的属性。创建一个配置对象来存储LNAV数据。

lnavConfig = HelperGPSNavigationConfig (“数据类型”“LNAV”“PRNID”PRNID)
lnavConfig = HelperGPSNavigationConfig with properties: DataType: "LNAV" PRNID: 1 frameindexes:[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…[1x1 HelperGPSCEIConfig] AgeOfDataOffset: 0 NMCTAvailabilityIndicator: 0 NMCTERD: [30x1 double] AlmanacFileName: "gpsAlmanac.txt"电离层:[1x1 struct] UTC: [1x1 struct] TextMessage: '此内容是卫星通信Toolbox的一部分'

与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: x1双[6]IssueOfDataEphemeris: 0 IntegrityStatusFlag: 0 ArgumentOfPerigee: -0.5200 RateOfRightAscension: 0 LongitudeOfAscendingNode:-0.8400倾角:0.3000 InclinationRate: 0 AlertFlag: 0

GPS信号的一代

要在基带上生成GPS信号,请遵循以下步骤。

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

  2. 根据配置,生成C/ a -code、P-code、L2 CM-/L2 CL-code或两者的组合。

  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 (“TrellisStructure”格子,...“TerminationMethod”“连续”);encodedCNAVData = cenc (cnavData);

根据配置,生成LNAV数据。

lnavData = HelperGPSNAVDataEncode (lnavConfig);

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

CLCodeResetIdx = 75;% CL-code在重置之前跨越75个数据位numBBSamplesPerDataBit = 204600;CLCodeIdx =国防部(NavDataBitStartIndex-1 CLCodeResetIdx);IQContent = [IBranchContent, QBranchContent];pgen = gpsPCode (“PRNID”PRNID,“InitialTime”...lnavConfig.CEIDataSet.ReferenceTimeOfEphemeris,...“OutputCodeLength”, numBBSamplesPerDataBit);为速度预初始化基带波形gpsBBWaveform = 0 (numBBSamplesPerDataBit * NumNavDataBits, 1);

创建一个写入波形的文件。

如果bbWriter = com . basebandfilewriter (“Waveform.bb”10.23 e6 0);结束

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

iDataBit = 1:NumNavDataBits dataBitIdx = 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信号频谱。

如果ShowVisualizations

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

因为P-code比C/A-code或L2 CM-/L2 CL-code快10倍,%初始化下采样因子为10downsampleFactor = 10;IBranchData =实际(gpsBBWaveform);QBranchData =图像放大(gpsBBWaveform (1: downsampleFactor:结束));滞后=(1023:1023)。';情节(滞后,xcorr(真实(QBranchData(1:1023)), 1023))网格包含(“延迟的样品数量”) ylabel (的自相关值)标题(“GPS扩频码自相关”

比较同相支路和二次支路信号的功率谱密度。该谱图表明,当使用p码时,p码更宽。

repeatFactor = 40;重复生成的C/ a码BPSK信号,查看相邻频带频谱QBranchUpsampled = repmat (QBranchData(:)。”、repeatFactor 1);QBranchUpsampled = QBranchUpsampled (:);重复生成的同相元件BPSK信号,以查看相邻频带谱。重复同相分支样本的次数减少十次%,每一个正交分支中的样本对应同相分支中的10个样本IBranchUpsampled = repmat (IBranchData(:)。repeatFactor / 10 1);IBranchUpsampled =实际(IBranchUpsampled (:));iqScope = dsp。简介(“SampleRate”1.023 e6 * repeatFactor,...“PlotAsTwoSidedSpectrum”,真的,...“SpectrumType”的功率密度...“AveragingMethod”“指数”...“SpectrumUnits”“瓦分贝”...“YLimits”(-130、-50),“标题”...GPS基带I和Q信号功率谱密度的比较...“ShowLegend”,真的,“ChannelNames”...{(“带内容的q分支频谱:”char (QBranchContent)),...“I-branch spectrum with content:”char (IBranchContent)]});iqScope ([QBranchUpsampled IBranchUpsampled]);

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

repeatFactor = 4;重复生成的BPSK信号以查看相邻波段频谱updata = repmat (gpsBBWaveform(:)。”、repeatFactor 1);updata = updata (:);bbscope = dsp。简介(“SampleRate”, 10 * 1.023 * repeatFactor e6,...“PlotAsTwoSidedSpectrum”,真的,...“SpectrumType”的功率密度...“AveragingMethod”“指数”...“SpectrumUnits”“瓦分贝”...“YLimits”(-120、-50),...“标题”“复杂基带GPS信号功率谱密度”);bbscope (updata);结束

图中包含一个axes对象。标题为“GPS扩频码自相关”的axes对象包含一个类型为line的对象。

进一步的探索

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

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

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

附录

这个例子使用了这些数据和帮助文件:

参考书目

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

另请参阅

|

相关的话题

Baidu
map