Skip to content
Snippets Groups Projects
Commit 21bb011b authored by Bo Zhao's avatar Bo Zhao Committed by cig
Browse files

Conversion from the peak detection to the TA value, considering the...

Conversion from the peak detection to the TA value, considering the numerology, N_RB and the sampling rate
parent 1996bdaa
No related branches found
No related tags found
No related merge requests found
...@@ -626,6 +626,32 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, ...@@ -626,6 +626,32 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
} }
}// preamble_index }// preamble_index
// The conversion from *max_preamble_delay from TA value is done here.
// It is normalized to the 30.72 Ms/s, considering the numerology, N_RB and the sampling rate
// See table 6.3.3.1 -1 and -2 in 38211.
// Format 0, 1, 2: 24576 samples @ 30.72 Ms/s, 98304 samples @ 122.88 Ms/s
// By solving:
// max_preamble_delay * ( (24576*(fs/30.72M)) / 1024 ) / fs = TA * 16 * 64 / 2^mu * Tc
// Format 3: 6144 samples @ 30.72 Ms/s, 24576 samples @ 122.88 Ms/s
// By solving:
// max_preamble_delay * ( (6144*(fs/30.72M)) / 1024 ) / fs = TA * 16 * 64 / 2^mu * Tc
// Format >3: 2048/2^mu samples @ 30.72 Ms/s, 2048/2^mu * 4 samples @ 122.88 Ms/s
// By solving:
// max_preamble_delay * ( (2048/2^mu*(fs/30.72M)) / 256 ) / fs = TA * 16 * 64 / 2^mu * Tc
uint16_t *TA = max_preamble_delay;
int mu = fp->numerology_index;
if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2)
*TA = *TA*3*(1<<mu)/2;
else if (prach_fmt == 3)
*TA = *TA*3*(1<<mu)/8;
else if (prach_fmt > 3)
*TA = *TA/2;
if (LOG_DUMPFLAG(PRACH)) { if (LOG_DUMPFLAG(PRACH)) {
int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840)); int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
if (en>60) { if (en>60) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment