【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】

【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】脉冲位置调制(PulsePositionModulation,PPM)的原理是通过编码产生脉冲信号,然后对基带信号进行调制,也就是将信号信息附加到PPM脉冲信号上,调制信号决定载波脉冲的时间

微信公众号:EW Frontier
关注可了解更多的雷达、通信、人工智能算法教程。问题或建议,请公众号留言;
如果你觉得对你有帮助,欢迎赞赏[1]
知识星球:https://t.zsxq.com/11PZOV9j

脉冲位置调制PPM

PPM基本概念单脉冲位置调制L-PPM差分脉冲位置调制L-DPPM多脉冲位置调制PPM MATLAB代码:

PPM基本概念

脉冲位置调制(Pulse Position Modulation,PPM)的原理是通过编码产生脉 冲信号,然后对基带信号进行调制,也就是将信号信息附加到PPM脉冲信号上, 调制信号决定载波脉冲的时间。具体来讲就是一个n位2进制信息经过PPM 编码后确定了该【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】时隙的某个具体位置,然后将该2进制信息在这一确定的时 隙发出,同时在接收机检测并同步时钟,根据这些位置信息从而解调出传输信号。 根据脉冲不同的形式,又可以将PPM分成单脉冲位置调制(L-PPM),差分脉冲位置调制(L-DPPM),多脉冲位置调制(Mulit-PPM)。

单脉冲位置调制L-PPM

单脉冲位置调制L-PPM是在一个时间段内传输一个n位二进制数据的调制技术,假如把该 时间段均分2n个时隙,那么每个时隙内的脉冲信号对应n位二进制数里的数值 与时隙脉冲的对应关系为:
【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】
其中,m为n位二进制数里的某一位值,L代表该n位二进制数在L-PPM的时 间段中所对应时隙的位置。

差分脉冲位置调制L-DPPM

L-DPPM不同于L-PPM,L-PPM在一个时间段内的长度是固定的,L-DPPM 在一个时间段内的长度是不固定的。将L-PPM中的每个时间段内的高电平后的 时隙去掉就成为了时间段的末尾时隙都是高电平的L-DPPM,接收机解调时则通 过判断每个脉冲前的时间段长度来进行解调。L-PPM和L-DPPM的信号形式如下图所示。

图1 L-PPM和L-DPPM的信号形式图

多脉冲位置调制

多脉冲位置调制的原理是在一个周期内n位二进制数组被映射到由2n个时 隙组成的时间段上的脉冲上面,相较于只能在单时隙内出现一次脉冲的L-PPM, 多脉冲位置调制在一个周期内能够发送几个脉冲。多脉冲位置调制的实现较为复 杂,难度较高,因此在可见光通信系统的调制方法中很少采用多脉冲位置调制这种方法。

MATLAB仿真结果:

【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】

【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】

【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】

【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】

PPM MATLAB代码:

pw1=.5e-9;%脉冲宽度
pw=pw1/2.5;%福吉因素
Fs=100e9;%采样频率
Fn=Fs/2;%奈奎斯特频率
t=-1e-9:1/Fs:20e-9;%取样时间
A=1;
y =A*(1 - 4*pi.*((t)/pw).^2).* exp(-2*pi.*((t)/pw).^2);%高斯单
yp=y+ ...
A*(1-4*pi.*((t-2.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-2.5e-9-.2e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-5.0e-9)/pw).^2).*exp(-2*pi.*((t-5.0e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-7.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-7.5e-9-.2e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-10e-9)/pw).^2).*exp(-2*pi.*((t-10e-9)/pw).^2);
%PPM调制上限

B=1;
yum=B*y+ ...
B*(1-4*pi.*((t-2.5e-9)/pw).^2).*exp(-2*pi.*((t-2.5e-9)/pw).^2)+ ...
B*(1-4*pi.*((t-5.0e-9)/pw).^2).*exp(-2*pi.*((t-5.0e-9)/pw).^2)+ ...
B*(1-4*pi.*((t-7.5e-9)/pw).^2).*exp(-2*pi.*((t-7.5e-9)/pw).^2)+ ...
B*(1-4*pi.*((t-10e-9)/pw).^2).*exp(-2*pi.*((t-10e-9)/pw).^2);
yc=yp.*yum;%输出频率=PPM调制上下限的混频输出

