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
98a8e5dc
Commit
98a8e5dc
authored
7 months ago
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
...
...
This diff is collapsed.
Click to expand it.
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 \
...
...
This diff is collapsed.
Click to expand it.
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
;
}
}
...
...
This diff is collapsed.
Click to expand it.
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:
...
...
This diff is collapsed.
Click to expand it.
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
,
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
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