-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathSNR.m~
80 lines (70 loc) · 2.68 KB
/
SNR.m~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
h= 6.626E-34; % [J s]
c= 299792458; % [m/s]
q= 1.602E-19; % [A s]
K_B= 1.35E-23; % [J/K]
Carrier_NPtos_Bit= 64;
Lambda_0= 1.550E-6; % 1500 nm -> [m]
Br= 1E-10; % 0.1nm -> [m]
Network_r_BW= c* Br/ (Lambda_0* Lambda_0); % [Hz] 0.1 nm reference -> frequency range
% n(Network_r_BW)
sim_BW= 6.4E11; % simulation bandwidth
EDFAgain= 27.0; % [dB]
Network_EDFAgain= 10.0^(EDFAgain/ 20.0); % gain in amplitude
Network_Efilt_CutOff= 7; % [GHz] detector electrical output low-pass filter
Network_Ofilt_CutOff= 17.5; % [GHz] pre detector optical input bandpass filter
FAtt2= -28; % [dB]
Network_FAtt2= 10^(FAtt2/ 20); % [1]
Pmean_EDFAin= 1.264915e-06;
Pmean_EDFAout= 6.339590e-04;
Pmean_Rxin= 1.004757e-06;
% OSNR
G= Network_EDFAgain^2; % 1 EDFA power gain
n_sp= 3.5; % [1]
nu= c/Lambda_0; % [Hz]
S_sp= (G - 1)* n_sp* h* nu; % [J]
P_N= S_sp* sim_BW; % [W]
P_ASE= 2* P_N; % [W]
% Ptotal_EDFAout= Pmean_EDFAout* Carrier_NPtos_Bit; % Porque?
Ptotal_EDFAout= Pmean_EDFAout;
OSNR_sim_BW= Ptotal_EDFAout/P_ASE;
OSNR_sim_BW_dB= 10* log(OSNR_sim_BW,10);
% n(OSNR_sim_BW), n(P_ASE)
OSNR_r_BW_dB= OSNR_sim_BW_dB+ 10* log( (sim_BW/ Network_r_BW),10);
n(OSNR_r_BW_dB);
% OSNR theoretical check
SNR_out= G* Ptotal_EDFAout/ (4* S_sp* sim_BW);
% n(SNR_out)
SNR_out_dB= 10* log(SNR_out,10);
SNR_out_dB;
% Shot noise
M= 10; % [1] APD amplifier gain
F_A= 5.5; % [1] exceess noise factor APD
R= 1.2; % [A/W]detector responsivity for 1550 nm
P_in= Pmean_Rxin;
I_d= 1E-8; % [A]
B_e= 1E9* Network_Efilt_CutOff; % [Hz] effective noise bandwidth (assumed =) electrical filter cut-off frequency
sigma_shot2= 2* q* M^2* F_A* (R* P_in+ I_d)* B_e;
n(sigma_shot2);
% Shot noise - ASE power incorporated
P_ASE_downstream= P_ASE* Network_FAtt2* Network_FAtt2;
P_ASE_filtered= P_ASE_downstream* (2E9* Network_Ofilt_CutOff/ sim_BW);
sigma_shot_wASE2= 2* q* M^2* F_A* (R*(P_in+P_ASE_filtered)+ I_d)* B_e;
n(sigma_shot_wASE2);
% Thermal noise
T= 298.17; % [K]
R_L= 50; % [J/(s A^2)]
sigma_thermal2= 4* K_B* T* B_e/R_L;
% DSNR
sigma_noise2= sigma_thermal2+ sigma_shot_wASE2;
DSNR= (R* M* P_in)^2/ sigma_noise2;
DSNRdB= 10* log(DSNR,10);
n(DSNRdB), n(DSNR), n(sigma_thermal2+ sigma_shot_wASE2);
% Comparacion Lema 1997
B_o= 2E9* Network_Ofilt_CutOff;
sigma_S_ASE2= 4* (B_e/ B_o)* M^2* (R^2* P_in* P_ASE_filtered);
sigma_ASE_ASE2= (2* B_o - B_e)* (B_e/ B_o^2)* (M* R* P_ASE_filtered)^2;
% n(sigma_S_ASE2), n(sigma_ASE_ASE2), n(sigma_thermal2+ sigma_shot_wASE2+ sigma_S_ASE2+ sigma_ASE_ASE2);
sigma_noise2_alt= sigma_thermal2+ sigma_shot_wASE2+ sigma_S_ASE2+ sigma_ASE_ASE2;
DSNR_alt= (R* M* P_in)^2/ sigma_noise2_alt;
DSNRdB_alt= 10* log(DSNR_alt,10);
n(DSNR_alt), n(DSNRdB_alt);