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 hybrid 2 x 4 90°. |
|
Variable optical attenuator (VOA). |
|
Pin photodiode (PD). |
|
Balanced photodiode pair (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. |
|
Digital-to-analog converter (DAC) model. |
- adc(Ei, param)
Analog-to-digital converter (ADC) model.
- Parameters:
Ei (ndarray) – Input signal.
param (optic.utils.parameters object, optional) –
Parameters of the ADC model.
param.inFs : sampling frequency of the input signal [samples/s][default: 1 sample/s]
param.outFs : sampling frequency of the output signal [samples/s][default: 1 sample/s]
param.jitter : jitter rms in seconds [s][default: 0 s]
param.nBits : number of bits used for quantization [default: 8 bits]
param.ENOB : effective number of bits of the ADC [default: 8 bits]
param.Vmax : maximum value for the ADC’s full-scale range [V][default: 1V]
param.Vmin : minimum value for the ADC’s full-scale range [V][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
Notes
The input signal will be clipped to the range [Vmin, Vmax] before quantization.
If the effective number of bits (ENOB) is less than nBits, additional noise will be added to the output signal to model the reduced resolution of the ADC. The noise power is calculated based on the difference between the ideal quantization noise power (corresponding to nBits) and the actual quantization noise power (corresponding to ENOB).
If AAF is enabled, anti-aliasing filters will be applied to the input signal before resampling and to the output signal after quantization to mitigate aliasing effects.
- balancedPD(E1, E2, param=None)
Balanced photodiode pair (BPD).
- Parameters:
E1 (np.array) – Input optical field.
E2 (np.array) – Input optical field.
param (optic.utils.parameters object, optional) –
Parameters of the photodiode models.
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: 255].
param.ideal: ideal PD?(i.e. no noise, no frequency resp.) [default: True].
param.seed: seed for the random number generator [default: None].
- 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 (optic.utils.parameters object, optional) –
Parameters of the laser model.
param.P: laser power [dBm] [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]
param.seed: random seed for noise generation [default: None]
param.freqShift: frequency shift with respect to the central simulation frequency [Hz] [default: 0 Hz]
- 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, paramFE=None, paramPD=None)
Single polarization coherent optical front-end.
- Parameters:
Es (np.array) – Input signal optical field.
Elo (np.array) – Input LO optical field.
paramFE (parameter object (struct), optional) –
Parameters of the optical frontend:
paramFE.Fs : simulation sampling frequency [samples/s].
paramFE.phaseImb: phase imbalance of the I/Q [rad].
paramFE.ampImb: amplitude imbalance of the I/Q [dB].
paramFE.timeSkew: delay of the I of the I/Q [s].
paramPD (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.
- dac(Ei, param)
Digital-to-analog converter (DAC) model.
- Parameters:
Ei (ndarray) – Input signal.
param (optic.utils.parameters object, optional) –
Parameters of the DAC model.
param.inFs : sampling frequency of the input signal [samples/s][default: 1 sample/s]
param.outFs : sampling frequency of the output signal [samples/s][default: 1 sample/s]
param.nBits : number of bits used for quantization [default: 8 bits]
param.ENOB : effective number of bits of the DAC [default: 8 bits]
param.jitter : jitter rms in seconds [s][default: 0 s]
param.Vpp : peak-to-peak voltage of the DAC’s output signal [V][default: 2 V]
param.AIF : flag indicating whether to use anti-imaging filters [default: True]
param.N : number of taps of the anti-imaging filters [default: 201]
- Returns:
Eo – Resampled and quantized signal.
- Return type:
ndarray
Notes
The input signal will be clipped to the range [Vmin, Vmax] before quantization.
If AIF is enabled, anti-imaging filters will be applied to the output signal after quantization to mitigate imaging effects.
- edfa(Ei, param=None)
Implement simple EDFA model.
- Parameters:
Ei (np.array) – Input signal field.
param (optic.utils.parameters object, optional) –
Parameters of the EDFA model.
param.G : amplifier gain [dB][default: 20 dB]
param.NF : EDFA noise figure [dB][default: 4.5 dB]
param.Fc : central optical frequency [Hz][default: 193.1 THz]
param.Fs : sampling frequency in [samples/s]
param.seed : random seed for noise generation [default: None]
- 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.
- 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 (optic.utils.parameters object, optional) –
Parameters of the MZM models.
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 (optic.utils.parameters object, optional) –
Parameters of the MZM model.
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.
- opticalHybrid2x4(Es, Elo)
Optical hybrid 2 x 4 90°.
- 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.
- 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, paramFE, paramPD=None)
Polarization multiplexed coherent optical front-end.
- Parameters:
Es (np.array) – Input signal optical field.
Elo (np.array) – Input LO optical field.
paramFE (parameter object (struct), optional) –
Parameters of the optical frontend:
paramFE.Fs : simulation sampling frequency [samples/s].
paramFE.polRotation : input polarization rotation angle [rad].
paramFE.pdl : polarization dependent loss [dB]. If > 0, loss is on X polarization. If < 0, loss is on Y polarization.
paramFE.polDelay : polarization delay [s]. If > 0, delay is on X polarization. If < 0, delay is on Y polarization.
paramFE.polX.phaseImb: phase imbalance of the I/Q of the X polarization [rad].
paramFE.polX.ampImb: amplitude imbalance of the I/Q of the X polarization [dB].
paramFE.polX.skewI: delay of the I of the X polarization [s].
paramFE.polX.skewQ: delay of the Q of the X polarization [s].
paramFE.polY.phaseImb: phase imbalance of the I/Q of the Y polarization [rad].
paramFE.polY.ampImb: amplitude imbalance of the I/Q of the Y polarization [dB].
paramFE.polY.skewI: delay of the I of the Y polarization [s].
paramFE.polY.skewQ: delay of the Q of the Y polarization [s].
paramPD (parameter object (struct), optional) – Parameters of the photodiodes (see photodiode model documentation)
- 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 (optic.utils.parameters object, optional) –
Parameters of the photodiode model.
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: 255]
param.ideal: consider ideal photodiode (i.e. \(i_{pd}(t) = R|E(t)|^2\)) [default: False]
param.shotNoise: add shot noise to photocurrent. [default: True]
param.thermalNoise: add thermal noise to photocurrent. [default: True]
param.currentSaturation: consider photocurrent saturation. [default: False]
param.bandwidthLimitation: consider bandwidth limitation. [default: True]
param.seed: seed for the random number generator [default: None]
- 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.
- voa(E, A=0)
Variable optical attenuator (VOA).
- Parameters:
E (np.array) – Input optical field.
A (float) – attenuation [dB][default: 0 dB]
- Returns:
Eo – Output optical field.
- 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, param)
Implement a basic AWGN channel model.
- Parameters:
sig (np.array) – Input signal.
param (optic.utils.parameters object) –
Physical/simulation parameters of the AWGN channel.
param.snr: signal-to-noise ratio [dB][default: 20 dB]
param.Fs: simulation sampling frequency [samples/second][default: 1]
param.B: signal bandwidth [Hz][default: 1]
param.complexNoise: boolean variable, add complex noise? [default: True]
param.seed: seed for the random number generator [default: None]
- 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 (optic.utils.parameters object) –
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: 17 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.
param (optic.utils.parameters object) –
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.seed: seed for the random number generator [default: None]
param.returnParameters: bool, return channel parameters [default: False]
- Returns:
Ech (np.array) – Optical signal after nonlinear propagation.
param (optic.utils.parameters object) – 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.
param (optic.utils.parameters object) –
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.seed: seed for the random number generator [default: None]
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 (optic.utils.parameters object) – 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.
xunits (str, optional) – Units for the frequency axis: ‘m’ for wavelength in meters or ‘Hz’ for frequency in Hz. The default is ‘m’.
yunits (str, optional) – Units for the power spectral density: ‘dBm’ or linear. The default is ‘dBm’.
window (callable, optional) – Windowing function applied before computing the spectrum. The default is mlab.window_none.
sides (str, optional) – Specifies which sides of the spectrum to return: ‘twosided’ or ‘onesided’. The default is ‘twosided’.
- 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. |
|
Generate a optical PAM signal. |
- pamTransmitter(param)
Generate a optical PAM signal.
- Parameters:
param (optic.core.parameter object) –
Parameters of the PAM transmitter.
param.M: modulation order [default: 4].
param.Rs: symbol rate [baud][default: 32e9].
param.SpS: samples per symbol [default: 16].
param.probDist: pmf type of the symbol source, either ‘uniform’ or ‘maxwell-boltzmann’ [default: ‘uniform’].
param.shapingFactor: shaping factor of the symbols [default: 0].
param.seed: seed for the random number generator [default: None].
param.nBits: total number of bits [default: 40000].
param.pulseType: pulse shape [‘nrz’, ‘rrc’][default: ‘rrc’].
param.nFilterTaps: number of coefficients of the rrc filter [default: 4096].
param.pulseRollOff: rolloff do rrc filter [default: 0.01].
param.mzmVpi: MZM Vpi [V][default: 3 V].
param.mzmVb: MZM bias voltage [V][default: 1
param.mzmScale: MZM modulation scale factor Vrf/Vpi [default: 0.25].
param.power: optical output power [dBm][default:-3 dBm].
param.nPolModes: number of polarization modes [default: 1].
param.returnParam: whether to return the parameter object [default: False].
- Returns:
sigTx (np.array) – PAM signal.
symbTx (np.array) – Array of symbols.
param (optic.core.parameter object) – System parameters for the PAM transmitter.
- simpleWDMTx(param)
Implement a simple WDM transmitter.
Generates a complex baseband waveform representing a WDM signal with arbitrary number of carriers
- Parameters:
param (optic.core.parameter object) –
Parameters of the WDM transmitter.
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.probDist: pmf type of the symbol source, either ‘uniform’ or ‘maxwell-boltzmann’ [default: ‘uniform’].
param.shapingFactor: shaping factor of the symbols [default: 0].
param.seed: seed for the random number generator [default: None].
param.nBits: total number of bits per carrier [default: 60000].
param.pulseType: pulse shape [‘nrz’, ‘rrc’][default: ‘rrc’].
param.nFilterTaps: number of coefficients of the rrc filter [default: 1024].
param.pulseRollOff: rolloff do rrc filter [default: 0.01].
param.mzmScale: MZM modulation scale factor Vrf/Vpi [default: 0.5].
param.powerPerChannel: launched power per WDM channel [dBm][default:-3 dBm].
param.nChannels: number of WDM channels [default: 5].
param.Fc: central frequency of the WDM spectrum [Hz][default: 193.1e12 Hz].
param.laserLinewidth: laser linewidth [Hz][default: 100 kHz].
param.wdmGridSpacing: frequency spacing of the WDM grid [Hz][default: 40e9 Hz].
param.nPolModes: number of polarization modes [default: 1].
param.prgsBar: display progress bar? [default: True].
- 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.
Perturbation models for fiber nonlinear interference (optic.models.perturbation)
|
Calculates the coefficients for the intrachannel nonlinear first-order perturbation model. |
|
Fast calculation of the first-order perturbation model. |
|
Fast calculation of the first-order perturbation model with reduced number of coefficients. |
|
Calculates the intrachannel NLIN via first-order perturbation models. |
- calcNLINperturbation(C_ifwm, C_ixpm, C_ispm, x, y, prec=<class 'numpy.complex64'>)
Fast calculation of the first-order perturbation model.
- Parameters:
C_ifwm (ndarray of shape (2L+1, 2L+1)) – Nonlinear coefficient matrix for intrachannel four-wave mixing (IFWM).
C_ixpm (ndarray of shape (2L+1, 2L+1)) – Nonlinear coefficient matrix for intrachannel cross-phase modulation (IXPM).
C_ispm (float) – Scalar nonlinear coefficient for intrachannel self-phase modulation (SPM).
x (ndarray of shape (N,)) – Input signal for polarization X (complex-valued).
y (ndarray of shape (N,)) – Input signal for polarization Y (complex-valued).
prec (data-type, optional) – Precision of the computation (
np.complex64ornp.complex128), by defaultnp.complex64.
- Returns:
dx (ndarray of shape (N,)) – Nonlinear perturbation waveform for polarization X.
dy (ndarray of shape (N,)) – Nonlinear perturbation waveform for polarization Y.
phi_ixpm_x (ndarray of shape (N,)) – Phase rotation due to cross-phase modulation affecting polarization X.
phi_ixpm_y (ndarray of shape (N,)) – Phase rotation due to cross-phase modulation affecting polarization Y.
References
[1] Z. Tao, et al., “Analytical Intrachannel Nonlinear Models to Predict the Nonlinear Noise Waveform,” Journal of Lightwave Technology, vol. 33, no. 10, pp. 2111-2119, 2015.
[2] E. P. da Silva, et al., “Perturbation-Based FEC-Assisted Iterative Nonlinearity Compensation for WDM Systems,” Journal of Lightwave Technology, vol. 37, no. 3, pp. 875-881, 2019.
- calcNLINperturbationSimplified(C_ifwm, C_ixpm, C_ispm, x, y, coeffTol=-20, prec=<class 'numpy.complex64'>)
Fast calculation of the first-order perturbation model with reduced number of coefficients.
- Parameters:
C_ifwm (ndarray of shape (M,)) – Coefficient matrix for the Inverse Fourier-weighted filter model.
C_ixpm (ndarray of shape (M,)) – Coefficient matrix for the Inverse XPM model.
C_ispm (scalar) – Coefficient for the Inverse Single-Phase Modulation model.
x (ndarray of shape (N,)) – Input signal for the X component (complex-valued).
y (ndarray of shape (N,)) – Input signal for the Y component (complex-valued).
coeffTol (float) – Coefficient magnitude tolerance in dB. Coefficients with a magnitude below this threshold (in dB) are excluded from the calculation to reduce computational complexity. Default is -20 dB.
prec (dtype, optional) – The precision of the computation. Default is
np.complex64.
- Returns:
dx (ndarray of shape (N,)) – The computed result for the X component after processing.
dy (ndarray of shape (N,)) – The computed result for the Y component after processing.
phi_ixpm_x (ndarray of shape (N,)) – Phase information related to the XPM effect on the X component.
phi_ixpm_y (ndarray of shape (N,)) – Phase information related to the XPM effect on the Y component.
References
[1] Z. Tao, et al., “Analytical Intrachannel Nonlinear Models to Predict the Nonlinear Noise Waveform,” Journal of Lightwave Technology, vol. 33, no. 10, pp. 2111-2119, 2015.
[2] E. P. da Silva, et al., “Perturbation-Based FEC-Assisted Iterative Nonlinearity Compensation for WDM Systems,” Journal of Lightwave Technology, vol. 37, no. 3, pp. 875-881, 2019.
- calcPertCoeffMatrix(param)
Calculates the coefficients for the intrachannel nonlinear first-order perturbation model.
- Parameters:
param (optic.utils.parameters object) –
Object with physical/simulation parameters of the optical channel.
param.D : chromatic dispersion parameter [ps/nm/km] [default: 17 ps/nm/km]
param.alpha : fiber attenuation parameter [dB/km] [default: 0.2 dB/km]
param.lspan : span length [km] [default: 50 km]
param.length : total fiber length [km] [default: 800 km]
param.pulseWidth : pulse width (fraction of symbol period) [default: 0.5]
param.gamma : fiber nonlinear coefficient [1/W/km] [default: 1.3 1/W/km]
param.Fc : carrier frequency [THz] [default: 193.2e12 Hz]
param.powerWeighted : power-weighted coefficient calculation? Boolean variable [default: False]
param.Rs : symbol rate [baud] [default: 32e9 baud]
param.powerWeightN : power-weighting order [default: 10]
param.matrixOrder : nonlinear memory matrix order [default: 25]
- Returns:
C (ndarray of shape (2L+1, 2L+1)) – Matrix of perturbation coefficients for nonlinear impairments.
C_ifwm (ndarray of shape (2L+1, 2L+1)) – Nonlinear coefficient matrix for intrachannel four-wave mixing (IFWM).
C_ixpm (ndarray of shape (2L+1, 2L+1)) – Nonlinear coefficient matrix for intrachannel cross-phase modulation (IXPM).
C_ispm (float) – Scalar nonlinear coefficient for intrachannel self-phase modulation (SPM).
References
[1] Z. Tao, et al., “Analytical Intrachannel Nonlinear Models to Predict the Nonlinear Noise Waveform,” Journal of Lightwave Technology, vol. 33, no. 10, pp. 2111-2119, 2015.
- perturbationNLIN(Ein, param)
Calculates the intrachannel NLIN via first-order perturbation models.
- Parameters:
Ein (ndarray of shape (N, 2)) – Input signal for dual-polarization (complex-valued). The first column represents the X polarization, and the second column represents the Y polarization.
param (optic.utils.parameters object) –
Object with physical/simulation parameters of the optical channel.
param.D : chromatic dispersion parameter [ps/nm/km] [default: 17 ps/nm/km]
param.alpha : fiber attenuation parameter [dB/km] [default: 0.2 dB/km]
param.lspan : span length [km] [default: 50 km]
param.length : total fiber length [km] [default: 800 km]
param.pulseWidth : pulse width (fraction of symbol period) [default: 0.5]
param.gamma : fiber nonlinear coefficient [1/W/km] [default: 1.3 1/W/km]
param.Fc : carrier frequency [THz] [default: 193.2e12 Hz]
param.powerWeighted : power-weighted coefficient calculation? Boolean variable [default: False]
param.Rs : symbol rate [baud] [default: 32e9 baud]
param.powerWeightN : power-weighting order [default: 10]
param.matrixOrder : nonlinear memory matrix order [default: 25]
param.mode : ‘AM’ for standard perturbation calculation or ‘AMR’ for reduced complexity calculation [default: ‘AM’]
param.Pin : launch power per channel [dBm] [default: 0 dBm]
param.coeffTol : threshold for ignoring small perturbation coefficients [dB] [default: -20 dB]
param.prec : numerical precision [default: np.complex128]
- Returns:
nlin – Nonlinear perturbation for dual-polarization signals. The first column represents the X polarization, and the second column represents the Y polarization.
- Return type:
ndarray of shape (N, 2)
References
[1] Z. Tao, et al., “Analytical Intrachannel Nonlinear Models to Predict the Nonlinear Noise Waveform,” Journal of Lightwave Technology, vol. 33, no. 10, pp. 2111-2119, 2015.
[2] E. P. da Silva, et al., “Perturbation-Based FEC-Assisted Iterative Nonlinearity Compensation for WDM Systems,” Journal of Lightwave Technology, vol. 37, no. 3, pp. 875-881, 2019.