From f6b2f3eee92b975bdf865e63c708b1645c91f318 Mon Sep 17 00:00:00 2001 From: Silas Oettinghaus Date: Mon, 15 May 2023 16:14:37 +0200 Subject: [PATCH] WIP - signal types --- Classes/AWG.m | 25 +++++++++++++++++-------- Classes/Electricalsignal.m | 4 ++-- Classes/Informationsignal.m | 25 +++++++++++++++++++++++++ Classes/Signal.m | 6 +++--- comm_tb.m | 9 +++++---- 5 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 Classes/Informationsignal.m diff --git a/Classes/AWG.m b/Classes/AWG.m index 32e5374..4c453e3 100644 --- a/Classes/AWG.m +++ b/Classes/AWG.m @@ -32,7 +32,7 @@ classdef AWG % Detailed explanation goes here arguments - options.preset = []; + options.preset = [] ; options.kover = 16; options.repetitions = 1; options.normalize = 1; @@ -79,9 +79,18 @@ classdef AWG end - function data_out = process_channel(obj,data_in) + function elec_out = process_channel(obj,data_in) %METHOD1 Summary of this method 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); if obj.normalize @@ -96,24 +105,24 @@ classdef AWG % 1. Quantize the signal if obj.bit_resolution>0 - data_out = obj.quantization(data_in) ; + elec_out = obj.quantization(data_in) ; else - data_out = data_in; + elec_out = data_in; end % 2. Sample and hold + repeat (data_out: 1xsignal length) - data_out = repmat(data_out,obj.repetitions,obj.kover); - data_out = reshape(data_out',[],1); + elec_out = repmat(elec_out,obj.repetitions,obj.kover); + elec_out = reshape(elec_out',[],1); % 3. Add skew if obj.skew_active - data_out = obj.skew(data_out); + elec_out = obj.skew(elec_out); end % 4. Apply LPF on the signal if obj.lpf_active 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); % data_out = obj.lpf(data_out) ; end diff --git a/Classes/Electricalsignal.m b/Classes/Electricalsignal.m index b6f2b77..defadb1 100644 --- a/Classes/Electricalsignal.m +++ b/Classes/Electricalsignal.m @@ -7,10 +7,10 @@ classdef Electricalsignal < Signal end methods - function obj = Electricalsignal(signal, fsym, fsimu) + function obj = Electricalsignal(signal) %ELECTRICALSIGNAL Construct an instance of this class % Detailed explanation goes here - obj = obj@Signal(signal, fsym, fsimu); + obj = obj@Signal(signal); end diff --git a/Classes/Informationsignal.m b/Classes/Informationsignal.m new file mode 100644 index 0000000..f204a4e --- /dev/null +++ b/Classes/Informationsignal.m @@ -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 + diff --git a/Classes/Signal.m b/Classes/Signal.m index 345897f..f0f4cb1 100644 --- a/Classes/Signal.m +++ b/Classes/Signal.m @@ -9,14 +9,14 @@ classdef Signal end methods - function obj = Signal(signal, fsym) + function obj = Signal(signal) %SIGNAL Construct an instance of this class % Detailed explanation goes here obj.signal = signal; - obj.fsym = fsym; + obj.fsym = 0; - obj.fsimu = fsym; + obj.fsimu = 0; end diff --git a/comm_tb.m b/comm_tb.m index 0596170..47ae742 100644 --- a/comm_tb.m +++ b/comm_tb.m @@ -24,14 +24,15 @@ for i = 1:log2(M) [bitpattern(:,i),seed] = prbs(O,N,seed); 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); -awgSignal = awg.process_channel(shapedData); +awgSignal = awg.process_channel(Bits); fil = Filter('filtdegree',4,"f_cutoff",50e9,"fsamp",fdac,"filterType",filtertypes.bessel_bilin); filtered = fil.process(awgSignal);