⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1-klse822.m

📁 一种新的光纤通信调制技术
💻 M
字号:
%function y=klse822()
clear;
clc;
close all;

%*******************相关参数定义************************%

%for oo=0:6
%    SNRdB=8+oo;
%*******************offset DPSK************************
theta=0*pi/2;
M1=1;                                                %for 2-DPSK,
%*******************信号噪声功率参数定义*****************%    
NF=3;                                                 %(dB)Noise figure of optical amplifier
hv=6.626*10^(-34)*1.94*10^(14);                       %h*f,为光子能量,f为波长是1550纳米的频率
N0=10^(NF/10)*hv;                                     %噪声功率谱密度
TP=25                                                 %(photons/bit) Transmitted power
Eb=TP*hv;                                             %transmitted energy per bit
SNRdB=10*log10(Eb/N0);                                 %(dB)性噪比
%*******************************************************
N=2^5;                                                %2DPSK设N=2^5,4DPSK设N=2^10
Rb=10^10;                                             %10Gbit/s
T=1/Rb;                                               %
Bo=1.25*Rb;                                           %适用于NRZ-2-DPSK
Be=0.8*Rb;                                            %同上
Miu=1.4;
Tao=2;
T0=Miu*(1/Bo+1/Be);

L=floor(Tao*N*Bo*T);
M=floor(Tao*Bo*T0); 
%*****************色散相关参数定义******************************************
%load BER1 DD;
%D=DD*10^(-24);                           %s/nm.nm
D=0*10^(-24);
wavelength=1550;                          %nm
c=3e005;                                  %km/s
b2=-D*wavelength^2/(2*pi*c);              %s^2/km
%b2=2.0400e-023;%s^2/Km,b2=20.4ps^2/Km
Long=50;%Km

%****************phase error***********************************************
%load BER1 detaPHI;
detaPHI=0;

%%***************PMD相关参数************************************************
%load BER1 deta
deta=0;
Dp=1;                                             %ps/sqrt(Km),PMD参数。
detaTao=deta*T;
%detaTao=0;%Dp*sqrt(Long)*10^(-12);               %差分群时延DGD。
eta=0.5;                                          %使两个PSP对称,使PMD最大

%***************************传输信号参数定义********************************
Bitrate=10*1e9;                                                             %信号传输速率定义
Samplerate=32;                                                              %每比特周期采样率定义
code_order=5;                                                               %伪随机二进制码阶数定义

Period=1/Bitrate;
Bitlength=2^code_order;                                                     % 2^code_order-1

V=Bitrate;                                                                  %信号传输速率(10Gbit/s或者40Gbit/s)
T=Period;                                                                   %比特周期(10Gbit/s系统为100ps;40Gbit/s系统为25ps)
N=Bitlength;                                                                %码长(127)
R=Samplerate;                                                               %每比特周期采样率(32)
T_delta=T/R;                                                                %取样时间间隔
%F_sample=linspace(-R*V/2,+R*V/2-V/N,N*R);                                  %取样频率分量序列(2*pi*F_sample才为角频率序列)

%*******************************************************************************************************************************  
%光纤放大器(EDFA)和光接收机相关参数定义
                                                                           %光纤放大器噪声指数
G=1;                                                                 %光纤放大器固定增益(dB)
%c=2.9979*1e8;
%lamda = 1550*1e-9;                                                        % 波长 m
%q=1.6e-19;                                                                %电子电荷电量
%hp=6.63e-34;                                                              %Plank常数
%Vs=c/lamda;                                                               %光频率 1e14 Hz
%Bo=1.2*V;                                                                 %光滤波器带宽

%Re=1;                                                                     %光探测器的响应度
%ST=400e-24;                                                               %% 热噪声频谱密度
%I_dark=1e-9;                                                              %% dark current (1nA)  
 
%Band_rate=0.9;                                                            %% ratio of receiver bandwidth with signal rate; 
%Be=Band_rate*V;                                                           %% electrical filter bandwidth, receiver bandwidth:(NRZ: 0.75B; RZ: 0.5B)

