ecoc measurements

This commit is contained in:
Silas Labor Zizou
2025-04-13 16:29:12 +02:00
parent 00f1c557c0
commit 0236103b13
19 changed files with 709 additions and 359 deletions

View File

@@ -19,7 +19,9 @@ end
[eq_signal_sd,eq_noise] = eq_.process(rx_signal,tx_symbols);
if ~isempty(options.postFFE)
tic
[eq_signal_sd,eq_noise] = options.postFFE.process(eq_signal_sd,tx_symbols);
toc
end
eq_signal_hd = PAMmapper(M,0).quantize(eq_signal_sd);
@@ -237,29 +239,32 @@ if options.showAnalysis
% fprintf(['VNLE EVM lvl: ',repmat('%.3f ',1,numel(evm_lvl)),' \n'],evm_lvl);
fprintf('VNLE BER: %.2e \n',ber_vnle);
fprintf('MLSE BER: %.2e \n',ber_mlse);
% fprintf('VNLE BER: %.2e \n',ber_vnle);
%
% fprintf('MLSE BER: %.2e \n',ber_mlse);
figure(336);clf;
showEQNoisePSD(eq_noise,"fignum",336,"displayname",'Residual Noise after VNLE','postfilter_taps',pf_.coefficients);
% figure(337);clf;
% rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal');
rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal');
% figure(338);clf;
% showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients','fignum',338);
tx_symbols.spectrum("normalizeTo0dB",1,"fignum",337,'displayname','Tx Signal');
if ~isempty(options.postFFE)
showEQcoefficients('n1',options.postFFE.e,"displayname",'Coefficients','fignum',338);
end
showLevelHistogram(eq_signal_sd,tx_symbols)
% showLevelHistogram(mlse_sig_sd,tx_symbols)
showEQfilter(eq_.e,eq_signal_sd.fs.*2);
showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients');
figure(340);clf;
eq_signal_sd.eye(eq_signal_sd.fs,M,"fignum",340);
showEQNoiseSNR(tx_symbols,eq_noise,"displayname",'vnle snr','fignum',101);
figure(341);clf;
showLevelHistogram(eq_signal_sd,tx_symbols,"fignum",341);
%%% EQ SNR Spectrum %230
%snr
% showErrorBurstCount(eq_signal_sd,tx_symbols)
% autoArrangeFigures(3,3,2)
end

View File

@@ -53,8 +53,8 @@ function showEQcoefficients(options)
for i = 1:numSubplots
subplot(1, numSubplots, i);
stem(coeffs{i}, 'Color', options.color, 'LineWidth', 1, ...
'Marker', '.', 'MarkerSize', 10);
stem(coeffs{i}, 'Color', options.color, 'LineWidth', 0.1, ...
'Marker', '.', 'MarkerSize', 1);
title(titles{i});
ylim([-1, 1]); % Set y-axis limits to [-1, 1]
grid on;

View File

@@ -14,7 +14,7 @@ function showEQfilter(coefficients,fs)
H = H(1:half_nfft);
% Plot the magnitude and phase responses.
figure;
figure(339);
% Magnitude response (in dB)
subplot(2,1,1);

View File

@@ -15,7 +15,7 @@ function holdAndShowValue()
'ButtonPushedFcn', @(src, event) closeWindow());
% Initialize the timer
updateTimer = timer('ExecutionMode', 'fixedRate', 'Period', 1, ...
updateTimer = timer('ExecutionMode', 'fixedRate', 'Period', 0.1, ...
'TimerFcn', @(src, event) updatePowerValues());
% Start the timer

View File

@@ -1,9 +1,34 @@
% Define the precomp path
precomp_path = "C:\Users\sioe\Documents\MATLAB\imdd_simulation\projects\ECOC_2025\";
precomp_path = "D:\kiel_dsp\imdd_simulation\projects\HighSpeed_ETH";
precomp_filename = "lab_high_speed_nachtschichtmzm";
% precomp_filename = "lab_high_speed";
% precomp_filename = "lab_high_speed";
% Step 1: Find all valid files (assume .mat files for ChannelFreqResp)
fileList = dir(fullfile(precomp_path, '*.mat'));
fileNames = {fileList.name};
freqresp = ChannelFreqResp("Nacq",1024,"Navg",64,"Ncp",63,'f_ref',92e9);
freqresp.load('loadPath',precomp_path,'fileName',precomp_filename);
freqresp.plot();
% Check if any files found
if isempty(fileNames)
error('No valid .mat files found in the specified folder.');
end
% Step 2: Let user select which files to plot
[selection, ok] = listdlg( ...
'PromptString', 'Select Transfer Functions to Plot:', ...
'SelectionMode', 'multiple', ...
'ListString', fileNames);
% Check if user pressed OK
if ~ok || isempty(selection)
disp('No files selected. Exiting.');
return;
end
% Step 3: Loop over selected files and plot
for idx = selection
precomp_filename = erase(fileNames{idx}, '.mat'); % Remove .mat extension
freqresp = ChannelFreqResp("Nacq",1024,"Navg",64,"Ncp",63,'f_ref',92e9);
freqresp.load('loadPath', precomp_path, 'fileName', precomp_filename);
fprintf('Plotting: %s\n', precomp_filename);
freqresp.plot();
end