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
lizhongxiao
OpenXG-RAN
Commits
f1eb2e15
Commit
f1eb2e15
authored
Mar 16, 2022
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Channel estimation based on CSI-RS and interpolation at UE working for a gNB with 4 antenna ports
parent
8b0409d3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
5 additions
and
8 deletions
+5
-8
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+4
-2
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
+1
-6
No files found.
openair1/PHY/INIT/nr_init_ue.c
View file @
f1eb2e15
...
@@ -365,12 +365,14 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
...
@@ -365,12 +365,14 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
}
}
}
}
ue
->
nr_csi_rs_info
->
noise_power
=
(
uint32_t
*
)
malloc16_clear
(
sizeof
(
uint32_t
));
ue
->
nr_csi_rs_info
->
noise_power
=
(
uint32_t
*
)
malloc16_clear
(
sizeof
(
uint32_t
));
ue
->
nr_csi_rs_info
->
csi_rs_generated_signal
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
ue
->
nr_csi_rs_info
->
csi_rs_generated_signal
=
(
int32_t
**
)
malloc16
(
NR_MAX_NB_PORTS
*
sizeof
(
int32_t
*
)
);
for
(
i
=
0
;
i
<
NR_MAX_NB_PORTS
;
i
++
)
{
ue
->
nr_csi_rs_info
->
csi_rs_generated_signal
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame_wCP
*
sizeof
(
int32_t
));
}
ue
->
nr_csi_rs_info
->
csi_rs_received_signal
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
ue
->
nr_csi_rs_info
->
csi_rs_received_signal
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
ue
->
nr_csi_rs_info
->
csi_rs_ls_estimated_channel
=
(
int32_t
***
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
**
)
);
ue
->
nr_csi_rs_info
->
csi_rs_ls_estimated_channel
=
(
int32_t
***
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
**
)
);
ue
->
nr_csi_rs_info
->
csi_rs_estimated_channel_freq
=
(
int32_t
***
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
**
)
);
ue
->
nr_csi_rs_info
->
csi_rs_estimated_channel_freq
=
(
int32_t
***
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
**
)
);
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
ue
->
nr_csi_rs_info
->
csi_rs_generated_signal
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame_wCP
*
sizeof
(
int32_t
));
ue
->
nr_csi_rs_info
->
csi_rs_received_signal
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame_wCP
*
sizeof
(
int32_t
));
ue
->
nr_csi_rs_info
->
csi_rs_received_signal
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame_wCP
*
sizeof
(
int32_t
));
ue
->
nr_csi_rs_info
->
csi_rs_ls_estimated_channel
[
i
]
=
(
int32_t
**
)
malloc16_clear
(
NR_MAX_NB_PORTS
*
sizeof
(
int32_t
*
));
ue
->
nr_csi_rs_info
->
csi_rs_ls_estimated_channel
[
i
]
=
(
int32_t
**
)
malloc16_clear
(
NR_MAX_NB_PORTS
*
sizeof
(
int32_t
*
));
ue
->
nr_csi_rs_info
->
csi_rs_estimated_channel_freq
[
i
]
=
(
int32_t
**
)
malloc16_clear
(
NR_MAX_NB_PORTS
*
sizeof
(
int32_t
*
));
ue
->
nr_csi_rs_info
->
csi_rs_estimated_channel_freq
[
i
]
=
(
int32_t
**
)
malloc16_clear
(
NR_MAX_NB_PORTS
*
sizeof
(
int32_t
*
));
...
...
openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
View file @
f1eb2e15
...
@@ -592,7 +592,6 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
...
@@ -592,7 +592,6 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
}
}
}
}
nr_csi_rs_info
->
N_ports
=
0
;
uint16_t
start_sc
=
frame_parms
.
first_carrier_offset
;
uint16_t
start_sc
=
frame_parms
.
first_carrier_offset
;
// resource mapping according to 38.211 7.4.1.5.3
// resource mapping according to 38.211 7.4.1.5.3
...
@@ -600,12 +599,7 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
...
@@ -600,12 +599,7 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
if
(
(
csi_params
->
freq_density
>
1
)
||
(
csi_params
->
freq_density
==
(
n
%
2
)))
{
// for freq density 0.5 checks if even or odd RB
if
(
(
csi_params
->
freq_density
>
1
)
||
(
csi_params
->
freq_density
==
(
n
%
2
)))
{
// for freq density 0.5 checks if even or odd RB
for
(
int
ji
=
0
;
ji
<
size
;
ji
++
)
{
// loop over CDM groups
for
(
int
ji
=
0
;
ji
<
size
;
ji
++
)
{
// loop over CDM groups
for
(
int
s
=
0
;
s
<
gs
;
s
++
)
{
// loop over each CDM group size
for
(
int
s
=
0
;
s
<
gs
;
s
++
)
{
// loop over each CDM group size
p
=
s
+
j
[
ji
]
*
gs
;
// port index
p
=
s
+
j
[
ji
]
*
gs
;
// port index
if
(
nr_csi_rs_info
->
N_ports
<
(
p
+
1
))
{
nr_csi_rs_info
->
N_ports
=
p
+
1
;
}
for
(
kp
=
0
;
kp
<=
kprime
;
kp
++
)
{
// loop over frequency resource elements within a group
for
(
kp
=
0
;
kp
<=
kprime
;
kp
++
)
{
// loop over frequency resource elements within a group
k
=
(
start_sc
+
(
n
*
NR_NB_SC_PER_RB
)
+
koverline
[
ji
]
+
kp
)
%
(
frame_parms
.
ofdm_symbol_size
);
// frequency index of current resource element
k
=
(
start_sc
+
(
n
*
NR_NB_SC_PER_RB
)
+
koverline
[
ji
]
+
kp
)
%
(
frame_parms
.
ofdm_symbol_size
);
// frequency index of current resource element
// wf according to tables 7.4.5.3-2 to 7.4.5.3-5
// wf according to tables 7.4.5.3-2 to 7.4.5.3-5
...
@@ -656,6 +650,7 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
...
@@ -656,6 +650,7 @@ void nr_generate_csi_rs(NR_DL_FRAME_PARMS frame_parms,
nr_csi_rs_info
->
CDM_group_size
=
gs
;
nr_csi_rs_info
->
CDM_group_size
=
gs
;
nr_csi_rs_info
->
kprime
=
kprime
;
nr_csi_rs_info
->
kprime
=
kprime
;
nr_csi_rs_info
->
lprime
=
lprime
;
nr_csi_rs_info
->
lprime
=
lprime
;
nr_csi_rs_info
->
N_ports
=
ports
;
memcpy
(
nr_csi_rs_info
->
j
,
j
,
16
*
sizeof
(
uint8_t
));
memcpy
(
nr_csi_rs_info
->
j
,
j
,
16
*
sizeof
(
uint8_t
));
memcpy
(
nr_csi_rs_info
->
koverline
,
koverline
,
16
*
sizeof
(
uint8_t
));
memcpy
(
nr_csi_rs_info
->
koverline
,
koverline
,
16
*
sizeof
(
uint8_t
));
memcpy
(
nr_csi_rs_info
->
loverline
,
loverline
,
16
*
sizeof
(
uint8_t
));
memcpy
(
nr_csi_rs_info
->
loverline
,
loverline
,
16
*
sizeof
(
uint8_t
));
...
...
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