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
Michael Black
OpenXG-RAN
Commits
5b13d71e
Commit
5b13d71e
authored
Feb 14, 2023
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bugs introduced by previous commit
parent
fd5a124c
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
36 additions
and
7770 deletions
+36
-7770
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+4
-3
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+2
-3
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+2
-6
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
+27
-7548
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+1
-210
No files found.
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
5b13d71e
...
@@ -1862,10 +1862,11 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
...
@@ -1862,10 +1862,11 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
#ifdef DEBUG_DL_PTRS
#ifdef DEBUG_DL_PTRS
printf
(
"[PHY][DL][PTRS]: Rotate Symbol %2d with %d + j* %d
\n
"
,
i
,
phase_per_symbol
[
i
].
r
,
phase_per_symbol
[
i
].
i
);
printf
(
"[PHY][DL][PTRS]: Rotate Symbol %2d with %d + j* %d
\n
"
,
i
,
phase_per_symbol
[
i
].
r
,
phase_per_symbol
[
i
].
i
);
#endif
#endif
rotate_cpx_vector
((
c16_t
*
)
&
rxdataF_comp
[
aarx
][(
i
*
(
*
nb_rb
)
*
NR_NB_SC_PER_RB
)],
rotate_cpx_vector
((
c16_t
*
)
&
rxdataF_comp
[
0
]
[
aarx
][(
i
*
(
*
nb_rb
)
*
NR_NB_SC_PER_RB
)],
&
phase_per_symbol
[
i
],
&
phase_per_symbol
[
i
],
(
c16_t
*
)
&
rxdataF_comp
[
aarx
][(
i
*
(
*
nb_rb
)
*
NR_NB_SC_PER_RB
)],
(
c16_t
*
)
&
rxdataF_comp
[
0
][
aarx
][(
i
*
(
*
nb_rb
)
*
NR_NB_SC_PER_RB
)],
((
*
nb_rb
)
*
NR_NB_SC_PER_RB
),
15
);
((
*
nb_rb
)
*
NR_NB_SC_PER_RB
),
15
);
}
// if not DMRS Symbol
}
// if not DMRS Symbol
}
// symbol loop
}
// symbol loop
}
// last symbol check
}
// last symbol check
...
...
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
5b13d71e
...
@@ -518,9 +518,8 @@ int nr_csi_rs_ri_estimation(const PHY_VARS_NR_UE *ue,
...
@@ -518,9 +518,8 @@ int nr_csi_rs_ri_estimation(const PHY_VARS_NR_UE *ue,
// construct Hh x H elements
// construct Hh x H elements
if
(
ant_rx_conjch
==
ant_rx_ch
)
{
if
(
ant_rx_conjch
==
ant_rx_ch
)
{
nr_a_sum_b
((
__m128i
*
)
&
csi_rs_estimated_A_MF
[
port_tx_conjch
][
port_tx_ch
][
k_offset
],
nr_a_sum_b
(
(
__m128i
*
)
&
csi_rs_estimated_conjch_ch
[
ant_rx_conjch
][
port_tx_conjch
][
ant_rx_ch
][
port_tx_ch
][
k_offset
],
(
c16_t
*
)
&
csi_rs_estimated_A_MF
[
port_tx_conjch
][
port_tx_ch
][
k_offset
],
(
c16_t
*
)
&
csi_rs_estimated_conjch_ch
[
ant_rx_conjch
][
port_tx_conjch
][
ant_rx_ch
][
port_tx_ch
][
k_offset
],
1
);
1
);
}
}
}
}
}
}
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
5b13d71e
...
@@ -1876,12 +1876,7 @@ uint8_t nr_matrix_inverse(int32_t size,
...
@@ -1876,12 +1876,7 @@ uint8_t nr_matrix_inverse(int32_t size,
if
(
flag
)
{
//fixed point SIMD calc.
if
(
flag
)
{
//fixed point SIMD calc.
//Allocate the submatrix elements
//Allocate the submatrix elements
c16_t
sub_matrix_data
[
size
-
1
][
size
-
1
][
12
*
nb_rb
];
memset
(
sub_matrix_data
,
0
,
sizeof
(
sub_matrix_data
));
c16_t
*
sub_matrix
[
size
-
1
][
size
-
1
];
c16_t
*
sub_matrix
[
size
-
1
][
size
-
1
];
for
(
int
rtx
=
0
;
rtx
<
(
size
-
1
);
rtx
++
)
for
(
int
ctx
=
0
;
ctx
<
(
size
-
1
);
ctx
++
)
sub_matrix
[
ctx
][
rtx
]
=
sub_matrix_data
[
ctx
][
rtx
];
//Compute Matrix determinant
//Compute Matrix determinant
nr_determin
(
size
,
nr_determin
(
size
,
...
@@ -1913,7 +1908,8 @@ uint8_t nr_matrix_inverse(int32_t size,
...
@@ -1913,7 +1908,8 @@ uint8_t nr_matrix_inverse(int32_t size,
//fill out the sub matrix corresponds to this element
//fill out the sub matrix corresponds to this element
for
(
int
ridx
=
0
;
ridx
<
(
size
-
1
);
ridx
++
)
for
(
int
ridx
=
0
;
ridx
<
(
size
-
1
);
ridx
++
)
for
(
int
cidx
=
0
;
cidx
<
(
size
-
1
);
cidx
++
)
for
(
int
cidx
=
0
;
cidx
<
(
size
-
1
);
cidx
++
)
memcpy
(
sub_matrix
[
cidx
][
ridx
],
a44
[
cc
[
cidx
]][
rr
[
ridx
]],
sizeof
(
sub_matrix_data
[
cidx
][
ridx
]));
// To verify
sub_matrix
[
cidx
][
ridx
]
=
a44
[
cc
[
cidx
]][
rr
[
ridx
]];
nr_determin
(
size
-
1
,
// size
nr_determin
(
size
-
1
,
// size
sub_matrix
,
sub_matrix
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
View file @
5b13d71e
This source diff could not be displayed because it is too large. You can
view the blob
instead.
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
5b13d71e
...
@@ -87,216 +87,6 @@ int32_t nr_dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -87,216 +87,6 @@ int32_t nr_dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
uint16_t
pbch_pss_sss_adj
,
uint16_t
pbch_pss_sss_adj
,
int16_t
**
llr128p
);
int16_t
**
llr128p
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/16QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qpsk_qam16
(
int16_t
*
stream0_in
,
int16_t
*
stream1_in
,
short
*
ch_mag_i
,
int16_t
*
stream0_out
,
int16_t
*
rho01
,
int32_t
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qpsk_qam64
(
int16_t
*
stream0_in
,
int16_t
*
stream1_in
,
short
*
ch_mag_i
,
int16_t
*
stream0_out
,
int16_t
*
rho01
,
int32_t
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/QPSK reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qam16_qpsk
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/16QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qam16_qam16
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
ch_mag_i
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qam64_qpsk
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission.
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param rxdataF_comp_i Compensated channel output for interference
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param rho_i Correlation between channel of signal and inteference
@param dlsch_llr llr output
@param symbol OFDM symbol index in sub-frame
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
nr_dlsch_64qam_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
int
**
rho_i
,
short
*
dlsch_llr
,
unsigned
char
symbol
,
unsigned
char
first_symbol_flag
,
unsigned
short
nb_rb
,
uint16_t
pbch_pss_sss_adjust
,
short
**
llr16p
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
nr_qam64_qam16
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
ch_mag_i
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
qam64_qam16_avx2
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
ch_mag_i
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function perform LLR computation for dual-stream (64QAM/16QAM) transmission.
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param rxdataF_comp_i Compensated channel output for interference
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param rho_i Correlation between channel of signal and inteference
@param dlsch_llr llr output
@param symbol OFDM symbol index in sub-frame
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
nr_dlsch_64qam_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
int
**
dl_ch_mag_i
,
int
**
rho_i
,
short
*
dlsch_llr
,
unsigned
char
symbol
,
unsigned
char
first_symbol_flag
,
unsigned
short
nb_rb
,
uint16_t
pbch_pss_sss_adjust
,
short
**
llr16p
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
qam64_qam64
(
short
*
stream0_in
,
short
*
stream1_in
,
short
*
ch_mag
,
short
*
ch_mag_i
,
short
*
stream0_out
,
short
*
rho01
,
int
length
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void
qam64_qam64_avx2
(
int32_t
*
stream0_in
,
int32_t
*
stream1_in
,
int32_t
*
ch_mag
,
int32_t
*
ch_mag_i
,
int16_t
*
stream0_out
,
int32_t
*
rho01
,
int
length
);
/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission.
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param rxdataF_comp_i Compensated channel output for interference
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param rho_i Correlation between channel of signal and inteference
@param dlsch_llr llr output
@param symbol OFDM symbol index in sub-frame
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
nr_dlsch_64qam_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
int
**
dl_ch_mag_i
,
int
**
rho_i
,
short
*
dlsch_llr
,
unsigned
char
symbol
,
uint32_t
len
,
unsigned
char
first_symbol_flag
,
unsigned
short
nb_rb
,
uint16_t
pbch_pss_sss_adjust
,
//short **llr16p,
uint32_t
llr_offset
);
/** \brief This function generates log-likelihood ratios (decoder input) for single-stream QPSK received waveforms.
/** \brief This function generates log-likelihood ratios (decoder input) for single-stream QPSK received waveforms.
@param frame_parms Frame descriptor structure
@param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output
@param rxdataF_comp Compensated channel output
...
@@ -605,6 +395,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -605,6 +395,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
int32_t
generate_nr_prach
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
int
frame
,
uint8_t
slot
);
int32_t
generate_nr_prach
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
int
frame
,
uint8_t
slot
);
void
dump_nrdlsch
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
uint8_t
nr_slot_rx
,
unsigned
int
*
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
);
void
dump_nrdlsch
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
gNB_id
,
uint8_t
nr_slot_rx
,
unsigned
int
*
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
);
void
nr_a_sum_b
(
c16_t
*
input_x
,
c16_t
*
input_y
,
unsigned
short
nb_rb
);
/**@}*/
/**@}*/
#endif
#endif
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