fixing RRC power levels at 5G side to avoid saturation
This commit is contained in:
@@ -44,7 +44,7 @@
|
|||||||
/* let's have 100 RBs functional for the basic simulator */
|
/* let's have 100 RBs functional for the basic simulator */
|
||||||
# define T_BUFFER_MAX (1024*64*2)
|
# define T_BUFFER_MAX (1024*64*2)
|
||||||
#else
|
#else
|
||||||
# define T_BUFFER_MAX (1024*64)
|
# define T_BUFFER_MAX (1024*64*2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* size of the local cache for messages (must be pow(2,something)) */
|
/* size of the local cache for messages (must be pow(2,something)) */
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
/* we don't need much space for the basic simulator */
|
/* we don't need much space for the basic simulator */
|
||||||
# define T_CACHE_SIZE 1024
|
# define T_CACHE_SIZE 1024
|
||||||
#else
|
#else
|
||||||
# define T_CACHE_SIZE (8192 * 2)
|
# define T_CACHE_SIZE (8192)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* maximum number of bytes a message can contain */
|
/* maximum number of bytes a message can contain */
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
ID = BENETEL
|
||||||
|
GROUP = ALL
|
||||||
|
FORMAT = int,frame : int,slot : buffer,rxdataF
|
||||||
|
|
||||||
#general logs
|
#general logs
|
||||||
ID = ENB_MASTER_TICK
|
ID = ENB_MASTER_TICK
|
||||||
DESC = eNodeB master tick - one tick per ms, to be used as "reference clock", mostly for ticktime view
|
DESC = eNodeB master tick - one tick per ms, to be used as "reference clock", mostly for ticktime view
|
||||||
|
|||||||
@@ -1001,7 +1001,13 @@ void init_eNB_afterRU(void) {
|
|||||||
for (i=0; i<gNB->RU_list[ru_id]->nb_rx; aa++,i++) {
|
for (i=0; i<gNB->RU_list[ru_id]->nb_rx; aa++,i++) {
|
||||||
LOG_I(PHY,"Attaching RU %d antenna %d to gNB antenna %d\n",gNB->RU_list[ru_id]->idx,i,aa);
|
LOG_I(PHY,"Attaching RU %d antenna %d to gNB antenna %d\n",gNB->RU_list[ru_id]->idx,i,aa);
|
||||||
gNB->prach_vars.rxsigF[aa] = gNB->RU_list[ru_id]->prach_rxsigF[0][i];
|
gNB->prach_vars.rxsigF[aa] = gNB->RU_list[ru_id]->prach_rxsigF[0][i];
|
||||||
|
#if 0
|
||||||
|
printf("before %p\n", gNB->common_vars.rxdataF[aa]);
|
||||||
|
#endif
|
||||||
gNB->common_vars.rxdataF[aa] = gNB->RU_list[ru_id]->common.rxdataF[i];
|
gNB->common_vars.rxdataF[aa] = gNB->RU_list[ru_id]->common.rxdataF[i];
|
||||||
|
#if 0
|
||||||
|
printf("after %p\n", gNB->common_vars.rxdataF[aa]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
|
|||||||
int **ul_ch_estimates = gNB->pusch_vars[ul_id]->ul_ch_estimates;
|
int **ul_ch_estimates = gNB->pusch_vars[ul_id]->ul_ch_estimates;
|
||||||
int **rxdataF = gNB->common_vars.rxdataF;
|
int **rxdataF = gNB->common_vars.rxdataF;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
printf("nr_pusch_channel_estimation rxdataF %p\n", &rxdataF[0][0]);
|
||||||
|
#endif
|
||||||
|
|
||||||
nushift = (p>>1)&1;
|
nushift = (p>>1)&1;
|
||||||
gNB->frame_parms.nushift = nushift;
|
gNB->frame_parms.nushift = nushift;
|
||||||
|
|
||||||
|
|||||||
@@ -250,6 +250,10 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
|
|||||||
|
|
||||||
uint8_t is_dmrs_re;
|
uint8_t is_dmrs_re;
|
||||||
start_re = (frame_parms->first_carrier_offset + (pusch_pdu->rb_start * NR_NB_SC_PER_RB))%frame_parms->ofdm_symbol_size;
|
start_re = (frame_parms->first_carrier_offset + (pusch_pdu->rb_start * NR_NB_SC_PER_RB))%frame_parms->ofdm_symbol_size;
|
||||||
|
#if 0
|
||||||
|
printf("frame_parms->first_carrier_offset in nr_ulsch_extract_rbs_single %d\n", frame_parms->first_carrier_offset);
|
||||||
|
printf("rxdataF in nr_ulsch_extract_rbs_single %p\n", &rxdataF[0][0]);
|
||||||
|
#endif
|
||||||
nb_re_pusch = NR_NB_SC_PER_RB * pusch_pdu->rb_size;
|
nb_re_pusch = NR_NB_SC_PER_RB * pusch_pdu->rb_size;
|
||||||
#ifdef __AVX2__
|
#ifdef __AVX2__
|
||||||
int nb_re_pusch2 = nb_re_pusch + (nb_re_pusch&7);
|
int nb_re_pusch2 = nb_re_pusch + (nb_re_pusch&7);
|
||||||
|
|||||||
@@ -551,6 +551,11 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
|
|||||||
|
|
||||||
gNB_I0_measurements(gNB);
|
gNB_I0_measurements(gNB);
|
||||||
|
|
||||||
|
// measure enegry in SS=10 L=4, nb_rb = 18, first_rb = 0 (corresponds to msg3)
|
||||||
|
int offset = 10*gNB->frame_parms.ofdm_symbol_size + gNB->frame_parms.first_carrier_offset;
|
||||||
|
int power_rxF = signal_energy_nodc(&gNB->common_vars.rxdataF[0][offset],12*18);
|
||||||
|
LOG_D(PHY,"frame %d, slot %d: UL signal energy %d\n",frame_rx,slot_rx,power_rxF);
|
||||||
|
|
||||||
for (int i=0;i<NUMBER_OF_NR_PUCCH_MAX;i++){
|
for (int i=0;i<NUMBER_OF_NR_PUCCH_MAX;i++){
|
||||||
NR_gNB_PUCCH_t *pucch = gNB->pucch[i];
|
NR_gNB_PUCCH_t *pucch = gNB->pucch[i];
|
||||||
if (pucch) {
|
if (pucch) {
|
||||||
@@ -646,6 +651,8 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
T(T_BENETEL, T_INT(frame_rx), T_INT(slot_rx), T_BUFFER(&gNB->common_vars.rxdataF[0][0], 2048*4*14));
|
||||||
|
|
||||||
uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index;
|
uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index;
|
||||||
uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols;
|
uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols;
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH,1);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH,1);
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
UE_scheduling_control = &(UE_info->UE_sched_ctrl[UE_id]);
|
UE_scheduling_control = &(UE_info->UE_sched_ctrl[UE_id]);
|
||||||
|
|
||||||
UE_info->mac_stats[UE_id].ulsch_total_bytes_rx += sdu_lenP;
|
UE_info->mac_stats[UE_id].ulsch_total_bytes_rx += sdu_lenP;
|
||||||
LOG_D(MAC, "[gNB %d][PUSCH %d] CC_id %d %d.%d Received ULSCH sdu from PHY (rnti %x, UE_id %d) ul_cqi %d\n",
|
LOG_D(MAC, "[gNB %d][PUSCH %d] CC_id %d %d.%d Received ULSCH sdu from PHY (rnti %x, UE_id %d) ul_cqi %d sduP %p\n",
|
||||||
gnb_mod_idP,
|
gnb_mod_idP,
|
||||||
harq_pid,
|
harq_pid,
|
||||||
CC_idP,
|
CC_idP,
|
||||||
@@ -342,7 +342,8 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
slotP,
|
slotP,
|
||||||
current_rnti,
|
current_rnti,
|
||||||
UE_id,
|
UE_id,
|
||||||
ul_cqi);
|
ul_cqi,
|
||||||
|
sduP);
|
||||||
|
|
||||||
// if not missed detection (10dB threshold for now)
|
// if not missed detection (10dB threshold for now)
|
||||||
if (UE_scheduling_control->ul_rssi < (100+rssi)) {
|
if (UE_scheduling_control->ul_rssi < (100+rssi)) {
|
||||||
@@ -627,7 +628,7 @@ void nr_schedule_ulsch(module_id_t module_id,
|
|||||||
if (cur_harq->round == 0) {
|
if (cur_harq->round == 0) {
|
||||||
UE_info->mac_stats[UE_id].ulsch_total_bytes_scheduled += sched_pusch->tb_size;
|
UE_info->mac_stats[UE_id].ulsch_total_bytes_scheduled += sched_pusch->tb_size;
|
||||||
} else {
|
} else {
|
||||||
LOG_W(MAC,
|
LOG_D(MAC,
|
||||||
"%d.%2d UL retransmission RNTI %04x sched %d.%2d HARQ PID %d round %d NDI %d\n",
|
"%d.%2d UL retransmission RNTI %04x sched %d.%2d HARQ PID %d round %d NDI %d\n",
|
||||||
frame,
|
frame,
|
||||||
slot,
|
slot,
|
||||||
|
|||||||
@@ -228,11 +228,15 @@ next:
|
|||||||
fp = ru->nr_frame_parms;
|
fp = ru->nr_frame_parms;
|
||||||
for (symbol = 0; symbol < 14; symbol++) {
|
for (symbol = 0; symbol < 14; symbol++) {
|
||||||
int i;
|
int i;
|
||||||
uint16_t *p = (uint16_t *)(&s->buffers.ul[*slot][symbol*1272*4]);
|
int16_t *p = (int16_t *)(&s->buffers.ul[*slot][symbol*1272*4]);
|
||||||
for (i = 0; i < 1272*2; i++) {
|
for (i = 0; i < 1272*2; i++) {
|
||||||
p[i] = htons(p[i]);
|
p[i] = (int16_t)(ntohs(p[i])) / 16;
|
||||||
}
|
}
|
||||||
rxdata = &ru->common.rxdataF[antenna][symbol * fp->ofdm_symbol_size];
|
rxdata = &ru->common.rxdataF[antenna][symbol * fp->ofdm_symbol_size];
|
||||||
|
#if 0
|
||||||
|
if (*slot == 0 && symbol == 0)
|
||||||
|
printf("rxdata in benetel_fh_if4p5_south_in %p\n", &ru->common.rxdataF[antenna][0]);
|
||||||
|
#endif
|
||||||
#if 1
|
#if 1
|
||||||
memcpy(rxdata + 2048 - 1272/2,
|
memcpy(rxdata + 2048 - 1272/2,
|
||||||
&s->buffers.ul[*slot][symbol*1272*4],
|
&s->buffers.ul[*slot][symbol*1272*4],
|
||||||
|
|||||||
@@ -230,12 +230,12 @@ RUs = (
|
|||||||
local_if_name = "dpdk";
|
local_if_name = "dpdk";
|
||||||
sdr_addrs = "softmodem -m 2048 -l 35 -n 2 -b 0000:81:00.3 --proc-type auto --file-prefix ggg -- -p 0x1";
|
sdr_addrs = "softmodem -m 2048 -l 35 -n 2 -b 0000:81:00.3 --proc-type auto --file-prefix ggg -- -p 0x1";
|
||||||
#sdr_addrs = "softmodem -l 8 -n 2 -- -p 0x2";
|
#sdr_addrs = "softmodem -l 8 -n 2 -- -p 0x2";
|
||||||
remote_address = "127.0.0.2";
|
#remote_address = "127.0.0.2";
|
||||||
local_address = "127.0.0.1";
|
#local_address = "127.0.0.1";
|
||||||
local_portc = 50000;
|
#local_portc = 50000;
|
||||||
remote_portc = 50000;
|
#remote_portc = 50000;
|
||||||
local_portd = 50001;
|
#local_portd = 50001;
|
||||||
remote_portd = 50001;
|
#remote_portd = 50001;
|
||||||
local_rf = "no"
|
local_rf = "no"
|
||||||
tr_preference = "raw_if4p5"
|
tr_preference = "raw_if4p5"
|
||||||
nb_tx = 1
|
nb_tx = 1
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ gNBs =
|
|||||||
|
|
||||||
ssb_SubcarrierOffset = 31; //0;
|
ssb_SubcarrierOffset = 31; //0;
|
||||||
pdsch_AntennaPorts = 1;
|
pdsch_AntennaPorts = 1;
|
||||||
|
#pusch_TargetSNRx10 = 200;
|
||||||
|
#pucch_TargetSNRx10 = 200;
|
||||||
pusch_TargetSNRx10 = 200;
|
pusch_TargetSNRx10 = 200;
|
||||||
pucch_TargetSNRx10 = 200;
|
pucch_TargetSNRx10 = 200;
|
||||||
|
|
||||||
@@ -103,7 +105,8 @@ gNBs =
|
|||||||
prach_msg1_FrequencyStart = 74;
|
prach_msg1_FrequencyStart = 74;
|
||||||
zeroCorrelationZoneConfig = 13;
|
zeroCorrelationZoneConfig = 13;
|
||||||
#preambleReceivedTargetPower = -118;
|
#preambleReceivedTargetPower = -118;
|
||||||
preambleReceivedTargetPower = -104;
|
#preambleReceivedTargetPower = -104;
|
||||||
|
preambleReceivedTargetPower = -108;
|
||||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||||
preambleTransMax = 6;
|
preambleTransMax = 6;
|
||||||
#powerRampingStep
|
#powerRampingStep
|
||||||
@@ -149,14 +152,16 @@ gNBs =
|
|||||||
initialULBWPstartSymbolAndLength_2 = 52;
|
initialULBWPstartSymbolAndLength_2 = 52;
|
||||||
|
|
||||||
msg3_DeltaPreamble = 1;
|
msg3_DeltaPreamble = 1;
|
||||||
p0_NominalWithGrant =-90;
|
#p0_NominalWithGrant =-90;
|
||||||
|
p0_NominalWithGrant =-108;
|
||||||
|
|
||||||
# pucch-ConfigCommon setup :
|
# pucch-ConfigCommon setup :
|
||||||
# pucchGroupHopping
|
# pucchGroupHopping
|
||||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||||
pucchGroupHopping = 0;
|
pucchGroupHopping = 0;
|
||||||
hoppingId = 40;
|
hoppingId = 40;
|
||||||
p0_nominal = -90;
|
#p0_nominal = -90;
|
||||||
|
p0_nominal = -108;
|
||||||
# ssb_PositionsInBurs_BitmapPR
|
# ssb_PositionsInBurs_BitmapPR
|
||||||
# 1=short, 2=medium, 3=long
|
# 1=short, 2=medium, 3=long
|
||||||
ssb_PositionsInBurst_PR = 2;
|
ssb_PositionsInBurst_PR = 2;
|
||||||
@@ -189,7 +194,7 @@ gNBs =
|
|||||||
nrofUplinkSymbols = 4; //0; //4;
|
nrofUplinkSymbols = 4; //0; //4;
|
||||||
|
|
||||||
#ssPBCH_BlockPower = 10;
|
#ssPBCH_BlockPower = 10;
|
||||||
ssPBCH_BlockPower = 10;
|
ssPBCH_BlockPower = -25;
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user