%*******************************************************************************************************************************
%激光器和调制器参数设置
%P_max=P_input_average;                                                    %激光器发射的峰值功率(mW) 
%P_ext=30;                                                                 %调制器消光比(dB)
%P_min=P_max*10^(-P_ext/10);                                               %调制器0码输出光功率
%DPSK,幅值固定
%Eb=P_input_average;

%chirp=0;                                                                  %调制器啁啾系数
%laser_width=10e6;                                                         %激光器线宽(MHz)

%**************************************************************************
%%  光信号部分                %光发射机模型(包括编码、采样、滤波和调制)
%************************************************************************ 
 
%************产生debrujin序列***********
fbconnection=[1 0 0 1 0];
KK1=de_sequence(fbconnection);

%**************差分编码******************
%b=zeros(1,length(KK1));
%b(1)=xor(KK1(1),0);
%for ii=2:length(KK1)
%    b(ii)=xor(KK1(ii),b(ii-1));
%end
%KK=b;
KK=KK1;
%****************************************
det_fai=zeros(1,N);
fai=zeros(1,N);
for ii=1:N
    if KK(ii)==0
        det_fai(ii)=-pi/2;
    else
        det_fai(ii)=pi/2;                                      %0--(-pi/2),1--(pi/2)
    end
end

fai(1)=0+det_fai(1);

		for jj=2:N                                                                       %对于一个周期
           
            fai(jj)=fai(jj-1)+det_fai(jj);
            %while fai(jj)>=2*pi
            %    fai(jj)=fai(jj)-2*pi;
            %end
            %A(jj)=A_dpsk*exp( i*fai(jj) );
        end   
%******************************************        
%周期采样
%jj=0;
%for n=1:N
%	for T_Sample=-T/2+T_delta/2:T_delta:T/2
%       jj=jj+1;
%       UU(jj)=KK(n);
%	end
%end
%%%%%%%RZ 码的采样%%%
A_dpsk=sqrt(3*Eb/T);
jj=0;
for n=1:N
	for T_Sample=0:T_delta:(T-T_delta)
        t=n*T+T_Sample;
        jj=jj+1;
        pt=cos( 0.5*pi*cos( pi*t/(M1*T) ) );%%%%M1=1for 2-DPSK,33%RZ pulse,
        UU(jj)=fai(n)*pt;
        A(jj)=A_dpsk*exp( i*UU(jj) );
	end
end
% figure(1)
% plot(UU)
% hold on
% title('伪随机码序列输出') 

%Bessel滤波用以产生NRZ码
%U_fft=fft(UU);
%[b,a]=besself(10,2*pi*V*4);                                                     %10阶Bessel函数,截止频率=(Bitrate*4)GHz
%w=0:2*pi/(N*T):((2*pi*R/T)-2*pi/(N*T));   
%h=freqs(b,a,w);   
%for kk=(N*R/2+1):N*R
%   h(kk)=conj(h(N*R+2-kk));
%end        
%U=ifft(abs(h).*U_fft);
%U=abs(U);
%%%%%%%调试
U=UU;                                                                      %直接使用矩形NRZ脉冲
%for ii=1:N*R
%    if U(ii)==0
%         U(ii)=eps;
%    end
%end
 %%%%%%%%%%U为输出的PRBS

 %%%%%%%%
%激光器发射功率、线宽、啁啾和调制器的消光比
%激光器输出:A(t)=sqrt(P(t))*exp(j*fai(t))
%光源的相位噪声fai(t)包括两个部分:1.光源线宽造成的,对应于频率起伏;2.光源调制造成的(光功率变化)

%  figure(2)
%  plot(angle(A))
%  title('激光器输出信号的瞬态相位')
% 
%  figure(3)
%  plot(abs(fftshift(fft(A))).^2)
%  title('激光器输出功率谱')
% figure(4);
%t = (1:N*R)/(N*T); 
%B=A.*conj(A);
%plot(t,B)
%title('Optical Pulse Train')
eyediagram(A, 2*R, 2, R/2);