y=yp;%y=上限频率
NFFY=2.^(ceil(log(length(y))/log(2)));
FFTY=fft(y,NFFY);
NumUniquePts=ceil((NFFY+1)/2); 
FFTY=FFTY(1:NumUniquePts);
MY=abs(FFTY);
MY=MY*2;
MY(1)=MY(1)/2;
MY(length(MY))=MY(length(MY))/2;
MY=MY/length(y);
f=(0:NumUniquePts-1)*2*Fn/NFFY;

y1=yum;%调制下限
NFFY1=2.^(ceil(log(length(y1))/log(2)));
FFTY1=fft(y1,NFFY1);
NumUniquePts=ceil((NFFY1+1)/2); 
FFTY1=FFTY1(1:NumUniquePts);
MY1=abs(FFTY1);
MY1=MY1*2;
MY1(1)=MY1(1)/2;
MY1(length(MY1))=MY1(length(MY1))/2;
MY1=MY1/length(y1);
f=(0:NumUniquePts-1)*2*Fn/NFFY1;

y2=yc;
NFFY2=2.^(ceil(log(length(y2))/log(2)));
FFTY2=fft(y2,NFFY2);%pad with zeros
NumUniquePts=ceil((NFFY2+1)/2); 
FFTY2=FFTY2(1:NumUniquePts);
MY2=abs(FFTY2);
MY2=MY2*2;
MY2(1)=MY2(1)/2;
MY2(length(MY2))=MY2(length(MY2))/2;
MY2=MY2/length(y2);
f=(0:NumUniquePts-1)*2*Fn/NFFY2;

figure(1)
subplot(1,3,1); plot(t,y);xlabel('时间');ylabel('振幅');
title('上限频率调制脉冲');
grid on;
axis([-1e-9,10e-9 -1 1])
subplot(1,3,2); plot(f,MY);xlabel('频率');ylabel('振幅');
axis([0 10e9 0 .1]);%zoom in/out
grid on;
subplot(1,3,3); plot(f,20*log10(MY));xlabel('频率');ylabel('20LOG10=DB');
axis([0 20e9 -120 0]);
grid on;

figure(2)
subplot(1,3,1); plot(t,y1);xlabel('时间');ylabel('振幅');
title('下线频率调制脉冲');
grid on;
axis([-1e-9,10e-9 -1 1])
subplot(1,3,2); plot(f,MY1);xlabel('频率');ylabel('振幅');
axis([0 10e9 0 .1]);
grid on;
subplot(1,3,3); plot(f,20*log10(MY1));xlabel('频率');ylabel('20LOG10=DB');
axis([0 20e9 -120 0]);
grid on;

figure(3)
subplot(1,3,1); plot(t,y2);xlabel('时间');ylabel('振幅');
title('混频输出脉冲');
grid on;
axis([-1e-9,10e-9 -1 1])
subplot(1,3,2); plot(f,MY2);xlabel('频率');ylabel('振幅');
axis([0 7e9 0 .025]);%zoom in/out
grid on;
subplot(1,3,3); plot(f,20*log10(MY2));xlabel('频率');ylabel('20LOG10=DB');
axis([0 20e9 -120 0]);
grid on;

pt=.5;%驱动电压
H=1;
L=0;
LEN=length(y2);
for ii=1:LEN;
    if y2(ii)>=pt/2;
        pv(ii)=H;
    else;
        pv(ii)=L;
    end;
end ;
po=pv;

figure(4)
plot(t,po);
axis([-1e-9 11e-9 -0.2 1.2])
title('    PPM调制输出');
xlabel('频率');
ylabel('电压');
grid on;

今天的文章【光通信技术】脉冲位置调制(Pulse Position Modulation,PPM)【附MATLAB代码】分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84070.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注