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
5f22cfb3
Commit
5f22cfb3
authored
Nov 13, 2018
by
hongzhi wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nr ue pdsch bug fix
parent
60ae0c15
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
185 additions
and
517 deletions
+185
-517
openair1/PHY/CODING/nr_compute_tbs.c
openair1/PHY/CODING/nr_compute_tbs.c
+2
-2
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+8
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+65
-62
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+79
-420
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+8
-5
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+4
-4
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+17
-21
No files found.
openair1/PHY/CODING/nr_compute_tbs.c
View file @
5f22cfb3
...
...
@@ -56,7 +56,7 @@ uint32_t nr_compute_tbs(uint8_t mcs,
// Intermediate number of information bits
Ninfo
=
(
double
)((
nb_re
*
R
*
Qm
*
Nl
)
/
1024
);
//printf("Ninfo %
d nbp_re %d nb_re %d Qm %d, R %d\n", Ninfo, nbp_re, nb_re
, Qm, R);
//printf("Ninfo %
lf nbp_re %d nb_re %d mcs %d Qm %d, R %d\n", Ninfo, nbp_re, nb_re,mcs
, Qm, R);
if
(
Ninfo
<=
3824
)
{
...
...
@@ -85,7 +85,7 @@ uint32_t nr_compute_tbs(uint8_t mcs,
}
else
{
nr_tbs
=
(
uint32_t
)(
8
*
ceil
(
(
Np_info
+
24
)
/
8
)
-
24
);
//printf("n %f Np_info %f pow %f ceil %f \n",n, Np_info,pow(2,6),ceil( (Np_info + 24)/8 ));
//printf("n %
l
f Np_info %f pow %f ceil %f \n",n, Np_info,pow(2,6),ceil( (Np_info + 24)/8 ));
}
}
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
5f22cfb3
...
...
@@ -54,6 +54,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
uint16_t
nb_rb_coreset
=
24
;
uint16_t
bwp_start_subcarrier
=
frame_parms
->
first_carrier_offset
+
516
;
uint16_t
nb_rb_pdsch
=
50
;
uint8_t
p
=
0
;
uint8_t
l0
=
2
;
void
(
*
dft
)(
int16_t
*
,
int16_t
*
,
int
);
int
tmp_dft_in
[
8192
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
...
...
@@ -259,13 +261,18 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
ue
->
frame_parms
.
nushift
=
(
p
>>
1
)
&
1
;;
if
(
symbol
==
l0
)
nr_pdsch_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
0
,
p
,
l
,
symbol
,
bwp_start_subcarrier
,
nb_rb_pdsch
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
5f22cfb3
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
5f22cfb3
...
...
@@ -292,7 +292,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process
->
G
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
Qm
,
harq_process
->
Nl
);
G
=
harq_process
->
G
;
//
printf("DLSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d \n",harq_pid,A,G, harq_process->mcs, harq_process->Nl, nb_symb_sch);
printf
(
"DLSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d
\n
"
,
harq_pid
,
A
,
G
,
harq_process
->
mcs
,
harq_process
->
Nl
,
nb_symb_sch
);
if
(
harq_process
->
round
==
0
)
{
// This is a new packet, so compute quantities regarding segmentation
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
5f22cfb3
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
View file @
5f22cfb3
...
...
@@ -660,7 +660,7 @@ int nr_dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
*/
for
(
i
=
0
;
i
<
len
;
i
++
)
{
*
llr32
=
*
rxF
;
//printf("
llr %d : (%d,%d)\n",i,((int16_t*)llr32)[0],((int16_t*)llr32)[1]);
printf
(
"dlsch_qpsk_
llr %d : (%d,%d)
\n
"
,
i
,((
int16_t
*
)
llr32
)[
0
],((
int16_t
*
)
llr32
)[
1
]);
rxF
++
;
llr32
++
;
}
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
5f22cfb3
...
...
@@ -182,17 +182,20 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
/* process pss search on received buffer */
sync_pos
=
pss_synchro_nr
(
ue
,
NO_RATE_CHANGE
);
sync_pos_slot
=
(
fp
->
samples_per_subframe
/
fp
->
slots_per_subframe
)
-
10
*
(
fp
->
ofdm_symbol_size
+
fp
->
nb_prefix_samples
);
if
(
sync_pos
>=
fp
->
nb_prefix_samples
)
ue
->
ssb_offset
=
sync_pos
-
fp
->
nb_prefix_samples
;
else
ue
->
ssb_offset
=
sync_pos
+
(
fp
->
samples_per_subframe
*
10
)
-
fp
->
nb_prefix_samples
;
if
(
sync_pos
>=
fp
->
nb_prefix_samples
){
ue
->
ssb_offset
=
sync_pos
-
fp
->
nb_prefix_samples
;}
else
{
ue
->
ssb_offset
=
sync_pos
+
(
fp
->
samples_per_subframe
*
10
)
-
fp
->
nb_prefix_samples
;}
ue
->
rx_offset
=
ue
->
ssb_offset
-
sync_pos_slot
;
//write_output("rxdata1.m","rxd1",ue->common_vars.rxdata[0],10*fp->samples_per_subframe,1,1);
#ifdef DEBUG_INITIAL_SYNCH
LOG_I
(
PHY
,
"[UE%d] Initial sync : Estimated PSS position %d, Nid2 %d
\n
"
,
ue
->
Mod_id
,
sync_pos
,
ue
->
common_vars
.
eNb_id
);
LOG_I
(
PHY
,
"sync_pos %d ssb_offset %d
\n
"
,
sync_pos
,
ue
->
ssb_offse
t
);
LOG_I
(
PHY
,
"sync_pos %d ssb_offset %d
sync_pos_slot %d
\n
"
,
sync_pos
,
ue
->
ssb_offset
,
sync_pos_slo
t
);
#endif
/* check that SSS/PBCH block is continuous inside the received buffer */
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
5f22cfb3
...
...
@@ -340,7 +340,7 @@ void qam64_qpsk(short *stream0_in,
@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
dlsch_64qam_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_64qam_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
...
...
@@ -397,7 +397,7 @@ void qam64_qam16_avx2(short *stream0_in,
@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
dlsch_64qam_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_64qam_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
...
...
@@ -455,7 +455,7 @@ void qam64_qam64_avx2(int32_t *stream0_in,
@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
dlsch_64qam_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_64qam_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
...
...
@@ -829,7 +829,7 @@ void nr_dlsch_deinterleaving(uint8_t symbol,
uint16_t
L
,
uint16_t
*
llr
,
uint16_t
*
llr_deint
,
uint
32
_t
nb_rb_pdsch
);
uint
16
_t
nb_rb_pdsch
);
void
dlsch_dual_stream_correlation
(
NR_DL_FRAME_PARMS
*
frame_parms
,
unsigned
char
symbol
,
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
5f22cfb3
...
...
@@ -4264,8 +4264,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
if
(
dlsch1
)
is_cw1_active
=
dlsch1
->
harq_processes
[
harq_pid
]
->
status
;
LOG_D
(
PHY
,
"AbsSubframe %d.%d Start
Turbo
Decoder for CW0 [harq_pid %d] ? %d
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
,
harq_pid
,
is_cw0_active
);
LOG_D
(
PHY
,
"AbsSubframe %d.%d Start
Turbo
Decoder for CW1 [harq_pid %d] ? %d
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
,
harq_pid
,
is_cw1_active
);
LOG_D
(
PHY
,
"AbsSubframe %d.%d Start
LDPC
Decoder for CW0 [harq_pid %d] ? %d
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
,
harq_pid
,
is_cw0_active
);
LOG_D
(
PHY
,
"AbsSubframe %d.%d Start
LDPC
Decoder for CW1 [harq_pid %d] ? %d
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
,
harq_pid
,
is_cw1_active
);
if
(
is_cw0_active
&&
is_cw1_active
)
{
...
...
@@ -5557,7 +5557,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
#endif
//nr_gold_pdcch(ue,0, 2);
if
(
nr_tti_rx
==
2
)
for
(
int
l
=
0
;
l
<
2
;
l
++
)
{
if
(
abstraction_flag
==
0
)
{
#if UE_TIMING_TRACE
...
...
@@ -5653,28 +5653,21 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
#endif
//#if 0
LOG_D
(
PHY
,
" ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
//set active for testing, to be removed
if
(
nr_tti_rx
==
2
){
//to update from pdsch config
nr_gold_pdsch
(
ue
,
2
,
0
,
1
);
int
nb_prefix_samples0
=
ue
->
frame_parms
.
nb_prefix_samples0
;
ue
->
frame_parms
.
nb_prefix_samples0
=
ue
->
frame_parms
.
nb_prefix_samples
;
for
(
int
m
=
2
;
m
<
6
;
m
++
)
nr_slot_fep
(
ue
,
2
,
//to be updated from higher layer
m
,
//to be updated from higher layer
nr_tti_rx
,
0
,
0
,
1
,
NR_PDSCH_EST
);
//put back nb_prefix_samples0
ue
->
frame_parms
.
nb_prefix_samples0
=
nb_prefix_samples0
;
ue
->
dlsch
[
ue
->
current_thread_id
[
nr_tti_rx
]][
eNB_id
][
0
]
->
active
=
1
;
//set active for testing, to be removed
ue
->
dlsch
[
ue
->
current_thread_id
[
nr_tti_rx
]][
eNB_id
][
0
]
->
active
=
1
;
}
#if UE_TIMING_TRACE
...
...
@@ -5689,8 +5682,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
PDSCH
,
ue
->
dlsch
[
ue
->
current_thread_id
[
nr_tti_rx
]][
eNB_id
][
0
],
NULL
,
ue
->
pdcch_vars
[
ue
->
current_thread_id
[
nr_tti_rx
]][
eNB_id
]
->
num_pdcch_symbols
,
ue
->
frame_parms
.
symbols_per_tti
>>
1
,
2
,
//
ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
5
,
//
ue->frame_parms.symbols_per_tti>>1,
abstraction_flag
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC
,
VCD_FUNCTION_OUT
);
...
...
@@ -5741,7 +5734,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
abstraction_flag
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA
,
VCD_FUNCTION_OUT
);
}
//#if 0
LOG_D
(
PHY
,
" ------ slot 1 Processing: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
LOG_D
(
PHY
,
" ------ --> FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
...
...
@@ -5792,7 +5785,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
#endif
LOG_D
(
PHY
,
" ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
//
LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
/*if ( (nr_tti_rx == 0) && (ue->decode_MIB == 1))
{
...
...
@@ -5807,7 +5800,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
pdsch_procedures_stat
[
ue
->
current_thread_id
[
nr_tti_rx
]]);
#endif
nr_ue_pdsch_procedures
(
ue
,
/*
nr_ue_pdsch_procedures(ue,
proc,
eNB_id,
PDSCH,
...
...
@@ -5817,11 +5810,14 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
ue->frame_parms.symbols_per_tti-1,
abstraction_flag);
LOG_D(PHY," ------ end PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
LOG_D
(
PHY
,
" ------ --> PDSCH Turbo Decoder slot 0/1: AbsSubframe %d.%d ------
\n
"
,
frame_rx
%
1024
,
nr_tti_rx
);
LOG_D(PHY," ------ --> PDSCH Turbo Decoder slot 0/1: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
*/
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
pdsch_procedures_stat
[
ue
->
current_thread_id
[
nr_tti_rx
]]);
start_meas
(
&
ue
->
dlsch_procedures_stat
[
ue
->
current_thread_id
[
nr_tti_rx
]]);
#endif
//#endif //slot 1
nr_ue_dlsch_procedures
(
ue
,
proc
,
eNB_id
,
...
...
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