% figure(1);
% eyescat(A,V/2,R*V,R/2);                    %调制器输出波形眼图
%title('光发射机输出信号眼图')



%****************************************DPSK****************************
%****************************yk+*****************************************
H1=zeros(0,N*R);
H2=zeros(0,N*R);
 for l=-N*R/2:(N*R/2-1)
     f=l/(N*T);
     H1f=(exp(-i*2*pi*f*T)+exp(-i*theta)*exp(i*detaPHI))/2;
     H2f=(exp(-i*2*pi*f*T)-exp(-i*theta)*exp(i*detaPHI))/2;
     Hf=sqrt(eta)*exp(i*2*pi*f*(-0.5*detaTao)-i*2*pi^2*b2*Long*f.^2);%%% Hf+ 
     Hof=G*exp(-(f/(0.65*Bo)).^4);
     H1(l+N*R/2+1)=Hof*Hf*Hof*H1f;
     H2(l+N*R/2+1)=Hof*Hf*Hof*H2f;
 end
 Aw=fft(A);H1=fftshift(H1);
 Aw1=Aw.*H1;H1=ifftshift(H1);
 A1=ifft(Aw1);H2=fftshift(H2);
 Aw2=Aw.*H2;H2=ifftshift(H2);
 A2=ifft(Aw2);
 IA=A1.*conj(A1)-A2.*conj(A2);%%%光探测器输出的差分电流
 Aw=fft(IA);
 [b,a]=besself(5,2*pi*Be);
 w=((-N*R/2):(N*R/2-1))*2*pi/(N*T);
 Hes=freqs(b,a,w);
 Hes=fftshift(Hes);
 vtr_d_k1=ifft(abs(Hes).*Aw);%%
 
 %*****************************yk-****************************************
 H1=zeros(0,N*R);
 H2=zeros(0,N*R);
 for l=-N*R/2:(N*R/2-1)
     f=l/(N*T);
     H1f=(exp(-i*2*pi*f*T)+exp(-i*theta)*exp(i*detaPHI))/2;
     H2f=(exp(-i*2*pi*f*T)-exp(-i*theta)*exp(i*detaPHI))/2;
     Hf=sqrt(1-eta)*exp(i*2*pi*f*(0.5*detaTao)-i*2*pi^2*b2*Long*f.^2);%%% Hf- 
     Hof=G*exp(-(f/(0.65*Bo)).^4);
     H1(l+N*R/2+1)=Hof*Hf*Hof*H1f;
     H2(l+N*R/2+1)=Hof*Hf*Hof*H2f;
 end
 Aw=fft(A);H1=fftshift(H1);
 Aw1=Aw.*H1;H1=ifftshift(H1);
 A1=ifft(Aw1);H2=fftshift(H2);
 Aw2=Aw.*H2;H2=ifftshift(H2);
 A2=ifft(Aw2);
 IA=A1.*conj(A1)-A2.*conj(A2);%%%光探测器输出的差分电流
 Aw=fft(IA);
 [b,a]=besself(5,2*pi*Be);
 w=((-N*R/2):(N*R/2-1))*2*pi/(N*T);
 Hes=freqs(b,a,w);
 Hes=fftshift(Hes);
 vtr_d_k2=ifft(abs(Hes).*Aw);%%
 
 vtr_d_k=vtr_d_k1+vtr_d_k2;
 
 %%求矩阵mtx_v%%%
 term=zeros(1,N*R);%%中间变量,用于暂时存储一个数组
 for ii=1:2*M
     f=(ii-M-1)/T0;
     Hof=G*exp(-(f/(0.65*Bo)).^4);
     H1f=( ( exp(-i*2*pi*f*T)+exp(-i*theta)*exp(i*detaPHI) )/2 )*Hof;
     H2f=( ( exp(-i*2*pi*f*T)-exp(-i*theta)*exp(i*detaPHI) )/2 )*Hof;
     
     term=Aw1*conj(H1f)-Aw2*conj(H2f);
     w=(-N*R/2:(N*R/2-1))*2*pi/(N*T)-(ii-M-1)*2*pi/T0;
     %w=([0:N*R/2-1 -N*R/2:-1])*2*pi/(N*T)-(ii-M-1)*2*pi/T0;
     Hens=freqs(b,a,w);
     mtx_v(ii,:)=ifft(term.*Hens);    
 end
 
 %%求矩阵mtx_A%%
