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
littleBu
OpenXG-RAN
Commits
3c17573f
Commit
3c17573f
authored
2 years ago
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
apply nr rotation only on used PRBs instead of complete OFDM symbol
parent
21ea2f21
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
67 additions
and
44 deletions
+67
-44
executables/nr-gnb.c
executables/nr-gnb.c
+1
-2
openair1/PHY/MODULATION/nr_modulation.h
openair1/PHY/MODULATION/nr_modulation.h
+2
-4
openair1/PHY/MODULATION/ofdm_mod.c
openair1/PHY/MODULATION/ofdm_mod.c
+12
-8
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+42
-22
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+6
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+2
-4
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+1
-2
No files found.
executables/nr-gnb.c
View file @
3c17573f
...
...
@@ -221,8 +221,7 @@ void rx_func(void *param) {
gNB
->
common_vars
.
rxdataF
[
aa
],
slot_rx
,
0
,
gNB
->
frame_parms
.
Ncp
==
EXTENDED
?
12
:
14
,
gNB
->
frame_parms
.
ofdm_symbol_size
);
gNB
->
frame_parms
.
Ncp
==
EXTENDED
?
12
:
14
);
}
phy_procedures_gNB_uespec_RX
(
gNB
,
frame_rx
,
slot_rx
);
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/nr_modulation.h
View file @
3c17573f
...
...
@@ -112,8 +112,7 @@ void apply_nr_rotation(NR_DL_FRAME_PARMS *fp,
int16_t
*
txdata
,
int
slot
,
int
first_symbol
,
int
nsymb
,
int
length
);
int
nsymb
);
void
init_symbol_rotation
(
NR_DL_FRAME_PARMS
*
fp
);
...
...
@@ -123,8 +122,7 @@ void apply_nr_rotation_ul(NR_DL_FRAME_PARMS *frame_parms,
int32_t
*
rxdataF
,
int
slot
,
int
first_symbol
,
int
nsymb
,
int
length
);
int
nsymb
);
/*! \brief Perform NR precoding. TS 38.211 V15.4.0 subclause 6.3.1.5
@param[in] datatx_F_precoding, Pointer to n_layers*re data array
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/ofdm_mod.c
View file @
3c17573f
...
...
@@ -341,29 +341,33 @@ void do_OFDM_mod(int32_t **txdataF, int32_t **txdata, uint32_t frame,uint16_t ne
}
void
apply_nr_rotation
(
NR_DL_FRAME_PARMS
*
fp
,
int16_t
*
t
rxdata
,
int16_t
*
t
xdataF
,
int
slot
,
int
first_symbol
,
int
nsymb
,
int
length
)
{
int
nsymb
)
{
int
symb_offset
=
(
slot
%
fp
->
slots_per_subframe
)
*
fp
->
symbols_per_slot
;
c16_t
*
symbol_rotation
=
fp
->
symbol_rotation
[
0
];
for
(
int
sidx
=
0
;
sidx
<
nsymb
;
sidx
++
)
{
LOG_D
(
PHY
,
"Rotating symbol %d, slot %d, symbol_subframe_index %d
, length %d
(%d,%d)
\n
"
,
LOG_D
(
PHY
,
"Rotating symbol %d, slot %d, symbol_subframe_index %d (%d,%d)
\n
"
,
first_symbol
+
sidx
,
slot
,
sidx
+
first_symbol
+
symb_offset
,
length
,
symbol_rotation
[
sidx
+
first_symbol
+
symb_offset
].
r
,
symbol_rotation
[
sidx
+
first_symbol
+
symb_offset
].
i
);
rotate_cpx_vector
(((
c16_t
*
)
trxdata
)
+
sidx
*
length
,
rotate_cpx_vector
(((
c16_t
*
)
txdataF
)
+
sidx
*
fp
->
ofdm_symbol_size
,
symbol_rotation
+
sidx
+
first_symbol
+
symb_offset
,
((
c16_t
*
)
txdataF
)
+
sidx
*
fp
->
ofdm_symbol_size
,
fp
->
N_RB_DL
*
6
,
15
);
rotate_cpx_vector
(((
c16_t
*
)
txdataF
)
+
sidx
*
fp
->
ofdm_symbol_size
+
fp
->
first_carrier_offset
,
symbol_rotation
+
sidx
+
first_symbol
+
symb_offset
,
((
c16_t
*
)
t
rxdata
)
+
sidx
*
length
,
length
,
((
c16_t
*
)
t
xdataF
)
+
sidx
*
fp
->
ofdm_symbol_size
+
fp
->
first_carrier_offset
,
fp
->
N_RB_DL
*
6
,
15
);
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
3c17573f
...
...
@@ -108,19 +108,30 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
#endif
rotate_cpx_vector
((
c16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
&
rot2
,
(
c16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
frame_parms
->
ofdm_symbol_size
,
15
);
&
rot2
,
(
c16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
frame_parms
->
N_RB_DL
*
6
,
15
);
rotate_cpx_vector
((
c16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
+
frame_parms
->
first_carrier_offset
],
&
rot2
,
(
c16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
+
frame_parms
->
first_carrier_offset
],
frame_parms
->
N_RB_DL
*
6
,
15
);
c16_t
*
shift_rot
=
frame_parms
->
timeshift_symbol_rotation
;
multadd_cpx_vector
((
int16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
(
int16_t
*
)
shift_rot
,
(
int16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
,
frame_parms
->
ofdm_symbol_size
,
15
);
(
int16_t
*
)
shift_rot
,
(
int16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
],
1
,
frame_parms
->
N_RB_DL
*
6
,
15
);
multadd_cpx_vector
((
int16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
+
frame_parms
->
first_carrier_offset
],
(
int16_t
*
)(
shift_rot
+
frame_parms
->
first_carrier_offset
),
(
int16_t
*
)
&
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
[
aa
][
frame_parms
->
ofdm_symbol_size
*
symbol
+
frame_parms
->
first_carrier_offset
],
1
,
frame_parms
->
N_RB_DL
*
6
,
15
);
}
#ifdef DEBUG_FEP
...
...
@@ -301,10 +312,8 @@ void apply_nr_rotation_ul(NR_DL_FRAME_PARMS *frame_parms,
int32_t
*
rxdataF
,
int
slot
,
int
first_symbol
,
int
nsymb
,
int
length
)
{
int
nsymb
)
{
int
symb_offset
=
(
slot
%
frame_parms
->
slots_per_subframe
)
*
frame_parms
->
symbols_per_slot
;
int
soffset
=
(
slot
&
3
)
*
frame_parms
->
symbols_per_slot
*
frame_parms
->
ofdm_symbol_size
;
...
...
@@ -314,18 +323,29 @@ void apply_nr_rotation_ul(NR_DL_FRAME_PARMS *frame_parms,
rot2
.
i
=-
rot2
.
i
;
LOG_D
(
PHY
,
"slot %d, symb_offset %d rotating by %d.%d
\n
"
,
slot
,
symb_offset
,
rot2
.
r
,
rot2
.
i
);
rotate_cpx_vector
((
c16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
&
rot2
,
(
c16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
length
,
15
);
&
rot2
,
(
c16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
frame_parms
->
N_RB_UL
*
6
,
15
);
rotate_cpx_vector
((
c16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)
+
frame_parms
->
first_carrier_offset
],
&
rot2
,
(
c16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)
+
frame_parms
->
first_carrier_offset
],
frame_parms
->
N_RB_UL
*
6
,
15
);
c16_t
*
shift_rot
=
frame_parms
->
timeshift_symbol_rotation
;
multadd_cpx_vector
((
int16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
(
int16_t
*
)
shift_rot
,
(
int16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
1
,
length
,
15
);
(
int16_t
*
)
shift_rot
,
(
int16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)],
1
,
frame_parms
->
N_RB_UL
*
6
,
15
);
multadd_cpx_vector
((
int16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)
+
frame_parms
->
first_carrier_offset
],
(
int16_t
*
)(
shift_rot
+
frame_parms
->
first_carrier_offset
),
(
int16_t
*
)
&
rxdataF
[
soffset
+
(
frame_parms
->
ofdm_symbol_size
*
symbol
)
+
frame_parms
->
first_carrier_offset
],
1
,
frame_parms
->
N_RB_UL
*
6
,
15
);
}
}
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
3c17573f
...
...
@@ -606,7 +606,12 @@ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE,
rotate_cpx_vector
((
c16_t
*
)
&
txdataF
[
ap
][
frame_parms
->
ofdm_symbol_size
*
s
],
&
rot
,
(
c16_t
*
)
&
txdataF
[
ap
][
frame_parms
->
ofdm_symbol_size
*
s
],
frame_parms
->
ofdm_symbol_size
,
frame_parms
->
N_RB_UL
*
6
,
15
);
rotate_cpx_vector
((
c16_t
*
)
&
txdataF
[
ap
][
frame_parms
->
ofdm_symbol_size
*
s
+
frame_parms
->
first_carrier_offset
],
&
rot
,
(
c16_t
*
)
&
txdataF
[
ap
][
frame_parms
->
ofdm_symbol_size
*
s
+
frame_parms
->
first_carrier_offset
],
frame_parms
->
N_RB_UL
*
6
,
15
);
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
3c17573f
...
...
@@ -181,7 +181,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
//apply the OFDM symbol rotation here
for
(
aa
=
0
;
aa
<
cfg
->
carrier_config
.
num_tx_ant
.
value
;
aa
++
)
{
apply_nr_rotation
(
fp
,(
int16_t
*
)
&
gNB
->
common_vars
.
txdataF
[
aa
][
txdataF_offset
],
slot
,
0
,
fp
->
Ncp
==
EXTENDED
?
12
:
14
,
fp
->
ofdm_symbol_size
);
apply_nr_rotation
(
fp
,(
int16_t
*
)
&
gNB
->
common_vars
.
txdataF
[
aa
][
txdataF_offset
],
slot
,
0
,
fp
->
Ncp
==
EXTENDED
?
12
:
14
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX
+
offset
,
0
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
3c17573f
...
...
@@ -610,8 +610,7 @@ int main(int argc, char **argv)
(
int16_t
*
)
gNB
->
common_vars
.
txdataF
[
aa
],
slot
,
0
,
12
,
frame_parms
->
ofdm_symbol_size
);
12
);
PHY_ofdm_mod
(
gNB
->
common_vars
.
txdataF
[
aa
],
&
txdata
[
aa
][
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)],
...
...
@@ -624,8 +623,7 @@ int main(int argc, char **argv)
(
int16_t
*
)
gNB
->
common_vars
.
txdataF
[
aa
],
slot
,
0
,
14
,
frame_parms
->
ofdm_symbol_size
);
14
);
/*nr_normal_prefix_mod(gNB->common_vars.txdataF[aa],
&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)],
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
3c17573f
...
...
@@ -1377,8 +1377,7 @@ int main(int argc, char **argv)
gNB
->
common_vars
.
rxdataF
[
aa
],
slot
,
0
,
gNB
->
frame_parms
.
Ncp
==
EXTENDED
?
12
:
14
,
gNB
->
frame_parms
.
ofdm_symbol_size
);
gNB
->
frame_parms
.
Ncp
==
EXTENDED
?
12
:
14
);
}
ul_proc_error
=
phy_procedures_gNB_uespec_RX
(
gNB
,
frame
,
slot
);
...
...
This diff is collapsed.
Click to expand it.
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