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
4fb8f839
Commit
4fb8f839
authored
Aug 17, 2022
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PHY-simulators working fine for UL-2 layers with 16QAM and 64QAM
parent
93756a56
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
23 deletions
+31
-23
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+4
-4
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+2
-3
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+3
-3
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+22
-13
No files found.
openair1/PHY/INIT/nr_init_ue.c
View file @
4fb8f839
...
...
@@ -757,13 +757,13 @@ void nr_init_ul_harq_processes(NR_UL_UE_HARQ_t *harq_list, int number_of_process
bzero
(
harq_list
[
i
].
d
[
r
],(
68
*
384
));
}
harq_list
[
i
].
e
=
malloc16
(
14
*
num_rb
*
12
*
8
);
harq_list
[
i
].
e
=
malloc16
(
14
*
num_rb
*
12
*
16
);
DevAssert
(
harq_list
[
i
].
e
);
bzero
(
harq_list
[
i
].
e
,
14
*
num_rb
*
12
*
8
);
bzero
(
harq_list
[
i
].
e
,
14
*
num_rb
*
12
*
16
);
harq_list
[
i
].
f
=
malloc16
(
14
*
num_rb
*
12
*
8
);
harq_list
[
i
].
f
=
malloc16
(
14
*
num_rb
*
12
*
16
);
DevAssert
(
harq_list
[
i
].
f
);
bzero
(
harq_list
[
i
].
f
,
14
*
num_rb
*
12
*
8
);
bzero
(
harq_list
[
i
].
f
,
14
*
num_rb
*
12
*
16
);
harq_list
[
i
].
first_tx
=
1
;
harq_list
[
i
].
round
=
0
;
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
4fb8f839
...
...
@@ -196,7 +196,6 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
}
#endif
const
uint8_t
b_shift
=
pusch_pdu
->
nrOfLayers
==
1
;
for
(
int
aarx
=
0
;
aarx
<
gNB
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
c16_t
*
rxdataF
=
(
c16_t
*
)
&
gNB
->
common_vars
.
rxdataF
[
aarx
][
symbol_offset
];
...
...
@@ -228,7 +227,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ch
=
c32x16maddShift
(
*
pil
,
rxdataF
[
soffset
+
re_offset
],
ch
,
1
5
+
b_shift
);
1
6
);
pil
++
;
}
...
...
@@ -668,7 +667,7 @@ void nr_pusch_ptrs_processing(PHY_VARS_gNB *gNB,
/*------------------------------------------------------------------------------------------------------- */
/* 3) Compensated DMRS based estimated signal with PTRS estimation */
/*--------------------------------------------------------------------------------------------------------*/
for
(
uint8_t
i
=
*
startSymbIndex
;
i
<
symbInSlot
;
i
++
)
{
for
(
uint8_t
i
=
*
startSymbIndex
;
i
<
symbInSlot
;
i
++
)
{
/* DMRS Symbol has 0 phase so no need to rotate the respective symbol */
/* Skip rotation if the slot processing is wrong */
if
((
!
is_dmrs_symbol
(
i
,
*
dmrsSymbPos
))
&&
(
ret
==
0
))
{
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
4fb8f839
...
...
@@ -207,7 +207,7 @@ void nr_processULSegment(void* arg) {
//////////////////////////// ulsch_llr =====> ulsch_harq->e //////////////////////////////
/// code blocks after bit selection in rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
int16_t
harq_e
[
3
*
8448
];
int16_t
harq_e
[
E
];
nr_deinterleaving_ldpc
(
E
,
Qm
,
...
...
@@ -290,7 +290,7 @@ void nr_processULSegment(void* arg) {
//////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// pl =====> llrProcBuf //////////////////////////////////
p_decoderParms
->
block_length
=
length_dec
;
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decoderParms
,
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
...
...
@@ -513,7 +513,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
t_nrLDPC_time_stats
procTime
=
{
0
};
t_nrLDPC_time_stats
*
p_procTime
=
&
procTime
;
/// code blocks after bit selection in rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
int16_t
harq_e
[
3
*
8448
];
int16_t
harq_e
[
E
];
nr_deinterleaving_ldpc
(
E
,
Qm
,
harq_e
,
ulsch_llr
+
r_offset
);
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
4fb8f839
...
...
@@ -1843,7 +1843,13 @@ uint8_t nr_ulsch_zero_forcing_rx_2layers(int **rxdataF_comp,
determ_fin_128
[
0
]);
rxdataF_comp128_0
[
0
]
=
mmtmpD0
;
rxdataF_comp128_1
[
0
]
=
mmtmpD1
;
if
(
mod_order
>
2
)
{
// We need to check why it is a shift of 3
rxdataF_comp128_1
[
0
]
=
_mm_srai_epi16
(
mmtmpD1
,
3
);
}
else
{
rxdataF_comp128_1
[
0
]
=
mmtmpD1
;
}
#ifdef DEBUG_DLSCH_DEMOD
printf
(
"
\n
Rx signal after ZF l%d rb%d
\n
"
,
symbol
,
rb
);
print_shorts
(
" Rx layer 1:"
,(
int16_t
*
)
&
rxdataF_comp128_0
[
0
]);
...
...
@@ -1954,7 +1960,7 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB,
int
off
=
((
rel15_ul
->
rb_size
&
1
)
==
1
)
?
4
:
0
;
uint32_t
rxdataF_ext_offset
=
0
;
uint8_t
ad_shift
=
1
+
log2_approx
(
frame_parms
->
nb_antennas_rx
>>
2
);
uint8_t
ad_shift
=
1
+
log2_approx
(
frame_parms
->
nb_antennas_rx
>>
2
)
+
(
rel15_ul
->
nrOfLayers
==
2
)
;
for
(
uint8_t
symbol
=
rel15_ul
->
start_symbol_index
;
symbol
<
(
rel15_ul
->
start_symbol_index
+
rel15_ul
->
nr_of_symbols
);
symbol
++
)
{
uint8_t
dmrs_symbol_flag
=
(
rel15_ul
->
ul_dmrs_symb_pos
>>
symbol
)
&
0x01
;
...
...
@@ -2057,18 +2063,21 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB,
symbol
,
rel15_ul
->
rb_size
,
nb_re_pusch
);
if
(
rel15_ul
->
nrOfLayers
==
2
)
//Apply zero forcing for 2 Tx layers
//Apply zero forcing for 2 Tx layers
if
(
rel15_ul
->
nrOfLayers
==
2
)
{
nr_ulsch_zero_forcing_rx_2layers
(
gNB
->
pusch_vars
[
ulsch_id
]
->
rxdataF_comp
,
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_mag0
,
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_magb0
,
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_estimates_ext
,
rel15_ul
->
rb_size
,
frame_parms
->
nb_antennas_rx
,
rel15_ul
->
qam_mod_order
,
gNB
->
pusch_vars
[
ulsch_id
]
->
log2_maxh
,
symbol
,
nb_re_pusch
);
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_mag0
,
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_magb0
,
gNB
->
pusch_vars
[
ulsch_id
]
->
ul_ch_estimates_ext
,
rel15_ul
->
rb_size
,
frame_parms
->
nb_antennas_rx
,
rel15_ul
->
qam_mod_order
,
gNB
->
pusch_vars
[
ulsch_id
]
->
log2_maxh
,
symbol
,
nb_re_pusch
);
}
stop_meas
(
&
gNB
->
ulsch_mrc_stats
);
if
(
rel15_ul
->
transform_precoding
==
transformPrecoder_enabled
)
{
...
...
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