Clear Filters
Clear Filters

Does the NR HDL Downlink Receiver work on real raw data?

34 views (last 30 days)
Hi, I have run the Downlink Receiver code with simulations (generated from the 5G Waveform Generator in MATLAB) and there are no issues there, however, when I try to tun the same code through collected raw data, it has never worked before (it says PSS not found). The collected data is confirmed to contain relevant information by other members of my research team, so the problem does not lie with the data itself. Has anyone faced a similar issue?
Do note that both the SSB detection code and the cell search code do not work.
Thank you so much for your help!
Here is the spectrogram of the data for reference:
Here is my code snippet for reference:
loaded_data = load("srsRAN_octoclock_samprate_2304_10MHz_scscommon_15khz_b200_fdd_n71_pci_1_2phones_onevoice.mat");
num_entries = 2e6; % number of entries to considered
rxWaveform = loaded_data.transposedData(1:num_entries);
minChanBW = 5;
Lmax = 100;
FoCoarse = 0;
rxSampleRate = 10e6;
%% Plot the spectogram of the waveform.
scsSSB = 15;
figure(2); clf;
nfft = round(rxSampleRate/(scsSSB*1e3));
spectrogram(rxWaveform(:,1),ones(nfft,1),0,nfft,'centered',rxSampleRate,'yaxis','MinThreshold',-110);
title('Spectrogram of the Received Waveform (15 KHz)')
%% Detect SSBs
scsSSB = 15
[pssList,diagnostics] = nrhdlexamples.ssbDetect(rxWaveform,FoCoarse,scsSSB);
% Check if any PSS have been detected
if isempty(pssList)
disp('No PSS found during SSB detection.');
return;
end
disp('Detected PSS list:')
disp(struct2table(pssList));
%% Search for Cells
%%
% Define the frequency range endpoints and subcarrier spacing search space
% and call the |nrhdlexamples.cellSearch| function. The function displays
% information on the search progress as it runs.
% The frequency range endpoints must be multiples of half the
% maximum subcarrier spacing.
frequencyRange = [-120 120];
subcarrierSpacings = [15 30];
[ssBlockInfo,ssbGrid] = nrhdlexamples.cellSearch(rxWaveform,frequencyRange,subcarrierSpacings,struct(...
'DisplayPlots',false,...
'DisplayCommandWindowOutput',true));
% Check cell search successfully found and demodulated SSB.
if isempty(ssBlockInfo)
disp('Cell search failed to find or demodulate SSB.');
return;
end

Answers (1)

MULI
MULI on 21 Aug 2024 at 7:27
Hi Marvell,
I understand that you are encountering a challenges with your 5G Downlink Receiver code, when transitioning from simulated data to real-world collected data.
You may follow the below strategies that helps in resolving the issue:
  • Verify Data Integrity and Format: Make sure that collected data should match the structure and type of the simulated data. Apply any necessary preprocessing steps, such as filtering, resampling if required.
  • Frequency Offset Correction: Adjust `FoCoarse` or implement a frequency correction step to align the signal correctly.
  • Parameter Verification: Ensure that parameters such as subcarrier spacing (`scsSSB`), sample rate (`rxSampleRate`) and bandwidth match those used during data collection.
  • Algorithm Sensitivity Tuning: You can modify the sensitivity and thresholds in your detection algorithms because real-world data can vary from simulations.
By following these steps you should be able to improve the detection of Primary Synchronization Signal (PSS) and Synchronization Signal Block (SSB) in your real-world 5G data.

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!