GPS/Galileo双模卫星信号源频谱分析及特性仿真系统
项目介绍
本项目是一款基于MATLAB开发的二代导航信号仿真与分析工具,专注于GPS L1 C/A与Galileo E1 OS两种主流导航信号的时域与频域特性的建模。系统通过高度参数化的设计,实现了从导航扩展码生成、复杂调制机制(BPSK与BOC)到复杂电磁环境(多径与噪声)模拟的全流程仿真。依托高精度功率谱密度分析与自相关函数计算,该系统为卫星信号的兼容性研究、接收机前端带宽设计及辅助教学提供了详实的数据支撑和直观的视觉分析报告。
功能特性
- 双模信号体制仿真:支持经典GPS L1载频的C/A码信号生成,以及Galileo E1频段基于BOC(1,1)调制的信号生成。
- 高精度调制实现:完整模拟了BPSK(二进制相移键控)以及BOC(二进制偏移载波)调制过程,特别是BOC调制通过副载波与伪码的异或逻辑(代码中体现为sign函数乘积)实现。
- 动态电磁环境模拟:内置多径干扰模型(支持多路径幅度衰减与时延设置)与加性高斯白噪声(AWGN)信道,能够模拟低信噪比下的复杂信号环境。
- 深度频谱分析:利用Welch法估算功率谱密度(PSD),并自动提取主瓣宽度、旁瓣抑制比等关键指标。
- 相关特性评估:通过对基带信号进行自相关运算,展示了不同调制方式对相关峰尖锐程度的影响。
- 直观可视化报告:系统自动生成包含时域波形、频谱对比、相关函数曲线及关键性能指标的综合仿真报告图表。
实现逻辑与系统流程
仿真过程严格按照卫星导航信号的物理产生机制进行,主要逻辑如下:
- 参数初始化:设定采样率(40MHz)、中频频率(10MHz)、仿真积分时间(1ms)以及信噪比。
- 信号产生逻辑:
-
GPS支路:通过移位寄存器反馈逻辑生成1023位的Gold码,经过重采样使其匹配系统采样率,再与中频载波相乘实现BPSK调制。
-
Galileo支路:生成等长的伪随机序列,引入1.023MHz的正弦型副载波(取符号位)进行BOC调制,最后加载到中频载波上。
- 信道处理逻辑:信号首先通过多径滤波器,按照预设的衰减系数和延迟点数产生回波叠信号,随后根据目标信噪比注入高斯白噪声。
- 指标计算逻辑:
- 频谱分析:对接收信号进行功率谱估计,查找功率下降3dB的频率点来估算主瓣宽度。
- 旁瓣计算:识别频谱掩蔽中的第一旁瓣峰值,计算其与主瓣峰值的差值(dB)。
- 相关性分析:对原始基带信号进行归一化自相关运算,用于分析多径环境下的抗多径潜力。
- 结果汇报:将时域图、频域图、相关图及计算结果同屏显示,方便快速对比两种信号特性的差异。
关键函数与算法说明
- Gold码生成算法(generate_ca_code):严格遵循GPS官方接口控制协议(ICD),通过G1与G2两个10位移位寄存器的反馈与抽头异或生成特定的PRN序列。
- BOC调制算法:通过生成与伪码相位同步的副载波序列,并将伪码、副载波、中频载波进行三者相乘,准确模拟了BOC(1,1)信号的频谱分裂特性,使其在频域表现出双峰结构。
- 重采样逻辑(resample_code):采用线性索引映射方法,将低速率的伪码(1.023 Mcps)精确映射为高速采样序列,确保码相位在采样点上的准确性。
- 多径衰减模型(add_multipath):使用延迟线结构,支持多组不同幅度和时间的时延信号叠加,用于研究信号在城市峡谷等环境下的失真情况。
- 主瓣宽度与旁瓣评估算法:基于Welch谱密度数据,通过数值搜索方法确定3dB带宽及峰值差,提供了量化的信号特性描述。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(信号处理工具箱)。
使用说明
- 启动MATLAB,并将工作目录切换至项目文件夹。
- 在命令行窗口输入 main 并回车,或直接点击编辑器中的“运行”按钮。
- 系统将自动执行仿真,并在弹出窗口中呈现“GPS/Galileo信号仿真分析报告”。
- 用户可根据需要修改代码开头的参数配置区(例如调整 snr 或 f_sc),以观察不同环境参数下信号频谱和相关特性的变化。