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
zzha zzha
OpenXG-RAN
Commits
ea8d27a2
Commit
ea8d27a2
authored
Jan 26, 2022
by
Sagar Parsawar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OAI UE: PRS Time domain IR and UE procedures function call
parent
d79a38bf
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
14 deletions
+49
-14
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+20
-6
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+5
-6
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+24
-2
No files found.
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
ea8d27a2
...
...
@@ -30,6 +30,7 @@
#include "PHY/NR_TRANSPORT/nr_sch_dmrs.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "filt16a_32.h"
#include "T.h"
//#define DEBUG_PDSCH
//#define DEBUG_PDCCH
...
...
@@ -52,12 +53,13 @@ int nr_prs_channel_estimation(PHY_VARS_NR_UE *ue,
uint32_t
**
nr_gold_prs
=
ue
->
nr_gold_prs
[
proc
->
nr_slot_rx
];
prs_data_t
*
prs_cfg
=
&
ue
->
prs_cfg
;
uint8_t
rxAnt
=
0
;
// ant 0 rxdataF for now
int16_t
*
prs_chest
,
ch
[
2
]
=
{
0
},
*
rxF
,
*
pil
,
*
fl
,
*
fm
,
*
fmm
,
*
fml
,
*
fmr
,
*
fr
,
mod_prs
[
NR_MAX_PRS_LENGTH
<<
1
];
int16_t
k_prime
=
0
,
k
=
0
,
re_offset
;
uint8_t
idx
=
prs_cfg
->
NPRSID
;
uint8_t
rxAnt
=
0
;
// ant 0 rxdataF for now
int
16_t
*
ch_intrp
=
(
int16_t
*
)
malloc16
(
frame_params
->
ofdm_symbol_size
*
2
*
sizeof
(
int16
_t
));
AssertFatal
(
ch_intrp
!=
NULL
,
"nr_prs_channel_estimation: channel estimate buffer initialization failed!!"
);
int16_t
*
ch_intrp
=
(
int16_t
*
)
malloc16
(
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
int
32_t
*
ch_time
=
(
int32_t
*
)
malloc16
(
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32
_t
));
AssertFatal
(
((
ch_intrp
!=
NULL
)
||
(
ch_time
!=
NULL
))
,
"nr_prs_channel_estimation: channel estimate buffer initialization failed!!"
);
int16_t
*
ch_init
=
ch_intrp
;
for
(
int
l
=
prs_cfg
->
SymbolStart
;
l
<
prs_cfg
->
SymbolStart
+
prs_cfg
->
NumPRSSymbols
;
l
++
)
...
...
@@ -303,6 +305,11 @@ int nr_prs_channel_estimation(PHY_VARS_NR_UE *ue,
ch_intrp
,
16
);
}
else
{
printf
(
"NR_PRS UE Channel EStimation: CombSize other than 2 and 4 are NOT supported currently! Returning"
);
return
(
0
);
}
ch_intrp
=
ch_init
;
for
(
int
re
=
0
;
re
<
prs_cfg
->
NumRB
*
12
;
re
++
)
...
...
@@ -356,12 +363,19 @@ int nr_prs_channel_estimation(PHY_VARS_NR_UE *ue,
idft
(
idftsizeidx
,
(
int16_t
*
)
&
ue
->
prs_ch_estimates
[
rxAnt
][
l
*
frame_params
->
ofdm_symbol_size
],
(
int16_t
*
)
&
ue
->
prs_ch_estimates_time
[
rxAnt
][
l
*
frame_params
->
ofdm_symbol_size
],
1
);
(
int16_t
*
)
&
ch_time
[
0
],
1
);
memcpy
((
int16_t
*
)
&
ue
->
prs_ch_estimates_time
[
rxAnt
][
l
*
frame_params
->
ofdm_symbol_size
],
&
ch_time
[
frame_params
->
ofdm_symbol_size
>>
1
],
(
frame_params
->
ofdm_symbol_size
>>
1
)
*
sizeof
(
int32_t
));
memcpy
((
int16_t
*
)
&
ue
->
prs_ch_estimates_time
[
rxAnt
][
l
*
frame_params
->
ofdm_symbol_size
+
(
frame_params
->
ofdm_symbol_size
>>
1
)],
&
ch_time
[
0
],
(
frame_params
->
ofdm_symbol_size
>>
1
)
*
sizeof
(
int32_t
));
}
//for l
LOG_M
(
"prsEst.m"
,
"prs_chest"
,
&
ue
->
prs_ch_estimates
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
frame_params
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"prsEst_time.m"
,
"prs_chest_time"
,
&
ue
->
prs_ch_estimates_time
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
frame_params
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxSigF.m"
,
"rxF"
,
&
rxdataF
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
prs_cfg
->
NumPRSSymbols
*
frame_params
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"prsEstF.m"
,
"prs_chest"
,
&
ue
->
prs_ch_estimates
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
prs_cfg
->
NumPRSSymbols
*
frame_params
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"prsEstT.m"
,
"prs_chest_time"
,
&
ue
->
prs_ch_estimates_time
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
prs_cfg
->
NumPRSSymbols
*
frame_params
->
ofdm_symbol_size
,
1
,
1
);
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
prs_ch_estimates
[
rxAnt
][
prs_cfg
->
SymbolStart
*
frame_params
->
ofdm_symbol_size
],
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
)));
return
(
0
);
}
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
ea8d27a2
...
...
@@ -83,14 +83,14 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
n_hf
=
1
;
ssb_index
=
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
;
LOG_
D
(
PHY
,
"common_signal_procedures: frame %d, slot %d ssb index %d
\n
"
,
frame
,
slot
,
ssb_index
);
LOG_
I
(
PHY
,
"common_signal_procedures: frame %d, slot %d ssb index %d
\n
"
,
frame
,
slot
,
ssb_index
);
int
ssb_start_symbol_abs
=
nr_get_ssb_start_symbol
(
fp
,
ssb_index
);
// computing the starting symbol for current ssb
ssb_start_symbol
=
ssb_start_symbol_abs
%
fp
->
symbols_per_slot
;
// start symbol wrt slot
nr_set_ssb_first_subcarrier
(
cfg
,
fp
);
// setting the first subcarrier
LOG_
D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
LOG_
I
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
nr_generate_pss
(
gNB
->
d_pss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_sss
(
gNB
->
d_sss
,
&
txdataF
[
0
][
txdataF_offset
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
...
...
@@ -140,6 +140,8 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
AMP
,
ssb_start_symbol
,
n_hf
,
frame
,
cfg
,
fp
);
LOG_M
(
"txsigF0.m"
,
"txsF0"
,
gNB
->
common_vars
.
txdataF
[
0
],
fp
->
samples_per_subframe_wCP
,
1
,
1
);
}
...
...
@@ -152,10 +154,6 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
int
offset
=
gNB
->
CC_id
;
int
txdataF_offset
=
(
slot
%
2
)
*
fp
->
samples_per_slot_wCP
;
// defining inputs and initials for nr_generate_prs()
int
**
txdataF
=
gNB
->
common_vars
.
txdataF
;
if
((
cfg
->
cell_config
.
frame_duplex_type
.
value
==
TDD
)
&&
(
nr_slot_select
(
cfg
,
frame
,
slot
)
==
NR_UPLINK_SLOT
))
return
;
...
...
@@ -247,6 +245,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
prs_data.NPRSID=0;
// tbc
int **txdataF = gNB->common_vars.txdataF;
nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);
*/
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
ea8d27a2
...
...
@@ -1716,8 +1716,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
//PRS channel estimation
nr_prs_channel_estimation
(
ue
,
proc
,
fp
);
}
nr_ue_rsrp_measurements
(
ue
,
gNB_id
,
proc
,
nr_slot_rx
,
0
);
...
...
@@ -1742,6 +1740,30 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
nr_ue_rrc_measurements
(
ue
,
proc
,
nr_slot_rx
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PBCH
,
VCD_FUNCTION_OUT
);
}
ue
->
prs_cfg
.
PRSResourceSetPeriod
[
0
]
=
40
;
// PRS resource slot period
ue
->
prs_cfg
.
PRSResourceSetPeriod
[
1
]
=
0
;
// resource slot offset
ue
->
prs_cfg
.
SymbolStart
=
7
;
ue
->
prs_cfg
.
NumPRSSymbols
=
4
;
ue
->
prs_cfg
.
NumRB
=
fp
->
N_RB_DL
;
ue
->
prs_cfg
.
RBOffset
=
0
;
ue
->
prs_cfg
.
CombSize
=
4
;
ue
->
prs_cfg
.
REOffset
=
0
;
ue
->
prs_cfg
.
PRSResourceOffset
=
0
;
ue
->
prs_cfg
.
PRSResourceRepetition
=
1
;
ue
->
prs_cfg
.
PRSResourceTimeGap
=
1
;
ue
->
prs_cfg
.
NPRSID
=
0
;
for
(
int
j
=
ue
->
prs_cfg
.
SymbolStart
;
j
<
(
ue
->
prs_cfg
.
SymbolStart
+
ue
->
prs_cfg
.
NumPRSSymbols
);
j
++
)
{
nr_slot_fep
(
ue
,
proc
,
j
,
nr_slot_rx
);
}
//PRS channel estimation
nr_prs_channel_estimation
(
ue
,
proc
,
fp
);
}
if
((
frame_rx
%
64
==
0
)
&&
(
nr_slot_rx
==
0
))
{
...
...
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