概述
当接收机中用于下变频的本振(LO)与发射机中的本振不同步时,通常会发生载波频率偏移。这主要是由于杂质,电气噪声和温差等自然效应。我们需要使用粗或者细频率校正去调整我们接收到的信号。
原理解析:
粗频率校正 Coarse Frequency correction
先来看这两张图:这两张图第一张为无offset的原始信号,第二张为100kHZ frequency offse。我们可以明显的感觉到这两个信号之间有100khz的offset,但是我们怎么用电脑把这100khz的误差读取出来有点困难,所以我们做一步简单处理,我们来看他们平方后的信号。
再来看这两张图第一张为无offset的原始信号,第二张为100kHZ frequency offse。这两张图都是平方倍处理后的信号,我们可以清楚的看到原始信号在0hz时有一个波峰,100khz frequency offset信号在图像上200khz的时候有一个波峰。 这是因为我们平方倍处理了信号,因此处理后的信号频谱页发生里位移。
所以,通过简单的处理我们接受的信号,我们可以很容易的找到他的frequency offset。下面具体来讲一讲这一部分在Discrete-time PSK(离散相移键控)的情况下使用matlab进行代码实现。
第一个式子是在说我们要做我们收到的信号并把它平方倍,然后再做DTFT(discrete time Fourier transform)。第二个式子是在说我们要找到它在PSD中最高的那个y值所读应的x值,也就是我们的frequency offset。直接看matlab代码实现:
%FFT
fsample=sampleRateHz;
L=length(offsetData);
K=2^nextpow2(L);%1024
Y=fft(offsetData.^2,K);
[M,I]=max(Y,[],1);
%计算出frequency offset
frequencyOffsetHz_accordingCalculation=fsample/2/K*I;
freqShift = exp(1i.*2*pi*(-frequencyOffsetHz_accordingCalculation)*t.');
%根据我们所算出来的frequency offset,应用frequency offset correction到我们接受的offset data上
%使它能够变成我们原始的传输数据
originalData_acrossAWGN = offsetData.*freqShift;
freqHistOrg=originalData_acrossAWGN.^2;
粗频率校正 Coarse Frequency correction 基本原理到这里就讲完了。
下面稍微讲讲他的局限性,对于粗频率校正我们主要是看收到信号的平方的傅里叶变换。因为我们平方处理了,所以frequency spectrum 跟着位移了两倍。就像我前面提到的100khz的frequency offset,在平方处理后的傅里叶变换里面就变成了200khz。举个简单的例子,依然是我们之前的原始信号,但是我给他设置600khz的frequency offset,那么我去看的DTFT,他的效果就跟100khz的frequency offset一样了。
所以,这种算法,能算的上限为F_sample/2如果你给你的接收到的信号做的是平方处理。F_sample/4,如果你做的是四次方处理,以此类推。F_sample为你采样频率,单位Hz。
所以,随着frequency offset变得较大时候,我们可能会无法使用这个方法来测量精准的偏差。这时候我们就要用的细频率校正Fine Frequency correction,下次讲。先放一个原理图:
通过迭代的方法来计算frequency offset。
最后
以上就是紧张树叶为你收集整理的【粗频率校正/DPSK/matlab】Discrete-time PSK(离散相移键控)粗细频率校正原理讲解,以及使用matlab代码实现的全部内容,希望文章能够帮你解决【粗频率校正/DPSK/matlab】Discrete-time PSK(离散相移键控)粗细频率校正原理讲解,以及使用matlab代码实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复