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
4b263c3f
Commit
4b263c3f
authored
Feb 21, 2023
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MMSE working for 2-layers UL with a hardcoded noise variance
parent
98f4d038
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
27 deletions
+43
-27
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+43
-27
No files found.
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
4b263c3f
...
...
@@ -1468,21 +1468,21 @@ void nr_ulsch_construct_HhH_elements(int *conjch00_ch00,
_m_empty
();
}
/*
Zero Forcing Rx function: nr_ulsch_zero_forcing_rx_2layers()
*
*
* */
uint8_t
nr_ulsch_zero_forcing_rx_2layers
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
ul_ch_mag
,
int
**
ul_ch_magb
,
int
**
ul_ch_estimates_ext
,
unsigned
short
nb_rb
,
unsigned
char
n_rx
,
unsigned
char
mod_order
,
int
shift
,
unsigned
char
symbol
,
int
length
)
/*
*
MMSE Rx function: nr_ulsch_mmse_2layers()
*
/
uint8_t
nr_ulsch_mmse_2layers
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
ul_ch_mag
,
int
**
ul_ch_magb
,
int
**
ul_ch_estimates_ext
,
unsigned
short
nb_rb
,
unsigned
char
n_rx
,
unsigned
char
mod_order
,
int
shift
,
unsigned
char
symbol
,
int
length
,
int
noise_var
)
{
int
*
ch00
,
*
ch01
,
*
ch10
,
*
ch11
;
int
*
ch20
,
*
ch30
,
*
ch21
,
*
ch31
;
...
...
@@ -1702,6 +1702,20 @@ uint8_t nr_ulsch_zero_forcing_rx_2layers(NR_DL_FRAME_PARMS *frame_parms,
nb_rb_0
,
symbol
);
}
// Add noise_var such that: H^h * H + noise_var * I
if
(
noise_var
!=
0
)
{
__m128i
nvar_128i
=
simde_mm_set1_epi32
(
noise_var
);
__m128i
*
af_mf_00_128i
=
(
__m128i
*
)
af_mf_00
;
__m128i
*
af_mf_11_128i
=
(
__m128i
*
)
af_mf_11
;
for
(
int
k
=
0
;
k
<
3
*
nb_rb_0
;
k
++
)
{
af_mf_00_128i
[
0
]
=
simde_mm_add_epi32
(
af_mf_00_128i
[
0
],
nvar_128i
);
af_mf_11_128i
[
0
]
=
simde_mm_add_epi32
(
af_mf_11_128i
[
0
],
nvar_128i
);
af_mf_00_128i
++
;
af_mf_11_128i
++
;
}
}
//det_HhH = ad -bc
nr_ulsch_det_HhH
(
af_mf_00
,
//a
af_mf_01
,
//b
...
...
@@ -2039,19 +2053,21 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB,
rel15_ul
->
rb_size
,
nb_re_pusch
);
//
Apply zero forcing
for 2 Tx layers
//
Apply MMSE
for 2 Tx layers
if
(
rel15_ul
->
nrOfLayers
==
2
)
{
nr_ulsch_zero_forcing_rx_2layers
(
frame_parms
,
pusch_vars
->
rxdataF_comp
,
pusch_vars
->
ul_ch_mag0
,
pusch_vars
->
ul_ch_magb0
,
pusch_vars
->
ul_ch_estimates_ext
,
rel15_ul
->
rb_size
,
frame_parms
->
nb_antennas_rx
,
rel15_ul
->
qam_mod_order
,
pusch_vars
->
log2_maxh
,
symbol
,
nb_re_pusch
);
int
noise_var
=
100
;
// TODO: Get noise variance
nr_ulsch_mmse_2layers
(
frame_parms
,
pusch_vars
->
rxdataF_comp
,
pusch_vars
->
ul_ch_mag0
,
pusch_vars
->
ul_ch_magb0
,
pusch_vars
->
ul_ch_estimates_ext
,
rel15_ul
->
rb_size
,
frame_parms
->
nb_antennas_rx
,
rel15_ul
->
qam_mod_order
,
pusch_vars
->
log2_maxh
,
symbol
,
nb_re_pusch
,
noise_var
);
}
stop_meas
(
&
gNB
->
ulsch_mrc_stats
);
...
...
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