目录
在数字通信领域,调制解调技术是实现高效可靠数据传输的关键。最小移频键控(Minimum Shift Keying,MSK)作为一种特殊的连续相位频移键控(CPFSK)调制方式,具有信号包络恒定、相位连续、带宽利用率较高以及功率谱特性好等优点,被广泛应用于移动通信、卫星通信等对信号质量和带宽资源有严格要求的场景。了解 MSK 调制解调通信链路的原理和特性,对于优化通信系统性能、提升数据传输质量具有重要意义。该链路结构如下图所示:
1.MSK调制原理
MSK是一种二进制频移键控(2FSK)的特殊形式,其调制指数为 0.5。在MSK调制中,载波的频率根据输入的二进制数字信号在两个频率之间切换,且信号的相位在码元转换时刻保持连续。这使得MSK信号具有良好的频谱特性,在有限带宽内能够更有效地传输数据。
2. MSK解调原理
相干解调原理
低通滤波后,去除高频分量,得到基带信号。根据基带信号的极性可以判决出发送的二进制数字信号。
非相干解调原理
非相干解调不需要精确的载波同步,适用于一些难以实现精确载波同步的场景。常见的非相干解调方法有鉴频法和差分检测法。鉴频法是通过检测信号的频率变化来恢复数字信号;差分检测法则是利用相邻码元之间的相位差进行解调。
3.LDPC编译码
LDPC码作为一种前向纠错码,具有卓越的性能,其纠错能力能够接近香农极限 。这意味着在理论上,LDPC码能够在极低的信噪比条件下实现可靠的数据传输,大大提高了通信系统的效率和可靠性。在深空通信中,由于信号传输距离极远,信号强度会随着距离的增加而急剧衰减,导致信噪比极低。LDPC码的应用能够在这种恶劣的信道条件下,有效地纠正传输过程中产生的错误,确保数据的准确传输。
LDPC码的校验矩阵具有稀疏性,这是其区别于其他编码的重要特性之一。稀疏校验矩阵意味着矩阵中大部分元素为零,只有少数元素为非零值。这种稀疏性使得 LDPC 码在编码和解码过程中具有较低的复杂度,因为在矩阵运算中,与零元素的运算可以省略,从而减少了计算量和存储需求。与一些传统的编码方式相比,如卷积码,其校验矩阵相对密集,在处理长码长时,计算复杂度会显著增加,而LDPC码的稀疏校验矩阵则能够有效地避免这一问题,使得在处理长码长数据时仍能保持较低的计算复杂度。
完整链路流程为:
1.信息比特 u → LDPC编码 → 码字c
2.BPSK调制 → 信道传输 → 接收信号y
3.LDPC译码 → u^
在发送端,原始信息比特先经过LDPC编码,增加冗余信息以提高纠错能力;然后进行MSK调,将数字信号转换为适合信道传输的模拟信号;经过信道传输后,在接收端先进行MSK解调,得到解调后的信号;再进行LDPC译码,恢复出原始信息比特。
4.MATLAB程序
60.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
%计算相位
phase = zeros(1,Num*Nsamp);
phase(1) = Dsamp(1) * pi/2/Nsamp;
for i = 2:Num*Nsamp
phase(i) = phase(i-1) + Dsamp(i-1) * pi/2/Nsamp;
end
Imsk2= interp(cos(phase),MB);
Qmsk2= interp(sin(phase),MB);
% 调制
CARRIERI=[];
Imsk=[];
CARRIERQ=[];
Qmsk=[];
for i=1:length(phase)
tmps1 = Imsk2(MB*(i-1)+1:MB*i);
tmps2 = Qmsk2(MB*(i-1)+1:MB*i);
Imsk=[Imsk,tmps1.*sa1];
Qmsk=[Qmsk,tmps2.*sa2];
CARRIERI=[CARRIERI,sa1];
CARRIERQ=[CARRIERQ,sa2];
end
%相加
Ymsk = Imsk+Qmsk;
figure;
plot(phase);
figure;
subplot(421);plot(Imsk2);title('Imsk');xlim([0,1e5]);
subplot(423);plot(CARRIERI);title('cos');xlim([0,1e5]);
subplot(425);plot(Imsk);title('Imsk * cos');xlim([0,1e5]);
subplot(422);plot(Qmsk2);title('Qmsk');xlim([0,1e5]);
subplot(424);plot(CARRIERQ);title('sin');xlim([0,1e5]);
subplot(426);plot(Qmsk);title('Qmsk * sin');xlim([0,1e5]);
subplot(4,2,[7,8]);
plot(Ymsk);title('MSK');xlim([0,1e5]);
%%
Ydemod1 = Imsk.*CARRIERI;
Ydemod2 = Qmsk.*CARRIERQ;
w = hamming(127);
yfilter1 = filter(w,1,Ydemod1);
yfilter2 = filter(w,1,Ydemod2);
%抽取
for i=1:length(phase)
yfilter1c(i)=yfilter1(MB*(i-1)+1);
yfilter2c(i)=yfilter2(MB*(i-1)+1);
end
%差分解调
% demod_data = yfilter1-yfilter2;
figure % 创建图形窗口
subplot(211)
stairs(data); title('原数据');
xlim([0,50]);
subplot(212)
stairs(y); title('MSK解调输出数据');
xlim([0,50]);
figure % 创建图形窗口
subplot(321) % 创建3行1列的子图,并定位到第一个
plot(Ydemod1,'b','linewidth',1) % 绘制ASK调制信号
title('MSK I解调'); % 设置标题
grid on % 打开网格
xlim([0,1e5]);
subplot(322) % 创建3行1列的子图,并定位到第一个
plot(Ydemod2,'b','linewidth',1) % 绘制ASK调制信号
title('MSK Q解调'); % 设置标题
grid on % 打开网格
xlim([0,1e5]);
subplot(323) % 创建3行1列的子图,并定位到第一个
plot(yfilter1,'b','linewidth',1) % 绘制ASK调制信号
title('滤波I'); % 设置标题
grid on % 打开网格
xlim([0,1e5]);
subplot(324) % 创建3行1列的子图,并定位到第一个
plot(yfilter2,'b','linewidth',1) % 绘制ASK调制信号
title('滤波Q'); % 设置标题
grid on % 打开网格
xlim([0,1e5]);
subplot(3,2,[5,6]) % 定位到第二个子图
stairs(y,'b','linewidth',1) % 绘制载波信号
title('输出'); % 设置标题
grid on % 打开网格
xlim([0,50]);
5.仿真结果
通过上述Matlab仿真,得到不同信噪比下的误码率曲线。从曲线可以看出,随着信噪比的增加,误码率逐渐降低。在低信噪比时,误码率下降较为明显,这是因为噪声对信号的干扰较大,软解调能够利用更多的信号信息来对抗噪声,从而有效降低误码率。当信噪比达到一定值后,误码率下降趋势逐渐变缓,此时系统性能主要受到其他因素的限制,如信道衰落、码间干扰等。
6.完整程序下载
完整可运行代码,博主已上传至优快云,使用版本为matlab2022a:
(本程序包含程序操作步骤视频)