通信算法之112:载波同步及comm.CarrierSynchronizer

1.

aae06cae900844539bc8c4d22e50a2e1.png

f24499960e23419ba6122a40fdfa5908.png 

 

1cbf850d4ba34998af567cc38997f4d3.png

22997bddf02f4ff5bd28e088d787ee04.png 

38786933eed54487ad68ad310ca13b6c.png 

90bf619f7bdd4f82b29b0dc63eae71ca.png 

0f6209ffff834bc1a92c18229e01c365.png 

be922cf3c02945ebbd13358536849f3f.png 

 

 

 

2.

        载波同步是基于锁相环技术使本地获取和载波同频同相的参考信号,用来解调信号。载波同步就是对本地参考信号进行频率和相位偏差的补偿,进而实现本地参考信号和载波信号同频同相。

        载波同步只适用于单载波调制系统,载波同步算法对于BPSK、QPSK、OQPSK、8-PSK、PAM和QAM都是兼容的。目前锁相环使用比较多的是Costas环和平方环进行载波同步,但是两者都有相位模糊的特点。

        BER比较大,由于星座点已经收敛,说明已经获得同频同相的本地载波信号,造成BER高的原因可能是相位模糊造成的。(就是求初始相位

相位模糊范围:0、,或者,通常情况下Costas环和平方环的是的相位模糊,具体和调制模式有关;

求出载波同步前后相同barker码的相位角,就求出了相位模糊角;

angle求出的相位角范围,满足相位模糊范围;

%%--------------------------- Phase ambiguity ---------------------------%%
idx = 9000 + (1:barker.Length);
phOffset = angle(modSig(idx) .* conj(syncSignal(idx)));
phOffset = round((2/pi) * phOffset); % -1, 0, 1, +/-2
phOffset(phOffset==-2) = 2; % Prep for mean operation
phOffset = mean((pi/2) * phOffset); % -pi/2, 0, pi/2, or pi
disp(['Estimated mean phase offset = ',num2str(phOffset*180/pi),' degrees'])
求出的相位模糊:Estimated mean phase offset = 180 degrees

补偿相位模糊,将补偿后的数据进行解调并计算BER

%%------------------------------ Phase Shift ----------------------------%%
resPhzSig = exp(1i*phOffset) * syncSignal;
 
resPhzData = pskdemod(resPhzSig,4,pi/4);%Demodulate the signal after resolving the phase

 

生成相位和频率偏差
相偏:45°  频偏:10KHz  采样频率:1Mhz,频偏是采样频率的1%

%%------------------- Generate Phase and Frequence Offset ---------------%%
pfo = comm.PhaseFrequencyOffset('PhaseOffset',45,  'FrequencyOffset',1e4,'SampleRate',1e6);

生成载波同步器
SamplesPerSymbol:符号过采样倍数,本例子默认为1;

%%---------------------------- Carrier Synchronizer ---------------------%%
carrierSync = comm.CarrierSynchronizer(  'SamplesPerSymbol',1,'Modulation','QPSK');

 

添加相偏、频偏和信道噪声
%%-------------------- Add Phase and Frequence Offset -------------------%%
modSigOffset = pfo(modSig);
%%--------------------------- Add Channel Noise -------------------------%%rxSig =

rxSig = awgn(modSigOffset,20);

 

carrierSync(rxSig )

 

 

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值