Enumerations

ModulationFormats.hh File Reference

Go to the source code of this file.

Enumerations

enum  typePulse {
  NRZ = 1, RZ_GAUSS = 2, RZ_SECH = 3, CRZ_GAUSS = 4,
  CRZ_RCOS = 5, CRZ_SIN_MZ = 6, UMBC_RZ = 7, CW = 8,
  RZ_GAUSS_PATTERN = 9, INPUT_SEQUENCE = 10, QPSK_CW = 11, QPSK_RZ_GAUSS = 12,
  BPSK_PHASE_MOD = 13, BPSK_MACH_ZEHNDER = 14, CSRZ_MACH_ZEHNDER = 15, RZ33_MACH_ZEHNDER = 16,
  RZ50_MACH_ZEHNDER = 17, INPUT_SIGNAL_FROM_FILE = 18, QPSK_SEQ_PM_NRZ = 19, QPSK_DPMZ_PM_NRZ = 20,
  QPSK_SEQ_PM_AM_RZ33 = 21, QPSK_SEQ_PM_AM_RZ50 = 22, QPSK_DPMZ_PM_AM_RZ33 = 23, QPSK_DPMZ_PM_AM_RZ50 = 24,
  NRZ_RCOS_MACH_ZEHNDER = 25
}
 

Enumeration Type to specify the modulation format.

More...

Enumeration Type Documentation

enum typePulse

Enumeration Type to specify the modulation format.

typePulse can take one of the following values. The required parameters in OptSignal.in are listed after the full name followed by brief description of how format is modeled.

  1. NRZ = 1 [Nonreturn-to-zero]
  2. RZ_GAUSS = 2 [Return-to-zero Gaussian]
  3. RZ_SECH = 3 [Return-to-zero hyperbolic secant]
  4. CRZ_GAUSS = 4 [Chirped return to zero Gaussian]
    • FWHM_Pulse
    • ChirpParameter
    • Similar to RZ_GAUSS but with a chirp
    • The formula is exactly the one given in Agrawal's Nonlinear Optics textbook, page 67. The ChirpParameter is Agrawal's parameter, C
    • See also:
      OptSignal::GenerateSignalStringGaussianOrSech()
  5. CRZ_RCOS = 5 [Chirped return to zero raised cosine]
  6. CRZ_SIN_MZ = 6 [Chirped RZ format like that obtained using a sinusoidal voltage to modulate a Mach-Zehnder interferometer]
    • FWHM_Pulse
    • ChirpParameter
    • Similar to CRZ_RCOS except that pulse envelope is a raised cosine of a sin function rather than a raised cosine of a linear function. This pulse shape is very close to what a sinusoidally driven Mach-Zehnder would produce. See Kath, Yang and Evangelides "Optimal Prechirping for DM transmission of RZ pulses", OFC '99, Vol 6, pp 249-251.
    • See also:
      OptSignal::GenerateSignalStringRaisedCosinesWithPhaseShift()
  7. UMBC_RZ = 7 [Special format to model an experiment]
    • DO NOT USE THIS FORMAT
  8. CW = 8 [CW light]
    See also:
    OptSignal::GenerateSignalStringRaisedCosinesWithPhaseShift()
  9. RZ_GAUSS_PATTERN = 9 [RZ pulse stream is multiplied by gaussian-filtered NRZ data]
    • Warning:
      Not debugged for multiple channels
    • FWHM_Pulse (for Gaussian pulses)
    • RiseTime (for NRZ data sequence)
    • Used to model experimental transmitter in Gary Carter's lab at UMBC.
    • See P. Griggio, J. Hu, J. Wen, G. E. Tudury, J. Zweck, B. S. Marks, L. Yan, G. M. Carter, and C. R. Menyuk, "Characterizing pattern dependence in transmitters and receivers for optical communications systems", Optics Communications, Vol 272 Num 1, pp. 107-110, 2007
    • See also:
      OptSignal::GenerateSignalStringRZGaussianPattern()
  10. INPUT_SEQUENCE = 10 [Measured input time sequence data, for special app.]
  11. QPSK_CW = 11 [Quadrature phase-shift keying with constant power]
  12. QPSK_RZ_GAUSS = 12 [Quadrature phase-shift keyed Gaussian pulses]
    • Have half number of pulses as bits. So pulses can be twice as wide as for regular RZ.
    • Use actual BitRate but center k-th pulse at (2k+1)*BitLength so that each pulse takes up two bit slots.
    • Choose phase on pulse corresponding to a pair of bits as follows: 00 -> 0, 01 -> -90, 10 -> +90, 11 -> 180
    • Currently phase function is not filtered
    • Warning:
      Not debugged for multiple channels
    • Warning:
      Changes may need to be made in receivers for this format
    • FWHM_Pulse
    • See also:
      OptSignal::GenerateSignalStringQPSK_Gaussian()

