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
98a8e5dc
Commit
98a8e5dc
authored
Aug 16, 2024
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use common LLR functions at UE for DLSCH
parent
aeb56275
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
29 additions
and
447 deletions
+29
-447
CMakeLists.txt
CMakeLists.txt
+0
-1
doc/Doxyfile
doc/Doxyfile
+0
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
+6
-6
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+15
-16
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
+0
-329
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+0
-74
openair1/PHY/nr_phy_common/inc/nr_phy_common.h
openair1/PHY/nr_phy_common/inc/nr_phy_common.h
+4
-10
openair1/PHY/nr_phy_common/src/nr_phy_common.c
openair1/PHY/nr_phy_common/src/nr_phy_common.c
+4
-10
No files found.
CMakeLists.txt
View file @
98a8e5dc
...
...
@@ -1066,7 +1066,6 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_tbs_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_prach_common.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_sch_dmrs.c
...
...
doc/Doxyfile
View file @
98a8e5dc
...
...
@@ -2256,7 +2256,6 @@ INPUT = \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/sss_nr.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/dci_nr.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/nr_prach.c \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h \
@CMAKE_CURRENT_SOURCE_DIR@/../openair1/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c \
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
View file @
98a8e5dc
...
...
@@ -47,21 +47,21 @@ void nr_ulsch_compute_llr(int32_t *rxdataF_comp,
uint8_t
symbol
,
uint8_t
mod_order
)
{
switch
(
mod_order
){
switch
(
mod_order
)
{
case
2
:
nr_qpsk_llr
(
rxdataF_comp
,
ulsch_llr
,
nb_re
,
symbol
);
nr_qpsk_llr
(
rxdataF_comp
,
ulsch_llr
,
nb_re
);
break
;
case
4
:
nr_16qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ulsch_llr
,
nb_re
,
symbol
);
nr_16qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ulsch_llr
,
nb_re
);
break
;
case
6
:
nr_64qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ul_ch_magb
,
ulsch_llr
,
nb_re
,
symbol
);
nr_64qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ul_ch_magb
,
ulsch_llr
,
nb_re
);
break
;
case
8
:
nr_256qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ul_ch_magb
,
ul_ch_magc
,
ulsch_llr
,
nb_re
,
symbol
);
nr_256qam_llr
(
rxdataF_comp
,
ul_ch_mag
,
ul_ch_magb
,
ul_ch_magc
,
ulsch_llr
,
nb_re
);
break
;
default:
AssertFatal
(
1
==
0
,
"nr_ulsch_compute_llr: invalid Qm value, symbol = %d, Qm = %d
\n
"
,
symbol
,
mod_order
);
AssertFatal
(
false
,
"nr_ulsch_compute_llr: invalid Qm value, symbol = %d, Qm = %d
\n
"
,
symbol
,
mod_order
);
break
;
}
}
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
98a8e5dc
...
...
@@ -28,6 +28,7 @@
* \note
* \warning
*/
#include "nr_phy_common.h"
#include "PHY/defs_nr_UE.h"
#include "PHY/phy_extern.h"
#include "nr_transport_proto_ue.h"
...
...
@@ -1898,33 +1899,31 @@ static int nr_dlsch_llr(uint32_t rx_size_symbol,
NR_UE_DLSCH_t
dlsch
[
2
],
uint32_t
llr_offset
[
14
])
{
uint32_t
llr_offset_symbol
;
if
(
first_symbol_flag
==
1
)
llr_offset
[
symbol
-
1
]
=
0
;
llr_offset_symbol
=
llr_offset
[
symbol
-
1
];
if
(
first_symbol_flag
==
1
)
llr_offset
[
symbol
-
1
]
=
0
;
uint32_t
llr_offset_symbol
=
llr_offset
[
symbol
-
1
];
llr_offset
[
symbol
]
=
len
*
dlsch
[
0
].
dlsch_config
.
qamModOrder
+
llr_offset_symbol
;
llr_offset
[
symbol
]
=
len
*
dlsch
[
0
].
dlsch_config
.
qamModOrder
+
llr_offset_symbol
;
switch
(
dlsch
[
0
].
dlsch_config
.
qamModOrder
)
{
case
2
:
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
dlsch_qpsk_llr
(
frame_parms
,
rxdataF_comp
[
l
][
0
],
layer_llr
[
l
]
+
llr_offset_symbol
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
qpsk_llr
(
&
rxdataF_comp
[
l
][
0
][
symbol
*
nb_rb
*
12
],
layer_llr
[
l
]
+
llr_offset_symbol
,
len
);
break
;
case
4
:
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
dlsch_16qam_llr
(
frame_parms
,
rxdataF_comp
[
l
][
0
],
layer_llr
[
l
]
+
llr_offset_symbol
,
dl_ch_mag
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
16qam_llr
(
&
rxdataF_comp
[
l
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
layer_llr
[
l
]
+
llr_offset_symbol
,
len
);
break
;
case
6
:
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
dlsch_64qam_llr
(
frame_parms
,
rxdataF_comp
[
l
][
0
],
layer_llr
[
l
]
+
llr_offset_symbol
,
dl_ch_mag
,
dl_ch_magb
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
64qam_llr
(
&
rxdataF_comp
[
l
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
dl_ch_magb
,
layer_llr
[
l
]
+
llr_offset_symbol
,
len
);
break
;
case
8
:
for
(
int
l
=
0
;
l
<
dlsch
[
0
].
Nl
;
l
++
)
nr_
dlsch_256qam_llr
(
frame_parms
,
rxdataF_comp
[
l
][
0
],
layer_llr
[
l
]
+
llr_offset_symbol
,
dl_ch_mag
,
dl_ch_magb
,
dl_ch_magr
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
256qam_llr
(
&
rxdataF_comp
[
l
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
dl_ch_magb
,
dl_ch_magr
,
layer_llr
[
l
]
+
llr_offset_symbol
,
len
);
break
;
default:
...
...
@@ -1937,19 +1936,19 @@ static int nr_dlsch_llr(uint32_t rx_size_symbol,
if
(
dlsch1_harq
)
{
switch
(
dlsch
[
1
].
dlsch_config
.
qamModOrder
)
{
case
2
:
nr_
dlsch_qpsk_llr
(
frame_parms
,
rxdataF_comp
[
0
][
0
],
layer_llr
[
0
]
+
llr_offset_symbol
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
qpsk_llr
(
&
rxdataF_comp
[
0
][
0
][
symbol
*
nb_rb
*
12
],
layer_llr
[
0
]
+
llr_offset_symbol
,
len
);
break
;
case
4
:
nr_
dlsch_16qam_llr
(
frame_parms
,
rxdataF_comp
[
0
][
0
],
layer_llr
[
0
]
+
llr_offset_symbol
,
dl_ch_mag
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
16qam_llr
(
&
rxdataF_comp
[
0
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
layer_llr
[
0
]
+
llr_offset_symbol
,
len
);
break
;
case
6
:
nr_
dlsch_64qam_llr
(
frame_parms
,
rxdataF_comp
[
0
][
0
],
layer_llr
[
0
]
+
llr_offset_symbol
,
dl_ch_mag
,
dl_ch_magb
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
64qam_llr
(
&
rxdataF_comp
[
0
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
dl_ch_magb
,
layer_llr
[
0
]
+
llr_offset_symbol
,
len
);
break
;
case
8
:
nr_
dlsch_256qam_llr
(
frame_parms
,
rxdataF_comp
[
0
][
0
],
layer_llr
[
0
]
+
llr_offset_symbol
,
dl_ch_mag
,
dl_ch_magb
,
dl_ch_magr
,
symbol
,
len
,
first_symbol_flag
,
nb_rb
);
nr_
256qam_llr
(
&
rxdataF_comp
[
0
][
0
][
symbol
*
nb_rb
*
12
],
dl_ch_mag
,
dl_ch_magb
,
dl_ch_magr
,
layer_llr
[
0
]
+
llr_offset_symbol
,
len
);
break
;
default:
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
deleted
100644 → 0
View file @
aeb56275
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
98a8e5dc
...
...
@@ -52,80 +52,6 @@
*/
void
nr_ue_dlsch_init
(
NR_UE_DLSCH_t
*
dlsch_list
,
int
num_dlsch
,
uint8_t
max_ldpc_iterations
);
/** \brief This function generates log-likelihood ratios (decoder input) for single-stream QPSK received waveforms
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param dlsch_llr llr output
@param symbol OFDM symbol index in sub-frame
@param len
@param first_symbol_flag
@param nb_rb number of RBs for this allocation
*/
int32_t
nr_dlsch_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
rxdataF_comp
,
int16_t
*
dlsch_llr
,
uint8_t
symbol
,
uint32_t
len
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
);
/**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param dlsch_llr llr output
@param dl_ch_mag Squared-magnitude of channel in each resource element position corresponding to allocation and weighted for
mid-point in 16QAM constellation
@param len
@param symbol OFDM symbol index in sub-frame
@param first_symbol_flag
@param nb_rb number of RBs for this allocation
*/
void
nr_dlsch_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int32_t
*
dl_ch_mag
,
uint8_t
symbol
,
uint32_t
len
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
);
/**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param dlsch_llr llr output
@param dl_ch_mag Squared-magnitude of channel in each resource element position corresponding to allocation, weighted by first
mid-point of 64-QAM constellation
@param dl_ch_magb Squared-magnitude of channel in each resource element position corresponding to allocation, weighted by second
mid-point of 64-QAM constellation
@param symbol OFDM symbol index in sub-frame
@param len
@param first_symbol_flag
@param nb_rb number of RBs for this allocation
*/
void
nr_dlsch_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int32_t
*
dl_ch_mag
,
int32_t
*
dl_ch_magb
,
uint8_t
symbol
,
uint32_t
len
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
);
void
nr_dlsch_256qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int32_t
*
dl_ch_mag
,
int32_t
*
dl_ch_magb
,
int32_t
*
dl_ch_magr
,
uint8_t
symbol
,
uint32_t
len
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
);
void
nr_dlsch_deinterleaving
(
uint8_t
symbol
,
uint8_t
start_symbol
,
uint16_t
L
,
...
...
openair1/PHY/nr_phy_common/inc/nr_phy_common.h
View file @
98a8e5dc
...
...
@@ -24,16 +24,10 @@
#include "PHY/impl_defs_top.h"
#include "PHY/TOOLS/tools_defs.h"
void
nr_qpsk_llr
(
int32_t
*
rxdataF_comp
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
);
void
nr_16qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag_in
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
);
void
nr_64qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
);
void
nr_256qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int32_t
*
ch_mag3
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
);
void
nr_qpsk_llr
(
int32_t
*
rxdataF_comp
,
int16_t
*
llr
,
uint32_t
nb_re
);
void
nr_16qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag_in
,
int16_t
*
llr
,
uint32_t
nb_re
);
void
nr_64qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int16_t
*
llr
,
uint32_t
nb_re
);
void
nr_256qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int32_t
*
ch_mag3
,
int16_t
*
llr
,
uint32_t
nb_re
);
void
freq2time
(
uint16_t
ofdm_symbol_size
,
int16_t
*
freq_signal
,
int16_t
*
time_signal
);
void
nr_est_delay
(
int
ofdm_symbol_size
,
const
c16_t
*
ls_est
,
c16_t
*
ch_estimates_time
,
delay_t
*
delay
);
unsigned
int
nr_get_tx_amp
(
int
power_dBm
,
int
power_max_dBm
,
int
total_nb_rb
,
int
nb_rb
);
...
...
openair1/PHY/nr_phy_common/src/nr_phy_common.c
View file @
98a8e5dc
...
...
@@ -41,7 +41,7 @@ int16_t saturating_sub(int16_t a, int16_t b)
//----------------------------------------------------------------------------------------------
// QPSK
//----------------------------------------------------------------------------------------------
void
nr_qpsk_llr
(
int32_t
*
rxdataF_comp
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
)
void
nr_qpsk_llr
(
int32_t
*
rxdataF_comp
,
int16_t
*
llr
,
uint32_t
nb_re
)
{
c16_t
*
rxF
=
(
c16_t
*
)
rxdataF_comp
;
c16_t
*
llr32
=
(
c16_t
*
)
llr
;
...
...
@@ -55,7 +55,7 @@ void nr_qpsk_llr(int32_t *rxdataF_comp, int16_t *llr, uint32_t nb_re, uint8_t sy
// 16-QAM
//----------------------------------------------------------------------------------------------
void
nr_16qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag_in
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
)
void
nr_16qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag_in
,
int16_t
*
llr
,
uint32_t
nb_re
)
{
simde__m256i
*
rxF_256
=
(
simde__m256i
*
)
rxdataF_comp
;
simde__m256i
*
ch_mag
=
(
simde__m256i
*
)
ch_mag_in
;
...
...
@@ -131,7 +131,7 @@ void nr_16qam_llr(int32_t *rxdataF_comp, int32_t *ch_mag_in, int16_t *llr, uint3
// 64-QAM
//----------------------------------------------------------------------------------------------
void
nr_64qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
)
void
nr_64qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int16_t
*
llr
,
uint32_t
nb_re
)
{
simde__m256i
*
rxF
=
(
simde__m256i
*
)
rxdataF_comp
;
...
...
@@ -242,13 +242,7 @@ void nr_64qam_llr(int32_t *rxdataF_comp, int32_t *ch_mag, int32_t *ch_mag2, int1
simde_mm_empty
();
}
void
nr_256qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int32_t
*
ch_mag3
,
int16_t
*
llr
,
uint32_t
nb_re
,
uint8_t
symbol
)
void
nr_256qam_llr
(
int32_t
*
rxdataF_comp
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag2
,
int32_t
*
ch_mag3
,
int16_t
*
llr
,
uint32_t
nb_re
)
{
simde__m256i
*
rxF_256
=
(
simde__m256i
*
)
rxdataF_comp
;
simde__m256i
*
llr256
=
(
simde__m256i
*
)
llr
;
...
...
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