Physical Models
Models for optoelectronic devices (optic.models.devices
)
|
Optical Phase Modulator (PM). |
|
Optical Mach-Zehnder Modulator (MZM). |
|
Optical In-Phase/Quadrature Modulator (IQM). |
|
Polarization beam splitter (PBS). |
|
Optical 2 x 4 90° hybrid. |
|
Pin photodiode (PD). |
|
Balanced photodiode (BPD). |
|
Single polarization coherent optical front-end. |
|
Polarization multiplexed coherent optical front-end. |
|
Implement simple EDFA model. |
|
Laser model with Maxwellian random walk phase noise and RIN. |
|
Analog-to-digital converter (ADC) model. |
- adc(Ei, param)
Analog-to-digital converter (ADC) model.
- Parameters:
Ei (ndarray) – Input signal.
param (core.parameter) –
- Resampling parameters:
param.Fs_in : sampling frequency of the input signal [default: 1 sample/s]
param.Fs_out : sampling frequency of the output signal [default: 1 sample/s]
param.jitter_rms : root mean square (RMS) value of the jitter in seconds [default: 0 s]
param.nBits : number of bits used for quantization [default: 8 bits]
param.Vmax : maximum value for the ADC’s full-scale range [default: 1V]
param.Vmin : minimum value for the ADC’s full-scale range [default: -1V]
param.AAF : flag indicating whether to use anti-aliasing filters [default: True]
param.N : number of taps of the anti-aliasing filters [default: 201]
- Returns:
Eo – Resampled and quantized signal.
- Return type:
ndarray
- balancedPD(E1, E2, param=None)
Balanced photodiode (BPD).
- Parameters:
E1 (np.array) – Input optical field.
E2 (np.array) – Input optical field.
param (parameter object (struct), optional) –
Parameters of the photodiodes.
param.R: photodiode responsivity [A/W][default: 1 A/W]
param.Tc: temperature [°C][default: 25°C]
param.Id: dark current [A][default: 5e-9 A]
param.RL: impedance load [Ω] [default: 50Ω]
param.B bandwidth [Hz][default: 30e9 Hz]
param.Fs: sampling frequency [Hz] [default: 60e9 Hz]
param.fType: frequency response type [default: ‘rect’]
param.N: number of the frequency resp. filter taps. [default: 8001]
param.ideal: ideal PD?(i.e. no noise, no frequency resp.) [default: True]
- Returns:
ibpd – Balanced photocurrent.
- Return type:
np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
[2] K. Kikuchi, “Fundamentals of Coherent Optical Fiber Communications”, J. Lightwave Technol., JLT, vol. 34, nº 1, p. 157–179, jan. 2016.
- basicLaserModel(param=None)
Laser model with Maxwellian random walk phase noise and RIN.
- Parameters:
param (parameter object (struct), optional) –
Parameters of the laser.
param.P: laser power [W] [default: 10 dBm]
param.lw: laser linewidth [Hz] [default: 1 kHz]
param.RIN_var: variance of the RIN noise [default: 1e-20]
param.Fs: sampling rate [samples/s]
param.Ns: number of signal samples [default: 1e3]
- Returns:
optical_signal – Optical signal with phase noise and RIN.
- Return type:
np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
- coherentReceiver(Es, Elo, param=None)
Single polarization coherent optical front-end.
- Parameters:
Es (np.array) – Input signal optical field.
Elo (np.array) – Input LO optical field.
param (parameter object (struct), optional) – Parameters of the photodiodes.
- Returns:
s – Downconverted signal after balanced detection.
- Return type:
np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
[2] K. Kikuchi, “Fundamentals of Coherent Optical Fiber Communications”, J. Lightwave Technol., JLT, vol. 34, nº 1, p. 157–179, jan. 2016.
- edfa(Ei, param=None)
Implement simple EDFA model.
- Parameters:
Ei (np.array) – Input signal field.
param (parameter object (struct), optional) –
Parameters of the edfa.
param.G : amplifier gain in dB. The default is 20.
param.NF : EDFA noise figure in dB. The default is 4.5.
param.Fc : central optical frequency. The default is 193.1e12.
param.Fs : sampling frequency in samples/second.
- Returns:
Eo – Amplified noisy optical signal.
- Return type:
np.array
References
[1] R. -J. Essiambre,et al, “Capacity Limits of Optical Fiber Networks,” in Journal of Lightwave Technology, vol. 28, no. 4, pp. 662-701, 2010, doi: 10.1109/JLT.2009.2039464.
- hybrid_2x4_90deg(Es, Elo)
Optical 2 x 4 90° hybrid.
- Parameters:
Es (np.array) – Input signal optical field.
Elo (np.array) – Input LO optical field.
- Returns:
Eo – Optical hybrid outputs.
- Return type:
np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
[2] K. Kikuchi, “Fundamentals of Coherent Optical Fiber Communications”, J. Lightwave Technol., JLT, vol. 34, nº 1, p. 157–179, jan. 2016.
- iqm(Ai, u, param=None)
Optical In-Phase/Quadrature Modulator (IQM).
- Parameters:
Ai (scalar or np.array) – Amplitude of the optical field at the input of the IQM.
u (complex-valued np.array) – Modulator’s driving signal (complex-valued baseband).
param (parameter object (struct)) –
Object with physical/simulation parameters of the mzm.
param.Vpi: MZM’s Vpi voltage [V][default: 2 V]
param.VbI: I-MZM’s bias voltage [V][default: -2 V]
param.VbQ: Q-MZM’s bias voltage [V][default: -2 V]
param.Vphi: PM bias voltage [V][default: 1 V]
- Returns:
Ao – Modulated optical field at the output of the IQM.
- Return type:
complex-valued np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
- mzm(Ai, u, param=None)
Optical Mach-Zehnder Modulator (MZM).
- Parameters:
Ai (scalar or np.array) – Amplitude of the optical field at the input of the MZM.
u (np.array) – Electrical driving signal.
param (parameter object (struct)) –
Object with physical/simulation parameters of the mzm.
param.Vpi: MZM’s Vpi voltage [V][default: 2 V]
param.Vb: MZM’s bias voltage [V][default: -1 V]
- Returns:
Ao – Modulated optical field at the output of the MZM.
- Return type:
np.array
References
[1] G. P. Agrawal, Fiber-Optic Communication Systems. Wiley, 2021.
[2] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
- pbs(E, θ=0)
Polarization beam splitter (PBS).
- Parameters:
E ((N,2) np.array) – Input pol. multiplexed optical field.
θ (scalar, optional) – Rotation angle of input field in radians. The default is 0.
- Returns:
Ex ((N,) np.array) – Ex output single pol. field.
Ey ((N,) np.array) – Ey output single pol. field.
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
- pdmCoherentReceiver(Es, Elo, θsig=0, param=None)
Polarization multiplexed coherent optical front-end.
- Parameters:
Es (np.array) – Input signal optical field.
Elo (np.array) – Input LO optical field.
θsig (scalar, optional) – Input polarization rotation angle in rad. The default is 0.
param (parameter object (struct), optional) – Parameters of the photodiodes.
- Returns:
S – Downconverted signal after balanced detection.
- Return type:
np.array
References
[1] M. Seimetz, High-Order Modulation for Optical Fiber Transmission. em Springer Series in Optical Sciences. Springer Berlin Heidelberg, 2009.
[2] K. Kikuchi, “Fundamentals of Coherent Optical Fiber Communications”, J. Lightwave Technol., JLT, vol. 34, nº 1, p. 157–179, jan. 2016.
- photodiode(E, param=None)
Pin photodiode (PD).
- Parameters:
E (np.array) – Input optical field.
param (parameter object (struct), optional) –
Parameters of the photodiode.
param.R: photodiode responsivity [A/W][default: 1 A/W]
param.Tc: temperature [°C][default: 25°C]
param.Id: dark current [A][default: 5e-9 A]
param.Ipd_sat: saturation value of the photocurrent [A][default: 5e-3 A]
param.RL: impedance load [Ω] [default: 50Ω]
param.B bandwidth [Hz][default: 30e9 Hz]
param.Fs: sampling frequency [Hz] [default: None]
param.fType: frequency response type [default: ‘rect’]
param.N: number of the frequency resp. filter taps. [default: 8001]
param.ideal: ideal PD?(i.e. no noise, no frequency resp.) [default: True]
- Returns:
ipd – photocurrent.
- Return type:
np.array
References
[1] G. P. Agrawal, Fiber-Optic Communication Systems. Wiley, 2021.
- pm(Ai, u, Vπ)
Optical Phase Modulator (PM).
- Parameters:
Ai (scalar or np.array) – Amplitude of the optical field at the input of the PM.
u (np.array) – Electrical driving signal.
Vπ (scalar) – PM’s Vπ voltage.
- Returns:
Ao – Modulated optical field at the output of the PM.
- Return type:
np.array
References
[1] G. P. Agrawal, Fiber-Optic Communication Systems. Wiley, 2021.
Models for fiber optic channels (optic.models.channels
)
|
Simulate signal propagation through a linear fiber channel. |
|
Split-step Fourier method (symmetric, single-pol.). |
|
Run the Manakov split-step Fourier model (symmetric, dual-pol.). |
|
Implement a basic AWGN channel model. |
- awgn(sig, snr, Fs=1, B=1, complexNoise=True)
Implement a basic AWGN channel model.
- Parameters:
sig (np.array) – Input signal.
snr (scalar) – Signal-to-noise ratio in dB.
Fs (real scalar) – Sampling frequency. The default is 1.
B (real scalar) – Signal bandwidth, defined as the length of the frequency interval [-B/2, B/2]. The default is 1.
complexNoise (bool) – Generate complex-valued noise. The default is True.
- Returns:
Input signal plus noise.
- Return type:
np.array
References
[1] P. Massoud Salehi e J. Proakis, Digital Communications. McGraw-Hill Education, 2007.
- linearFiberChannel(Ei, param)
Simulate signal propagation through a linear fiber channel.
- Parameters:
Ei (np.array) – Input optical field.
param (parameter object (struct)) –
Object with physical/simulation parameters of the optical channel.
param.L: total fiber length [km][default: 50 km]
param.alpha: fiber attenuation parameter [dB/km][default: 0.2 dB/km]
param.D: chromatic dispersion parameter [ps/nm/km][default: 16 ps/nm/km]
param.Fc: carrier frequency [Hz] [default: 193.1e12 Hz]
param.Fs: sampling frequency [Hz] [default: None]
param.returnParameters: bool, return channel parameters [default: False]
- Returns:
Eo – Optical field at the output of the fiber.
- Return type:
np.array
References
[1] G. P. Agrawal, Fiber-Optic Communication Systems. Wiley, 2021.
[2] S. J. Savory, “Digital coherent optical receivers: Algorithms and subsystems”, IEEE Journal on Selected Topics in Quantum Electronics, vol. 16, nº 5, p. 1164–1179, set. 2010, doi: 10.1109/JSTQE.2010.2044751.
- manakovSSF(Ei, param)
Run the Manakov split-step Fourier model (symmetric, dual-pol.).
- Parameters:
Ei (np.array) – Input optical signal field.
Fs (scalar) – Sampling frequency in Hz.
param (parameter object (struct)) –
Object with physical/simulation parameters of the optical channel.
param.Ltotal: total fiber length [km][default: 400 km]
param.Lspan: span length [km][default: 80 km]
param.hz: step-size for the split-step Fourier method [km][default: 0.5 km]
param.alpha: fiber attenuation parameter [dB/km][default: 0.2 dB/km]
param.D: chromatic dispersion parameter [ps/nm/km][default: 16 ps/nm/km]
param.gamma: fiber nonlinear parameter [1/W/km][default: 1.3 1/W/km]
param.Fc: carrier frequency [Hz] [default: 193.1e12 Hz]
param.Fs: simulation sampling frequency [samples/second][default: None]
param.prec: numerical precision [default: np.complex128]
param.amp: ‘edfa’, ‘ideal’, or ‘None. [default:’edfa’]
param.NF: edfa noise figure [dB] [default: 4.5 dB]
param.maxIter: max number of iter. in the trap. integration [default: 10]
param.tol: convergence tol. of the trap. integration.[default: 1e-5]
param.nlprMethod: adap step-size based on nonl. phase rot. [default: True]
param.maxNlinPhaseRot: max nonl. phase rot. tolerance [rad][default: 2e-2]
param.prgsBar: display progress bar? bolean variable [default:True]
param.saveSpanN: specify the span indexes to be outputted [default:[]]
param.returnParameters: bool, return channel parameters [default: False]
- Returns:
Ech (np.array) – Optical signal after nonlinear propagation.
param (parameter object (struct)) – Object with physical/simulation parameters used in the split-step alg.
References
[1] D. Marcuse, C. R. Menyuk, e P. K. A. Wai, “Application of the Manakov-PMD equation to studies of signal propagation in optical fibers with randomly varying birefringence”, Journal of Lightwave Technology, vol. 15, nº 9, p. 1735–1745, 1997, doi: 10.1109/50.622902.
[2] P. Serena, C. Lasagni, S. Musetti, e A. Bononi, “On Numerical Simulations of Ultra-Wideband Long-Haul Optical Communication Systems”, Journal of Lightwave Technology, vol. 38, nº 5, p. 1019–1031, 2020, doi: 10.1109/JLT.2019.2938580.
[3] O. V. Sinkin, R. Holzlöhner, J. Zweck, e C. R. Menyuk, “Optimization of the split-step Fourier method in modeling optical-fiber communications systems”, Journal of Lightwave Technology, vol. 21, nº 1, p. 61–68, jan. 2003, doi: 10.1109/JLT.2003.808628.
- ssfm(Ei, param=None)
Split-step Fourier method (symmetric, single-pol.).
- Parameters:
Ei (np.array) – Input optical signal field.
Fs (scalar) – Sampling frequency in Hz.
param (parameter object (struct)) –
Object with physical/simulation parameters of the optical channel.
param.Ltotal: total fiber length [km][default: 400 km]
param.Lspan: span length [km][default: 80 km]
param.hz: step-size for the split-step Fourier method [km][default: 0.5 km]
param.alpha: fiber attenuation parameter [dB/km][default: 0.2 dB/km]
param.D: chromatic dispersion parameter [ps/nm/km][default: 16 ps/nm/km]
param.gamma: fiber nonlinear parameter [1/W/km][default: 1.3 1/W/km]
param.Fc: carrier frequency [Hz] [default: 193.1e12 Hz]
param.Fs: simulation sampling frequency [samples/second][default: None]
param.prec: numerical precision [default: np.complex128]
param.amp: ‘edfa’, ‘ideal’, or ‘None. [default:’edfa’]
param.NF: edfa noise figure [dB] [default: 4.5 dB]
param.prgsBar: display progress bar? bolean variable [default:True]
param.returnParameters: bool, return channel parameters [default: False]
- Returns:
Ech (np.array) – Optical signal after nonlinear propagation.
param (parameter object (struct)) – Object with physical/simulation parameters used in the split-step alg.
References
[1] G. P. Agrawal, Nonlinear Fiber Optics, Elsevier Science, 2013.
[2] O. V. Sinkin, R. Holzlöhner, J. Zweck, e C. R. Menyuk, “Optimization of the split-step Fourier method in modeling optical-fiber communications systems”, Journal of Lightwave Technology, vol. 21, nº 1, p. 61–68, jan. 2003, doi: 10.1109/JLT.2003.808628.
Models for optical amplifiers (optic.models.amplification
)
|
Plot the optical spectrum of the signal in X and Y polarizations. |
|
Calculates the optical spectrum of the signal. |
|
Routine used to solve the EDFA rate and propagation equations, considering the spectral Giles algorithm. |
|
Routine used to solve the EDFA rate and propagation equations, considering the spatial Giles algorithm. |
|
Determines the number of carriers at the metastable level, considering the spectral and spatial Giles algorithm. |
|
Determines the overlap integral between the field envelope and the doping profile. |
|
|
|
|
|
|
|
- OSA(x, Fs, Fc=193100000000000.0)
Plot the optical spectrum of the signal in X and Y polarizations.
- Parameters:
x (np.array) – Signal
Fs (scalar) – Sampling frequency in Hz.
Fc (scalar, optional) – Central optical frequency. The default is 193.1e12.
- Return type:
plot
- getN2Pop(P, properties)
Determines the number of carriers at the metastable level, considering the spectral and spatial Giles algorithm.
- Parameters:
P (np.array) – Signal power (signal + pump + ASE).
properties (object with constants and edfa parameters.)
- Returns:
norm2 – Number of carriers at the metastable level.
- Return type:
np.array
- getOverlapInt(n2_norm, properties, param_edf)
Determines the overlap integral between the field envelope and the doping profile.
- Parameters:
n2_norm (np.array) – Number of carriers at the metastable level.
properties (object) – With constants and edfa parameters.
param_edf (object) – With edf parameters.
- Returns:
overlapIntegral – Overlap integral between the field envelope and the doping profile.
- Return type:
np.array
- get_spectrum(x, Fs, Fc, xunits='m', yunits='dBm', window=<function window_none>, sides='twosided')
Calculates the optical spectrum of the signal.
- Parameters:
x (np.array) – Signal
Fs (scalar) – Sampling frequency in Hz.
Fc (scalar, optional) – Central optical frequency. The default is 193.1e12.
- Returns:
spectrum (np.array) – Signal’s FFT
frequency (np.array) – Frequency array @ Fc.
- gilesSpatial(z, P, properties, param_edf)
Routine used to solve the EDFA rate and propagation equations, considering the spatial Giles algorithm.
- Parameters:
P (np.array) – Signal power (signal + pump + ASE).
z (scalar (float)) – Position - erbium doped fiber [0 - edf length].
properties (object with constants and edfa parameters.)
param_edf (object with constants and edf parameters.)
- Returns:
Eo – Increment of the amplified optical signal.
- Return type:
np.array
- gilesSpectrum(z, P, properties)
Routine used to solve the EDFA rate and propagation equations, considering the spectral Giles algorithm.
- Parameters:
P (np.array) – Signal power (signal + pump + ASE).
z (scalar (float)) – Position - erbium doped fiber [0 - edf length].
properties (object with constants and edfa parameters.)
- Returns:
Eo – Increment of the amplified optical signal.
- Return type:
np.array
Advanced models for optical transmitters (optic.models.tx
)
|
Implement a simple WDM transmitter. |
- simpleWDMTx(param)
Implement a simple WDM transmitter.
Generates a complex baseband waveform representing a WDM signal with arbitrary number of carriers
- Parameters:
param (system parameters of the WDM transmitter.) –
optic.core.parameter object.
param.M: modulation order [default: 16].
param.constType: ‘qam’ or ‘psk’ [default: ‘qam’].
param.Rs: carrier baud rate [baud][default: 32e9].
param.SpS: samples per symbol [default: 16].
param.Nbits: total number of bits per carrier [default: 60000].
param.pulse: pulse shape [‘nrz’, ‘rrc’][default: ‘rrc’].
param.Ntaps: number of coefficients of the rrc filter [default: 4096].
param.alphaRRC: rolloff do rrc filter [default: 0.01].
param.Pch_dBm: launched power per WDM channel [dBm][default:-3 dBm].
param.Nch: number of WDM channels [default: 5].
param.Fc: central frequency of the WDM spectrum [Hz][default: 193.1e12 Hz].
param.lw: laser linewidth [Hz][default: 100 kHz].
param.freqSpac: frequency spacing of the WDM grid [Hz][default: 40e9 Hz].
param.Nmodes: number of polarization modes [default: 1].
- Returns:
sigTxWDM (np.array) – WDM signal.
symbTxWDM (np.array) – Array of symbols per WDM carrier.
param (optic.core.parameter object) – System parameters for the WDM transmitter.