提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
对于算法类的工程,FPGA设计,仿真先行,再没搞清楚整个信号处理原理和流程之前,切莫盲目开始FPGA RTL。对于导航接收机而言,无论是捕获、跟踪以及后面的解码解算,源点都是在于信源,首先我们需要有一段GPS数据才能进行下一步工作。笔者所做的《从零开始研发GPS接收机》的第一步就是先用MATLAB生成一个信号源用于仿真。
《从零开始研发GPS接收机》记录了笔者实现一个硬件接收机的全过程,最新的更新可通过公众号找到。
GPS信号强度
GPS的民用C/A码,从卫星发出来的时候,信号只有27W左右,达到地球的时候在-158.5dBW以上。用对数形式表示可能不直观,换算成十进制约等于0.0000000000000001W,相当小。
按照上表,我们假设GPS C/A码信号到达天线口的信号强度为-130dBW,即-130dBm
而在室温下T = 290K时(开氏度(K) = 摄氏度+273.15)的热噪声用dBm表示为-174dBm/Hz,也就是说在1Hz内,噪声的能量是-174dBm,C/A码信号的主瓣带宽为2MHz,这样噪声基底为-111dBm。
以这个2MHz输入带宽为参考,输入S/N = -19dB,1kHz的噪声基底是-144dBm,所以相应的S/N = 14,1Hz的噪声基底是-174dBm,所以S/N = 44dB。通常我们把1Hz为参考的信噪比称为载噪比,表示为C/N0
信号仿真
那我们是要做一个和真实卫星信号一样的仿真数据么?那实际上就是GPS模拟器了,如果是那样的话内容就太多了。我们需要的仿真数据主要是为了指导我们接收机的设计,而接收机主要难点就在于捕获和跟踪。因此我们主要能够保证仿真数据能够进行捕获和跟踪就行。这样就简单多了,主要需要有载波、码即可,数据bit呢?数据bit可以随意创造一点就行(或者也可不需要,有的话在跟踪的时候能够看到数据bit的信息,能看到波形翻转更加真实)。
我们时要要仿真ADC采样后的中频数据,我们可以参照射频芯片MAX2771中的处理流程。
硬件射频前端其作用包括:
1、频率搬移:将高频模拟信号下变频到以中频IF为中心频率的数字低频信号
2、信号放大:通过链路增益对GNSS信号进行放大以使ADC能够识别处理
3、抑制噪声:在放大信号的同时尽量引入少的噪声以使输出中频信号具有较高载噪比利于基带数字信号处理。
看红线部分就是信号的路径,GPS L1的信号从MIXIN_HI口输入,本地PLL输出了本地本振,分成cos和sin两部分分别和信号混频得到了I路中频信号和Q路中频信号,然后经过滤波器之后,经过放大器增大增益后,最后经过ADC也就是我们所需要的中频信号了。
仿真参数
卫星PRN号:
选择仿真数据中包含哪颗卫星的信号,一共有1-32颗卫星可选。
中频IF:
MIXIN_HI输入的是GPS L1的信号,也就是1575.42MHz。本地本振如果配置成了1571.424MHz的话,则混频后载波中频IF就是3.996MHz。我们无需仿真混频的过程,只需要直接生成中频为IF=3.996MHz的信号即可。
Doppler:信号的多普勒频率
采样率SAMPLECLK:
ADC的采样时钟,数据需要经过采样才能变成数字信号,所以需要采样时钟,SAMPLECLK。
载噪比CNR:
我们需要为信号添加噪声才显得更真实,在真实场景中,信号都是淹没在噪声中的,平时我们都是用CNR载噪比来表征信号的强弱,那么我们也将CNR作为仿真的一个可配参数。
带宽BW:
GPS有用信号的集中在于中心点正负1M内,但噪声是全带宽的,所以为了提高信噪比需要限制噪声的带宽。
Gain:在MAX2771芯片中从滤波器输出后需要一定增益,使得ADC能够处理。
在硬件接收机的研发中,通过VIVADO的ILA,我们采集到的信号频谱如下,有一个鼓起的包络,就是带通滤波器以及添加增益后的效果
仿真程序
close all;clear all;clc;
SampleClk = 16.369e6;
SimTime = 1e-2; %仿真时长10ms
PointNum = SampleClk*SimTime; %仿真点数
PRNNUM = 1; %卫星PRN号
IF = 3.996e6; %中频
Doppler = 1000; %多普勒
C_N0_dB = 48; %载噪比
BW = 2.6e6; %滤波器带宽
Gain = 40; %滤波后增益
%该程序为付费内容
仿真结果
没有加任何噪声的基带信号,程序中的signal0
添加了C_N0_dB = 48的噪声之后,可见信号完全淹没在了噪声之中。
经过滤波,且增益设置为40dB的情况。注意只有滤波器带宽内的信号和噪声被放大,其余部分的噪声不会放大,用于ADC采集
该信号可进行捕获得到峰值,并且能够估算出载噪比(这里包含的程序只有信号生成,不包含捕获程序)
获取完整程序
见公众号
注意,此部分只包含信号生成的程序,捕获程序将在接下来的文章来提供。
程序中功能包含:
PRN码的生成式程序。
可配置载噪比的中频信号生成
复数滤波器的处理
可配置增益等。