From 5dfade331a658887c0d26988ff00e615a4536fa6 Mon Sep 17 00:00:00 2001 From: magf Date: Thu, 8 Jan 2026 15:21:55 +0100 Subject: [PATCH] First version of a timing recovery implementation (not done yet) --- Classes/04_DSP/Timing_Recovery.m | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Classes/04_DSP/Timing_Recovery.m diff --git a/Classes/04_DSP/Timing_Recovery.m b/Classes/04_DSP/Timing_Recovery.m new file mode 100644 index 0000000..ba16f10 --- /dev/null +++ b/Classes/04_DSP/Timing_Recovery.m @@ -0,0 +1,47 @@ +classdef Timing_Recovery < handle + + properties(Access=public) + timing_error_detector + sps + damping_factor + normalized_loop_bandwidth + detector_gain + end + + methods(Access=public) + function obj = FFE(options) + arguments(Input) + + options.timing_error_detector = 'Gardner'; + options.sps = 2; + options.damping_factor = 1.0; + options.normalized_loop_bandwidth = 0.005; + options.detector_gain = 1; + + end + + fn = fieldnames(options); + for n = 1:numel(fn) + obj.(fn{n}) = options.(fn{n}); + end + + obj.e = zeros(obj.order,1); + obj.error = 0; + + end + + function data_out = process(obj, data_in) + + timing_synchronization = comm.SymbolSynchronizer( ... + "TimingErrorDetector", obj.timing_error_detector, ... + "SamplesPerSymbol", obj.sps, ... + "DampingFactor", obj.damping_factor, ... + "NormalizedLoopBandwidth", obj.normalized_loop_bandwidth, ... + "DetectorGain", obj.detector_gain); + + data_out.signal = timing_synchronization(data_in.signal); + + end + end +end +