BPSK_PHASE_MOD = 13 [Binary phase-shift keyed with constant power]

  • Constructed using a phase modulator
  • Phase on bit 0 is pi, phase on bit 1 is 0
  • This phase function is constructed using one of four methods described in
    See also:
    enum typeEOMElecData
  • After it is constructed the phase function can also be filtered using an electrical filter
    See also:
    enum typeEOMElecFilter
  • The power is constant
  • Formula: E(t) = E_0 exp(i t) exp(i(t)) where (t) = pi(1-P(t))
  • P(t) is function that is obtained by smoothing a function that is 1 in a 1-bit and 0 in a 0-bit. The function can be smoothed either using an electrical filter (see enum typeEOMElecFilter) or by interpolating between values 0 and 1 using an arctanh or super-Gaussian function (see enum typeEOMElecData)
  • To specify a 10-90% rise time on the electrical data during transitions one can use OptSignal::TypeEOMElecData = 2 = EOM_BINARY_DATA_ARCTANH_SMOOTHING and specify OptSignal::EOM_RiseTime
  • For a 25 ps rise time on the phase at 10Gb/s one can use OptSignal::TypeEOMElecData = 3 = EOM_BINARY_DATA_SUPERGAUSS_SMOOTHING and OptSignal::EOM_SuperGaussExponent = 6
  • For

