WIP - signal types
This commit is contained in:
@@ -32,7 +32,7 @@ classdef AWG
|
|||||||
% Detailed explanation goes here
|
% Detailed explanation goes here
|
||||||
|
|
||||||
arguments
|
arguments
|
||||||
options.preset = [];
|
options.preset = [] ;
|
||||||
options.kover = 16;
|
options.kover = 16;
|
||||||
options.repetitions = 1;
|
options.repetitions = 1;
|
||||||
options.normalize = 1;
|
options.normalize = 1;
|
||||||
@@ -79,9 +79,18 @@ classdef AWG
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function data_out = process_channel(obj,data_in)
|
function elec_out = process_channel(obj,data_in)
|
||||||
%METHOD1 Summary of this method goes here
|
%METHOD1 Summary of this method goes here
|
||||||
% Detailed explanation goes here
|
% Detailed explanation goes here
|
||||||
|
arguments(Input)
|
||||||
|
obj
|
||||||
|
data_in Informationsignal
|
||||||
|
end
|
||||||
|
|
||||||
|
arguments(Output)
|
||||||
|
elec_out Electricalsignal
|
||||||
|
end
|
||||||
|
|
||||||
obj.signal_length = length(data_in);
|
obj.signal_length = length(data_in);
|
||||||
|
|
||||||
if obj.normalize
|
if obj.normalize
|
||||||
@@ -96,24 +105,24 @@ classdef AWG
|
|||||||
|
|
||||||
% 1. Quantize the signal
|
% 1. Quantize the signal
|
||||||
if obj.bit_resolution>0
|
if obj.bit_resolution>0
|
||||||
data_out = obj.quantization(data_in) ;
|
elec_out = obj.quantization(data_in) ;
|
||||||
else
|
else
|
||||||
data_out = data_in;
|
elec_out = data_in;
|
||||||
end
|
end
|
||||||
|
|
||||||
% 2. Sample and hold + repeat (data_out: 1xsignal length)
|
% 2. Sample and hold + repeat (data_out: 1xsignal length)
|
||||||
data_out = repmat(data_out,obj.repetitions,obj.kover);
|
elec_out = repmat(elec_out,obj.repetitions,obj.kover);
|
||||||
data_out = reshape(data_out',[],1);
|
elec_out = reshape(elec_out',[],1);
|
||||||
|
|
||||||
% 3. Add skew
|
% 3. Add skew
|
||||||
if obj.skew_active
|
if obj.skew_active
|
||||||
data_out = obj.skew(data_out);
|
elec_out = obj.skew(elec_out);
|
||||||
end
|
end
|
||||||
|
|
||||||
% 4. Apply LPF on the signal
|
% 4. Apply LPF on the signal
|
||||||
if obj.lpf_active
|
if obj.lpf_active
|
||||||
lpf = Filter('filtdegree',4,"f_cutoff",obj.f_cutoff,"fsamp",obj.kover*obj.fdac,"filterType",filtertypes.bessel_inp);
|
lpf = Filter('filtdegree',4,"f_cutoff",obj.f_cutoff,"fsamp",obj.kover*obj.fdac,"filterType",filtertypes.bessel_inp);
|
||||||
data_out = lpf.process(data_out);
|
elec_out = lpf.process(elec_out);
|
||||||
% obj.H_lpf = obj.buildFilter(1);
|
% obj.H_lpf = obj.buildFilter(1);
|
||||||
% data_out = obj.lpf(data_out) ;
|
% data_out = obj.lpf(data_out) ;
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ classdef Electricalsignal < Signal
|
|||||||
end
|
end
|
||||||
|
|
||||||
methods
|
methods
|
||||||
function obj = Electricalsignal(signal, fsym, fsimu)
|
function obj = Electricalsignal(signal)
|
||||||
%ELECTRICALSIGNAL Construct an instance of this class
|
%ELECTRICALSIGNAL Construct an instance of this class
|
||||||
% Detailed explanation goes here
|
% Detailed explanation goes here
|
||||||
obj = obj@Signal(signal, fsym, fsimu);
|
obj = obj@Signal(signal);
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
25
Classes/Informationsignal.m
Normal file
25
Classes/Informationsignal.m
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
classdef Informationsignal < Signal
|
||||||
|
%OPTICALSIGNAL Summary of this class goes here
|
||||||
|
% Detailed explanation goes here
|
||||||
|
|
||||||
|
properties
|
||||||
|
nase
|
||||||
|
lambda_nm
|
||||||
|
end
|
||||||
|
|
||||||
|
methods
|
||||||
|
function obj = Informationsignal(signal)
|
||||||
|
%OPTICALSIGNAL Construct an instance of this class
|
||||||
|
% Detailed explanation goes here
|
||||||
|
obj = obj@Signal(signal);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function outputArg = method1(obj,inputArg)
|
||||||
|
%METHOD1 Summary of this method goes here
|
||||||
|
% Detailed explanation goes here
|
||||||
|
outputArg = obj.Property1 + inputArg;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@@ -9,14 +9,14 @@ classdef Signal
|
|||||||
end
|
end
|
||||||
|
|
||||||
methods
|
methods
|
||||||
function obj = Signal(signal, fsym)
|
function obj = Signal(signal)
|
||||||
%SIGNAL Construct an instance of this class
|
%SIGNAL Construct an instance of this class
|
||||||
% Detailed explanation goes here
|
% Detailed explanation goes here
|
||||||
obj.signal = signal;
|
obj.signal = signal;
|
||||||
|
|
||||||
obj.fsym = fsym;
|
obj.fsym = 0;
|
||||||
|
|
||||||
obj.fsimu = fsym;
|
obj.fsimu = 0;
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -24,14 +24,15 @@ for i = 1:log2(M)
|
|||||||
[bitpattern(:,i),seed] = prbs(O,N,seed);
|
[bitpattern(:,i),seed] = prbs(O,N,seed);
|
||||||
end
|
end
|
||||||
|
|
||||||
S = Signal(bitpattern,fsym);
|
Bits = Informationsignal(bitpattern);
|
||||||
|
|
||||||
pamData = pam_mapping(bitpattern,M,0);
|
Bits.signal = pam_mapping(Bits.signal,M,0);
|
||||||
|
|
||||||
|
Bits.signal = applyPulseShaping(Bits.signal,fsym,fdac);
|
||||||
|
|
||||||
shapedData = applyPulseShaping(pamData,fsym,fdac);
|
|
||||||
|
|
||||||
awg = AWG('preset','M8196A','fdac',fdac,'kover',kover,'lpf_active',1);
|
awg = AWG('preset','M8196A','fdac',fdac,'kover',kover,'lpf_active',1);
|
||||||
awgSignal = awg.process_channel(shapedData);
|
awgSignal = awg.process_channel(Bits);
|
||||||
|
|
||||||
fil = Filter('filtdegree',4,"f_cutoff",50e9,"fsamp",fdac,"filterType",filtertypes.bessel_bilin);
|
fil = Filter('filtdegree',4,"f_cutoff",50e9,"fsamp",fdac,"filterType",filtertypes.bessel_bilin);
|
||||||
filtered = fil.process(awgSignal);
|
filtered = fil.process(awgSignal);
|
||||||
|
|||||||
Reference in New Issue
Block a user