Robochameleon
v1.0
|
Laser model. More...
Inherits unit.
Public Member Functions | |
function | Laser_v1 (in param) |
Class constructor. More... | |
function | traverse (in obj, in varargin) |
Main function call. | |
function | process (in obj, in varargin) |
save parameters, generate noise More... | |
function | MaxFreq (in obj) |
function | MinFreq (in obj) |
function | genNoise (in obj) |
generate noise More... | |
function | plotLineShape (in obj) |
function | plotFMPSD (in obj) |
function | plotPNPSD (in obj) |
function | plotFreqNoise (in obj) |
function | plotPhaseNoise (in obj, in varargin) |
function | plot (in obj) |
![]() | |
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. | |
Static Public Member Functions | |
static function | idft (in f, in X, in t) |
Public Attributes | |
Property | nInputs |
Number of inputs. | |
Property | nOutputs |
Number of outputs. | |
Property | Fc |
carrier frequency (Hz, can also be set by parameters) | |
Property | linewidth |
Lorentzian linewidth for standard (non-semiconductor) laser. | |
Property | Fs |
Sampling frequency (Hz) | |
Property | Rs |
Symbol rate (/sec) | |
Property | Lnoise |
Length of the noise signal (samples) | |
Property | cacheEnabled |
Saves the waveform onto a file for speed porposes. | |
Property | Power |
Output power (pwr object) | |
Property | model |
Phase Noise Model (Type PhaseNoiseModel_v1) | |
Property | limitPn |
Phase noise clipping limit [-1 1]*limitPn. | |
Property | FMnoiseCal |
Frequency Modulation noise. | |
Property | PMnoiseCal |
Phase Modulation noise. | |
Property | fn |
Frequency noise time sequence. | |
Property | pn |
Phase noise time sequence. | |
Property | L |
FM noise PSD length. | |
Property | Lir |
FM noise PSD length. | |
Property | LFLW1GHZ |
Equivalent linewidth for 1/f noise defined at 1GHz. | |
Property | HFLW |
High-frequency (Lorentzian-equivalent) linewidth. | |
Property | fr |
Relaxation resonance frequency. | |
Property | K |
Damping factor. | |
Property | alpha |
Linewidth enhancement factor. | |
![]() | |
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. | |
Laser model.
Outputs a time-domain phase noise sequence with the desired frequency noise power spectral density.
Basic algorithm
How to use it
Two ways for using within the Robochameleon framework:
Two types of operation
Basic use case: Build a Lorentizan laser with linewidth of 100 KHz at 1550 nm with 2^10 samples
Lorentzian examples:
A laser with Txparam would generate a signal; a laser with LOparam would read many properties from an input signal_interface. The LO uses filter lengths 1, so phase will act like a random walk (no low-frequency noise suppression). The TX uses a long filter, so low-frequency noise will be suppressed. Runtime will also be longer.
SCL example:
A laser with SCLparam will be a standarad SCL with the properties specified. A laser with badSCLparam will be a Lorentzian, because 'linewidth' will take precedence over alpha, fr, etc. See:
References
M. Iglesias Olmedo, X. Pang, A. Udalcovs, R. Schatz, D. Zibar, G. Jacobsen, S. Popov, and I. T. Monroy, "Impact of Carrier Induced Frequency Noise from the Transmitter Laser on 28 and 56 Gbaud DP-QPSK Metro Links," in Asia Communications and Photonics Conference 2014, OSA Technical Digest (online) (Optical Society of America, 2014), paper ATh1E.1. https://www.osapublishing.org/abstract.cfm?uri=ACPC-2014-ATh1E.1
for definitions of these terms. They are also defined in many other sources (e.g. Coldren & Corzine).
Definition at line 89 of file Laser_v1.m.
function Laser_v1::Laser_v1 | ( | in | param | ) |
Class constructor.
Determines whether user wants to take signal parameters from another input signal or to specify them. Also determines whether to operate in Lorentzian or semiconductor laser mode.
param.Fs | Sampling frequency [Hz]; |
param.Rs | Symbol rate [Hz]. Default: nan (Don't use this information). |
param.Lnoise | Signal length [Samples]. |
param.Fc | Carrier frequency [Hz]. Default: 193.41 THz (1550 nm); |
param.Power | Output power (pwr object). Default: SNR:inf, P: 0 dBm |
param.linewidth | Lorentzian linewidth - forces operation in Lorentzian mode if specified [Hz] |
param.LFLW1GHZ | linewidth at 1GHz |
param.HFLW | high-frequency linewidth [Hz] |
param.fr | relaxation resonance frequency [Hz] |
param.K | Damping factor |
param.alpha | Linewidth enhancement factor [unitless] |
function Laser_v1::genNoise | ( | in | obj | ) |
generate noise
Generates frequency and phase noise time sequences. Generates a time-domain filter with length obj.Lpsd (in constructor, param.L or param.Lir), generates white noise, then filters that noise using the constructed filter. NB: filter will remove DC component of noise if length>1.
fn | frequency noise sequence |
fn | phase noise sequence |
function Laser_v1::MaxFreq | ( | in | obj | ) |
This function calls genNoise to generate appropriate phase noise and frequency noise sequences.
function Laser_v1::process | ( | in | obj, |
in | varargin | ||
) |
save parameters, generate noise
This function copies signal_interface parameters from input signal if any.
varargin | input signal_interface |
fn | frequency noise sequence |
fn | phase noise sequence |