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
canghaiwuhen
OpenXG-RAN
Commits
ae81246e
Commit
ae81246e
authored
Jan 05, 2018
by
Vincent Savaux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add few modif in extract RB dlsch
parent
754fc0e9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
92 additions
and
94 deletions
+92
-94
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation_NB_IoT.c
+90
-90
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
+2
-2
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h
+0
-2
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation_NB_IoT.c
View file @
ae81246e
...
...
@@ -4071,7 +4071,7 @@ unsigned short dlsch_extract_rbs_single_NB_IoT(int **rxdataF,
int
*
dl_ch0
,
*
dl_ch0_ext
,
*
rxF
,
*
rxF_ext
;
unsigned
short
UL_RB_ID_NB_IoT
;
// index of the NB-IoT RB
uint8_t
id_offset
;
// offset of pilot position in symbols: 0,1,2
unsigned
short
NB_IoT_start
,
bandwidth_even_odd
;
// Index of the first RE in the RB dedicated for NB-IoT, bandwidth_even_odd = 0 even 1 odd
unsigned
char
symbol_mod
,
crs_pilots
=
0
,
j
=
0
,
poffset
=
0
;
unsigned
char
nrs_pilots
=
0
,
nrs_offset
=
0
;
// nrs_pilots: flag of presence of pilot, nrs_offset: offset from first subcarrier
...
...
@@ -4110,117 +4110,117 @@ unsigned short dlsch_extract_rbs_single_NB_IoT(int **rxdataF,
rxF_ext
=
&
rxdataF_ext
[
aarx
][
symbol
*
(
frame_parms
->
N_RB_DL
*
12
)];
bandwidth_even_odd
=
frame_parms
->
N_RB_DL
%
2
;
// 0 for even, 1 for odd
// if ((frame_parms->N_RB_DL&1) == 0) // even number of RBs
if
(
UL_RB_ID_NB_IoT
<=
(
frame_parms
->
N_RB_DL
>>
1
))
{
// RB in first half (below DC)
NB_IoT_start
=
UL_RB_ID_NB_IoT
*
12
+
frame_parms
->
first_carrier_offset
;
}
else
{
// RB in the second half (above DC): DC is taken into account
NB_IoT_start
=
1
+
bandwidth_even_odd
*
6
+
6
*
(
2
*
UL_RB_ID_NB_IoT
-
(
frame_parms
->
N_RB_DL
+
bandwidth_even_odd
));
}
for
(
rb
=
0
;
rb
<
1
;
rb
++
)
{
for
(
rb
=
0
;
rb
<
1
;
rb
++
)
{
// if (rb < 32)
rb_alloc_ind
=
(
rb_alloc
[
0
]
>>
rb
)
&
1
;
// else if (rb < 64)
// rb_alloc_ind = (rb_alloc[1]>>(rb-32)) & 1;
// else if (rb < 96)
// rb_alloc_ind = (rb_alloc[2]>>(rb-64)) & 1;
// else if (rb < 100)
// rb_alloc_ind = (rb_alloc[3]>>(rb-96)) & 1;
// else
// rb_alloc_ind = 0;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// if (rb==(frame_parms->N_RB_DL>>1)) {
if
(
UL_RB_ID_NB_IoT
<=
(
frame_parms
->
N_RB_DL
>>
1
))
{
// NB-IoT RB is in the first half
rxF
=
&
rxdataF
[
aarx
][(
UL_RB_ID_NB_IoT
*
12
+
frame_parms
->
first_carrier_offset
+
(
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
}
// For second half of RBs skip DC carrier
else
{
// NB-IoT RB is in the second half
rxF
=
&
rxdataF
[
aarx
][(
1
+
6
*
(
2
*
UL_RB_ID_NB_IoT
-
frame_parms
->
N_RB_DL
)
+
(
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
//dl_ch0++;
}
// if (rb < 32)
rb_alloc_ind
=
(
rb_alloc
[
0
]
>>
rb
)
&
1
;
// else if (rb < 64)
// rb_alloc_ind = (rb_alloc[1]>>(rb-32)) & 1;
// else if (rb < 96)
// rb_alloc_ind = (rb_alloc[2]>>(rb-64)) & 1;
// else if (rb < 100)
// rb_alloc_ind = (rb_alloc[3]>>(rb-96)) & 1;
// else
// rb_alloc_ind = 0;
// // PBCH
// if (subframe==0) {
// rb_alloc_ind = 0;
// }
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
rxF
=
&
rxdataF
[
aarx
][
NB_IoT_start
+
(
symbol
*
(
frame_parms
->
ofdm_symbol_size
))];
//NSSS subframe
if
(
subframe
==
9
&&
frame
%
2
==
0
)
{
rb_alloc_ind
=
0
;
}
//NPSS subframe
if
(
subframe
==
5
)
{
rb_alloc_ind
=
0
;
}
// // PBCH
// if (subframe==0
) {
//
rb_alloc_ind = 0;
//
}
// if ((frame_parms->frame_type == TDD) &&
// (subframe==6)) { //TDD Subframe 6
// if ((rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
// rb_alloc_ind = 0;
// }
// }
if
(
rb_alloc_ind
==
1
)
{
// If subframe not including NPSS, NSSS
*
pmi_ext
=
(
pmi
>>
((
rb
>>
2
)
<<
1
))
&
3
;
memcpy
(
dl_ch0_ext
,
dl_ch0
,
12
*
sizeof
(
int
));
/*
printf("rb %d\n",rb);
for (i=0;i<12;i++)
printf("(%d %d)",((short *)dl_ch0)[i<<1],((short*)dl_ch0)[1+(i<<1)]);
printf("\n");
*/
if
(
crs_pilots
==
0
&&
nrs_pilots
==
0
)
{
for
(
i
=
0
;
i
<
12
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
/*
printf("%d : (%d,%d)\n",(rxF+i-&rxdataF[aarx][( (symbol*(frame_parms->ofdm_symbol_size)))]),
((short*)&rxF[i])[0],((short*)&rxF[i])[1]);*/
}
//NSSS subframe
if
(
subframe
==
9
&&
frame
%
2
==
0
)
{
rb_alloc_ind
=
0
;
}
dl_ch0_ext
+=
12
;
rxF_ext
+=
12
;
}
else
if
(
crs_pilots
==
1
&&
nrs_pilots
==
0
)
{
j
=
0
;
//NPSS subframe
if
(
subframe
==
5
)
{
rb_alloc_ind
=
0
;
}
for
(
i
=
0
;
i
<
12
;
i
++
)
{
if
((
i
!=
(
frame_parms
->
nushift
+
poffset
))
&&
(
i
!=
((
frame_parms
->
nushift
+
poffset
+
6
)
%
12
))
)
{
rxF_ext
[
j
]
=
rxF
[
i
]
;
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
// if ((frame_parms->frame_type == TDD) &&
// (subframe==6)) { //TDD Subframe 6
// if ((rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb)
) {
// rb_alloc_ind = 0
;
// }
// }
}
}
if
(
rb_alloc_ind
==
1
)
{
// If subframe not including NPSS, NSSS
*
pmi_ext
=
(
pmi
>>
((
rb
>>
2
)
<<
1
))
&
3
;
memcpy
(
dl_ch0_ext
,
dl_ch0
,
12
*
sizeof
(
int
));
dl_ch0_ext
+=
10
;
rxF_ext
+=
10
;
/*
printf("rb %d\n",rb);
for (i=0;i<12;i++)
printf("(%d %d)",((short *)dl_ch0)[i<<1],((short*)dl_ch0)[1+(i<<1)]);
printf("\n");
*/
if
(
crs_pilots
==
0
&&
nrs_pilots
==
0
)
{
for
(
i
=
0
;
i
<
12
;
i
++
)
{
rxF_ext
[
i
]
=
rxF
[
i
];
/*
printf("%d : (%d,%d)\n",(rxF+i-&rxdataF[aarx][( (symbol*(frame_parms->ofdm_symbol_size)))]),
((short*)&rxF[i])[0],((short*)&rxF[i])[1]);*/
}
else
if
(
crs_pilots
==
0
&&
nrs_pilots
==
1
)
{
j
=
0
;
for
(
i
=
0
;
i
<
12
;
i
++
)
{
if
((
i
!=
(
id_offset
+
nrs_offset
))
&&
(
i
!=
((
id_offset
+
nrs_offset
+
6
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
dl_ch0_ext
+=
12
;
rxF_ext
+=
12
;
}
else
if
(
crs_pilots
==
1
&&
nrs_pilots
==
0
)
{
j
=
0
;
}
}
for
(
i
=
0
;
i
<
12
;
i
++
)
{
if
((
i
!=
(
frame_parms
->
nushift
+
poffset
))
&&
(
i
!=
((
frame_parms
->
nushift
+
poffset
+
6
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
dl_ch0_ext
+=
10
;
rxF_ext
+=
10
;
}
}
dl_ch0_ext
+=
10
;
rxF_ext
+=
10
;
}
else
if
(
crs_pilots
==
0
&&
nrs_pilots
==
1
)
{
j
=
0
;
for
(
i
=
0
;
i
<
12
;
i
++
)
{
if
((
i
!=
(
id_offset
+
nrs_offset
))
&&
(
i
!=
((
id_offset
+
nrs_offset
+
6
)
%
12
)))
{
rxF_ext
[
j
]
=
rxF
[
i
];
// printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
dl_ch0_ext
[
j
++
]
=
dl_ch0
[
i
];
}
}
dl_ch0_ext
+=
10
;
rxF_ext
+=
10
;
}
dl_ch0
+=
12
;
rxF
+=
12
;
}
dl_ch0
+=
12
;
rxF
+=
12
;
}
// if (crs_pilots==0) {
// for (i=0; i<12; i++) {
// rxF_ext[i]=rxF[i];
...
...
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
View file @
ae81246e
...
...
@@ -212,10 +212,10 @@ int rx_nsss_NB_IoT(PHY_VARS_UE_NB_IoT *ue,int32_t *tot_metric)
return
(
-
1
);
}
for
(
k
=
0
;
k
<
126
;
k
++
){
for
(
k
=
0
;
k
<
126
;
k
++
){
// corresponds to u in standard
metric
=
0
;
for
(
m
=
0
;
m
<
132
;
m
++
){
for
(
m
=
0
;
m
<
132
;
m
++
){
// 132 resource elements in NSSS subframe
metric
+=
(
int32_t
)
d
[(
k
*
126
+
m
)
<<
1
]
*
(
int32_t
)
nsss_sf
[(
k
*
126
+
m
)
<<
1
]
+
(
int32_t
)
d
[((
k
*
126
+
m
)
<<
1
)
+
1
]
*
(
int32_t
)
nsss_sf
[((
k
*
126
+
m
)
<<
1
)
+
1
];
// real part of correlation
...
...
openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h
View file @
ae81246e
This source diff could not be displayed because it is too large. You can
view the blob
instead.
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