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
littleBu
OpenXG-RAN
Commits
670f979f
Commit
670f979f
authored
3 years ago
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Perform the average of LS estimates over time for CSI-RS at UE
parent
0126bd84
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
0 deletions
+30
-0
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+30
-0
No files found.
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
670f979f
...
...
@@ -173,6 +173,36 @@ int nr_csi_rs_channel_estimation(PHY_VARS_NR_UE *ue,
#endif
}
}
/// Channel interpolation
int16_t
ls_estimated
[
2
];
for
(
int
k_id
=
0
;
k_id
<
nr_csi_rs_info
->
k_list_length
;
k_id
++
)
{
uint16_t
k
=
nr_csi_rs_info
->
map_list
[
k_id
];
// There are many possibilities to allocate the CSI-RS in time, which would take the implementation of many filters.
// In this approach, the LS for each symbol would be different, and it would be necessary to interpolate each symbol
// on the frequency as well. To reduce this complexity, and lower the processing time, we will assume that the
// slot duration is less than the channel coherence time. Therefore, the LS of each symbol (for the same subcarrier)
// would be the same, and it will only be necessary to do the frequency interpolation for 1 symbol, as the result
// for the others would be the same.
int
Nsymb
=
0
;
int32_t
sum_csi_rs_ls_real
=
0
;
int32_t
sum_csi_rs_ls_imag
=
0
;
for
(
int
symb
=
0
;
symb
<
NR_SYMBOLS_PER_SLOT
;
symb
++
)
{
if
(
!
is_csi_rs_in_symbol
(
*
csirs_config_pdu
,
symb
))
{
continue
;
}
Nsymb
++
;
uint64_t
symbol_offset
=
symb
*
frame_parms
->
ofdm_symbol_size
;
int16_t
*
csi_rs_ls_estimated_channel
=
(
int16_t
*
)
&
nr_csi_rs_info
->
csi_rs_ls_estimated_channel
[
ant
][
symbol_offset
];
sum_csi_rs_ls_real
+=
csi_rs_ls_estimated_channel
[
k
<<
1
];
sum_csi_rs_ls_imag
+=
csi_rs_ls_estimated_channel
[(
k
<<
1
)
+
1
];
}
ls_estimated
[
0
]
=
(
int16_t
)
(
sum_csi_rs_ls_real
/
Nsymb
);
ls_estimated
[
1
]
=
(
int16_t
)
(
sum_csi_rs_ls_imag
/
Nsymb
);
}
}
return
0
;
...
...
This diff is collapsed.
Click to expand it.
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