1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Z52VmZts
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
Costas环(Costas Loop)用在抑制载波调制信号(比如双边带抑制载波调制)和相位调制信号(BPSK、QPSK)的相干解调中的载波恢复(carrier frequency recovery)上。Costas环的主要应用是在无线通信接收机中。与基于PLL的检波器相比,它的优势在于,在相位差比较小的情况下,Costas环输出的误差电压为 sin(2(θi−θf)) ,而基于PLL的检波器输出的误差电压为 sin(θi−θf) ,这不仅使灵敏度提高了一倍,而且使Costas环路特别适合跟踪载波的多普勒频移,特别是在OFDM和GPS接收机中。
Gardner定时误差算法通常用在BPSK、QPSK信号,通过改进可以应用在QAM等多进制基带信号中。Gardner定时误差算法,该算法的一个特点是每个符号只需要使用两个采样点,一个是strobe点,即最佳观察点,另外一个是midstrobe点,即两个观察点之间的采样点。Gardener环中的数控振荡器与锁相环路中的NCO功能完全不同,这里的NCO作用是产生时钟,即确定内插基点mk,同时完成分数间隔uk的计算,以提供给内插器进行内插。
4.部分源码
I_PLL=I_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k); %鉴相器的I路输入信息数据
Q_PLL=Q_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k); %鉴相器的Q路输入信息数据
dataoutI((i-1)*nsamp+k) = I_PLL;%用来查看鉴相器的I路输入信息数据
dataoutQ((i-1)*nsamp+k) = Q_PLL;
%鉴相器处理
Discriminator_Out = (sign(I_PLL)*Q_PLL-sign(Q_PLL)*I_PLL)/sqrt(2);
dd((i-1)*nsamp+k) = Discriminator_Out;%用来查看鉴相器的输出
%环路滤波器处理
PLL_Phase_Part((i-1)*nsamp+k) = Discriminator_Out * C1;
Freq_Control((i-1)*nsamp+k) = PLL_Phase_Part((i-1)*nsamp+k)+PLL_Freq_Part((i-1)*nsamp+k-1);
PLL_Freq_Part((i-1)*nsamp+k) = Discriminator_Out * C2 + PLL_Freq_Part((i-1)*nsamp+k-1);
NCO_Phase = NCO_Phase + Freq_Control((i-1)*nsamp+k); %生成的相位
WC_frame((i-1)*nsamp+k) = FC_NCO + PLL_Freq_Part((i-1)*nsamp+k) * Freq_Sample;
............................................................................
%系统最后输出数据与原始数据比对
figure;
stem(I_Data(6:end-6));hold on;
stem(qoutI(2:end),'r');
grid on;
figure;
stem(Q_Data(6:end-6));hold on;
stem(qoutQ(2:end),'r');
grid on;
figure;
subplot(131);
plot(I_Data,Q_Data,'b*');title('16QAM星座图');
subplot(132);
plot(real(AMP(3000:end)),imag(AMP(3000:end)),'b*');title('16QAM带频偏时偏的星座图');
subplot(133);
plot(qoutI(3000:end),qoutQ(3000:end),'b*');title('16QAM同步后星座图');
0sj_045m
---