[mtx_A]=MXA(M,T0,T,detaPHI,Be,Bo,G,theta);

%%%%%%求vtr_z and vtr_b%%%
[vtr_U1,vtr_eig]=eig(mtx_A);
[vtr_U,value]=MXU(vtr_U1,vtr_eig,mtx_A,M);
vtr_lammda=real(value);
mtx_b=vtr_U'*mtx_v;
sigma=sqrt(N0/T0/2);
%w_t=normrnd(0,sigma,1,2*M)+i*normrnd(0,sigma,1,2*M);
for ii=1:N*R
    w_t=normrnd(0,sigma,1,2*M)+i*normrnd(0,sigma,1,2*M);
    vtr_b=mtx_b(:,ii);
    vtr_z=vtr_U'*(w_t.');
    n_k(ii)=sum( vtr_lammda.*abs(vtr_z+vtr_b./vtr_lammda).^2);
    nu_k(ii)=sum( vtr_b.*conj(vtr_b)./vtr_lammda);
end
y_k=real(vtr_d_k+n_k-nu_k);              






%eyediagram(y_k,2*R,2,R/2);
%figure(1);
%eyediagram(vtr_d_k,2*R,2,R/2);
%figure(2);
Ana_Res=zeros(1,6);
Ana_Res= SampleValueAnalyzer(y_k, N, R, 1-KK1);
OptTk=Ana_Res(1);%%%最佳判决时刻

Decth=Ana_Res(2);%%%最佳门限,直接设为0

dth=0;
xi_k=real( dth-vtr_d_k+nu_k);
%eyediagram(xi_k,R*2,2,R/2);
%figure(4)

%%%%%%%saddle point method 计算误码率
BER=zeros(1,N);
for ii=1:N
    ii
    jj=(ii-1)*R+16;
    xi=xi_k(jj);
    vtr_b=mtx_b(:,jj);
    vtr_alpha=(vtr_b.*conj(vtr_b))./vtr_lammda;
    vtr_beta=2*vtr_lammda*sigma^2;
    BER(ii)=SaddlePointAppro(vtr_alpha,vtr_beta,xi,1-KK1(ii));%****1-KK1(ii)
end
pp=0;
NN=N;
for ii=1:N
    
    if BER(ii)>=1||isinf(BER(ii))||isnan(BER(ii))
        BER(ii)=0;
        NN=NN-1;
    end
    pp=pp+BER(ii);
end
P_2dpsk_NRZ=pp/NN;
P_2dpsk_NRZ
%P_2dpsk_NRZ(oo+1)=pp/NN;
%end

%xx=8:14;

%p=polyfit(xx,log10(P_2dpsk_NRZ),5);
%xx1=8:0.01:14;
%plot(xx,log10(P_2dpsk_NRZ),'r*',xx1,polyval(p,xx1),'b-');
%title('2-NRZ-DPSK误码率性噪比仿真结果');
%xlabel('Eb/N0 (dB)');
%ylabel('log10(BER)');
%grid;
save BER P_2dpsk_NRZ;
%y=spline(log10(P_2dpsk_NRZ),xx,-9);


             

% %***************************************************************************** 
% %数据存储
% fid1=fopen('Fiber_BER.dat','a');                         
%'a'表示创建一个新文件或删除已存在的文件内容,并进行数据读写操作。
% fprintf(fid1,'%e  %e\n',P_pin_av_preamplifier,BER); 
% status=fclose('all');              
% %************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -