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
8ee63636
Commit
8ee63636
authored
Feb 01, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop-fix-csi_im' into integration_2022_wk05
parents
52de87db
13bbd326
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
110 additions
and
89 deletions
+110
-89
openair1/PHY/MODULATION/modulation_UE.h
openair1/PHY/MODULATION/modulation_UE.h
+1
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+2
-3
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+3
-3
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+62
-44
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+4
-2
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+3
-2
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+21
-22
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+7
-6
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+6
-5
No files found.
openair1/PHY/MODULATION/modulation_UE.h
View file @
8ee63636
...
...
@@ -50,7 +50,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
int
nr_slot_fep
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
l
,
unsigned
char
symbo
l
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
int
nr_slot_fep_init_sync
(
PHY_VARS_NR_UE
*
ue
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
8ee63636
...
...
@@ -722,11 +722,10 @@ int nr_pbch_dmrs_correlation(PHY_VARS_NR_UE *ue,
return
(
0
);
}
int
nr_pbch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
ue
->
frame_parms
.
ofdm_symbol_size
],
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
ue
->
frame_parms
.
ofdm_symbol_size
],
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
8ee63636
...
...
@@ -69,8 +69,8 @@ int nr_pbch_dmrs_correlation(PHY_VARS_NR_UE *ue,
int
nr_pbch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
int
estimateSz
,
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
estimateSz
],
struct
complex16
dl_ch_estimates
[][
estimateSz
],
struct
complex16
dl_ch_estimates_time
[][
ue
->
frame_parms
.
ofdm_symbol_size
],
UE_nr_rxtx_proc_t
*
proc
,
unsigned
char
symbol
,
int
dmrss
,
...
...
@@ -90,7 +90,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
unsigned
short
bwp_start_subcarrier
,
unsigned
short
nb_rb_pdsch
,
uint32_t
pdsch_est_size
,
int32_t
pdsch_
dl_ch_estimates
[][
pdsch_est_size
],
int32_t
dl_ch_estimates
[][
pdsch_est_size
],
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
]);
void
nr_adjust_synch_ue
(
NR_DL_FRAME_PARMS
*
frame_parms
,
...
...
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
8ee63636
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
View file @
8ee63636
...
...
@@ -686,7 +686,7 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
get_coreset_rballoc
(
rel15
->
coreset
.
frequency_domain_resource
,
&
n_rb
,
&
rb_offset
);
// Pointers to extracted PDCCH symbols in frequency-domain.
int32_t
rx_size
=
4
*
n_rb
*
12
;
int32_t
rx_size
=
((
4
*
frame_parms
->
N_RB_DL
*
12
+
31
)
>>
5
)
<<
5
;
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_ext
[
frame_parms
->
nb_antennas_rx
][
rx_size
];
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_comp
[
frame_parms
->
nb_antennas_rx
][
rx_size
];
__attribute__
((
aligned
(
32
)))
int32_t
pdcch_dl_ch_estimates_ext
[
frame_parms
->
nb_antennas_rx
][
rx_size
];
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
8ee63636
...
...
@@ -283,6 +283,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
nr_dlsch_extract_rbs
(
ue
->
frame_parms
.
samples_per_slot_wCP
,
rxdataF
,
rx_size
,
pdsch_est_size
,
dl_ch_estimates
,
rxdataF_ext
,
dl_ch_estimates_ext
,
...
...
@@ -1599,8 +1600,9 @@ void nr_dlsch_channel_level_median(uint32_t rx_size,
void
nr_dlsch_extract_rbs
(
uint32_t
rxdataF_sz
,
c16_t
rxdataF
[][
rxdataF_sz
],
uint32_t
rx_size
,
int32_t
dl_ch_estimates
[][
rx_size
],
const
uint32_t
rx_size
,
const
uint32_t
pdsch_est_size
,
int32_t
dl_ch_estimates
[][
pdsch_est_size
],
int32_t
rxdataF_ext
[][
rx_size
],
int32_t
dl_ch_estimates_ext
[][
rx_size
],
unsigned
char
symbol
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
8ee63636
...
...
@@ -545,8 +545,9 @@ void nr_dlsch_256qam_llr(NR_DL_FRAME_PARMS *frame_parms,
*/
void
nr_dlsch_extract_rbs
(
uint32_t
rxdataF_sz
,
c16_t
rxdataF
[][
rxdataF_sz
],
uint32_t
rx_size
,
int32_t
dl_ch_estimates
[][
rx_size
],
const
uint32_t
rx_size
,
const
uint32_t
pdsch_est_size
,
int32_t
dl_ch_estimates
[][
pdsch_est_size
],
int32_t
rxdataF_ext
[][
rx_size
],
int32_t
dl_ch_estimates_ext
[][
rx_size
],
unsigned
char
symbol
,
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
8ee63636
...
...
@@ -579,8 +579,8 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
dlsch0_harq
->
status
,
pdsch_start_rb
,
pdsch_nb_rb
,
s0
,
s1
,
dlsch0
->
dlsch_config
.
dlDmrsSymbPos
,
dlsch0
->
Nl
);
const
uint32_t
pdsch_est_size
=
((
ue
->
frame_parms
.
symbols_per_slot
*
ue
->
frame_parms
.
ofdm_symbol_size
+
15
)
/
16
)
*
16
;
__attribute__
((
aligned
(
32
)))
int32_t
pdsch_dl_ch_estimates
[
ue
->
frame_parms
.
nb_antennas_rx
][
pdsch_est_size
];
memset
(
pdsch_dl_ch_estimates
,
0
,
sizeof
(
int32_t
)
*
ue
->
frame_parms
.
nb_antennas_rx
*
pdsch_est_size
);
__attribute__
((
aligned
(
32
)))
int32_t
pdsch_dl_ch_estimates
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
pdsch_est_size
];
memset
(
pdsch_dl_ch_estimates
,
0
,
sizeof
(
int32_t
)
*
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
pdsch_est_size
);
for
(
m
=
s0
;
m
<
(
s0
+
s1
);
m
++
)
{
if
(
dlsch0
->
dlsch_config
.
dlDmrsSymbPos
&
(
1
<<
m
))
{
...
...
@@ -645,26 +645,25 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
uint32_t
dl_valid_re
[
NR_SYMBOLS_PER_SLOT
]
=
{
0
};
uint32_t
llr_offset
[
NR_SYMBOLS_PER_SLOT
]
=
{
0
};
const
uint32_t
rx_size
=
NR_SYMBOLS_PER_SLOT
*
dlsch
[
0
].
dlsch_config
.
number_rbs
*
NR_NB_SC_PER_RB
;
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_estimates_ext
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
dl_ch_estimates_ext
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
const
uint32_t
rx_size
=
((
NR_SYMBOLS_PER_SLOT
*
dlsch
[
0
].
dlsch_config
.
number_rbs
*
NR_NB_SC_PER_RB
+
15
)
>>
4
)
<<
4
;
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_ext
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
rxdataF_ext
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_estimates_ext
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
dl_ch_estimates_ext
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_
comp
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
rxdataF_
comp
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_
ext
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
rxdataF_
ext
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_mag
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
dl_ch_mag
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
rxdataF_comp
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
rxdataF_comp
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_mag
b
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
dl_ch_mag
b
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_mag
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
dl_ch_mag
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_magr
[
ue
->
frame_parms
.
nb_antennas_rx
][
rx_size
];
memset
(
dl_ch_magr
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_magb
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
dl_ch_magb
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
__attribute__
((
aligned
(
32
)))
int32_t
dl_ch_magr
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
rx_size
];
memset
(
dl_ch_magr
,
0
,
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
*
rx_size
*
sizeof
(
int32_t
));
int32_t
log2_maxh
=
0
;
start_meas
(
&
ue
->
rx_pdsch_stats
);
...
...
@@ -714,16 +713,16 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
}
// CRNTI active
stop_meas
(
&
ue
->
rx_pdsch_stats
);
UEscopeCopy
(
ue
,
pdschRxdataF_comp
,
rxdataF_comp
,
sizeof
(
struct
complex16
),
ue
->
frame_parms
.
nb_antennas_rx
,
rx_size
);
UEscopeCopy
(
ue
,
pdschRxdataF_comp
,
rxdataF_comp
,
sizeof
(
struct
complex16
),
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
,
rx_size
);
if
(
ue
->
phy_sim_pdsch_rxdataF_comp
)
memcpy
(
ue
->
phy_sim_pdsch_rxdataF_comp
,
rxdataF_comp
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
);
memcpy
(
ue
->
phy_sim_pdsch_rxdataF_comp
,
rxdataF_comp
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
);
if
(
ue
->
phy_sim_pdsch_rxdataF_ext
)
memcpy
(
ue
->
phy_sim_pdsch_rxdataF_ext
,
rxdataF_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
);
memcpy
(
ue
->
phy_sim_pdsch_rxdataF_ext
,
rxdataF_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
);
if
(
ue
->
phy_sim_pdsch_dl_ch_estimates_ext
)
memcpy
(
ue
->
phy_sim_pdsch_dl_ch_estimates_ext
,
dl_ch_estimates_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
);
memcpy
(
ue
->
phy_sim_pdsch_dl_ch_estimates_ext
,
dl_ch_estimates_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
);
if
(
ue
->
phy_sim_pdsch_dl_ch_estimates
)
memcpy
(
ue
->
phy_sim_pdsch_dl_ch_estimates
,
dl_ch_estimates_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
);
memcpy
(
ue
->
phy_sim_pdsch_dl_ch_estimates
,
dl_ch_estimates_ext
,
sizeof
(
int32_t
)
*
rx_size
*
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
);
}
return
0
;
}
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
8ee63636
...
...
@@ -1042,12 +1042,13 @@ int main(int argc, char **argv)
memset
(
msgDataTx
->
ssb
,
0
,
64
*
sizeof
(
NR_gNB_SSB_t
));
// Buffers to store internal memory of slot process
UE
->
phy_sim_rxdataF
=
calloc
(
frame_parms
->
samples_per_slot_wCP
*
sizeof
(
int32_t
),
frame_parms
->
nb_antennas_rx
);
UE
->
phy_sim_pdsch_llr
=
calloc
((
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
),
1
);
//Max length
UE
->
phy_sim_pdsch_rxdataF_ext
=
calloc
(
14
*
frame_parms
->
N_RB_DL
*
12
*
sizeof
(
int32_t
),
frame_parms
->
nb_antennas_rx
);
UE
->
phy_sim_pdsch_rxdataF_comp
=
calloc
(
14
*
frame_parms
->
N_RB_DL
*
12
*
sizeof
(
int32_t
),
frame_parms
->
nb_antennas_rx
);
UE
->
phy_sim_pdsch_dl_ch_estimates
=
calloc
(
14
*
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int32_t
),
frame_parms
->
nb_antennas_rx
);
UE
->
phy_sim_pdsch_dl_ch_estimates_ext
=
calloc
(
14
*
frame_parms
->
N_RB_DL
*
12
*
sizeof
(
int32_t
),
frame_parms
->
nb_antennas_rx
);
int
rx_size
=
(((
14
*
frame_parms
->
N_RB_DL
*
12
*
sizeof
(
int32_t
))
+
15
)
>>
4
)
<<
4
;
UE
->
phy_sim_rxdataF
=
calloc
(
sizeof
(
int32_t
*
)
*
frame_parms
->
nb_antennas_rx
*
g_nrOfLayers
,
frame_parms
->
samples_per_slot_wCP
*
sizeof
(
int32_t
));
UE
->
phy_sim_pdsch_llr
=
calloc
(
1
,
(
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
));
// Max length
UE
->
phy_sim_pdsch_rxdataF_ext
=
calloc
(
sizeof
(
int32_t
*
)
*
frame_parms
->
nb_antennas_rx
*
g_nrOfLayers
,
rx_size
);
UE
->
phy_sim_pdsch_rxdataF_comp
=
calloc
(
sizeof
(
int32_t
*
)
*
frame_parms
->
nb_antennas_rx
*
g_nrOfLayers
,
rx_size
);
UE
->
phy_sim_pdsch_dl_ch_estimates
=
calloc
(
sizeof
(
int32_t
*
)
*
frame_parms
->
nb_antennas_rx
*
g_nrOfLayers
,
rx_size
);
UE
->
phy_sim_pdsch_dl_ch_estimates_ext
=
calloc
(
sizeof
(
int32_t
*
)
*
frame_parms
->
nb_antennas_rx
*
g_nrOfLayers
,
rx_size
);
for
(
SNR
=
snr0
;
SNR
<
snr1
;
SNR
+=
.
2
)
{
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
8ee63636
...
...
@@ -751,11 +751,12 @@ int main(int argc, char **argv)
UE
->
rx_offset
=
0
;
uint8_t
ssb_index
=
0
;
const
int
estimateSz
=
7
*
2
*
sizeof
(
int
)
*
frame_parms
->
ofdm_symbol_size
;
__attribute__
((
aligned
(
32
)))
struct
complex16
dl_ch_estimates
[
frame_parms
->
nb_antennas_rx
][
estimateSz
];
__attribute__
((
aligned
(
32
)))
struct
complex16
dl_ch_estimates_time
[
frame_parms
->
nb_antennas_rx
][
estimateSz
];
while
(
!
((
SSB_positions
>>
ssb_index
)
&
0x01
))
ssb_index
++
;
// to select the first transmitted ssb
UE
->
symbol_offset
=
nr_get_ssb_start_symbol
(
frame_parms
,
ssb_index
);
const
int
estimateSz
=
frame_parms
->
symbols_per_slot
*
frame_parms
->
ofdm_symbol_size
;
__attribute__
((
aligned
(
32
)))
struct
complex16
dl_ch_estimates
[
frame_parms
->
nb_antennas_rx
][
estimateSz
];
__attribute__
((
aligned
(
32
)))
struct
complex16
dl_ch_estimates_time
[
frame_parms
->
nb_antennas_rx
][
frame_parms
->
ofdm_symbol_size
];
while
(
!
((
SSB_positions
>>
ssb_index
)
&
0x01
))
ssb_index
++
;
// to select the first transmitted ssb
UE
->
symbol_offset
=
nr_get_ssb_start_symbol
(
frame_parms
,
ssb_index
);
int
ssb_slot
=
(
UE
->
symbol_offset
/
14
)
+
(
n_hf
*
(
frame_parms
->
slots_per_frame
>>
1
));
proc
.
nr_slot_rx
=
ssb_slot
;
...
...
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