Robochameleon  v1.0
Public Member Functions | Public Attributes | List of all members
IntensityModulator_v1 Class Reference

Linear or Mach-Zehnder intensity modulator. More...

Inherits unit.

Public Member Functions

function IntensityModulator_v1 (in param)
 Class constructor. More...
 
function traverse (in obj, in drive, in laser)
 Traverse function. More...
 
- Public Member Functions inherited from unit
virtual traverse (in obj, in varargin)
 Main function call.
 
function traverseNode (in obj)
 Set unique ID when creating a unit. More...
 
function connectOutput (in obj, in uobj, in unitOutput, in nextUnitInput)
 Specify where signal should go next. More...
 
function connectOutputs (in obj, in units, in destInputs)
 Specify where signal should go next. More...
 
function writeInputBuffer (in obj, in sig, in inputId)
 write input buffer
 
function horzcat (in varargin)
 horizontal concatenation
 
function vertcat (in varargin)
 vertical concatenation
 
function setparams (in obj, in params, in REQUIRED_PARAMS, in QUIET_PARAMS)
 set parameters More...
 
function view (in obj)
 Show interactive GUI through unit_view-class.
 

Public Attributes

Property Vpi
 Half wave voltage [V].
 
Property Vbias
 
Property extinctionRatio
 Extinction ratio [dB].
 
Property mode
 Operation mode.
 
Property loss
 Insertion loss (excess) [dB].
 
Property nInputs
 Number of inputs.
 
Property nOutputs
 Number of outputs.
 
- Public Attributes inherited from unit
Property inputBuffer
 Buffer for storing inputs as we traverse the graph.
 
Property nextNodes
 Children nodes.
 
Property destInputs
 Destination inputs in children.
 
Property results
 For storing results.
 
Property label
 
Property draw
 enable/disable plotting
 
Property nInputs
 Number of signals traverse expects.
 
Property nOutputs
 Number of outputs traverse expects.
 

Detailed Description

Linear or Mach-Zehnder intensity modulator.

Takes 2 signal_interfaces, applies modulation from signal interface 1 (drive) to signal interface 2 (laser). Runs in linear (ideal, non-physical) or mach-zehnder mode. Extinction ratio and insertion loss can be specified. Insertion loss is excess insertion loss from fiber coupling, splitters, etc. (i.e. the loss we'd see biasing at a maximum and with no drive signal). Drive-signal related loss is calculated by the object and stored in the results structure as inherentLoss.

Example:

param.laser.Power = pwr(150, {14, 'dBm'});
param.laser.linewidth = 100;
param.laser.Fs = 160e9;
param.laser.Rs = 1e9;
param.laser.Fc = const.c/1550*1e-9;
param.laser.Lnoise = 2^8;
param.im.Vpi = 6;
param.im.loss = 1;
param.drive.Fs = 160e9;
param.drive.Rs = 1e9;
param.drive.Fc = 0;
%% Linear region MZM
param.im.mode = 'MZM';
param.im.Vbias = -3;
driveAmp = 0.5/2*param.im.Vpi;
laser = Laser_v1(param.laser);
laserSig = laser.traverse();
t = genTimeAxisSig(laserSig);
driveField = driveAmp*sin(2*pi*param.drive.Rs*t);
driveSig = signal_interface(driveField, param.drive);
driveSig = driveSig.set('P', pwr(30, driveSig.P.Ptot));
im = IntensityModulator_v1(param.im);
laserModulated = im.traverse(driveSig, laserSig);

References:

Author
Molly Piels
Simone Gaiarin
Version
1

Definition at line 57 of file IntensityModulator_v1.m.

Constructor & Destructor Documentation

function IntensityModulator_v1::IntensityModulator_v1 ( in  param)

Class constructor.

Constructs an object of type IntensityModulator_v1.

Parameters
param.VpiHalf-wave voltage [V].
param.VbiasVoltage used to set the working region of the modulator [Default: -Vpi/2]
param.modeOperation mode. Possible values 'linear' (slope = 1/Vpi), 'MZM' (Mach zehnder)
param.lossLoss [dB].
param.extinctionRatioExtinction ratio ER = Pmax/Pmin [dB].

Member Function Documentation

function IntensityModulator_v1::traverse ( in  obj,
in  drive,
in  laser 
)

Traverse function.

Takes 2 signal_interfaces, applies modulation from signal interface 1 (drive) to signal interface 2 (laser).

Parameters
param.driveModulating signal (real, single column).
param.laserLaser (single polarization).

The documentation for this class was generated from the following file: