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
spbro
OpenXG-RAN
Commits
f833ca47
Commit
f833ca47
authored
Jun 28, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some more changes in ulsch structures
parent
0f4e7659
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
32 deletions
+35
-32
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+1
-1
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+4
-4
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+2
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+28
-26
No files found.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
f833ca47
...
...
@@ -171,7 +171,7 @@ void nr_gnb_measurements(PHY_VARS_gNB *gNB, uint8_t ulsch_id, unsigned char harq
for
(
int
aatx
=
0
;
aatx
<
nrOfLayers
;
aatx
++
){
meas
->
rx_spatial_power
[
ulsch_id
][
aatx
][
aarx
]
=
(
signal_energy_nodc
(
&
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_estimates
[
aarx
][
ch_offset
],
N_RB_UL
*
NR_NB_SC_PER_RB
));
meas
->
rx_spatial_power
[
ulsch_id
][
aatx
][
aarx
]
=
(
signal_energy_nodc
(
&
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_estimates
[
aa
tx
*
fp
->
nb_antennas_rx
+
aa
rx
][
ch_offset
],
N_RB_UL
*
NR_NB_SC_PER_RB
));
if
(
meas
->
rx_spatial_power
[
ulsch_id
][
aatx
][
aarx
]
<
0
)
{
meas
->
rx_spatial_power
[
ulsch_id
][
aatx
][
aarx
]
=
0
;
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
f833ca47
...
...
@@ -172,7 +172,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
pil
=
(
int16_t
*
)
&
pilot
[
0
];
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
k
+
nushift
)];
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
p
*
gNB
->
frame_parms
.
nb_antennas_rx
+
aarx
][
ch_offset
];
re_offset
=
k
;
memset
(
ul_ch
,
0
,
4
*
(
gNB
->
frame_parms
.
ofdm_symbol_size
));
...
...
@@ -371,7 +371,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
// check if PRB crosses DC and improve estimates around DC
if
((
bwp_start_subcarrier
<
gNB
->
frame_parms
.
ofdm_symbol_size
)
&&
(
bwp_start_subcarrier
+
nb_rb_pusch
*
12
>=
gNB
->
frame_parms
.
ofdm_symbol_size
))
{
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
p
*
gNB
->
frame_parms
.
nb_antennas_rx
+
aarx
][
ch_offset
];
uint16_t
idxDC
=
2
*
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
bwp_start_subcarrier
);
uint16_t
idxPil
=
idxDC
/
2
;
re_offset
=
k
;
...
...
@@ -422,7 +422,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
}
}
#ifdef DEBUG_PUSCH
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
p
*
gNB
->
frame_parms
.
nb_antennas_rx
+
aarx
][
ch_offset
];
for
(
uint16_t
idxP
=
0
;
idxP
<
ceil
((
float
)
nb_rb_pusch
*
12
/
8
);
idxP
++
)
{
for
(
uint8_t
idxI
=
0
;
idxI
<
16
;
idxI
+=
2
)
{
printf
(
"%d
\t
%d
\t
"
,
ul_ch
[
idxP
*
16
+
idxI
],
ul_ch
[
idxP
*
16
+
idxI
+
1
]);
...
...
@@ -512,7 +512,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ch_r
,
ul_ch
);
ul_ch_128
=
(
__m128i
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
ul_ch_128
=
(
__m128i
*
)
&
ul_ch_estimates
[
p
*
gNB
->
frame_parms
.
nb_antennas_rx
+
aarx
][
ch_offset
];
ul_ch_128
[
0
]
=
_mm_slli_epi16
(
ul_ch_128
[
0
],
2
);
}
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
f833ca47
...
...
@@ -278,8 +278,9 @@ uint8_t nr_generate_pdsch(PHY_VARS_gNB *gNB,
printf
(
"PDSCH resource mapping started (start SC %d
\t
start symbol %d
\t
N_PRB %d
\t
nb_re %d,nb_layers %d)
\n
"
,
start_sc
,
rel15
->
StartSymbolIndex
,
rel15
->
rbSize
,
nb_re
,
rel15
->
nrOfLayers
);
#endif
for
(
int
ap
=
0
;
ap
<
rel15
->
nrOfLayers
;
ap
++
)
{
// DMRS params for this ap
get_Wt
(
Wt
,
ap
,
dmrs_Type
);
get_Wf
(
Wf
,
ap
,
dmrs_Type
);
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
f833ca47
...
...
@@ -7,6 +7,7 @@
#include "PHY/NR_REFSIG/ptrs_nr.h"
#include "PHY/NR_ESTIMATION/nr_ul_estimation.h"
#include "PHY/defs_nr_common.h"
#include "common/utils/nr/nr_common.h"
//#define DEBUG_CH_COMP
//#define DEBUG_RB_EXT
...
...
@@ -491,7 +492,7 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext,
//clear average level
avg128U
=
_mm_setzero_si128
();
ul_ch128
=
(
__m128i
*
)
&
ul_ch_estimates_ext
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch128
=
(
__m128i
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
for
(
rb
=
0
;
rb
<
len
/
12
;
rb
++
)
{
avg128U
=
_mm_add_epi32
(
avg128U
,
_mm_srai_epi32
(
_mm_madd_epi16
(
ul_ch128
[
0
],
ul_ch128
[
0
]),
x
));
...
...
@@ -500,10 +501,10 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext,
ul_ch128
+=
3
;
}
avg
[
(
aatx
<<
1
)
+
aarx
]
=
(((
int32_t
*
)
&
avg128U
)[
0
]
+
((
int32_t
*
)
&
avg128U
)[
1
]
+
((
int32_t
*
)
&
avg128U
)[
2
]
+
((
int32_t
*
)
&
avg128U
)[
3
]
)
/
y
;
avg
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
]
=
(((
int32_t
*
)
&
avg128U
)[
0
]
+
((
int32_t
*
)
&
avg128U
)[
1
]
+
((
int32_t
*
)
&
avg128U
)[
2
]
+
((
int32_t
*
)
&
avg128U
)[
3
]
)
/
y
;
}
...
...
@@ -525,7 +526,7 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext,
avg128U
=
vdupq_n_s32
(
0
);
// 5 is always a symbol with no pilots for both normal and extended prefix
ul_ch128
=
(
int16x4_t
*
)
&
ul_ch_estimates_ext
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch128
=
(
int16x4_t
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
// printf("rb %d : ",rb);
...
...
@@ -557,10 +558,10 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext,
else
nre
=
12
;
avg
[
(
aatx
<<
1
)
+
aarx
]
=
(((
int32_t
*
)
&
avg128U
)[
0
]
+
((
int32_t
*
)
&
avg128U
)[
1
]
+
((
int32_t
*
)
&
avg128U
)[
2
]
+
((
int32_t
*
)
&
avg128U
)[
3
]
)
/
(
nb_rb
*
nre
);
avg
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
]
=
(((
int32_t
*
)
&
avg128U
)[
0
]
+
((
int32_t
*
)
&
avg128U
)[
1
]
+
((
int32_t
*
)
&
avg128U
)[
2
]
+
((
int32_t
*
)
&
avg128U
)[
3
]
)
/
(
nb_rb
*
nre
);
}
}
#endif
...
...
@@ -646,11 +647,11 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext,
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
ul_ch128
=
(
__m128i
*
)
&
ul_ch_estimates_ext
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch_mag128
=
(
__m128i
*
)
&
ul_ch_mag
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch_mag128b
=
(
__m128i
*
)
&
ul_ch_magb
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch128
=
(
__m128i
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch_mag128
=
(
__m128i
*
)
&
ul_ch_mag
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
ul_ch_mag128b
=
(
__m128i
*
)
&
ul_ch_magb
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
rxdataF128
=
(
__m128i
*
)
&
rxdataF_ext
[
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
rxdataF_comp128
=
(
__m128i
*
)
&
rxdataF_comp
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
rxdataF_comp128
=
(
__m128i
*
)
&
rxdataF_comp
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
(
off
+
(
nb_rb
*
12
))];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
...
...
@@ -903,11 +904,11 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext,
// printf("comp: rxdataF_comp %p, symbol %d\n",rxdataF_comp[0],symbol);
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
ul_ch128
=
(
int16x4_t
*
)
&
ul_ch_estimates_ext
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch_mag128
=
(
int16x8_t
*
)
&
ul_ch_mag
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch_mag128b
=
(
int16x8_t
*
)
&
ul_ch_magb
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch128
=
(
int16x4_t
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch_mag128
=
(
int16x8_t
*
)
&
ul_ch_mag
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
ul_ch_mag128b
=
(
int16x8_t
*
)
&
ul_ch_magb
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
rxdataF128
=
(
int16x4_t
*
)
&
rxdataF_ext
[
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
rxdataF_comp128
=
(
int16x4x2_t
*
)
&
rxdataF_comp
[
(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
rxdataF_comp128
=
(
int16x4x2_t
*
)
&
rxdataF_comp
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
frame_parms
->
N_RB_UL
*
12
];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
if
(
mod_order
>
2
)
{
...
...
@@ -1189,13 +1190,14 @@ int nr_rx_pusch(PHY_VARS_gNB *gNB,
if
(
gNB
->
pusch_vars
[
ulsch_id
]
->
dmrs_symbol
==
INVALID_VALUE
)
gNB
->
pusch_vars
[
ulsch_id
]
->
dmrs_symbol
=
symbol
;
nr_pusch_channel_estimation
(
gNB
,
slot
,
0
,
// p
symbol
,
ulsch_id
,
bwp_start_subcarrier
,
rel15_ul
);
for
(
int
nl
=
0
;
nl
<
rel15_ul
->
nrOfLayers
;
nl
++
)
nr_pusch_channel_estimation
(
gNB
,
slot
,
get_dmrs_port
(
nl
,
rel15_ul
->
dmrs_ports
),
symbol
,
ulsch_id
,
bwp_start_subcarrier
,
rel15_ul
);
nr_gnb_measurements
(
gNB
,
ulsch_id
,
harq_pid
,
symbol
,
rel15_ul
->
nrOfLayers
);
...
...
@@ -1285,7 +1287,7 @@ int nr_rx_pusch(PHY_VARS_gNB *gNB,
for
(
aatx
=
0
;
aatx
<
rel15_ul
->
nrOfLayers
;
aatx
++
)
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
avgs
=
cmax
(
avgs
,
avg
[
(
aatx
<<
1
)
+
aarx
]);
avgs
=
cmax
(
avgs
,
avg
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
]);
gNB
->
pusch_vars
[
ulsch_id
]
->
log2_maxh
=
(
log2_approx
(
avgs
)
/
2
)
+
3
;
gNB
->
pusch_vars
[
ulsch_id
]
->
cl_done
=
1
;
...
...
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