Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常顺宇
OpenXG-RAN
Commits
a5b5d6f9
Commit
a5b5d6f9
authored
Jan 22, 2021
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing RRC power levels at 5G side to avoid saturation
parent
0f57529b
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
52 additions
and
17 deletions
+52
-17
common/utils/T/T_defs.h
common/utils/T/T_defs.h
+2
-2
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+4
-0
executables/nr-gnb.c
executables/nr-gnb.c
+6
-0
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+4
-0
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+4
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+7
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+4
-3
targets/ARCH/ETHERNET/benetel/5g/benetel.c
targets/ARCH/ETHERNET/benetel/5g/benetel.c
+6
-2
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
+6
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
+9
-4
No files found.
common/utils/T/T_defs.h
View file @
a5b5d6f9
...
@@ -44,7 +44,7 @@
...
@@ -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 @@
...
@@ -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 */
...
...
common/utils/T/T_messages.txt
View file @
a5b5d6f9
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
...
...
executables/nr-gnb.c
View file @
a5b5d6f9
...
@@ -1001,7 +1001,13 @@ void init_eNB_afterRU(void) {
...
@@ -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
}
}
}
}
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
a5b5d6f9
...
@@ -67,6 +67,10 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
...
@@ -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
;
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
a5b5d6f9
...
@@ -250,6 +250,10 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
...
@@ -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
);
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
a5b5d6f9
...
@@ -551,6 +551,11 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
...
@@ -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)
...
@@ -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
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
a5b5d6f9
...
@@ -334,7 +334,7 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
...
@@ -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,
...
@@ -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,
...
@@ -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
,
...
...
targets/ARCH/ETHERNET/benetel/5g/benetel.c
View file @
a5b5d6f9
...
@@ -228,11 +228,15 @@ next:
...
@@ -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
=
(
u
int16_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
],
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
View file @
a5b5d6f9
...
@@ -230,12 +230,12 @@ RUs = (
...
@@ -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
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
View file @
a5b5d6f9
...
@@ -23,6 +23,8 @@ gNBs =
...
@@ -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 =
...
@@ -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 =
...
@@ -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 =
...
@@ -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
;
}
}
);
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment