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

Electrical filtering of a driver device. More...

Inherits unit.

Public Member Functions

function ElectricalFilter_v1 (in param)
 Class constructor. More...
 
function traverse (in obj, in in)
 Main function call.
 
- Public Member Functions inherited from unit
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 filterByFFT (in io, in filter)
 

Public Attributes

Property nOutputs
 Number of outputs.
 
Property nInputs
 Number of inputs.
 
Property rectangularFilter
 Turn ON Rectangular Filter?
 
Property rectangularBandwidth
 Bandwidth of Rectangular Filter.
 
Property gaussianOrder
 Order of Gaussian Filter (Equals zero to turn OFF)
 
Property gaussianBandwidth
 Bandwidth of gaussian Filter.
 
Property besselOrder
 Order of Bessel Filter (Equals zero to turn OFF)
 
Property besselBandwidth
 Bandwidth of Bessel Filter.
 
Property outputVoltage
 Output PEAK Voltage before DC level insertion.
 
Property amplitudeImbalance
 Amplitude Imbalance.
 
Property levelDC
 DC level.
 
- 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

Electrical filtering of a driver device.

This function simulates a driver device. It performs electrical filtering on the signal and simulates group delay, amplitude imbalance, DC level insertion, and peak voltage reshaping.

Observations The input signal shall be a complex signal_interface signal.

Bypass Example If one does not define Rectangular, Gaussian and Bessel filters, the unit will bypass the filtering. If one does not define output voltage, DC level and amplitude imbalance, the output will bypass these functions. If no parameters are passed, the function will not do anything.

param.sig.Fs = 64e9;
param.sig.Fc = 0;
param.sig.Rs = 32e9;
Ein = upsample((randi(2,10000,1)-1.5)*2 + 1j*(randi(2,10000,1)-1.5)*2,2);
signal_in = signal_interface(Ein, param.sig);
drivers = ElectricalFilter_v1([]);
signal_out = drivers.traverse(signal_in);

Typical Example

This example constructs a rectangular filter

param.sig.Fs = 64e9;
param.sig.Fc = 0;
param.sig.Rs = 32e9;
Ein = upsample((randi(2,10000,1)-1.5)*2 + 1j*(randi(2,10000,1)-1.5)*2,2);
signal_in = signal_interface(Ein, param.sig);
param.drivers.rectangularFilter = true;
param.drivers.rectangularBandwidth = 40e9;
drivers = ElectricalFilter_v1(param.drivers);
signal_out = drivers.traverse(signal_in);

Advanced Example

This example has all parameters defined, all of them are optional. The expeptions are "rectangularBandwidth", "gaussianBandwidth", and "besselBandwidth" that are, respectively, conditionally mandatory if "rectangularFilter", "gaussianOrder", and "besselOrder" are defined.

param.sig.Fs = 64e9;
param.sig.Fc = 0;
param.sig.Rs = 32e9;
Ein = upsample((randi(2,10000,1)-1.5)*2 + 1j*(randi(2,10000,1)-1.5)*2,2);
signal_in = signal_interface(Ein, param.sig);
param.drivers.rectangularFilter = true;
param.drivers.rectangularBandwidth = 40e9;
param.drivers.gaussianOrder = 2;
param.drivers.gaussianBandwidth = 18e9;
param.drivers.besselOrder = 1;
param.drivers.besselBandwidth = 110e9;
param.drivers.outputVoltage = [2.0]; %Volts
param.drivers.amplitudeImbalance = [0.9 1.1];
param.drivers.levelDC = [0.5 0]; %Volts
drivers = ElectricalFilter_v1(param.drivers);
signal_out = drivers.traverse(signal_in);
Author
Julio Diniz
Version
1

Definition at line 80 of file ElectricalFilter_v1.m.

Constructor & Destructor Documentation

function ElectricalFilter_v1::ElectricalFilter_v1 ( in  param)

Class constructor.

Parameters
param.rectangularFilterTurn ON or OFF the rectangular time-domain filtering. true = ON / false = OFF. [Default: false]
param.rectangularBandwidthBaseband bandwidth of rectangular filter. It needs to be defined if param.rectangularFilter == true.
param.gaussianOrderThe order of frequency-domain gaussian low-pass filter. Turn OFF = 0 (zero) / Turn ON = any other positive number. [Default: 0].
param.gaussianBandwidthBaseband bandwidth of a gaussian filter. It needs to be defined if param.gaussianOrder ~= 0;
param.besselOrderThe order of frequency-domain bessel filter for group delay insertion. Turn OFF = 0 (zero) / Turn ON = any other positive integer. [Default: 0].
param.besselBandwidthBaseband bandwidth of bessel filter. It needs to be defined if param.besselOrder ~= 0;
param.outputVoltageOutput peak voltage before DC level insertion. If it's not defined, it will not reformat the output voltage.
param.amplitudeImbalanceA vector containing amplitude imbalance for each output. E.g. if outputVoltage = 2, and amplitude imbalance equals to [1 0.9 1.1 0.8], so, the output peak voltage will be 2, 1.8, 2.2, and 1.6 for I1, Q1, I2, and Q2, respectively. [Default: 1]
param.levelDCA vector containing DC levels to be ADDED to each of in-phase and quadrature signals. [Default: 0].

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