Optical Channel Models

This module provides layers and functions that implement channel models for (fiber) optical communications.The currently only available model is the split-step Fourier method (SSFM, for dual- andsingle-polarization) that can be combined with an Erbium-doped amplifier (EDFA).

The following code snippets show how to setup and simulate the transmissionover a single-mode fiber (SMF) by using the split-step Fourier method.

# init fiberspan=sionna.phy.channel.optical.SSFM(alpha=0.046,beta_2=-21.67,f_c=193.55e12,gamma=1.27,length=80,n_ssfm=200,n_sp=1.0,t_norm=1e-12,with_amplification=False,with_attenuation=True,with_dispersion=True,with_nonlinearity=True,dtype=tf.complex64)# init amplifieramplifier=sionna.phy.channel.optical.EDFA(g=4.0,f=2.0,f_c=193.55e12,dt=1.0e-12)@tf.functiondefsimulate_transmission(x,n_span):y=x# simulate n_span fiber spansfor_inrange(n_span):# simulate single spany=span(y)# simulate amplifiery=amplifier(y)returny

Running the channel model is done as follows:

# x is the optical input signal, n_span the number of spansy=simulate_transmission(x,n_span)

For further details, the tutorial“Optical Channel with Lumped Amplification” provides more sophisticated examples of how to use this module.

For the purpose of the present document, the following symbols apply:

\(T_\text{norm}\)

Time normalization for the SSFM in\((\text{s})\)

\(L_\text{norm}\)

Distance normalization the for SSFM in\((\text{m})\)

\(W\)

Bandwidth

\(\alpha\)

Attenuation coefficient in\((1/L_\text{norm})\)

\(\beta_2\)

Group velocity dispersion coeff. in\((T_\text{norm}^2/L_\text{norm})\)

\(f_\mathrm{c}\)

Carrier frequency in\(\text{(Hz)}\)

\(\gamma\)

Nonlinearity coefficient in\((1/L_\text{norm}/\text{W})\)

\(\ell\)

Fiber length in\((L_\text{norm})\)

\(h\)

Planck constant

\(N_\mathrm{SSFM}\)

Number of SSFM simulation steps

\(n_\mathrm{sp}\)

Spontaneous emission factor of Raman amplification

\(\Delta_t\)

Normalized simulation time step in\((T_\text{norm})\)

\(\Delta_z\)

Normalized simulation step size in\((L_\text{norm})\)

\(G\)

Amplifier gain

\(F\)

Amplifier’s noise figure

\(\rho_\text{ASE}\)

Noise spectral density

\(P\)

Signal power

\(\hat{D}\)

Linear SSFM operator[A2012]

\(\hat{N}\)

Non-linear SSFM operator[A2012]

\(f_\textrm{sim}\)

Simulation bandwidth

Remark: Depending on the exact simulation parameters, the SSFM algorithm may requiredtype=tf.complex128 for accurate simulation results. However, this may increase the simulation complexity significantly.

classsionna.phy.channel.SSFM(alpha=0.046,beta_2=-21.67,f_c=193550000000000.0,gamma=1.27,half_window_length=0,length=80,n_ssfm=1,n_sp=1.0,sample_duration=1.0,t_norm=1e-12,with_amplification=False,with_attenuation=True,with_dispersion=True,with_manakov=False,with_nonlinearity=True,phase_inc=0.0001,swap_memory=True,precision=None,**kwargs)[source]

Block implementing the split-step Fourier method (SSFM)

The SSFM (first mentioned in[HT1973]) numerically solves the generalizednonlinear Schrödinger equation (NLSE)

\[\frac{\partial E(t,z)}{\partial z}=-\frac{\alpha}{2} E(t,z)+j\frac{\beta_2}{2}\frac{\partial^2 E(t,z)}{\partial t^2}-j\gamma |E(t,z)|^2 E(t,z) + n(n_{\text{sp}};\,t,\,z)\]

for an unpolarized (or single polarized) optical signal;or the Manakov equation (according to[WMC1991])

