Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
a81df1d9
Commit
a81df1d9
authored
Nov 14, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_pdsch' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into nr_pdsch
parents
64e19263
cf7bcac6
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
254 additions
and
600 deletions
+254
-600
openair1/PHY/CODING/TESTBENCH/ldpctest.c
openair1/PHY/CODING/TESTBENCH/ldpctest.c
+1
-1
openair1/PHY/CODING/nr_compute_tbs.c
openair1/PHY/CODING/nr_compute_tbs.c
+2
-2
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+66
-1
openair1/PHY/INIT/phy_init.h
openair1/PHY/INIT/phy_init.h
+1
-0
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
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+1
-0
targets/RT/USER/nr-gnb.c
targets/RT/USER/nr-gnb.c
+0
-81
No files found.
openair1/PHY/CODING/TESTBENCH/ldpctest.c
View file @
a81df1d9
...
...
@@ -653,7 +653,7 @@ int main(int argc, char *argv[])
}
char
fname
[
200
];
sprintf
(
fname
,
"
../../../openair1/PHY/CODING/TESTBENCH/
ldpctest_BG_%d_Zc_%d_rate_%d-%d_block_length_%d_maxit_%d.txt"
,
BG
,
Zc
,
nom_rate
,
denom_rate
,
block_length
,
No_iteration
);
sprintf
(
fname
,
"ldpctest_BG_%d_Zc_%d_rate_%d-%d_block_length_%d_maxit_%d.txt"
,
BG
,
Zc
,
nom_rate
,
denom_rate
,
block_length
,
No_iteration
);
FILE
*
fd
=
fopen
(
fname
,
"w"
);
AssertFatal
(
fd
!=
NULL
,
"cannot open %s
\n
"
,
fname
);
...
...
openair1/PHY/CODING/nr_compute_tbs.c
View file @
a81df1d9
...
...
@@ -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/INIT/nr_init.c
View file @
a81df1d9
...
...
@@ -38,7 +38,6 @@
extern
uint32_t
from_earfcn
(
int
eutra_bandP
,
uint32_t
dl_earfcn
);
extern
int32_t
get_uldl_offset
(
int
eutra_bandP
);
extern
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
);
int
l1_north_init_gNB
()
{
...
...
@@ -480,3 +479,69 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config)
}
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
)
{
int
i
;
int
j
;
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
nfapi_nr_config_request_t
*
cfg
=
&
gNB
->
gNB_config
;
LOG_I
(
PHY
,
"Initialise nr transport
\n
"
);
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH, UE %d
\n
"
,
i
);
for
(
j
=
0
;
j
<
2
;
j
++
)
{
gNB
->
dlsch
[
i
][
j
]
=
new_gNB_dlsch
(
1
,
16
,
NSOFT
,
0
,
fp
,
cfg
);
if
(
!
gNB
->
dlsch
[
i
][
j
])
{
LOG_E
(
PHY
,
"Can't get gNB dlsch structures for UE %d
\n
"
,
i
);
exit
(
-
1
);
}
else
{
gNB
->
dlsch
[
i
][
j
]
->
rnti
=
0
;
LOG_D
(
PHY
,
"dlsch[%d][%d] => %p rnti:%d
\n
"
,
i
,
j
,
gNB
->
dlsch
[
i
][
j
],
gNB
->
dlsch
[
i
][
j
]
->
rnti
);
}
}
//LOG_I(PHY,"Allocating Transport Channel Buffer for ULSCH, UE %d\n",i);
//gNB->ulsch[1+i] = new_gNB_ulsch(MAX_TURBO_ITERATIONS,fp->N_RB_UL, 0);
/*if (!gNB->ulsch[1+i]) {
LOG_E(PHY,"Can't get gNB ulsch structures\n");
exit(-1);
}*/
// this is the transmission mode for the signalling channels
// this will be overwritten with the real transmission mode by the RRC once the UE is connected
//gNB->transmission_mode[i] = fp->nb_antenna_ports_gNB==1 ? 1 : 2;
}
// ULSCH for RA
//gNB->ulsch[0] = new_gNB_ulsch(MAX_TURBO_ITERATIONS, fp->N_RB_UL, 0);
/*if (!gNB->ulsch[0]) {
LOG_E(PHY,"Can't get gNB ulsch structures\n");
exit(-1);
}*/
gNB
->
dlsch_SI
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : SI %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_SI
);
gNB
->
dlsch_ra
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : RA %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_ra
);
gNB
->
dlsch_MCH
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : MCH %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_MCH
);
gNB
->
rx_total_gain_dB
=
130
;
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
gNB
->
mu_mimo_mode
[
i
].
dl_pow_off
=
2
;
gNB
->
check_for_total_transmissions
=
0
;
gNB
->
check_for_MUMIMO_transmissions
=
0
;
gNB
->
FULL_MUMIMO_transmissions
=
0
;
gNB
->
check_for_SUMIMO_transmissions
=
0
;
//fp->pucch_config_common.deltaPUCCH_Shift = 1;
}
openair1/PHY/INIT/phy_init.h
View file @
a81df1d9
...
...
@@ -385,6 +385,7 @@ void nr_phy_config_request(NR_PHY_Config_t *gNB);
void
nr_phy_config_request_sim
(
PHY_VARS_gNB
*
gNB
,
int
N_RB_DL
,
int
N_RB_UL
,
int
mu
);
void
phy_free_nr_gNB
(
PHY_VARS_gNB
*
gNB
);
int
l1_north_init_gNB
(
void
);
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
);
void
init_dfts
(
void
);
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
a81df1d9
...
...
@@ -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 @
a81df1d9
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
a81df1d9
...
...
@@ -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 @
a81df1d9
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
View file @
a81df1d9
...
...
@@ -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 @
a81df1d9
...
...
@@ -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 @
a81df1d9
...
...
@@ -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 @
a81df1d9
...
...
@@ -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
,
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
a81df1d9
...
...
@@ -37,6 +37,7 @@
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_gNB.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/INIT/phy_init.h"
...
...
targets/RT/USER/nr-gnb.c
View file @
a81df1d9
...
...
@@ -725,87 +725,6 @@ void print_opp_meas(void) {
}
}
void
free_transport
(
PHY_VARS_gNB
*
gNB
)
{
int
i
;
int
j
;
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Freeing Transport Channel Buffers for DLSCH, UE %d
\n
"
,
i
);
for
(
j
=
0
;
j
<
2
;
j
++
)
free_gNB_dlsch
(
gNB
->
dlsch
[
i
][
j
]);
//LOG_I(PHY, "Freeing Transport Channel Buffer for ULSCH, UE %d\n",i);
//free_gNB_ulsch(gNB->ulsch[1+i]);
}
//free_gNB_ulsch(gNB->ulsch[0]);
}
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
)
{
int
i
;
int
j
;
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
nfapi_nr_config_request_t
*
cfg
=
&
gNB
->
gNB_config
;
LOG_I
(
PHY
,
"Initialise nr transport
\n
"
);
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH, UE %d
\n
"
,
i
);
for
(
j
=
0
;
j
<
2
;
j
++
)
{
gNB
->
dlsch
[
i
][
j
]
=
new_gNB_dlsch
(
1
,
16
,
NSOFT
,
0
,
fp
,
cfg
);
if
(
!
gNB
->
dlsch
[
i
][
j
])
{
LOG_E
(
PHY
,
"Can't get gNB dlsch structures for UE %d
\n
"
,
i
);
exit
(
-
1
);
}
else
{
gNB
->
dlsch
[
i
][
j
]
->
rnti
=
0
;
LOG_D
(
PHY
,
"dlsch[%d][%d] => %p rnti:%d
\n
"
,
i
,
j
,
gNB
->
dlsch
[
i
][
j
],
gNB
->
dlsch
[
i
][
j
]
->
rnti
);
}
}
//LOG_I(PHY,"Allocating Transport Channel Buffer for ULSCH, UE %d\n",i);
//gNB->ulsch[1+i] = new_gNB_ulsch(MAX_TURBO_ITERATIONS,fp->N_RB_UL, 0);
/*if (!gNB->ulsch[1+i]) {
LOG_E(PHY,"Can't get gNB ulsch structures\n");
exit(-1);
}*/
// this is the transmission mode for the signalling channels
// this will be overwritten with the real transmission mode by the RRC once the UE is connected
//gNB->transmission_mode[i] = fp->nb_antenna_ports_gNB==1 ? 1 : 2;
}
// ULSCH for RA
//gNB->ulsch[0] = new_gNB_ulsch(MAX_TURBO_ITERATIONS, fp->N_RB_UL, 0);
/*if (!gNB->ulsch[0]) {
LOG_E(PHY,"Can't get gNB ulsch structures\n");
exit(-1);
}*/
gNB
->
dlsch_SI
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : SI %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_SI
);
gNB
->
dlsch_ra
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : RA %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_ra
);
gNB
->
dlsch_MCH
=
new_gNB_dlsch
(
1
,
8
,
NSOFT
,
0
,
fp
,
cfg
);
LOG_D
(
PHY
,
"gNB %d.%d : MCH %p
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
,
gNB
->
dlsch_MCH
);
gNB
->
rx_total_gain_dB
=
130
;
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
gNB
->
mu_mimo_mode
[
i
].
dl_pow_off
=
2
;
gNB
->
check_for_total_transmissions
=
0
;
gNB
->
check_for_MUMIMO_transmissions
=
0
;
gNB
->
FULL_MUMIMO_transmissions
=
0
;
gNB
->
check_for_SUMIMO_transmissions
=
0
;
//fp->pucch_config_common.deltaPUCCH_Shift = 1;
}
/// eNB kept in function name for nffapi calls, TO FIX
void
init_eNB_afterRU
(
void
)
{
...
...
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