BPSK_MACH_ZEHNDER = 14 [Binary phase-shift keyed using a Mach Zehnder modulator (MZM)]

  • Phase is piecewise constant, either pi in a 0-bit or 0 in a 1-bit
  • Power is constant across most of pulse but goes to 0 at each transition from 0 to 1 or 1 to 0.
  • This is acheived using a Mach Zehnder modulator with electrical data P(t) as in BPSK_PHASE_MOD above. The MZ modulator is balanced with V_pi1 = V_pi2 = V_pi = pi and phi_10=phi_20=pi
  • So the formula is E(t) = E_0 exp(i t) cos(pi(1-P(t))
  • To specify a 10-90% rise time on the electrical data during transitions one can use OptSignal::TypeEOMElecData = 2 = EOM_BINARY_DATA_ARCTANH_SMOOTHING and specify OptSignal::EOM_RiseTime or to specify a 10-90% rise time on the optical data can use OptSignal::TypeEOMElecData = 2 = EOM_BINARY_DATA_RCOS and specify OptSignal::RiseTime

CSRZ_MACH_ZEHNDER = 15 [Carrier-suppressed return-to-zero using MZM]

  • 67% duty cycle pulses, phase alternates between 0 and pi from bit slot to bit slot
  • Electric Field is E(t) = OptNRZ(t)*sin(pi/2*(sin(pi*t*BitRateChann)
  • Phase of odd and even bits alternates with this formula
  • See Ip and Kahn, JLT vol 24, no.3, March 2006, pp. 1610-1618
  • OptNRZ is chosen to be NRZ_RCOS_MACH_ZEHNDER

RZ33_MACH_ZEHNDER = 16 [Return-to-zero with 33% duty cycle using MZM]

  • 33% duty cycle pulses
  • Electric field is E(t) = OptNRZ(t)*sin(pi/2*(1+cos(pi*t*BitRateChann)))
  • See Ip and Kahn, JLT vol 24, no.3, March 2006, pp. 1610-1618
  • OptNRZ is chosen to be NRZ_RCOS_MACH_ZEHNDER

RZ50_MACH_ZEHNDER = 17 [Return-to-zero with 50% duty cycle using MZM]

  • 50% duty cycle pulses
  • Electric field is E(t) = OptNRZ(t)*sin(pi/4*(1-cos(2*pi*t*BitRateChann)))
  • See Ip and Kahn, JLT vol 24, no.3, March 2006, pp. 1610-1618
  • OptNRZ is chosen to be NRZ_RCOS_MACH_ZEHNDER

INPUT_SIGNAL_FROM_FILE = 18 [General method]

  • Reads in SCALAR or VECTOR data in time domain from file
  • File name is given by input parameter OptSignal::InputTimeDataFileName
  • Data to be read must have been previosuly written by OptSignal object using same OptSignal.in file

QPSK_SEQ_PM_NRZ=19 [Sequential binary phase modulation of a CW optical signal using two sequential EOMs]

  • Stage 1: Phi1(t) = pi*(1-V1(t)), where V1 is ElecNRZdata
  • Stage 2: Phi2(t) = 0.5*pi*(1-V2(t)), where V2 is ElecNRZdata
  • Field Basically: E(t) = exp(i*(Phi1(t)+Phi2(t)))
  • (V1,V2) = (0,0): Phi=3*pi/2
  • (V1,V2) = (0,1): Phi=pi
  • (V1,V2) = (1,0): Phi=pi/2
  • (V1,V2) = (1,1): Phi=0
  • ElecNRZData in V1 and V2 is constructed as in BPSK_PHASE_MOD
  • Use different (random) data to make the V1 and V2 signals. WARNING: Not correctly implemented to allow for input of user defined bit string!
  • V1 and V2 both have StringLength bits, each bit slot of length BitLength, period TimeWindow, and data rate BitRateChann.
  • So overall data rate is 2*BitRateChann.

QPSK_DPMZ_PM_NRZ=20 [Direct quadrature modulation of a CW optical signal using a dual-parallel MZ EOM]

  • E(t) = E1(t) + exp(i*pi/2)*E2(t)
  • E1(t) = cos(pi*(1-V1(t))
  • E2(t) = cos(pi*(1-V2(t))
  • Spectrally identical to BPSKMZ
  • V1, V2 constructed as for QPSK_SEQ_PM_NRZ
  • (V1,V2) = (0,0): Phi=??
  • (V1,V2) = (0,1): Phi=??
  • (V1,V2) = (1,0): Phi=??
  • (V1,V2) = (1,1): Phi=??

QPSK_SEQ_PM_AM_RZ33=21

  • QPSK_SEQ_PM_NRZ followed by RZ33_MACH_ZEHNDER in which OptNRZ is replaced by QPSK_SEQ_PM_NRZ

QPSK_SEQ_PM_AM_RZ50=22

  • QPSK_SEQ_PM_NRZ followed by RZ50_MACH_ZEHNDER in which OptNRZ is replaced by QPSK_SEQ_PM_NRZ

QPSK_DPMZ_PM_AM_RZ33=23

  • QPSK_DPMZ_PM_NRZ followed by RZ33_MACH_ZEHNDER in which OptNRZ is replaced by QPSK_DPMZ_PM_NRZ

QPSK_DPMZ_PM_AM_RZ50=24

  • QPSK_DPMZ_PM_NRZ followed by RZ50_MACH_ZEHNDER in which OptNRZ is replaced by QPSK_DPMZ_PM_NRZ

NRZ_RCOS_MACH_ZEHNDER=25

  • NRZ format constructed using a Mach Zehnder modulator where the electrical drive signal has transitions given by a raised cosine.
  • Parameters: Chirp of MZM (ChirpParameter); 10-90% rise time of optical power (RiseTime)
  • WARNING: Nonzero extinction ratio not implemented and nonzero chirp not tested.
  • Electric Field is E(t) = 0.5*(exp(i*(1+alpha)*(pi/4)*phi(t) + i*exp(-i*(1-alpha)*(pi/4)*phi(t)) where phi(t) = sum_over_k b_k p(t-kT) where b_k = +1,-1, and T=BitLength
  • Here p(t) = 1 if |t| <= (1-beta)T/2 0 if |t| >= (1+beta)T/2 0.5*(1-sin(pi*(|t|-T/2)/(beta*T))) otherwise
    • The parameter beta is between 0 and 1. It determines the rise time of the electrical signal p(t) by RiseTimeElec = (2/pi)*asin(0.8)*beta*T = 0.5903*beta*T and the rise time of the optical power by RiseTimeOpt = (2/pi)asin(-1+(4/pi)*asin(sqrt(0.9)))*beta*T = 0.4020083*beta*T
      • alpha = ChirpParameter See Ho and Kahn, JLT vol 22 no 2 Feb 2004, pp 658-663.
Enumerator:
NRZ 
RZ_GAUSS 
RZ_SECH 
CRZ_GAUSS 
CRZ_RCOS 
CRZ_SIN_MZ 
UMBC_RZ 
CW 
RZ_GAUSS_PATTERN 
INPUT_SEQUENCE 
QPSK_CW 
QPSK_RZ_GAUSS 
BPSK_PHASE_MOD 
BPSK_MACH_ZEHNDER 
CSRZ_MACH_ZEHNDER 
RZ33_MACH_ZEHNDER 
RZ50_MACH_ZEHNDER 
INPUT_SIGNAL_FROM_FILE 
QPSK_SEQ_PM_NRZ 
QPSK_DPMZ_PM_NRZ 
QPSK_SEQ_PM_AM_RZ33 
QPSK_SEQ_PM_AM_RZ50 
QPSK_DPMZ_PM_AM_RZ33 
QPSK_DPMZ_PM_AM_RZ50 
NRZ_RCOS_MACH_ZEHNDER