\[\frac{\partial \mathbf{E}(t,z)}{\partial z}=-\frac{\alpha}{2} \mathbf{E}(t,z)+j\frac{\beta_2}{2}\frac{\partial^2 \mathbf{E}(t,z)}{\partial t^2}-j\gamma \frac{8}{9}||\mathbf{E}(t,z)||_2^2 \mathbf{E}(t,z) + \mathbf{n}(n_{\text{sp}};\,t,\,z)\]

for dual polarization, with attenuation coefficient\(\alpha\), groupvelocity dispersion parameters\(\beta_2\), and nonlinearitycoefficient\(\gamma\). The noise terms\(n(n_{\text{sp}};\,t,\,z)\)and\(\mathbf{n}(n_{\text{sp}};\,t,\,z)\), respectively, stem froman (optional) ideally distributed Raman amplification withspontaneous emission factor\(n_\text{sp}\). The optical signal\(E(t,\,z)\) has the unit\(\sqrt{\text{W}}\). For the dualpolarized case,\(\mathbf{E}(t,\,z)=(E_x(t,\,z), E_y(t,\,z))\)is a vector consisting of the signal components of both polarizations.

The symmetrized SSFM is applied according to Eq. (7) of[FMF1976] thatcan be written as

\[E(z+\Delta_z,t) \approx \exp\left(\frac{\Delta_z}{2}\hat{D}\right)\exp\left(\int^{z+\Delta_z}_z \hat{N}(z')dz'\right)\exp\left(\frac{\Delta_z}{2}\hat{D}\right)E(z,\,t)\]

where only the single-polarized case is shown. The integral isapproximated by\(\Delta_z\hat{N}\) with\(\hat{D}\) and\(\hat{N}\) denoting the linear and nonlinear SSFM operator,respectively[A2012].

Additionally, ideally distributed Raman amplification may be applied, whichis implemented as in[MFFP2009]. Please note that the implementedRaman amplification currently results in a transparent fiber link. Hence,the introduced gain cannot be parametrized.

The SSFM operates on normalized time\(T_\text{norm}\)(e.g.,\(T_\text{norm}=1\,\text{ps}=1\cdot 10^{-12}\,\text{s}\)) anddistance units\(L_\text{norm}\)(e.g.,\(L_\text{norm}=1\,\text{km}=1\cdot 10^{3}\,\text{m}\)).Hence, all parameters as well as the signal itself have to be given with thesame unit prefix for thesame unit (e.g., always pico for time, or kilo for distance). Despite the normalization,the SSFM is implemented with physicalunits, which is different from the normalization, e.g., used for thenonlinear Fourier transform. For simulations, only\(T_\text{norm}\) has to beprovided.

To avoid reflections at the signal boundaries during simulation, a Hammingwindow can be applied in each SSFM-step, whose length can bedefined byhalf_window_length.

Example

Setting-up:

>>>ssfm=SSFM(>>>alpha=0.046,>>>beta_2=-21.67,>>>f_c=193.55e12,>>>gamma=1.27,>>>half_window_length=100,>>>length=80,>>>n_ssfm=200,>>>n_sp=1.0,>>>t_norm=1e-12,>>>with_amplification=False,>>>with_attenuation=True,>>>with_dispersion=True,>>>with_manakov=False,>>>with_nonlinearity=True)

Running:

>>># x is the optical input signal>>>y=ssfm(x)
Parameters:
  • alpha (float, (default 0.046)) – Attenuation coefficient\(\alpha\) in\((1/L_\text{norm})\)

  • beta_2 (float, (default -21.67)) – Group velocity dispersion coefficient\(\beta_2\) in\((T_\text{norm}^2/L_\text{norm})\)

  • f_c (float, (default 193.55e12)) – Carrier frequency\(f_\mathrm{c}\) in\((\text{Hz})\)

  • gamma (float, (default1.27)) – Nonlinearity coefficient\(\gamma\) in\((1/L_\text{norm}/\text{W})\)

  • half_window_length (int, (default 0)) – Half of the Hamming window length

  • length (float, (default 80.0)) – Fiber length\(\ell\) in\((L_\text{norm})\)

  • n_ssfm (int, (default 1) | “adaptive”) – Number of steps\(N_\mathrm{SSFM}\).Set to “adaptive” to use nonlinear-phase rotation to calculatethe step widths adaptively (maxmimum rotation can be set in phase_inc).

  • n_sp (float, (default 1.0)) – Spontaneous emission factor\(n_\mathrm{sp}\)of Raman amplification

  • sample_duration (float, (default 1.0)) – Normalized time step\(\Delta_t\) in\((T_\text{norm})\)

  • t_norm (float, (default 1e-12)) – Time normalization\(T_\text{norm}\) in\((\text{s})\)

  • with_amplification (bool, (defaultFalse)) – Enable ideal inline amplification and correspondingnoise

  • with_attenuation (bool, (defaultTrue)) – Enable attenuation

  • with_dispersion (bool, (defaultTrue)) – Apply chromatic dispersion

  • with_manakov (bool, (defaultFalse)) – Considers axis [-2] as x- and y-polarization and calculates thenonlinear step as given by the Manakov equation

  • with_nonlinearity (bool, (defaultTrue)) – Apply Kerr nonlinearity

  • phase_inc (float, (default 1e-4)) – Maximum nonlinear-phase rotation in rad allowed during simulation.To be used withn_ssfm = “adaptive”.

  • swap_memory (bool, (defaultTrue)) – Use CPU memory for while loop

  • precision (None (default) | “single” | “double”) – Precision used for internal calculations and outputs.If set toNone,precision is used.

Input:

x ([…,n] or […,2,n],tf.complex) – Input signal in\((\sqrt{\text{W}})\). Ifwith_manakovisTrue, the second last dimension is interpretedas x- and y-polarization, respectively.

Output:

y (Tensor (same shape asx),tf.complex) – Channel output

classsionna.phy.channel.EDFA(g=4.0,f=7.0,f_c=193550000000000.0,dt=1e-12,with_dual_polarization=False,precision=None,**kwargs)[source]

Block implementing a model of an Erbium-Doped Fiber Amplifier

Amplifies the optical input signal by a given gain and addsamplified spontaneous emission (ASE) noise.

The noise figure including the noise due to beating of signal andspontaneous emission is\(F_\mathrm{ASE,shot} =\frac{\mathrm{SNR}_\mathrm{in}}{\mathrm{SNR}_\mathrm{out}}\),where ideally the detector is limited by shot noise only, and\(\text{SNR}\) is the signal-to-noise-ratio. Shot noise isneglected here but is required to derive the noise power of the amplifier, asotherwise the input SNR is infinitely large. Hence, for the input SNR,it follows[A2012] that\(\mathrm{SNR}_\mathrm{in}=\frac{P}{2hf_cW}\), where\(h\) denotesPlanck’s constant,\(P\) is the signal power, and\(W\) theconsidered bandwidth.The output SNR is decreased by ASE noise induced by the amplification.Note that shot noise is applied after the amplifier and is hence notamplified. It results that\(\mathrm{SNR}_\mathrm{out}=\frac{GP}{\left(4\rho_\mathrm{ASE}+2hf_c\right)W}\), where\(G\) is theparametrized gain.Hence, one can write the former equation as\(F_\mathrm{ASE,shot} = 2n_\mathrm{sp} \left(1-G^{-1}\right) + G^{-1}\).Dropping shot noise again results in\(F = 2 n_\mathrm{sp} \left(1-G^{-1}\right)=2 n_\mathrm{sp} \frac{G-1}{G}\).

For a transparent link, e.g., the required gain per span is\(G =\exp\left(\alpha \ell \right)\).The spontaneous emission factor is\(n_\mathrm{sp}=\frac{F}{2}\frac{G}{G-1}\).According to[A2012] and[EKWFG2010] combined with[BGT2000] and[GD1991],the noise power spectral density of the EDFA per state ofpolarization is obtained as\(\rho_\mathrm{ASE}^{(1)} = n_\mathrm{sp}\left(G-1\right) h f_c=\frac{1}{2}G F h f_c\).At simulation frequency\(f_\mathrm{sim}\), the noise has a power of\(P_\mathrm{ASE}^{(1)}=\sigma_\mathrm{n,ASE}^2=2\rho_\mathrm{ASE}^{(1)}\cdot f_\mathrm{sim}\),where the factor\(2\) accounts for the unpolarized noise (for dualpolarization the factor is\(1\) per polarization).Here, the notation\(()^{(1)}\) means that this is the noise introduced by asingle EDFA.

Example

Setting-up:

>>>edfa=EDFA(>>>g=4.0,>>>f=2.0,>>>f_c=193.55e12,>>>dt=1.0e-12,>>>with_dual_polarization=False)

Running:

>>># x is the optical input signal>>>y=EDFA(x)
Parameters:
  • g (float, (default 4.0)) – Amplifier gain (linear domain)

  • f (float, (default 7.0)) – Noise figure (linear domain)

  • f_c (float, (default 193.55e12)) – Carrier frequency\(f_\mathrm{c}\) in\((\text{Hz})\)

  • dt (float, (default 1e-12)) – Time step\(\Delta_t\) in\((\text{s})\)

  • with_dual_polarization (bool, (defaultFalse)) – Considers axis [-2] as x- and y-polarization and applies the noiseper polarization

  • precision (None (default) | “single” | “double”) – Precision used for internal calculations and outputs.If set toNone,precision is used.

Input:

x (Tensor,tf.complex) – Optical input signal

Output:

y (Tensor (same shape asx),tf.complex) – Amplifier output

Utility functions

sionna.phy.channel.utils.time_frequency_vector(num_samples,sample_duration,precision=None)[source]

Compute the time and frequency vector for a given number of samplesand duration per sample in normalized time unit.

>>>t=tf.cast(tf.linspace(-n_min,n_max,num_samples),dtype)*sample_duration>>>f=tf.cast(tf.linspace(-n_min,n_max,num_samples),dtype)*1/(sample_duration*num_samples)
Input:
  • num_samples (int) – Number of samples

  • sample_duration (float) – Sample duration in normalized time

  • precision (None (default) | “single” | “double”) – Precision used for internal calculations and outputs.If set toNone,precision is used.

Output:
  • t ([num_samples],tf.float) – Time vector

  • f ([num_samples],tf.float) – Frequency vector

References:
[HT1973]

R. H. Hardin and F. D. Tappert,“Applications of the Split-Step Fourier Method to the Numerical Solution of Nonlinear and Variable Coefficient Wave Equations.”,SIAM Review Chronicles, Vol. 15, No. 2, Part 1, p 423, 1973.

[FMF1976]

J. A. Fleck, J. R. Morris, and M. D. Feit,“Time-dependent Propagation of High Energy Laser Beams Through the Atmosphere”,Appl. Phys., Vol. 10, pp 129–160, 1976.

[MFFP2009]

N. J. Muga, M. C. Fugihara, M. F. S. Ferreira, and A. N. Pinto,“ASE Noise Simulation in Raman Amplification Systems”,Conftele, 2009.

[A2012](1,2,3,4,5)

G. P. Agrawal,“Fiber-optic Communication Systems”,4th ed. Wiley Series in Microwave and Optical Engineering 222. New York: Wiley, 2010.

[EKWFG2010]

R. J. Essiambre, G. Kramer, P. J. Winzer, G. J. Foschini, and B. Goebel,“Capacity Limits of Optical Fiber Networks”,Journal of Lightwave Technology 28, No. 4, 2010.

[BGT2000]

D. M. Baney, P. Gallion, and R. S. Tucker,“Theory and Measurement Techniques for the Noise Figure of Optical Amplifiers”,Optical Fiber Technology 6, No. 2, 2000.

[GD1991]

C. R. Giles, and E. Desurvire,“Modeling Erbium-Doped Fiber Amplifiers”,Journal of Lightwave Technology 9, No. 2, 1991.

[WMC1991]

P. K. A. Wai, C. R. Menyuk, and H. H. Chen,“Stability of Solitons in Randomly Varying Birefringent Fibers”,Optics Letters, No. 16, 1991.