Commit 5961e417 authored by Raymond Knopp's avatar Raymond Knopp

configuration file parameter for phase compensation

parent 95469827
...@@ -229,7 +229,7 @@ void rx_func(void *param) ...@@ -229,7 +229,7 @@ void rx_func(void *param)
L1_nr_prach_procedures(gNB,frame_rx,slot_rx); L1_nr_prach_procedures(gNB,frame_rx,slot_rx);
//WA: comment rotation in tx/rx //WA: comment rotation in tx/rx
if(1/*(gNB->num_RU == 1) && (gNB->RU_list[0]->if_south != REMOTE_IF4p5)*/) { if(gNB->phase_comp > 0) {
//apply the rx signal rotation here //apply the rx signal rotation here
int soffset = (slot_rx & 3) * gNB->frame_parms.symbols_per_slot * gNB->frame_parms.ofdm_symbol_size; int soffset = (slot_rx & 3) * gNB->frame_parms.symbols_per_slot * gNB->frame_parms.ofdm_symbol_size;
for (int aa = 0; aa < gNB->frame_parms.nb_antennas_rx; aa++) { for (int aa = 0; aa < gNB->frame_parms.nb_antennas_rx; aa++) {
......
...@@ -654,6 +654,10 @@ typedef struct PHY_VARS_gNB_s { ...@@ -654,6 +654,10 @@ typedef struct PHY_VARS_gNB_s {
// reference amplitude for TX // reference amplitude for TX
int16_t TX_AMP; int16_t TX_AMP;
// flag to activate 3GPP phase symbolwise rotation
int phase_comp;
// PUCCH0 Look-up table for cyclic-shifts // PUCCH0 Look-up table for cyclic-shifts
NR_gNB_PUCCH0_LUT_t pucch0_lut; NR_gNB_PUCCH0_LUT_t pucch0_lut;
......
...@@ -220,7 +220,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx, ...@@ -220,7 +220,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
// if ((frame&127) == 0) dump_pdsch_stats(gNB); // if ((frame&127) == 0) dump_pdsch_stats(gNB);
//apply the OFDM symbol rotation here //apply the OFDM symbol rotation here
if(1/*(gNB->num_RU == 1) && (gNB->RU_list[0]->if_south != REMOTE_IF4p5)*/) { if(gNB->phase_comp > 0) {
for (aa=0; aa<cfg->carrier_config.num_tx_ant.value; aa++) { for (aa=0; aa<cfg->carrier_config.num_tx_ant.value; aa++) {
apply_nr_rotation_TX(fp, apply_nr_rotation_TX(fp,
&gNB->common_vars.txdataF[aa][txdataF_offset], &gNB->common_vars.txdataF[aa][txdataF_offset],
......
...@@ -58,6 +58,8 @@ ...@@ -58,6 +58,8 @@
#define HLP_TP_SIZ "thread_pool_size paramter removed, please use --thread-pool" #define HLP_TP_SIZ "thread_pool_size paramter removed, please use --thread-pool"
#define CONFIG_STRING_L1_TX_AMP_BACKOFF_dB "tx_amp_backoff_dB" #define CONFIG_STRING_L1_TX_AMP_BACKOFF_dB "tx_amp_backoff_dB"
#define HLP_L1TX_BO "Backoff from full-scale output at the L1 entity(frequency domain), ex. 12 would corresponding to 14-bit input level (6 dB/bit). Default 36 dBFS for OAI RU entity" #define HLP_L1TX_BO "Backoff from full-scale output at the L1 entity(frequency domain), ex. 12 would corresponding to 14-bit input level (6 dB/bit). Default 36 dBFS for OAI RU entity"
#define CONFIG_STRING_L1_PHASE_COMP "phase_compensation"
#define HLP_L1_PHASE_COMP "Apply NR symbolwise phase rotation"
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* L1 configuration parameters */ /* L1 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */ /* optname helpstr paramflags XXXptr defXXXval type numelt */
...@@ -83,6 +85,7 @@ ...@@ -83,6 +85,7 @@
{CONFIG_STRING_L1_RX_THREAD_CORE, NULL, 0, .uptr=NULL, .defintval=-1, TYPE_UINT, 0}, \ {CONFIG_STRING_L1_RX_THREAD_CORE, NULL, 0, .uptr=NULL, .defintval=-1, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_TX_THREAD_CORE, NULL, 0, .uptr=NULL, .defintval=-1, TYPE_UINT, 0}, \ {CONFIG_STRING_L1_TX_THREAD_CORE, NULL, 0, .uptr=NULL, .defintval=-1, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_TX_AMP_BACKOFF_dB, HLP_L1TX_BO,0, .uptr=NULL, .defintval=36, TYPE_UINT, 0}, \ {CONFIG_STRING_L1_TX_AMP_BACKOFF_dB, HLP_L1TX_BO,0, .uptr=NULL, .defintval=36, TYPE_UINT, 0}, \
{CONFIG_STRING_L1_PHASE_COMP, HLP_L1_PHASE_COMP,0, .uptr=NULL, .defintval=1, TYPE_UINT, 0}, \
} }
// clang-format on // clang-format on
#define L1_CC_IDX 0 #define L1_CC_IDX 0
...@@ -104,6 +107,7 @@ ...@@ -104,6 +107,7 @@
#define L1_RX_THREAD_CORE 16 #define L1_RX_THREAD_CORE 16
#define L1_TX_THREAD_CORE 17 #define L1_TX_THREAD_CORE 17
#define L1_TX_AMP_BACKOFF_dB 18 #define L1_TX_AMP_BACKOFF_dB 18
#define L1_PHASE_COMP 19
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------------------------------------------------------------------*/
#endif #endif
...@@ -820,6 +820,7 @@ void RCconfig_NR_L1(void) ...@@ -820,6 +820,7 @@ void RCconfig_NR_L1(void)
RC.gNB[j]->L1_tx_thread_core = *(L1_ParamList.paramarray[j][L1_TX_THREAD_CORE].iptr); RC.gNB[j]->L1_tx_thread_core = *(L1_ParamList.paramarray[j][L1_TX_THREAD_CORE].iptr);
LOG_I(PHY,"L1_RX_THREAD_CORE %d (%d)\n",*(L1_ParamList.paramarray[j][L1_RX_THREAD_CORE].iptr),L1_RX_THREAD_CORE); LOG_I(PHY,"L1_RX_THREAD_CORE %d (%d)\n",*(L1_ParamList.paramarray[j][L1_RX_THREAD_CORE].iptr),L1_RX_THREAD_CORE);
RC.gNB[j]->TX_AMP = (int16_t)(32767.0 / pow(10.0, .05 * (double)(*L1_ParamList.paramarray[j][L1_TX_AMP_BACKOFF_dB].uptr))); RC.gNB[j]->TX_AMP = (int16_t)(32767.0 / pow(10.0, .05 * (double)(*L1_ParamList.paramarray[j][L1_TX_AMP_BACKOFF_dB].uptr)));
RC.gNB[j]->phase_comp = *L1_ParamList.paramarray[j][L1_PHASE_COMP].uptr;
LOG_I(PHY, "TX_AMP = %d (-%d dBFS)\n", RC.gNB[j]->TX_AMP, *L1_ParamList.paramarray[j][L1_TX_AMP_BACKOFF_dB].uptr); LOG_I(PHY, "TX_AMP = %d (-%d dBFS)\n", RC.gNB[j]->TX_AMP, *L1_ParamList.paramarray[j][L1_TX_AMP_BACKOFF_dB].uptr);
AssertFatal(RC.gNB[j]->TX_AMP > 300, "TX_AMP is too small, must be larger than 300 (is %d)\n", RC.gNB[j]->TX_AMP); AssertFatal(RC.gNB[j]->TX_AMP > 300, "TX_AMP is too small, must be larger than 300 (is %d)\n", RC.gNB[j]->TX_AMP);
if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_mac") == 0) { if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "local_mac") == 0) {
......
...@@ -2064,6 +2064,7 @@ uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config, ...@@ -2064,6 +2064,7 @@ uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config,
if (NCS == 0) return nb_preambles; if (NCS == 0) return nb_preambles;
else { else {
r = L_ra/NCS; r = L_ra/NCS;
AssertFatal(r>0,"bad r: L_ra %d, NCS %d\n",L_ra,NCS);
found_sequences = (nb_preambles/r) + (nb_preambles%r!=0); //ceil(nb_preambles/r) found_sequences = (nb_preambles/r) + (nb_preambles%r!=0); //ceil(nb_preambles/r)
LOG_D(MAC, "Computing NR root sequences: found %u sequences\n", found_sequences); LOG_D(MAC, "Computing NR root sequences: found %u sequences\n", found_sequences);
return (found_sequences); return (found_sequences);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment