phy: add warning when choosing higher 3/4 sampling
This commit is contained in:
committed by
Jaroslava Fiedlerova
parent
1e861ac04e
commit
ae8319dbb6
@@ -874,6 +874,7 @@ void get_samplerate_and_bw(int mu,
|
|||||||
switch(n_rb) {
|
switch(n_rb) {
|
||||||
case 270:
|
case 270:
|
||||||
if (threequarter_fs) {
|
if (threequarter_fs) {
|
||||||
|
warn_higher_threequarter_fs(n_rb, mu);
|
||||||
*sample_rate=92.16e6;
|
*sample_rate=92.16e6;
|
||||||
*samples_per_frame = 921600;
|
*samples_per_frame = 921600;
|
||||||
*tx_bw = 50e6;
|
*tx_bw = 50e6;
|
||||||
@@ -973,6 +974,7 @@ void get_samplerate_and_bw(int mu,
|
|||||||
|
|
||||||
case 273:
|
case 273:
|
||||||
if (threequarter_fs) {
|
if (threequarter_fs) {
|
||||||
|
warn_higher_threequarter_fs(n_rb, mu);
|
||||||
*sample_rate=184.32e6;
|
*sample_rate=184.32e6;
|
||||||
*samples_per_frame = 1843200;
|
*samples_per_frame = 1843200;
|
||||||
*tx_bw = 100e6;
|
*tx_bw = 100e6;
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
#include "common/utils/utils.h"
|
#include "common/utils/utils.h"
|
||||||
|
#include "common/utils/LOG/log.h"
|
||||||
|
|
||||||
#define MAX_SI_GROUPS 3
|
#define MAX_SI_GROUPS 3
|
||||||
#define NR_MAX_PDSCH_TBS 3824
|
#define NR_MAX_PDSCH_TBS 3824
|
||||||
@@ -272,6 +273,19 @@ static __attribute__((always_inline)) inline int count_bits64_with_mask(uint64_t
|
|||||||
return count_bits64(v & mask);
|
return count_bits64(v & mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void warn_higher_threequarter_fs(const int n_rb, const int mu)
|
||||||
|
{
|
||||||
|
LOG_W(PHY,
|
||||||
|
"3/4 sampling is not possible for current PRB size: %d and numerology: %d.\n "
|
||||||
|
"So 6/4 sampling is chosen to support x3xx type USRPs.\n "
|
||||||
|
"Note that this sampling rate increases fronthaul traffic, FFT buffer size and processing time by a factor of two compared "
|
||||||
|
"to 3/4 sampling rate.\n "
|
||||||
|
"Some PRACH configuration might not be supported with 6/4 FFT size.\n "
|
||||||
|
"Consider reducing the PRB size that would fit within the FFT size of 3/4 sampling\n",
|
||||||
|
n_rb,
|
||||||
|
mu);
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t reverse_bits(uint64_t in, int n_bits);
|
uint64_t reverse_bits(uint64_t in, int n_bits);
|
||||||
void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out);
|
void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out);
|
||||||
|
|
||||||
|
|||||||
@@ -199,14 +199,26 @@ void set_scs_parameters (NR_DL_FRAME_PARMS *fp, int mu, int N_RB_DL)
|
|||||||
AssertFatal(1==0,"Invalid numerology index %d", mu);
|
AssertFatal(1==0,"Invalid numerology index %d", mu);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fp->threequarter_fs)
|
// Start with FFT size 512
|
||||||
fp->ofdm_symbol_size = 3 * 128;
|
fp->ofdm_symbol_size = 512;
|
||||||
else
|
|
||||||
fp->ofdm_symbol_size = 4 * 128;
|
|
||||||
|
|
||||||
while(fp->ofdm_symbol_size < N_RB_DL * 12)
|
// Choose the right FFT size for the BW
|
||||||
|
while(fp->ofdm_symbol_size < N_RB_DL * NR_NB_SC_PER_RB)
|
||||||
fp->ofdm_symbol_size <<= 1;
|
fp->ofdm_symbol_size <<= 1;
|
||||||
|
|
||||||
|
// Do 3/4 sampling
|
||||||
|
if (fp->threequarter_fs) {
|
||||||
|
const uint16_t threeq_fft_size = fp->ofdm_symbol_size * 3 / 4;
|
||||||
|
if (threeq_fft_size < (N_RB_DL * NR_NB_SC_PER_RB)) {
|
||||||
|
// 3/4 sampling FFT size not enough
|
||||||
|
warn_higher_threequarter_fs(N_RB_DL, fp->numerology_index);
|
||||||
|
// Choose 2 times 3/4 sampling
|
||||||
|
fp->ofdm_symbol_size = threeq_fft_size << 1;
|
||||||
|
} else {
|
||||||
|
fp->ofdm_symbol_size = threeq_fft_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fp->first_carrier_offset = fp->ofdm_symbol_size - (N_RB_DL * 12 / 2);
|
fp->first_carrier_offset = fp->ofdm_symbol_size - (N_RB_DL * 12 / 2);
|
||||||
fp->nb_prefix_samples = fp->ofdm_symbol_size / 128 * 9;
|
fp->nb_prefix_samples = fp->ofdm_symbol_size / 128 * 9;
|
||||||
fp->nb_prefix_samples0 = fp->ofdm_symbol_size / 128 * (9 + (1 << mu));
|
fp->nb_prefix_samples0 = fp->ofdm_symbol_size / 128 * (9 + (1 << mu));
|
||||||
|
|||||||
Reference in New Issue
Block a user